1. Onboarding Methods — Direct Integration
Glow Platform
  • Welcome to Glow Data Service!
  • Getting Started
  • Glow Portals
  • Introducing the Glow System
  • API Authentication
  • Smart Meter Onboarding
    • Introducing Smart Meter Onboarding
    • Smart Meter Eligibility Check
    • Terms and Conditions APIs and Management
    • Onboarding Methods — Direct Integration
      • EUI/Postcode Check
      • AVS Check
    • Onboarding Methods — Hosted Integration
      • Glow IDV SDK
        • Introducing the Glow SDK
        • Supported Verification Methods
        • Implementation Guide — Web
        • Implementation Guide — Mobile
        • Verifiable Credentials
        • Verification Result Screen
        • Consent Capture & Onboarding
    • Onboarding Methods — No Integration
      • Invitation Functionality
      • Agent Verification Portal
  • Data Retrieval
    • Retrieving Time Series Data from Onboarded Users
  • Consent Management and Offboarding
    • Consent Management
    • Offboarding
  • Glow CADs & Fulfilment
    • Glow CAD Fulfilment
  • API Reference
    • Smart Meter Elgibility
      • eligibility
        • smets-ihd-cad
          • Check MPxN has CAD/PPMID
        • checksmetsihd
          • postcode
            • Match EUI IHD with postcode
          • Match EUI IHD with MPxN
        • checksmetsmpxn
          • Check MPXN is eligible in DCC.
    • Content System
      • content
        • {contentId}
          • get a content object
          • Update an existing content object
        • Find all the content objects of an application
        • Add a content object
      • languagecontent
        • {languageContentId}
          • get a language content object by ID
          • Update an existing language content object
        • Find all the language content objects of an application
        • Add a language content object
      • termsconditions
        • {tcId}
          • get a terms and conditions object by ID
        • current
          • Find the terms and conditions that are in force.
        • Find all the terms and conditions of an application
        • Add terms and conditions
      • termsconditionsuser
        • {tcUserId}
          • get a specified terms and conditions user obj
        • Find all the responses to terms and conditions documents.
        • Add a user's response to Terms & Conditions document
      • supportdetails
        • {supportDetailsId}
          • get a support details object
        • Find all the support detail objects of an application
        • Add a support details object
      • faq
        • {faqId}
          • get a FAQ object
        • Find all the FAQ objects of an application
        • Add a faq object
      • prompttype
        • {promptTypeId}
          • get a Prompt Type object
        • Find all the prompt type objects of an application
        • Add a Prompt Type object
      • prompt
        • {promptId}
          • get a Prompt object
        • Find all the prompt objects of an application
        • Add a Prompt object
      • promptuser
        • {promptUserId}
          • get a Prompt User object
        • Find all the prompt user objects of an application
        • Add a Prompt User object
      • useraction
        • {userActionId}
          • get a User Action object
        • Find all the user action objects of an application
        • Add a User Action object
      • useractiontype
        • {userActionTypeId}
          • get a User Action Type object
        • Find all the user action type objects of an application
        • Add a User Action Type object
    • User System
      • register
        • User self registers
      • account
        • {accountId}
          • status
            • Find the status of a specified account. If the account is using an external directory service, this call will confirm whether the user is authenticated against it. This call requires administrative application level credentials.
          • mobileapptoken
            • Add mobile app token to a user
            • Remove a mobile app token to a user
          • Find specific account of an application.
          • Updates the account's metadata.
          • Delete account
        • status
          • With a given JWT token a user can have their account status verfied. If their account is created under an external directory service, this call will establish whether a user's token to the external service is still valid.
        • email
          • Change a user's email
        • name
          • Change a user's name
        • changepassword
          • Change a user's password
        • Find all accounts of an application
        • Add an account to an existing user
      • user
        • {userId}
          • username
            • Change a user's username
          • Find specific user that has an account in an application.
          • Delete specific user. This will delete all the accounts of a user. Please refer to delete account API. This API requires specific permissions.
        • verify
          • Generate a user verification token
          • Verify a user verification token
        • resetpassword
          • Generate a token that can be used by user to reset their password.
          • A user resets their password
        • verification
          • status
            • mpxns
              • renewal
                • Renew consent for a number of meterpoints
              • revocation
                • Revoke consent for a number of meterpoints
            • mpxn
              • {mpxn}
                • renewal
                  • Get meter point consent renewals
                  • Renew meter point consent
                • revocation
                  • Get meter point consent revocations
                  • Revoke meter point consent
            • API to retrieve user's meter points' consent and verification
        • Find specific user that has an account in an application from the username.
        • Create a user
      • accountprofile
        • {profileName}
          • Find specific group of application
        • Find all the profiles of an account
        • Create an account profile under a given profileName.
      • accountsession
        • get the session of an account
        • Update an account session.
      • auth
        • token
          • {tokenId}
            • Deletes a token, specified by its tokenId.
          • Returns all the tokens that are active and valid for a specified user.
        • newToken
          • Generate a new token for an account.
        • deleteToken
          • delete a token
        • oauth
          • access
            • Exchange the Authorization Code for an Access Token.
          • Check and validate an Oauth Access token.
          • Authenticate a user and generate an OAuth 2.0 Authorization Code Grant.
        • Checks whether a user token is valid.
        • authenticate an account
    • Virtual Entity System
      • vesys
        • appstats
          • find statistics on the number of Virtual Entities per application
      • virtualentity
        • {id}
          • resources
            • Find the resources of that belong to Virtual Entity with ID
          • attribute
            • Find a Virtual Entity's metadata by ID
            • Add/Update a Virtual Entity's metadata
            • delete metadata from the Virtual Entity
          • Find Virtual Entity by ID
          • Update a Virtual Entity
          • Delete a Virtual Entity
        • Add a new Virtual Entity
        • Find all Virtual Entities
      • vetype
        • {id}
          • resources
            • Find all resources that belong to a user that satisfy the Resource Types in the Virtual Entity Type definition.
          • Find Virtual Entity Type by ID
          • Update a Virtual Entity Type
        • Add a new Virtual Entity Type
        • Find all Virtual Entity Types
    • Webhook System
      • webhook
        • {webhookId}
          • Find webhook by ID
        • error
          • {errorId}
            • Find a particular webhook error
          • Find all the webhooks that have failed
        • Find all webhooks of an application (or user)
    • Resource System
      • resource
        • {id}
          • readings
            • Get resource readings
          • current
            • Get the current resource reading.
          • first-time
            • Get the UTC time of the first available reading
          • last-time
            • Get the UTC time of the most recent available reading
          • meterread
            • Get the cumulative value reported on a metering device. (Not supported for all resource types).
          • tariff
            • Get the latest tariff that is being applied to a resource.
          • tariff-list
            • Get the tariff history that is being applied to a cost resource.
          • catchup
            • Trigger a request to retrieve the latest available readings from the DCC.
          • glowbinary
            • API that returns the resource's raw data in the Glow Binary format.
          • Find resource by ID
        • count
          • Count the number of resources per resourceType
        • Add a new resource
        • Find all resources per user or application
      • resourcetype
        • {id}
          • resource
            • Find resources of a specific resource type that belong to a user
          • appresource
            • Find resources of a specific resource type that an application has access to
          • Find resourceType by ID
        • Add a new resource type.
        • Find all resource types
    • Notification System
      • alerttype
        • {alertTypeId}
          • Find alert type by ID
          • Updates the alert type's metadata.
        • Find all alert types of an application
        • Create an alert type
      • alert
        • {alertId}
          • Get an alert by Id
        • user
          • Get the alerts sent to a user
        • Send an alert
      • template
        • {templateId}
          • Find template type by ID
          • Updates the teplate's metadata.
        • {alertTypeId}
          • {channelType}
            • {cultureCode}
              • Find template by alertTypeId, channeType and cultureCode
              • Create template by alertTypeId, channeType and cultureCode
        • Find all templates of an application
        • Create a template
      • notification
        • {notificationId}
          • log
            • Get the logs of a particular notification
          • Get a notification by Id
    • DFS
      • dfs
        • termsconditions
          • The current version of terms and conditions that is pertinent to DFS for a particular application.
        • user
          • Get all the users that have opted in the DFS functionality
          • User opts in to DFS functionality for a particular MPxN. The mpxn field is only required if a user has more than one MPxN.
          • User opts out of DFS functionality
        • event
          • {dfsEventId}
            • user
              • Get all the users that have participated in a particular DFS event
          • user
            • participation
              • API to indicate User participating in particular DFS event
            • Get all the events a user has signed up for
    • Device Management System
      • devicetype
        • {id}
          • Find Device Type by ID
        • Add a new Device Type
        • Find all device types
      • device
        • {id}
          • status
            • This call can be used to see whether a gateway device is sending packets to the Glow Platform (i.e. via WiFi).
          • Find device by ID
        • resource
          • {resourceId}
            • Find the device that sources a specified resource.
        • meter-point
          • {meterPointNumber}
            • inventory
              • Get the DCC inventory of a meter point
            • resources
              • Get the resources associated to a meter point
        • smart-meter
          • {eui}
            • inventory
              • Get the DCC inventory of a meter point by providing an EUI.
        • status
          • This call can be used to see whether a gateway device is sending packets to the Glow Platform (i.e. via WiFi).
        • Get a user's devices
        • Add a new device
      • discover
        • {hardwareId}
          • Find device by ID
  1. Onboarding Methods — Direct Integration

