Skip to main content

User administration

Our customers (called "intermediaries" in API code) can administer users using their api keys.

Create user with externalId

You can create a user, using an ID you have control over, either something randomly generated and stored on your side, or a customer ID or maybe even a phone number. We call this externaId in our API.

mutation {
addUser(input: { userIdentifier: { externalUser: { externalId: "END_USER_ID" } } }) {
success
user {

userIdentifier {

}
}
}

Give the user permissions to one or more devices

Based on what is stored in your databases about which users own or otherwise have access to which devices, you can add permissions in our API. The devices can be identified using the deviceId (eight characters) or the meterId (serial number of power meter).

mutation {
addDevicePermissions(input: {
deviceIdentifiers: [{ meterId: "METERID" }] # or deviceId
userIdentifier: { externalUser: { externalId: "END_USER_ID" } }
}) {
success
modifiedPermissions {}
user {}
}
}

Create a session for this user, returning a token for other requests

You also have to add a user session to get an accessToken you can store in the user's app. This token can now be used to fetch data without going through your (customer) systems.

mutation {
addUserSession(input: { userIdentifier: { externalUser: { externalId: "END_USER_ID" } } } ) {
success
user {}
session {
accessToken
}
}
}

You will then use the returned accessToken as described elsewhere

Authorization: Bearer ACCESS_TOKEN

Optional: Check order status(es) for the user

To check the status of a user's orders:

query {
ordersForUser(input: { externalUserId: "END_USER_ID" }) {
orders {
orderId
orderStatus
deviceId
trackingLink

}
}
}

When an order is SHIPPED there should be values in the deviceId and trackingLink fields.

Other user administration API calls

There are several other API calls for user administration that are based on externalId and more or less follows the same syntax

  • removeUser
  • removeDevicePermissions
  • addChargingPermission
  • removeChargingPermission

Implementation notes

The session is valid until 30 days after last user activity (updated on user activity). Because of this, you can implement error handling that will run the create/permission/session calls again. Some of our customers find it easier to run the create/permission/session calls each time the user opens the app. We are considering implementing a check for valid user/session/permission.