EUI/Postcode Check

Introduction#

Glow's EUI/Postcode Check is an direct integration verification method that automatically verifies an energy consumer as the occupant of a property using a unique code found on their existing in-home display (IHD).
This method can be fully integrated into your own front-end using the Glow APIs.

Definitions#

TermDefinition
VerificationProcess whereby a User's smart meters are verified to confirm they are compatible with Hildebrand's ability to retrieve data from them.
ConsentSpecific to the Smart Energy Code: formal process to capture permission from the User to retrieve their energy consumption and related data from their smart meters under the Terms and Conditions in place at the time their consent is captured.
MPxNMeter point identifier, every property has a unique MPxN. MPAN identifies electricity meter, MPRN identifies gas meter.
SECASSmart Energy Code Administrator; regulate Hildebrand's ability to offer the service.
DCCData Communications Company - manages the smart metering infrastructure in the UK.
DCC InventoryHolds the details of all smart metering devices against a property.
Terms and ConditionsHildebrand's Terms and Conditions - acceptance is required for energy consumer onboarding. Approved by SECAS. Version controlled.
UserIndividual energy consumer (expected to have a valid smart meter).
IHDIn-home display. Provided by an energy supplier to show energy usage.
CADConsumer Access Device. Connects directly to the meter at a property for real time data, and can also be used for verifications. Some IHDs are combined IHD/CAD devices.
PPMIDA Prepayment Meter Interface Device, often integrated with an IHD (see above) for energy tracking and monitoring.
EUI16-character identifier found on an IHD - sometimes labeled as a GUID or MAC. This is a unique code that can be used for verification.

Background#

This document describes how organisations signed up to the Glow Data Service can use the Glow Platform to onboard users and their smart meters via our EUI/Postcode check.
This method relies on the third party's application to:
capture all the registration information required for onboarding from the user
validate the registration information
present the Terms and Conditions to the user in a way that ensures integrity of explicit consent
submit the validated registration information to the Glow Platform via the API
eventually renew the user's consent (from a period of 12 months after the user's initial sign-up, otherwise consent will expire after 18 with no intervention).
Registration information consists of the user's postcode and the EUI of the IHD, CAD or PPMID at their property. If the user does not have one of these devices, they will need to use a different verification method.

Limitations#

The EUI/Postcode Check method requires the organisation to have their own front-end to integrate these APIs into in order to facilitate the energy consumer onboarding process.

High-level Process#

The below outlines the high-level process for onboarding an energy consumer using the EUI/Postcode check, and the interactions between the energy consumer, organisation application and the Glow Platform.

Verification via EUI/Postcode#

Capture EUI and Postcode#

Add a step to your onboarding journey to capture the EUI and postcode, to then be used to run an eligibility check as per the following section.

Run an eligibility check#

To check whether a provided EUI and postcode combination is valid, use the following Eligibility API. Please note that this API does not require authentication. This call checks the smart meter for compatibility with the service and validates the user input.
Retain the EUI and MPxN that has passed this check to then be used in the Registration step. The EUI in this case can be the full EUI, or just the last 4 digits.
Successful response (status code 200):
{
    "valid": true,
    "status": "OK"
}
Failed response (status code 200):
{
    "valid": false,
    "status": "NOK"
}
The EUI is the long 16 character hexadecimal number printed on the In Home Display or sometimes needs to be read from menus within the display. It may be separated by dashes or colons. For example 70:B3:D5:16:F0:00:03:51.
It is good practice to:
1.
validate hexadecimal numbers on EUI input
2.
validate EUI length after removing any separators (16 characters)
3.
validate UK postcode using external checks and/or regular expressions
4.
strip white space from EUI only
5.
force EUI to uppercase
For more information on smart meter eligibility support via API see https://api.glowmarkt.com/api-docs/v0-1/eligibility/

Terms and Conditions#

At some point prior to onboarding — either before or after the verification step — the energy consumer must accept or deny the service Terms and Conditions. For a guide on managing this, see our Terms and Conditions APIs and Management documentation.

Onboarding#

The Registration API assumes that Terms and Conditions have been presented through the user interface, the postcode and EUI information has been validated and the tcId is for the Terms and Conditions that were presented (which should be the current version).
The username will be the unique identifier within the third party system and can take the form of any string value. This is used in tracing the audit of the natural person associated with the User account and can be used in calls to look up the Glow UserId. It is also displayed and searchable within in the Support Portal. In essence this is a foreign key.
Normally the username is set to be an email address, and if it is, then emails can be sent to renew consent and provide a user login using the Glow identity and access management (IAM) services. In this tutorial it is assumed that this functionality is not being used.
A successful response, will have a 200 status code, and the payload looks like this:
{
  "userId": "UUID",
  "applicationId": "3e3e5463-afbd-4f7a-b57f-365e886cf914",
  "virtualEntity": {
    "veId": "4447b17c-ab62-491c-8085-9ac2b6206346"
  }
}
The API requires the API keys which can be found in the Development Portal. For more information on how to authenticate, please refer to the Authentication section below.
With regards to the payload, the full explanation of each field is provided here:
FieldRequired/OptionalExplanation
nameoptionalAssume that this will not be used.
emailoptionalAssume that this will not be used.
usernamerequiredThe username is the unique reference in the Glow Platform. This is the foreign key reference.
directoryIdrequiredThis field describes the IAM directory that will be used by the 3rd party. Log in to the Developer Portal and use the directory listed under the application definition.
postcoderequiredThis is the postcode that the user submitted along with their IHD/CAD EUI and will be used to identify and verify their meter point.
euirequiredThe user's IHD/CAD EUI. As prementioned, along with the postcode this will be used to verify and identify the user's meter point. The EUI in this case can be the full or just the last 4 digits of the EUI.
tcIdrequiredThe UUID indicating the terms and conditions. Use the /current call to obtain the identifier to include.
referencerequiredThe clear text reference of the terms and conditions
dataoptionalAny additional data as a JSON object to be stored against the UserId, that is pertinent to them accepting the terms and conditions.
acceptedrequiredThe datetime the terms and conditions were accepted.
When the API is submitted the system will check all the provided information and if it finds it to be valid, it will register the user. Once completed smart meter data will automatically be requested and the historical data will be stored on Resources against the UserId. The timing of this process is asynchronous.
The UserId should be stored by the third party application, although it can be looked up in the future against the foreign key.
For more API details on onboarding see https://api.glowmarkt.com/api-docs/v0-1/provisioning/

Bonus - determining dual fuel and meter point details#

This section describes how the API can be used to determine the type of meter(s) a user has on premises. It is populated once data starts to return from the metering infrastructure. In most cases the API functions within several seconds after registration is complete but should be treated as asynchronous.
The UserId that was created in the registration step must be used in the header along with the API keys turned into Authorization header. For example:
The response of this API is an array of devices. In most cases there will be one or two entries; one entry for the electricity meter and a second for the gas meter. However, if the end user has a CAD device or multiple locations registered to their account, they may have more entries in the array. The following indicate a smart meter sourced by the DCC.
"protocol": "dcc"
"deviceTypeId": "51d5ac18-4f7d-494d-a6b0-371742222d5c" = Electricity Meter
"deviceTypeId": "81825a67-c205-434f-8c56-6fff5faafcde" = Gas Meter
You can use the MPAN or MPRN fields to display which specific meter is in context for device actions.
[
  {
    "protocol": {
      "protocol": "dcc",
      "sensors": [
        {
          "resourceTypeId": "e3a5db34-6e0c-4221-9653-8d33e27511ba",
          "protocolId": "0702:04:00",
          "resourceId": "9bb47086-39b1-4cf7-b973-c914759fdd2c"
        },
        {
          "resourceTypeId": "78859e39-611e-4e84-a402-1d4460abcb56",
          "protocolId": "0702:04:00",
          "resourceId": "9663f171-ba07-499e-9870-4bf2342fae0b"
        }
      ]
    },
    "parentHardwareId": [
    ],
    "tags": [
      "3**************E",
      "1***********7"
    ],
    "hardwareIdNames": [
      "MPAN",
      "EUI"
    ],
    "active": true,
    "deviceTypeId": "51d5ac18-4f7d-494d-a6b0-371742222d5c",
    "ownerId": "3ff6ca6d-e6a4-47cb-afc8-251177130e69",
    "hardwareIds": {
      "MPAN": "1***********7",
      "EUI": "3**************E"
    },
    "hardwareId": "3**************E",
    "description": "Electricity Smart Meter (DCC sourced)",
    "deviceId": "8ce0ab80-b0f1-4bd2-a6cd-49beb0d42517",
    "updatedAt": "2020-11-11T18:46:59.804Z",
    "createdAt": "2020-11-11T18:46:59.804Z"
  },
  {
    "protocol": {
      "protocol": "dcc",
      "sensors": [
        {
          "resourceTypeId": "a6b95f41-771d-4bd2-99f4-93ee43c38f5a",
          "protocolId": "0702:04:00",
          "resourceId": "19c0f2b4-cea7-4c4e-aba2-76472dc478d8"
        },
        {
          "resourceTypeId": "08ab415f-d851-423f-adf4-c2b1e0529e27",
          "protocolId": "0702:04:00",
          "resourceId": "be5dfe71-8f53-4a03-ad23-1bde5a63afea"
        }
      ]
    },
    "parentHardwareId": [
    ],
    "tags": [
      "3**************F",
      "3********3",
      "1***********7"
    ],
    "hardwareIdNames": [
      "MPRN",
      "MPAN",
      "EUI"
    ],
    "active": true,
    "deviceTypeId": "81825a67-c205-434f-8c56-6fff5faafcde",
    "ownerId": "54091510-4eaa-43d5-b33b-e9fc2f7d576d",
    "hardwareIds": {
      "MPRN": "3********3",
      "MPAN": "1***********7",
      "EUI": "30EB5AFFFF325DCF"
    },
    "hardwareId": "3**************F",
    "description": "Gas Meter (DCC sourced)",
    "deviceId": "6bf647e2-aeee-4795-8804-c8bf48748dc7",
    "updatedAt": "2020-11-11T18:47:14.100Z",
    "createdAt": "2020-11-11T18:47:14.100Z"
  }
]
Modified at 2026-08-14 16:19:48
Previous
Terms and Conditions APIs and Management
Next
AVS Check
Built with