Introduction
Welcome to the SIERA API. You can use the SIERA API to access and modify Assets, Meter and Consumption data.
This page helps you to understand the requirements of the API, common errors, the format of data sent and received and other details related to security and operation of the API.
We provide an OpenAPI specification description which can be imported into programs such as Postman to help you get started with the API.
Requirements
To use the latest version of the REST API you will need a valid account with SIERA. This can be obtained by contacting SIERA Support.
Request format
Request parameters should be provided using the application/json
Content-Type. The only exception is the IDs of entities or assets which are part of the URLs.
Unless otherwise documented all responses are JSON-encoded Content-Type: application/json
.
All endpoints require either a bearer token or basic token which must be specified in the header of the request. How to obtain a token is explained in authentication.
Date format
All date formats should be sent as dd/mm/yy
Response types
Most endpoints will return a standard HTTP status code to reflect the result of the API call. Where an endpoint produces a different response code, or has additional information about a response code it will be written against the endpoint's information.
Code | Text | Description |
---|---|---|
200 | Ok | Success, assets returned in the response body |
201 | Created | Success, the uploaded entity has been successfully created |
400 | Bad request | Failed, the request failed validation |
404 | Not found | Failed, the item was not found |
429 | Too many requests | Failed, the request was refused due excessive use |
5xx | Server error | Failed, an error has occurred on our servers. Wait a few minutes and try again or notify us if the errors continue |
Rate limiting
The SIERA API enforces a rate limit on the number of requests allowed within certain time frames. The limits are:
Time frame | Number of requests allowed |
---|---|
1 second | 100 |
15 minutes | 1000 |
12 hours | 10,000 |
7 days | 100,000 |
For every request that is made the number of further requests allowed in the largest available time frame will be returned in the headers of the response along with the datetime the limit will be reset, for example:
x-rate-limit-limit: 7d
x-rate-limit-remaining: 9991
x-rate-limit-reset: 2021-12-29T15:21:09.3213831Z
If the limit is exceeded the caller will receive a HTTP status code of 429 Too Many Requests
along with a response body indicating the limit exceeded such as API calls quota exceeded! maximum admitted 2 per 1s.
Authentication
There are 2 options for authentication when using the SIERA API:
- Use Basic Authentication and insert encoded credentials in the header of the request.
- Use the login endpoint to obtain a Bearer token which is then inserted into the header of the request.
Basic Authentication
To use Basic Authentication simply take the username and password and form a string joined by a single colon (:). This string is then encoded into Base64, and inserted into the Authorization header with the word Basic before it.
As an example, if the user testuser@companyabc.com with password SekaiFleur@PalomaSchnee combines these credentials (testuser@companyabc.com:SekaiFleur@PalomaSchnee), and then encodes that into Base64 we get the string dGVzdHVzZXJAY29tcGFueWFiYy5jb206U2VrYWlGbGV1ckBQYWxvbWFTY2huZWU=. This can then be inserted into the header to authenticate each request as
Authorization: Basic dGVzdHVzZXJAY29tcGFueWFiYy5jb206U2VrYWlGbGV1ckBQYWxvbWFTY2huZWU=
Basic Authentication is required for access to the API via Excel and Power BI, and secured primarily using TLS. Owasp Security guidelines recognise it discloses secrets in plain text (base64 encoded) and recommends against its use where possible, but accepts that where necessary TLS must be used.
Get bearer token
POST /api/v1/authentication/login
curl POST https://api.sieraglobal.com/api/v1/authentication/login \
-H 'accept: */*' \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"email": "testuser@companyabc.com",
"password": "SekaiFleur@PalomaSchnee"
}
Response (200)
{
"token": "eyJhbGciOiJBMTI4S1ciLCJlbmMiOiJBMTI4Q0J1LUhTMjU2IiwidHlwIjoiSldUIn0.Fb5jEJb9zokguyPFyha4YFwguTMe8zChZ9isrCgI5r8o1Lfk0q_few.c02C5x7NTPEzerSoc8Rghw.lRWHsUJSm5W-NR8sfg8756MVDyA66dy_Ymet78bmNarFXEbvUYmOjCg1maDrUDmUWvWvi7_OYjAz7CgiHs7btIStaBklGX1nxIh60c_8DpA3ustSTYjmnrdSlPDJ9gENeewDIHWCjTgz1MjKhE42mdeZ6xFrxu7JFcc23m4J31kcbR8wL92MZChb_issdqhXc8CnZzYwP-PZ3wCWgsn63gc_-yQ5Y5cz9a1Sqtcbx7P2fw7PDkQi1SvVRcL7XQXhGvNbuyB21sxYYTjdcatoY6wAAGGF_UcTMmhoDV6dziELEq7pGKkwmFXZP38rZs_CBM7vtBKtWY_ESX1_C7SmrucQJRa4sdrsbHA98-q1lQkoK-ZJnl3wZRoJ6xslEicxj9bpuRL20ZRd-kmXwPBSY0ldTcvkLHhKGrN7vMBmbmQDcnps2iH64BOWi-O-YKupGK70eO-YmYLZ3T85nlbttg.Mo9LyvjYVYzN6cl258MXrQ",
"expiration": "2021-11-27T15:20:47Z",
"lockoutTimeRemaining": null,
"maxRetriesExceeded": 0,
"previousAccessFailedCount": 0
}
Response (401)
{
"type": "https://tools.ietf.org/html/rfc7235#section-3.1",
"title": "Unauthorized",
"status": 401,
"traceId": "00-67cb3e28086d1b4198cf96e8d37b495a-e76f80e2f9c51f4b-00"
}
Response (403) - Locked
{
"type": "https://tools.ietf.org/html/rfc7235#section-3.1",
"title": "Locked",
"detail": 45,
"status": 403,
"traceId": "00-67cb3e28086d1b4198cf96e8d37b495a-e76f80e2f9c51f4b-00"
}
Response (403) - Password Expiry
{
"type": "https://tools.ietf.org/html/rfc7235#section-3.1",
"title": "Expired",
"detail": "eyJhbGciOiJBMTI4S1ciLCJlbmMiOiJBMTI4Q0J1LUhTMjU2IiwidHlwIjoiSldUIn0.Fb5jEJb9zokguyPFyha4YFwguTMe8zChZ9isrCgI5r8o1Lfk0q_few.c02C5x7NTPEzerSoc8Rghw.lRWHsUJSm5W-NR8sfg8756MVDyA66dy_Ymet78bmNarFXEbvUYmOjCg1maDrUDmUWvWvi7_OYjAz7CgiHs7btIStaBklGX1nxIh60c_8DpA3ustSTYjmnrdSlPDJ9gENeewDIHWCjTgz1MjKhE42mdeZ6xFrxu7JFcc23m4J31kcbR8wL92MZChb_issdqhXc8CnZzYwP-PZ3wCWgsn63gc_-yQ5Y5cz9a1Sqtcbx7P2fw7PDkQi1SvVRcL7XQXhGvNbuyB21sxYYTjdcatoY6wAAGGF_UcTMmhoDV6dziELEq7pGKkwmFXZP38rZs_CBM7vtBKtWY_ESX1_C7SmrucQJRa4sdrsbHA98-q1lQkoK-ZJnl3wZRoJ6xslEicxj9bpuRL20ZRd-kmXwPBSY0ldTcvkLHhKGrN7vMBmbmQDcnps2iH64BOWi-O-YKupGK70eO-YmYLZ3T85nlbttg.Mo9LyvjYVYzN6cl258MXrQ",
"status": 403,
"traceId": "00-67cb3e28086d1b4198cf96e8d37b495a-e76f80e2f9c51f4b-00"
}
Summary: Obtain a bearer token via password grant type login
HTTP Request
POST /api/v1/authentication/login
Request body
Attribute | Type and description |
---|---|
email |
string The username associated with a valid user account in SIERA |
password |
string The valid password associated with the username of the SIERA user account |
Response Body
The response body will be either a token with expiration and lockout information, or error details of the failed attempt.
Attribute | Type and description |
---|---|
token |
integer A valid generated token which can be used in place of $ACCESS_TOKEN$ and passed as a bearer token |
expiration |
datetime The datetime which the token will expire |
lockoutTimeRemaining |
integer The amount of time in seconds before which a locked account can attempt a further login |
maxRetriesExceeded |
integer The number of times which have been attempted which caused the account to be temporarily locked |
previousAccessFailedCount |
integer On successful login, this will contain the number of previous failed attempts |
type |
integer The type of validation failure which occured |
title |
string The title of the failure |
status |
integer The error code associated with the failure |
detail |
string A description of the failure or further associated information |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
401 | Unauthorized |
403 | User account has been locked or the password has expired |
500 | Server error |
Assets
The Assets endpoints allow you to download asset data from SIERA. You can also upload new assets, update assets or delete them from a given instance in SIERA.
Get all assets
GET /api/v1/assets
curl https://api.sieraglobal.com/api/v1/assets \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"assetId": 2,
"assetName": "Chelsea House, London",
"assetReference": "CHL-2",
"country": "UnitedKingdom",
"controlledBy": "Landlord",
"sector": "Retail",
"organisationId": 2,
"fundId": 3,
"gia": 1234,
"nla": 1100,
"cpa": 15,
"ext": 100,
"measurementType": "M2",
"address": "1, The Way",
"city": "Townington",
"postcode": "AB12 3DC",
"status": "MajorRefurbishment",
"dateOfPurchase": "1999-01-01T00:00:00.000Z",
"dateOfSale": "2021-03-14T00:00:00.000Z",
"yearOfConstruction": 1985,
"yearOfRefurbishment": 2006,
"currentAssetValue": 1200000,
"longitude": 51.507351,
"latitude": -0.127758,
"targetCarbon": 5,
"targetEnergy": 1,
"targetElectricity": 3,
"targetFuelsAndThermals": 4,
"targetWater": 6,
"gresbSector": "Office",
"carParkingSpaces": 14,
"fri": true,
"assetImageUri": "https://api.sieraglobal.com/api/v1/assets/2/assetimage"
},
{
"assetId": 3,
"assetName": "2-4 Sharwalk Building, Birmingham",
"assetReference": "CHL-3",
"country": "UnitedKingdom",
"controlledBy": "Landlord",
"sector": "Retail",
"organisationId": 2,
"fundId": 3,
"gia": 1640,
"nla": 1530,
"cpa": 14,
"ext": 121,
"measurementType": "M2",
"address": "2, The Way",
"city": "Townington",
"postcode": "AB12 3DC",
"status": "MajorRefurbishment",
"dateOfPurchase": "2000-01-01T00:00:00.000Z",
"dateOfSale": "2021-03-19T00:00:00.000Z",
"yearOfConstruction": 1985,
"yearOfRefurbishment": 2007,
"currentAssetValue": 1250000,
"longitude": 51.507351,
"latitude": -0.127758,
"targetCarbon": 4,
"targetEnergy": 3,
"targetElectricity": 5,
"targetFuelsAndThermals": 1,
"targetWater": 6,
"gresbSector": "Office",
"carParkingSpaces": 18,
"fri": false,
"assetImageUri": "https://api.sieraglobal.com/api/v1/assets/3/assetimage"
}
]
Summary: Provides a list of all assets in SIERA
HTTP Request
GET /api/v1/assets
Response Body
The response body will include a list of all assets in SIERA.
Attribute | Type and description |
---|---|
assetId |
integer The SIERA-generated id of the asset |
assetName |
string The name of the asset |
assetReference |
string The user-specified asset reference, unique within the API caller's SIERA instance |
country |
enumeration A valid country from the country enumeration |
controlledBy |
enumeration A valid item from the asset control enumeration showing who primarily is responsible for the asset, the landlord or the tenant |
sector |
enumeration A valid item from the sector enumeration indicating the property sector this asset belongs to |
organisationId |
integer The id value of an organisation which exists in the API-caller's SIERA instance |
fundId |
integer The id value of a fund which exists in the authorised user or API-caller's SIERA instance |
gia |
integer The Gross Internal Area (GIA) of the asset, measured in units indicated by the measurement type |
nla |
integer The Net Lettable Area (NLA) of the asset, measured in units indicated by the measurement type |
cpa |
integer The Common Part Areas (CPA) of the asset, measured in units indicated by the measurement type. For example, entrance lobbies, hallways and toilets |
ext |
integer The external areas of the asset, measured in units indicated by the measurement type. For example, car parks, outside eating areas and greenspace |
measurementType |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
address |
string The address of the asset |
city |
string The city of the asset |
postcode |
string The postcode of the asset |
status |
enumeration A valid item from the asset status enumeration indicates the current state of the asset in relation to its ability to be commercially occupied. |
dateOfPurchase |
datetime The date which the asset was purchased |
dateOfSale |
datetime The date which the asset was sold |
yearOfConstruction |
integer The year that the asset was built |
yearOfRefurbishment |
integer The year that the asset was refurbished |
currentAssetValue |
integer The current value of the asset in Great British Pounds (GBP) |
longitude |
decimal The decimal longitude coordinates of the asset location (to 6 decimal places) |
latitude |
decimal The decimal latitude coordinates of the asset location (to 6 decimal places) |
targetCarbon |
float The target percentage for the annual reduction of carbon usage for all meters on the asset |
targetEnergy |
float The target percentage for the annual reduction of energy usage for all meters on the asset |
targetElectricity |
float The target percentage for the annual reduction of electricity usage for all meters on the asset |
targetFuelsAndThermals |
float The target percentage for the annual reduction of fuels & thermals usage for all meters on the asset |
targetWater |
float The target percentage for the annual reduction of water usage for all meters on the asset |
gresbSector |
enumeration A valid item from the GRESB sector enumeration indicating how the asset is classified for GRESB certification |
carParkingSpaces |
integer The number of car parking spaces available at the asset |
fri |
boolean A boolean flag indicating if the current lease is Full Repairing and Insuring (FRI) or not |
assetImageUri |
string A URI of a downloadable image for the asset |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Get an asset
GET /api/v1/assets/{assetId}
curl https://api.sieraglobal.com/api/v1/assets/2 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
{
"assetId": 2,
"assetName": "Chelsea House, London",
"assetReference": "CHL-2",
"country": "UnitedKingdom",
"controlledBy": "Landlord",
"sector": "Retail",
"organisationId": 2,
"fundId": 3,
"gia": 1234,
"nla": 1100,
"cpa": 15,
"ext": 100,
"measurementType": "M2",
"address": "1, The Way",
"city": "Townington",
"postcode": "AB12 3DC",
"status": "MajorRefurbishment",
"dateOfPurchase": "1999-01-01T00:00:00.000Z",
"dateOfSale": "2021-03-14T00:00:00.000Z",
"yearOfConstruction": 1985,
"yearOfRefurbishment": 2006,
"currentAssetValue": 1200000,
"longitude": 51.507351,
"latitude": -0.127758,
"targetCarbon": 5,
"targetEnergy": 1,
"targetElectricity": 3,
"targetFuelsAndThermals": 4,
"targetWater": 6,
"gresbSector": "Office",
"carParkingSpaces": 14,
"fri": true,
"assetImageUri": "https://myapi.com/api/v1/Assets/2/AssetImage"
}
Response (201)
Summary: Provides a single asset given an ID
HTTP Request
GET /api/v1/assets/{assetId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
assetId | path | A valid id of an asset stored in SIERA | Yes | integer |
Response Body
The response body will the specified asset which matches the assetId given as a parameter.
Attribute | Type and description |
---|---|
assetId |
integer The SIERA-generated id of the asset |
assetName |
string The name of the asset |
assetReference |
string The user-specified asset reference, unique within the API caller's SIERA instance |
country |
enumeration A valid country from the country enumeration |
controlledBy |
enumeration A valid item from the asset control enumeration showing who primarily is responsible for the asset, the landlord or the tenant |
sector |
enumeration A valid item from the sector enumeration indicating the property sector this asset belongs to |
organisationId |
integer The id value of an organisation which exists in the API-caller's SIERA instance |
fundId |
integer The id value of a fund which exists in the authorised user or API-caller's SIERA instance |
gia |
integer The Gross Internal Area (GIA) of the asset, measured in units indicated by the measurement type |
nla |
integer The Net Lettable Area (NLA) of the asset, measured in units indicated by the measurement type |
cpa |
integer The Common Part Areas (CPA) of the asset, measured in units indicated by the measurement type. For example, entrance lobbies, hallways and toilets |
ext |
integer The external areas of the asset, measured in units indicated by the measurement type. For example, car parks, outside eating areas and greenspace |
measurementType |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
address |
string The address of the asset |
city |
string The city of the asset |
postcode |
string The postcode of the asset |
status |
enumeration A valid item from the asset status enumeration indicates the current state of the asset in relation to its ability to be commercially occupied. |
dateOfPurchase |
datetime The date which the asset was purchased |
dateOfSale |
datetime The date which the asset was sold |
yearOfConstruction |
integer The year that the asset was built |
yearOfRefurbishment |
integer The year that the asset was refurbished |
currentAssetValue |
integer The current value of the asset in Great British Pounds (GBP) |
longitude |
integer The decimal longitude coordinates of the asset location (to 6 decimal places) |
latitude |
integer The decimal latitude coordinates of the asset location (to 6 decimal places) |
targetCarbon |
float The target percentage for the annual reduction of carbon usage for all meters on the asset |
targetEnergy |
float The target percentage for the annual reduction of energy usage for all meters on the asset |
targetElectricity |
float The target percentage for the annual reduction of electricity usage for all meters on the asset |
targetFuelsAndThermals |
float The target percentage for the annual reduction of fuels & thermals usage for all meters on the asset |
targetWater |
float The target percentage for the annual reduction of water usage for all meters on the asset |
gresbSector |
enumeration A valid item from the GRESB sector enumeration indicating how the asset is classified for GRESB certification |
carParkingSpaces |
integer The number of car parking spaces available at the asset |
fri |
boolean A boolean flag indicating if the current lease is Full Repairing and Insuring (FRI) or not |
assetImageUri |
string A URI of a downloadable image for the asset |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified asset id was not found |
500 | Server error |
Upload a new asset
POST /api/v1/assets
curl POST https://api.sieraglobal.com/api/v1/assets \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"assetName": "Chelsea House, London",
"assetReference": "CHL-2",
"country": "UnitedKingdom",
"controlledBy": "Landlord",
"sector": "Retail",
"organisationId": 2,
"fundId": 3,
"gia": 1234,
"nla": 1100,
"cpa": 15,
"ext": 100,
"measurementType": "M2",
"address": "1, The Way",
"city": "Townington",
"postcode": "AB12 3DC",
"status": "MajorRefurbishment",
"dateOfPurchase": "1999-01-01T00:00:00.000Z",
"dateOfSale": "2021-03-14T00:00:00.000Z",
"yearOfConstruction": 1985,
"yearOfRefurbishment": 2006,
"currentAssetValue": 1200000,
"longitude": 51.507351,
"latitude": -0.127758,
"targetCarbon": 5,
"targetEnergy": 1,
"targetElectricity": 3,
"targetFuelsAndThermals": 4,
"targetWater": 6,
"gresbSector": "Office",
"carParkingSpaces": 14,
"fri": true
}
Response (201)
{
"assetId": 3
}
Summary: Uploads a new asset
HTTP Request
POST /api/v1/assets
Request body
Attribute | Type and description |
---|---|
assetName |
string The name of the asset |
assetReference |
string The user-specified asset reference, unique within the API caller's SIERA instance |
country |
enumeration A valid country from the country enumeration |
controlledBy |
enumeration A valid item from the asset control enumeration showing who primarily is responsible for the asset, the landlord or the tenant |
sector |
enumeration A valid item from the sector enumeration indicating the property sector this asset belongs to |
organisationId |
integer The id value of an organisation which exists in the API-caller's SIERA instance |
fundId |
integer The id value of a fund which exists in the authorised user or API-caller's SIERA instance |
gia |
float The Gross Internal Area (GIA) of the asset, measured in units indicated by the measurement type. This may be null |
nla |
float The Net Lettable Area (NLA) of the asset, measured in units indicated by the measurement type. This may be null |
cpa |
integer The Common Part Areas (CPA) of the asset, measured in units indicated by the measurement type. For example, entrance lobbies, hallways and toilets |
ext |
integer The external areas of the asset, measured in units indicated by the measurement type. For example, car parks, outside eating areas and greenspace |
measurementType |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
address |
string The address of the asset |
city |
string The city of the asset |
postcode |
string The postcode of the asset |
status |
enumeration A valid item from the asset status indicates the current state of the asset in relation to its ability to be commercially occupied. |
dateOfPurchase |
datetime The date which the asset was purchased |
dateOfSale |
datetime The date which the asset was sold |
yearOfConstruction |
integer The year that the asset was built |
yearOfRefurbishment |
integer The year that the asset was refurbished |
currentAssetValue |
integer The current value of the asset in Great British Pounds (GBP) |
longitude |
decimal The decimal longitude coordinates of the asset location (to 6 decimal places) |
latitude |
decimal The decimal latitude coordinates of the asset location (to 6 decimal places) |
targetCarbon |
float The target percentage for the annual reduction of carbon usage for all meters on the asset |
targetEnergy |
float The target percentage for the annual reduction of energy usage for all meters on the asset |
targetElectricity |
float The target percentage for the annual reduction of electricity usage for all meters on the asset |
targetFuelsAndThermals |
float The target percentage for the annual reduction of fuels & thermals usage for all meters on the asset |
targetWater |
float The target percentage for the annual reduction of water usage for all meters on the asset |
gresbSector |
enumeration A valid item from the GRESB sector enumeration indicating how the asset is classified for GRESB certification |
carParkingSpaces |
integer The number of car parking spaces available at the asset |
fri |
boolean A boolean flag indicating if the current lease is Full Repairing and Insuring (FRI) or not |
Response Body
The response body will a new asset ID relating to the uploaded asset
Attribute | Type and description |
---|---|
assetId |
integer The SIERA-generated id of the new asset |
Responses
Code | Description |
---|---|
201 | Created |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Update an asset
PUT /api/v1/assets/{assetId}
curl PUT https://api.sieraglobal.com/api/v1/assets/2 \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"assetName": "Birmingham House, London",
"assetReference": "CHL-3",
"country": "UnitedKingdom",
"controlledBy": "Landlord",
"sector": "Retail",
"organisationId": 2,
"fundId": 3,
"gia": 1234,
"nla": 1100,
"cpa": 14,
"ext": 121,
"measurementType": "M2",
"address": "2, The Way",
"city": "Townington",
"postcode": "AB12 3DC",
"status": "MajorRefurbishment",
"dateOfPurchase": "2000-01-01T00:00:00.000Z",
"dateOfSale": "2021-03-19T00:00:00.000Z",
"yearOfConstruction": 1985,
"yearOfRefurbishment": 2007,
"currentAssetValue": 1250000,
"longitude": 51.507351,
"latitude": -0.127758,
"targetCarbon": 4,
"targetEnergy": 3,
"targetElectricity": 5,
"targetFuelsAndThermals": 1,
"targetWater": 6,
"gresbSector": "Office",
"carParkingSpaces": 18,
"fri": false
}
Response (200)
Summary: Updates an existing asset by ID
HTTP Request
PUT /api/v1/assets/{assetId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
assetId | path | The id of the asset to be updated in SIERA | Yes | integer |
Request body
Attribute | Type and description |
---|---|
assetName |
string The name of the asset |
assetReference |
string The user-specified asset reference, unique within the API caller's SIERA instance |
country |
enumeration A valid country from the country enumeration |
controlledBy |
enumeration A valid item from the asset control enumeration showing who primarily is responsible for the asset, the landlord or the tenant |
sector |
enumeration A valid item from the sector enumeration indicating the property sector this asset belongs to |
organisationId |
integer The id value of an organisation which exists in the API-caller's SIERA instance |
fundId |
integer The id value of a fund which exists in the authorised user or API-caller's SIERA instance |
gia |
integer The Gross Internal Area (GIA) of the asset, measured in units indicated by the measurement type |
nla |
integer The Net Lettable Area (NLA) of the asset, measured in units indicated by the measurement type |
cpa |
integer The Common Part Areas (CPA) of the asset, measured in units indicated by the measurement type. For example, entrance lobbies, hallways and toilets |
ext |
integer The external areas of the asset, measured in units indicated by the measurement type. For example, car parks, outside eating areas and greenspace |
measurementType |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
address |
string The address of the asset |
city |
string The city of the asset |
postcode |
string The postcode of the asset |
status |
enumeration A valid item from the asset status enumeration indicates the current state of the asset in relation to its ability to be commercially occupied. |
dateOfPurchase |
datetime The date which the asset was purchased |
dateOfSale |
datetime The date which the asset was sold |
yearOfConstruction |
integer The year that the asset was built |
yearOfRefurbishment |
integer The year that the asset was refurbished |
currentAssetValue |
integer The current value of the asset in Great British Pounds (GBP) |
longitude |
decimal The decimal longitude coordinates of the asset location (to 6 decimal places) |
latitude |
decimal The decimal latitude coordinates of the asset location (to 6 decimal places) |
targetCarbon |
float The target percentage for the annual reduction of carbon usage for all meters on the asset |
targetEnergy |
float The target percentage for the annual reduction of energy usage for all meters on the asset |
targetElectricity |
float The target percentage for the annual reduction of electricity usage for all meters on the asset |
targetFuelsAndThermals |
float The target percentage for the annual reduction of fuels & thermals usage for all meters on the asset |
targetWater |
float The target percentage for the annual reduction of water usage for all meters on the asset |
gresbSector |
enumeration A valid item from the GRESB sector enumeration indicating how the asset is classified for GRESB certification |
carParkingSpaces |
integer The number of car parking spaces available at the asset |
fri |
boolean A boolean flag indicating if the current lease is Full Repairing and Insuring (FRI) or not |
assetImageUri |
string This URI is for the endpoint where the asset image can be downloaded |
Responses
Code | Description |
---|---|
200 | OK |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified asset id was not found |
500 | Server error |
Delete an asset
DELETE /api/v1/assets/{assetId}
curl -X DELETE https://api.sieraglobal.com/api/v1/assets/2 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
Summary: Deletes an existing asset by ID
HTTP Request
DELETE /api/v1/assets/{assetId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
assetId | path | The id of the asset to be deleted in SIERA | Yes | integer |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified asset id was not found |
500 | Server error |
Get all meters for an asset
GET /api/v1/assets/{assetId}/meters
curl https://api.sieraglobal.com/api/v1/assets/2/meters \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"meterId": 11,
"assetId": 2,
"unitId": 1,
"mpan": "S018011012261305588165",
"serialNumber": "1875258102",
"comment": "",
"supplier": "EON",
"areaCovered": "SharedServices",
"controlledBy": "Landlord",
"floorAreaServed": 730,
"meterType": "Electricity",
"generationType": "NationalGrid",
"measurementType": "M2",
"locationCarbonFactorId": 0,
"marketCarbonFactorId": 0,
"unitRateId": 1,
"isActive": true,
"isAMR": false,
"isSubmeter": false,
"isValidated": true,
"isROC": false,
"isFIT": false,
"isCCA": false,
"isEUETS": false,
"hasHalfHourData": false
},
{
"meterId": 12,
"assetId": 2,
"unitId": 2,
"mpan": "S018005012341305549165",
"serialNumber": "1815248121",
"comment": "",
"supplier": "EON",
"areaCovered": "WholeBuilding",
"controlledBy": "Landlord",
"floorAreaServed": 1100,
"meterType": "Gas",
"generationType": "NationalGrid",
"measurementType": "M2",
"locationCarbonFactorId": 0,
"marketCarbonFactorId": 0,
"unitRateId": 2,
"isActive": true,
"isAMR": false,
"isSubmeter": false,
"isValidated": false,
"isROC": false,
"isFIT": false,
"isCCA": false,
"isEUETS": false,
"hasHalfHourData": false
}
]
Summary Provides all meters given an asset ID
HTTP Request
GET /api/v1/assets/{assetId}/meters
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
assetId | path | A valid id of an asset stored in SIERA | Yes | integer |
Response Body
The response body will be a list of meters which are associated with the asset specified by the assetId parameter.
Attribute | Type and description |
---|---|
meterId |
integer The SIERA-generated id of the meter |
assetId |
integer The SIERA-generated id of the associated asset |
unitId |
integer The SIERA-generated id of any associated unit |
mpan |
string The meter point administration number (MPAN) of the meter |
serialNumber |
string The serial number of the meter |
comment |
string A free-text description relating to the meter |
supplier |
string Any utilities supplier related to the meter |
areaCovered |
enumeration A valid area of the property which this meter covers, from the area covered enumeration |
controlledBy |
enumeration A valid item from the asset control enumeration showing who primarily pays for the energy from this meter, the landlord or the tenant |
floorAreaServed |
integer The floor area covered by this meter |
meterType |
enumeration A valid utility of the meter from the meter type enumeration |
generationType |
enumeration A valid generation type of the meter from the generation type enumeration |
measurementType |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
locationCarbonFactorId |
integer The id value of an location-based carbon factor Id which exists in the API-caller's SIERA instance, or one of the default carbon factors provided by Evora |
marketCarbonFactorId |
integer The id value of an market-based carbon factor Id which exists in the API-caller's SIERA instance, or one of the default carbon factors provided by Evora |
unitRateId |
integer The id value of a cost unit rate Id which exists in the API-caller's SIERA instance, or one of the default unit rates provided by Evora |
isActive |
boolean A boolean flag indicating if this meter is considered active and currently in use or not. |
isAMR |
boolean A boolean flag indicating if this meter's readings are being retrieved by automatic meter reading or not. |
isSubmeter |
boolean A boolean flag indicating if this meter isa sub-meter or not |
isValidated |
boolean A boolean flag indicating if this meter has been validated or not. |
isROC |
boolean A boolean flag indicating if this meter has an Renewables Obligation Certificate generation meter which measures total electricity produced by solar panel or not. |
isFIT |
boolean A boolean flag indicating if this meter is a Feed-In-Time tariff (relating to solar panels) or not. |
isCCA |
boolean A boolean flag indicating if this meter is part of a Community Choice Aggregation or not. |
isEUETS |
boolean A boolean flag indicating if this meter is part of the EU Energy Trading System or not. |
hasHalfHourData |
boolean A boolean flag indicating if this meter has received half-hourly data or not. |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified asset was not found |
500 | Server error |
Get all waste destinations for an asset
GET /api/v1/assets/{assetId}/wastedestinations
curl https://api.sieraglobal.com/api/v1/assets/2/wastedestinations \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"assetId": 2,
"wasteDestinationId": 2,
"wasteDestinationDescription": "Mixed Recycleables",
"comments": "Recycling for Chelsea House, London",
"contractor": "Veolia",
"reference": "Reference 1000022",
"wasteDestination": "Recycled"
},
{
"assetId": 2,
"wasteDestinationId": 3,
"wasteDestinationDescription": "General Waste",
"comments": "General Waste for Chelsea House, London",
"contractor": "Veolia",
"reference": "Reference 1000023",
"wasteDestination": "Landfill"
}
]
Summary: Provides all waste destinations given an asset ID
HTTP Request
GET /api/v1/assets/{assetId}/wastedestinations
Response Body
The response body will be a list of waste destinations which are associated with the asset specified by the assetId parameter.
Attribute | Type and description |
---|---|
assetId |
integer The id of the asset |
wasteDestinationId |
integer The SIERA-generated id of the waste destination |
wasteDestinationDescription |
string A description of the waste destination |
comments |
string Comments relating to the waste destination |
contractor |
string The name of the contractor providing the waste service |
reference |
string A reference for the waste destination on the asset |
wasteDestination |
enumeration A valid destination type from the waste destination enumeration |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified asset was not found |
500 | Server error |
Get all action plans for an asset
GET /api/v1/assets/{assetId}/actionplans
curl https://api.sieraglobal.com/api/v1/assets/2/actionplans \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"actionId": 2,
"assetId": 2,
"actionDescription": "Upgrade lighting to LED",
"impact": "Energy",
"approved": true,
"status": "AgreedActions",
"current": 350,
"target": 200,
"cost": "Low",
"costType": "RevenueServiceCharge",
"scope": "WholeBuilding",
"manager": "Jeff Parsons",
"completion": "",
"dueDate": "9/1/2022",
"currency": "GBP",
"utilityType": "NotApplicable",
"performanceMeasure": "InstallationOfHighEfficiencyEquipment",
"targetUsagePercentage": 42.86
},
{
"actionId": 3,
"assetId": 2,
"actionDescription": "Replace southfacing windows with high-efficiency glazing",
"impact": "Energy",
"approved": true,
"status": "AgreedActions",
"current": 600,
"target": 300,
"cost": "12000",
"costType": "RevenueServiceCharge",
"scope": "WholeBuilding",
"manager": "Jeff Parsons",
"completion": "",
"dueDate": "9/1/2022",
"currency": "GBP",
"utilityType": "NotApplicable",
"performanceMeasure": "WindowReplacements",
"targetUsagePercentage": 50
},
]
Summary: Provides all action plans given an asset ID
HTTP Request
GET /api/v1/assets/{assetId}/actionplans
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
assetId | path | A valid id of an asset stored in SIERA | Yes | integer |
Response Body
The response body will be a list of action plans which are associated with the asset specified by the assetId parameter.
Attribute | Type and description |
---|---|
actionId |
integer The id of the action plan |
assetId |
integer The id of the asset |
actionDescription |
string A description of the action plan |
impact |
string The utility or utility group affected by the action |
approved |
boolean A boolean flag to indicate if the action plan has been approved or not |
status |
enumeration A valid action status from the action status enumeration |
current |
float The current usage amount related to this action |
target |
float A target usage the action is hoped to achieve |
cost |
string A text description of the costs of the action. This can be a number amount or relative description such as high or low. |
costType |
enumeration A valid cost type from the action cost type enumeration |
scope |
enumeration A valid floor area scope from the action scope enumeration |
manager |
string The name of a person who is considered the manager of this action |
completion |
datetime The actual completion date of the action, in the format m/d/yyyy |
dueDate |
datetime The expected completion date of the action, in the format m/d/yyyy |
currency |
string The currency of the costs related to the action, of GBP, USD or EUR. |
utilityType |
enumeration A valid utility from the action utility enumeration |
performanceMeasure |
enumeration A valid measure description from the action measure description enumeration |
targetUsagePercentage |
float A read-only percentage change between the current and target values of the action |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified asset was not found |
500 | Server error |
Get all asset units for an asset
GET /api/v1/assets/{assetId}/assetunits
curl https://api.sieraglobal.com/api/v1/assets/2/assetsunits \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"unitId": 12,
"unitName": "Unit A",
"unitReference": "TAC-234",
"occupier": "Pets At Home",
"actionNotes": "",
"gia": 1100,
"nla": 900,
"measurementUnit": "M2",
"vacant": false,
"leaseStart": "2020-12-17T12:00:00.000Z",
"leaseLength": 24,
"leaseExpiry": "2022-12-17T12:00:00.000Z",
"leaseBreak": "",
"erv": 1200,
"fri": false,
"epcExempt": false
},
{
"unitId": 13,
"unitName": "Unit B",
"unitReference": "TAC-235",
"occupier": "Asda Home",
"actionNotes": "",
"gia": 1050,
"nla": 800,
"measurementUnit": "M2",
"vacant": false,
"leaseStart": "2021-11-21T12:00:00.000Z",
"leaseLength": 24,
"leaseExpiry": "2023-12-21T12:00:00.000Z",
"leaseBreak": "2022-12-17T12:00:00.000Z",
"erv": 900,
"fri": false,
"epcExempt": false
}
]
Summary: Provides all asset units given an asset ID
HTTP Request
GET /api/v1/assets/{assetId}/assetunits
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
assetId | path | The id of the asset associated with the unit | Yes | integer |
Response Body
The response body will include a list of all assets in SIERA which are associated with the asset specified by the assetId parameter.
Attribute | Type and description |
---|---|
unitId |
integer The SIERA-generated id of the asset unit |
unitName |
string The name of the asset unit |
unitReference |
string The asset unit reference |
occupier |
string The name of the current occupier of the unit |
gia |
float The Gross Internal Area (GIA) of the asset, measured in units indicated by the measurement unit. This may be null |
nla |
float The Net Lettable Area (NLA) of the asset, measured in units indicated by the measurement unit. This may be null |
measurementUnit |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
leaseStart |
datetime The start date of the tenant of this unit's lease |
leaseLength |
integer The length in months of the tenant of this unit's lease |
leaseExpiry |
datetime The expiry date of the tenant of this unit's lease |
leaseBreak |
datetime The start date of a break in the tenant of this unit's lease |
erv |
float The estimated rental value (ERV) of this unit |
fri |
boolean A boolean flag indicating if the current lease is Full Repairing and Insuring (FRI) or not |
epcExempt |
boolean A boolean flag indicating if this unit has an EPC exemption or not |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified asset was not found |
500 | Server error |
Get an asset image
Summary The response will return a file, if one is found for the given asset ID.
HTTP Request
GET /api/v1/assets/{assetId}/assetimage
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
assetId | path | A valid id of an asset stored in SIERA | Yes | integer |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified asset was not found |
500 | Server error |
Validation rules
When uploading new assets or updating existing, SIERA will apply the following rules and if they are not met, a response of 400 will be returned with an error message and the field causing the validation failure.
The validation requirements for assets are:
- When uploading a new asset, the assetId must be 0 or null.
- When updating an asset, the assetId must be of an existing asset in SIERA.
- The assetReference must be unique. Validation will fail if any other asset has the same reference.
- The organisationId must already exist in SIERA.
- The fundId must already exist in SIERA.
- The dateOfPurchase (if present) must be before the dateOfSale (if present).
Asset Units
In SIERA asset units represent sub-units of assets, properties or sites, for example shops in a shopping centre. The assets units endpoints allow you to download asset unit data from SIERA. You can also upload new asset unit, update asset units or delete them from a given instance in SIERA.
An asset unit must be associated with a valid asset in the API-caller's SIERA instance.
Get all asset units
GET /api/v1/assetunits
curl https://api.sieraglobal.com/api/v1/assetsunits \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"unitId": 12,
"assetId": 2,
"unitName": "Unit A",
"unitReference": "TAC-234",
"occupier": "Pets At Home",
"actionNotes": "",
"gia": 1100,
"nla": 900,
"measurementUnit": "M2",
"vacant": false,
"leaseStart": "2020-12-17T12:00:00.000Z",
"leaseLength": 24,
"leaseExpiry": "2022-12-17T12:00:00.000Z",
"leaseBreak": "",
"erv": 1200,
"fri": false,
"epcExempt": false
},
{
"unitId": 13,
"assetId": 2,
"unitName": "Unit B",
"unitReference": "TAC-235",
"occupier": "Asda Home",
"actionNotes": "",
"gia": 1050,
"nla": 800,
"measurementUnit": "M2",
"vacant": false,
"leaseStart": "2021-11-21T12:00:00.000Z",
"leaseLength": 24,
"leaseExpiry": "2023-12-21T12:00:00.000Z",
"leaseBreak": "2022-12-17T12:00:00.000Z",
"erv": 900,
"fri": false,
"epcExempt": false
}
]
Summary: Provides a list of all asset units
HTTP Request
GET /api/v1/assetunits
Response Body
The response body will include a list of all assets in SIERA.
Attribute | Type and description |
---|---|
unitId |
integer The SIERA-generated id of the asset unit |
assetId |
integer The id of the asset associated with the unit |
unitName |
string The name of the asset unit |
unitReference |
string The asset unit reference |
occupier |
string The name of the current occupier of the unit |
gia |
float The Gross Internal Area (GIA) of the asset, measured in units indicated by the measurement unit. This may be null |
nla |
float The Net Lettable Area (NLA) of the asset, measured in units indicated by the measurement unit. This may be null |
measurementUnit |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
leaseStart |
datetime The start date of the tenant of this unit's lease |
leaseLength |
integer The length in months of the tenant of this unit's lease |
leaseExpiry |
datetime The expiry date of the tenant of this unit's lease |
leaseBreak |
datetime The start date of a break in the tenant of this unit's lease |
erv |
float The estimated rental value (ERV) of this unit |
fri |
boolean A boolean flag indicating if the current lease is Full Repairing and Insuring (FRI) or not |
epcExempt |
boolean A boolean flag indicating if this unit has an EPC exemption or not |
Get an asset unit
GET /api/v1/assetunits/{unitId}
curl https://api.sieraglobal.com/api/v1/assetunits/13 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
{
"unitId": 13,
"assetId": 2,
"unitName": "Unit B",
"unitReference": "TAC-235",
"occupier": "Asda Home",
"actionNotes": "",
"gia": 1050,
"nla": 800,
"measurementUnit": "M2",
"vacant": false,
"leaseStart": "2021-11-21T12:00:00.000Z",
"leaseLength": 24,
"leaseExpiry": "2023-12-21T12:00:00.000Z",
"leaseBreak": "2022-12-17T12:00:00.000Z",
"erv": 900,
"fri": false,
"epcExempt": false
}
Summary: Provides a single asset unit given a unitId
HTTP Request
GET /api/v1/assetunits/{unitId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
unitId | path | A valid id of an asset unit stored in SIERA | Yes | integer |
Response Body
The response body will the specified asset unit which matches the unitId given as a parameter.
Attribute | Type and description |
---|---|
unitId |
integer The SIERA-generated id of the asset unit |
assetId |
integer The id of the asset associated with the unit |
unitName |
string The name of the asset unit |
unitReference |
string The asset unit reference |
occupier |
string The name of the current occupier of the unit |
gia |
float The Gross Internal Area (GIA) of the asset, measured in units indicated by the measurement unit. This may be null |
nla |
float The Net Lettable Area (NLA) of the asset, measured in units indicated by the measurement unit. This may be null |
measurementUnit |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
leaseStart |
datetime The start date of the tenant of this unit's lease |
leaseLength |
integer The length in months of the tenant of this unit's lease |
leaseExpiry |
datetime The expiry date of the tenant of this unit's lease |
leaseBreak |
datetime The start date of a break in the tenant of this unit's lease |
erv |
float The estimated rental value (ERV) of this unit |
fri |
boolean A boolean flag indicating if the current lease is Full Repairing and Insuring (FRI) or not |
epcExempt |
boolean A boolean flag indicating if this unit has an EPC exemption or not |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified asset id or unit id was not found |
500 | Server error |
Upload a new asset unit
POST /api/v1/assetunits
curl POST https://api.sieraglobal.com/api/v1/assetunits \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"unitId": 14,
"assetId": 2,
"unitName": "Unit C",
"unitReference": "TAC-236",
"occupier": "Next",
"actionNotes": "",
"gia": 2000,
"nla": 1900,
"measurementUnit": "M2",
"vacant": false,
"leaseStart": "2020-11-21T12:00:00.000Z",
"leaseLength": 36,
"leaseExpiry": "2023-12-21T12:00:00.000Z",
"leaseBreak": "",
"erv": 1600,
"fri": false,
"epcExempt": false
}
Response (201)
{
"unitId": 2,
"unitName": "Unit C",
"unitReference": "TAC-236"
}
Summary: Uploads a new asset unit
HTTP Request
POST /api/v1/assetunits
Request body
Attribute | Type and description |
---|---|
unitId |
integer The SIERA-generated id of the asset unit |
assetId |
integer The id of the asset associated with the unit |
unitName |
string The name of the asset unit |
unitReference |
string The asset unit reference |
occupier |
string The name of the current occupier of the unit |
gia |
float The Gross Internal Area (GIA) of the asset, measured in units indicated by the measurement unit. This may be null |
nla |
float The Net Lettable Area (NLA) of the asset, measured in units indicated by the measurement unit. This may be null |
measurementUnit |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
leaseStart |
datetime The start date of the tenant of this unit's lease |
leaseLength |
integer The length in months of the tenant of this unit's lease |
leaseExpiry |
datetime The expiry date of the tenant of this unit's lease |
leaseBreak |
datetime The start date of a break in the tenant of this unit's lease |
erv |
float The estimated rental value (ERV) of this unit |
fri |
boolean A boolean flag indicating if the current lease is Full Repairing and Insuring (FRI) or not |
epcExempt |
boolean A boolean flag indicating if this unit has an EPC exemption or not |
Response Body
The response body will a new unit ID relating to the uploaded asset unit, along with its name and reference
Attribute | Type and description |
---|---|
unitId |
integer The SIERA-generated id of the new asset unit |
unitName |
string The name of the asset unit |
unitReference |
string The asset unit reference |
Responses
Code | Description |
---|---|
201 | Created |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Update an asset unit
PUT /api/v1/assetunits/{unitId}
curl PUT https://api.sieraglobal.com/api/v1/assetunits/14 \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
[
{
"unitId": 14
"unitName": "Unit C",
"unitReference": "TAC-236",
"occupier": "Next",
"actionNotes": "",
"gia": 2000,
"nla": 1900,
"measurementUnit": "M2",
"vacant": false,
"leaseStart": "2020-11-21T12:00:00.000Z",
"leaseLength": 36,
"leaseExpiry": "2023-12-21T12:00:00.000Z",
"leaseBreak": "",
"erv": 1900,
"fri": false,
"epcExempt": false
}
]
Response (200)
Summary: Updates an existing asset unit by ID
HTTP Request
PUT /api/v1/assetunits/{unitId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
unitId | path | A valid id of an asset unit stored in SIERA | Yes | integer |
Request body
The body is a unit to be updated.
Attribute | Type and description |
---|---|
unitId |
integer The SIERA-generated id of the asset unit |
assetId |
integer The id of the asset associated with the unit |
unitName |
string The name of the asset unit |
unitName |
string The name of the asset unit |
unitReference |
string The asset unit reference |
occupier |
string The name of the current occupier of the unit |
gia |
float The Gross Internal Area (GIA) of the asset, measured in units indicated by the measurement unit. This may be null |
nla |
float The Net Lettable Area (NLA) of the asset, measured in units indicated by the measurement unit. This may be null |
measurementUnit |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
leaseStart |
datetime The start date of the tenant of this unit's lease |
leaseLength |
integer The length in months of the tenant of this unit's lease |
leaseExpiry |
datetime The expiry date of the tenant of this unit's lease |
leaseBreak |
datetime The start date of a break in the tenant of this unit's lease |
erv |
float The estimated rental value (ERV) of this unit |
fri |
boolean A boolean flag indicating if the current lease is Full Repairing and Insuring (FRI) or not |
epcExempt |
boolean A boolean flag indicating if this unit has an EPC exemption or not |
Responses
Code | Description |
---|---|
200 | OK |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Update multiple asset units
PUT /api/v1/assetunits
curl PUT https://api.sieraglobal.com/api/v1/assetunits \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
[
{
"unitId": 14
"unitName": "Unit C",
"unitReference": "TAC-236",
"occupier": "Next",
"actionNotes": "",
"gia": 2000,
"nla": 1900,
"measurementUnit": "M2",
"vacant": false,
"leaseStart": "2020-11-21T12:00:00.000Z",
"leaseLength": 36,
"leaseExpiry": "2023-12-21T12:00:00.000Z",
"leaseBreak": "",
"erv": 1900,
"fri": false,
"epcExempt": false
}
]
Response (200)
Summary: Updates an existing asset unit by ID
HTTP Request
PUT /api/v1/assetunits
Request body
The body is a list of one or more units to be updated.
Attribute | Type and description |
---|---|
unitId |
integer The SIERA-generated id of the asset unit |
assetId |
integer The id of the asset associated with the unit |
unitName |
string The name of the asset unit |
unitName |
string The name of the asset unit |
unitReference |
string The asset unit reference |
occupier |
string The name of the current occupier of the unit |
gia |
float The Gross Internal Area (GIA) of the asset, measured in units indicated by the measurement unit. This may be null |
nla |
float The Net Lettable Area (NLA) of the asset, measured in units indicated by the measurement unit. This may be null |
measurementUnit |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
leaseStart |
datetime The start date of the tenant of this unit's lease |
leaseLength |
integer The length in months of the tenant of this unit's lease |
leaseExpiry |
datetime The expiry date of the tenant of this unit's lease |
leaseBreak |
datetime The start date of a break in the tenant of this unit's lease |
erv |
float The estimated rental value (ERV) of this unit |
fri |
boolean A boolean flag indicating if the current lease is Full Repairing and Insuring (FRI) or not |
epcExempt |
boolean A boolean flag indicating if this unit has an EPC exemption or not |
Responses
Code | Description |
---|---|
200 | OK |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Delete an asset unit
DELETE /api/v1/assetunits/{assetId}/units/{unitId}
curl -X DELETE https://api.sieraglobal.com/api/v1/assetunits/2/units/13 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
Summary: Deletes an existing asset unit by ID
HTTP Request
DELETE /api/v1/assetsunits/{unitId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
unitId | path | A valid id of an asset unit stored in SIERA | Yes | integer |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified asset unit id was not found |
500 | Server error |
Validation rules
When uploading new asset units or updating existing, SIERA will apply the following rules and if they are not met, a response of 400 will be returned with an error message and the field causing the validation failure.
The validation requirements for assets units are:
- When uploading a new asset unit, the unitId must be 0 or null.
- When updating an asset unit, the unitId must be of an existing asset unit in SIERA.
- The unitReference must be unique. Validation will fail if any other asset unit has the same reference.
- The leaseStart must be before leaseExpiry.
- The leaseBreak date must be after the leaseStart date (if present).
- The leaseBreak date must be before the leaseExpiry date (if present).
Meters
The Meters endpoints allow you to manage utility meters associated with assets in SIERA. You can upload new meters, update meters or delete them from a given instance in SIERA. Note that a meter must be associated with an asset and can't exist on its own.
Get all meters
GET /api/v1/meters
curl https://api.sieraglobal.com/api/v1/meters \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"meterId": 11,
"assetId": 2,
"unitId": 1,
"mpan": "S018011012261305588165",
"serialNumber": "1875258102",
"comment": "",
"supplier": "EON",
"areaCovered": "SharedServices",
"controlledBy": "Landlord",
"floorAreaServed": 730,
"meterType": "Electricity",
"generationType": "NationalGrid",
"measurementType": "M2",
"locationCarbonFactorId": 0,
"marketCarbonFactorId": 0,
"unitRateId": 1,
"isActive": true,
"isAMR": false,
"isSubmeter": false,
"isValidated": true,
"isROC": false,
"isFIT": false,
"isCCA": false,
"isEUETS": false,
"hasHalfHourData": false
},
{
"meterId": 12,
"assetId": 2,
"unitId": 2,
"mpan": "S018005012341305549165",
"serialNumber": "1815248121",
"comment": "",
"supplier": "EON",
"areaCovered": "WholeBuilding",
"controlledBy": "Gas",
"floorAreaServed": 1100,
"meterType": "Gas",
"generationType": "NationalGrid",
"measurementType": "M2",
"locationCarbonFactorId": 0,
"marketCarbonFactorId": 0,
"unitRateId": 2,
"isActive": true,
"isAMR": false,
"isSubmeter": false,
"isValidated": false,
"isROC": false,
"isFIT": false,
"isCCA": false,
"isEUETS": false,
"hasHalfHourData": false
},
{
"meterId": 13,
"assetId": 3,
"unitId": 0,
"mpan": "S018012018913308149293",
"serialNumber": "1913513513",
"comment": "First Floor Electricity",
"supplier": "EDF",
"areaCovered": "TenantSpace",
"controlledBy": "Electricity",
"floorAreaServed": 130,
"meterType": "Electricity",
"generationType": "NationalGrid",
"measurementType": "M2",
"locationCarbonFactorId": 0,
"marketCarbonFactorId": 0,
"unitRateId": 0,
"isActive": true,
"isAMR": false,
"isSubmeter": false,
"isValidated": false,
"isROC": false,
"isFIT": false,
"isCCA": false,
"isEUETS": false,
"hasHalfHourData": false
}
]
Summary: Provides a list of all the meters
HTTP Request
GET /api/v1/meters
Response Body
The response body will be a list of meters.
Attribute | Type and description |
---|---|
meterId |
integer The SIERA-generated id of the meter |
assetId |
integer The SIERA-generated id of the associated asset |
unitId |
integer The SIERA-generated id of any associated unit |
mpan |
string The meter point administration number (MPAN) of the meter |
serialNumber |
string The serial number of the meter |
comment |
string A free-text description relating to the meter |
supplier |
string Any utilities supplier related to the meter |
areaCovered |
enumeration A valid area of the property which this meter covers, from the area covered enumeration |
controlledBy |
enumeration A valid item from the meter control enumeration showing who primarily pays for the energy from this meter, the landlord or the tenant |
floorAreaServed |
integer The floor area covered by this meter |
meterType |
enumeration A valid utility of the meter from the meter type enumeration |
generationType |
enumeration A valid generation type of the meter from the generation type enumeration |
measurementType |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
locationCarbonFactorId |
integer The id value of an location-based carbon factor Id which exists in the API-caller's SIERA instance, or one of the default carbon factors provided by Evora |
marketCarbonFactorId |
integer The id value of an market-based carbon factor Id which exists in the API-caller's SIERA instance, or one of the default carbon factors provided by Evora |
unitRateId |
integer The id value of a cost unit rate Id which exists in the API-caller's SIERA instance, or one of the default unit rates provided by Evora |
isActive |
boolean A boolean flag indicating if this meter is considered active and currently in use or not. |
isAMR |
boolean A boolean flag indicating if this meter's readings are being retrieved by automatic meter reading or not. |
isSubmeter |
boolean A boolean flag indicating if this meter isa sub-meter or not |
isValidated |
boolean A boolean flag indicating if this meter has been validated or not. |
isROC |
boolean A boolean flag indicating if this meter has an Renewables Obligation Certificate generation meter which measures total electricity produced by solar panel or not |
isFIT |
boolean A boolean flag indicating if this meter is a Feed-In-Time tariff (relating to solar panels) or not. |
isCCA |
boolean A boolean flag indicating if this meter is part of a Community Choice Aggregation or not. |
isEUETS |
boolean A boolean flag indicating if this meter is part of the EU Energy Trading System or not. |
hasHalfHourData |
boolean A boolean flag indicating if this meter has received half-hourly data or not. |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Get a meter
GET /api/v1/meters/{meterId}
curl https://api.sieraglobal.com/api/v1/meters/11 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
{
"meterId": 11,
"assetId": 2,
"unitId": 1,
"mpan": "S018011012261305588165",
"serialNumber": "1875258102",
"comment": "",
"supplier": "EON",
"areaCovered": "SharedServices",
"controlledBy": "Landlord",
"floorAreaServed": 730,
"meterType": "Electricity",
"generationType": "NationalGrid",
"measurementType": "M2",
"locationCarbonFactorId": 0,
"marketCarbonFactorId": 0,
"unitRateId": 1,
"isActive": true,
"isAMR": false,
"isSubmeter": false,
"isValidated": true,
"isROC": false,
"isFIT": false,
"isCCA": false,
"isEUETS": false,
"hasHalfHourData": false
}
Summary: Provides a single meter given an ID
HTTP Request
GET /api/v1/meters/{meterId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
meterId | path | A valid id of a meter stored in SIERA | Yes | integer |
Response Body
The response body will the specified meter which matches the meterId given as a parameter.
Attribute | Type and description |
---|---|
meterId |
integer The SIERA-generated id of the meter |
assetId |
integer The SIERA-generated id of the associated asset |
unitId |
integer The SIERA-generated id of any associated unit |
mpan |
string The meter point administration number (MPAN) of the meter |
serialNumber |
string The serial number of the meter |
comment |
string A free-text description relating to the meter |
supplier |
string Any utilities supplier related to the meter |
areaCovered |
enumeration A valid area of the property which this meter covers, from the area covered enumeration |
controlledBy |
enumeration A valid item from the meter control enumeration showing who primarily pays for the energy from this meter, the landlord or the tenant |
floorAreaServed |
integer The floor area covered by this meter |
meterType |
enumeration A valid utility of the meter from the meter type enumeration |
generationType |
enumeration A valid generation type of the meter from the generation type enumeration |
measurementType |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
locationCarbonFactorId |
integer The id value of an location-based carbon factor Id which exists in the API-caller's SIERA instance, or one of the default carbon factors provided by Evora |
marketCarbonFactorId |
integer The id value of an market-based carbon factor Id which exists in the API-caller's SIERA instance, or one of the default carbon factors provided by Evora |
unitRateId |
integer The id value of a cost unit rate Id which exists in the API-caller's SIERA instance, or one of the default unit rates provided by Evora |
isActive |
boolean A boolean flag indicating if this meter is considered active and currently in use or not. |
isAMR |
boolean A boolean flag indicating if this meter's readings are being retrieved by automatic meter reading or not. |
isSubmeter |
boolean A boolean flag indicating if this meter isa sub-meter or not |
isValidated |
boolean A boolean flag indicating if this meter has been validated or not. |
isROC |
boolean A boolean flag indicating if this meter has an Renewables Obligation Certificate generation meter which measures total electricity produced by solar panel or not |
isFIT |
boolean A boolean flag indicating if this meter is a Feed-In-Time tariff (relating to solar panels) or not. |
isCCA |
boolean A boolean flag indicating if this meter is part of a Community Choice Aggregation or not. |
isEUETS |
boolean A boolean flag indicating if this meter is part of the EU Energy Trading System or not. |
hasHalfHourData |
boolean A boolean flag indicating if this meter has received half-hourly data or not. |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
401 | Not found, the specified meter was not found |
500 | Server error |
Upload a new meter
POST /api/v1/meters
curl POST https://api.sieraglobal.com/api/v1/meters \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"assetId": 2,
"unitId": 1,
"mpan": "S018011012261305588165",
"serialNumber": "1875258102",
"comment": "",
"supplier": "EON",
"areaCovered": "SharedServices",
"controlledBy": "Landlord",
"floorAreaServed": 730,
"meterType": "Electricity",
"generationType": "NationalGrid",
"measurementType": "M2",
"locationCarbonFactorId": 0,
"marketCarbonFactorId": 0,
"unitRateId": 1,
"isActive": true,
"isAMR": false,
"isSubmeter": false,
"isValidated": true,
"isROC": false,
"isFIT": false,
"isCCA": false,
"isEUETS": false,
"hasHalfHourData": false
}
Response (201)
{
"meterId": 12
}
Summary: Upload a new meter
HTTP Request
POST /api/v1/meters
Request body
Attribute | Type and description |
---|---|
assetId |
integer A valid id of the associated asset |
unitId |
integer A valid id of an associated unit |
mpan |
string The meter point administration number (MPAN) of the meter |
serialNumber |
string The serial number of the meter |
comment |
string A free-text description relating to the meter |
supplier |
string Any utilities supplier related to the meter |
areaCovered |
enumeration A valid area of the property which this meter covers, from the area covered enumeration |
controlledBy |
enumeration A valid item from the meter control enumeration showing who primarily pays for the energy from this meter, the landlord or the tenant |
floorAreaServed |
integer The floor area covered by this meter |
meterType |
enumeration A valid utility of the meter from the meter type enumeration |
generationType |
enumeration A valid generation type of the meter from the generation type enumeration |
measurementType |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
locationCarbonFactorId |
integer The id value of an location-based carbon factor Id which exists in the API-caller's SIERA instance, or one of the default carbon factors provided by Evora |
marketCarbonFactorId |
integer The id value of an market-based carbon factor Id which exists in the API-caller's SIERA instance, or one of the default carbon factors provided by Evora |
unitRateId |
integer The id value of a cost unit rate Id which exists in the API-caller's SIERA instance, or one of the default unit rates provided by Evora |
isActive |
boolean A boolean flag indicating if this meter is considered active and currently in use or not. |
isAMR |
boolean A boolean flag indicating if this meter's readings are being retrieved by automatic meter reading or not. |
isSubmeter |
boolean A boolean flag indicating if this meter isa sub-meter or not |
isValidated |
boolean A boolean flag indicating if this meter has been validated or not. |
isROC |
boolean A boolean flag indicating if this meter has an Renewables Obligation Certificate generation meter which measures total electricity produced by solar panel or not |
isFIT |
boolean A boolean flag indicating if this meter is a Feed-In-Time tariff (relating to solar panels) or not. |
isCCA |
boolean A boolean flag indicating if this meter is part of a Community Choice Aggregation or not. |
isEUETS |
boolean A boolean flag indicating if this meter is part of the EU Energy Trading System or not. |
hasHalfHourData |
boolean A boolean flag indicating if this meter has received half-hourly data or not. |
Response Body
The response body will a new meter ID relating to the uploaded meter
Attribute | Type and description |
---|---|
meterId |
integer The SIERA-generated id of the new meter |
Responses
Code | Description |
---|---|
201 | Created |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Update a meter
PUT /api/v1/meters/{meterId}
curl PUT https://api.sieraglobal.com/api/v1/meters/11 \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"assetId": 2,
"unitId": 1,
"mpan": "S018011012261305588165",
"serialNumber": "1875258102",
"comment": "",
"supplier": "EDF",
"areaCovered": "WholeBuilding",
"controlledBy": "Landlord",
"floorAreaServed": 730,
"meterType": "Electricity",
"generationType": "NationalGrid",
"measurementType": "M2",
"locationCarbonFactorId": 0,
"marketCarbonFactorId": 0,
"unitRateId": 1,
"isActive": true,
"isAMR": false,
"isSubmeter": false,
"isValidated": true,
"isROC": false,
"isFIT": false,
"isCCA": false,
"isEUETS": false,
"hasHalfHourData": false
}
Response (200)
Summary: Updates an existing meter by ID
HTTP Request
PUT /api/v1/meters/{meterId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
meterId | path | The id of the meter to be updated in SIERA | Yes | integer |
Request body
Attribute | Type and description |
---|---|
meterId |
integer The SIERA-generated id of the meter |
assetId |
integer The SIERA-generated id of the associated asset |
unitId |
integer The SIERA-generated id of any associated unit |
mpan |
string The meter point administration number (MPAN) of the meter |
serialNumber |
string The serial number of the meter |
comment |
string A free-text description relating to the meter |
supplier |
string Any utilities supplier related to the meter |
areaCovered |
enumeration A valid area of the property which this meter covers, from the area covered enumeration |
controlledBy |
enumeration A valid item from the meter control enumeration showing who primarily pays for the energy from this meter, the landlord or the tenant |
floorAreaServed |
integer The floor area covered by this meter |
meterType |
enumeration A valid utility of the meter from the meter type enumeration |
generationType |
enumeration A valid generation type of the meter from the generation type enumeration |
measurementType |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
locationCarbonFactorId |
integer The id value of an location-based carbon factor Id which exists in the API-caller's SIERA instance, or one of the default carbon factors provided by Evora |
marketCarbonFactorId |
integer The id value of an market-based carbon factor Id which exists in the API-caller's SIERA instance, or one of the default carbon factors provided by Evora |
unitRateId |
integer The id value of a cost unit rate Id which exists in the API-caller's SIERA instance, or one of the default unit rates provided by Evora |
isActive |
boolean A boolean flag indicating if this meter is considered active and currently in use or not. |
isAMR |
boolean A boolean flag indicating if this meter's readings are being retrieved by automatic meter reading or not. |
isSubmeter |
boolean A boolean flag indicating if this meter isa sub-meter or not |
isValidated |
boolean A boolean flag indicating if this meter has been validated or not. |
isROC |
boolean A boolean flag indicating if this meter has an Renewables Obligation Certificate generation meter which measures total electricity produced by solar panel or not |
isFIT |
boolean A boolean flag indicating if this meter is a Feed-In-Time tariff (relating to solar panels) or not. |
isCCA |
boolean A boolean flag indicating if this meter is part of a Community Choice Aggregation or not. |
isEUETS |
boolean A boolean flag indicating if this meter is part of the EU Energy Trading System or not. |
hasHalfHourData |
boolean A boolean flag indicating if this meter has received half-hourly data or not. |
Responses
Code | Description |
---|---|
200 | OK |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified meter id was not found |
500 | Server error |
Delete a meter
DELETE /api/v1/meters/{meterId}
curl -X DELETE https://api.sieraglobal.com/api/v1/meters/11 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
Summary: Deletes an existing meter by ID
HTTP Request
DELETE /api/v1/meters/{meterId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
meterId | path | The id of the meter to be deleted in SIERA | Yes | integer |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified meter id was not found |
500 | Server error |
Validation rules
When uploading new meters or updating existing, SIERA will apply the following rules and if they are not met, a response of 400 will be returned with an error message and the field causing the validation failure.
The validation requirements for meters are:
- When uploading a new meter, the meterId must be 0 or null.
- When updating an meter, the meterId must be of an existing meter in SIERA.
- The assetId must be provided and be for a valid asset in SIERA.
- The locationCarbonFactorId must be provided and be for a valid carbon factor in SIERA.
- The marketCarbonFactorId must be provided and be for a valid carbon factor in SIERA.
- The unitRateId must be provided and be for a valid unit rate in SIERA.
- The carbon factors chosen for locationCarbonFactorId and marketCarbonFactorId must match on utility type. For example, an electricity meter must choose an electricity carbon factor.
Consumption
Consumption in SIERA is available in two forms. The first is a monthly summary of consumption for each meter. The second is a a list of consumption records with a start and end date which capture utility invoices. The monthly summary is read-only and automatically generated and updated as consumption records for a meter are changed.
Get consumption summary of a meter
GET /api/v1/consumption/consumptionsummary/{assetId}/{meterId}
curl https://api.sieraglobal.com/api/v1/consumption/consumptionsummary/2/2 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"consumptionId": 10523180,
"meterId": 2,
"consumptionDate": "1/1/2020",
"consumption": null,
"cost": null,
"co2": null,
"daysActual": null,
"daysEstimate": null
},
{
"consumptionId": 10523181,
"meterId": 2,
"consumptionDate": "2/1/2020",
"consumption": 356626,
"cost": 35662.6,
"co2": 83.12952,
"daysActual": 29,
"daysEstimate": 0
},
{
"consumptionId": 10523182,
"meterId": 2,
"consumptionDate": "3/1/2020",
"consumption": 310568,
"cost": 31056.8,
"co2": 72.3934,
"daysActual": 0,
"daysEstimate": 31
},
...
{
"consumptionId": 10523183,
"meterId": 2,
"consumptionDate": "12/1/2020",
"consumption": 365502,
"cost": 36550.2,
"co2": 85.19852,
"daysActual": 0,
"daysEstimate": 31
}
]
Summary: Provides a list of monthly summaries of consumption for the specified meter
The monthly consumption total is calculated by calculating a daily amount from any consumption records with days in a given month. The monthly total is the daily amount times the number of days in the month. Where consumption records don't cover part of the month, the daily amount is multipled by the number of days covered by any consumption records available for a meter.
As an example, given an uploaded consumption record of 10,000 kWh from 1st September to the 15th October
, the monthly consumption values would be calculated as such:
daily rate = 10,0000 / (30 + 15) = 222.22
September = daily rate * 30 = 6666.6
October = daily rate * 15 = 3333.3
As the consumption record only includes 15 days of October, there are 16 days without consumption which leave a gap in the month. The 16 day gap in consumption for October would be represented in the fields daysActual
or daysEstimated
which would show 15
. The choice of which field would contain the 15
would be based on the consumptionType
of the associated consumption records.
HTTP Request
GET /api/v1/consumption/consumptionsummary/{assetId}/{meterId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
assetId | path | A valid id of an asset stored in SIERA | Yes | integer |
meterId | path | A valid id of a meter stored in SIERA | No | integer |
Response Body
The response body will include a summary of consumption for the asset (and meter if specified), in the format of aggregated months of consumption
Attribute | Type and description |
---|---|
consumptionId |
integer The SIERA-generated id of the consumption month of the meter |
meterId |
integer The id of the associated meter |
consumptionDate |
string The date of the consumption month, in the format m/d/yyyy. The day value will always be the first of the month |
consumption |
float The amount of consumption for the month |
cost |
float The amount of consumption represented as a financial cost. The factor used to convert energy units to money is indicated by setting a unit rate on the meter associated with this consumption |
co2 |
float The amount of consumption represented kgCO2 of carbon. The factor used to convert energy units to carbon is indicated by setting a carbon factor on the meter associated with this consumption |
daysActual |
integer The number of days consumption in the month with a consumptionType of actual |
daysEstimate |
integer The number of days consumption in the month with a consumptionType of estimated |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Get consumption records for a meter
GET /api/v1/consumption/record/{assetId}/{meterId}
curl https://api.sieraglobal.com/api/v1/consumption/record/2/2 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"recordId": 3053526,
"meterId": 2,
"fromDate": "9/1/2022",
"toDate": "9/30/2022",
"consumption": 356573,
"consumptionType": "Actual",
"energySource": "NationalGridStandard",
"useOfArea": "OccupiedTenantSpace",
"sustainableProcurement": "RenewableEnergyContract"
},
{
"recordId": 3053584,
"meterId": 2,
"fromDate": "6/1/2022",
"toDate": "6/30/2022",
"consumption": 296150,
"consumptionType": "Actual",
"energySource": "NationalGridStandard",
"useOfArea": "OccupiedTenantSpace",
"sustainableProcurement": "RenewableEnergyContract"
},
{
"recordId": 3053666,
"meterId": 2,
"fromDate": "10/1/2022",
"toDate": "10/31/2022",
"consumption": 353664,
"consumptionType": "Estimate",
"energySource": "NationalGridStandard",
"useOfArea": "OccupiedTenantSpace",
"sustainableProcurement": "RenewableEnergyContract"
},
{
"recordId": 3053680,
"meterId": 2,
"fromDate": "4/1/2022",
"toDate": "4/30/2022",
"consumption": 321949,
"consumptionType": "Actual",
"energySource": "NationalGridStandard",
"useOfArea": "OccupiedTenantSpace",
"sustainableProcurement": "RenewableEnergyContract"
}
]
Summary: Provides a list of consumption records for the specified meter
HTTP Request
GET /api/v1/consumption/record/{assetId}/{meterId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
assetId | path | A valid id of an asset stored in SIERA | Yes | integer |
meterId | path | A valid id of a meter stored in SIERA | No | integer |
Response Body
The response body will include a list of consumption records for the asset (and meter if specified)
Attribute | Type and description |
---|---|
recordId |
integer The SIERA-generated id of the consumption record |
meterId |
integer The id of the associated meter |
fromDate |
string The start date of the consumption being recorded, in the format m/d/yyyy |
toDate |
float The end date of the consumption being recorded, in the format m/d/yyyy |
consumption |
float The amount of consumption |
consumptionType |
enumeration The type of consumption, actual or estimated. This must be a valid item from the enumeration consumption type |
energySource |
enumeration The source of the energy, for example from renewables or the national energy grid. This must be a valid item from the enumeration consumption energy source |
useOfArea |
enumeration The use of area from a tenancy point of view, occupied or void. This must be a valid item from the enumeration use of area |
sustainableProcurement |
enumeration The sustainable procurement method (if any) related to this consumption. This must be a valid item from the enumeration sustainable procurement |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Upload consumption records
Consumption uploads represent utility invoices and so they all have start and end dates. The endpoint returns a collection of results indicating which records were successfully uploaded and which failed to upload and the reason.
The results are organised into the following lists:
Successful Uploads
Consumption records which were successfully uploaded into SIERA
Exact Matches
Consumption records which were rejected as an existing consumption record had the same start and end date. If the parameter forceExactMatchUpload
is set to true, then these records will overwrite the existing records and appear in the Successful Uploads list.
Overlap Matches
Consumption records which were rejected as existing records overlap the start and end dates of existing consumption records.
Instance Errors
Consumption records which failed to upload because the associated meter or asset does not exist in the API-caller's SIERA instance
Other Errors
Consumption records which were rejected along with the reason for the rejection.
POST /api/v1/consumption/record/{forceExactMatchUpload}
curl POST https://api.sieraglobal.com/api/v1/consumption/record/false \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
[
{
"meterId": 2,
"fromDate": "4/1/2022",
"toDate": "4/30/2022",
"consumption": 321949,
"consumptionType": "Actual",
"energySource": "NationalGridStandard",
"useOfArea": "OccupiedTenantSpace",
"sustainableProcurement": "RenewableEnergyContract"
},
{
"meterId": 2,
"fromDate": "5/1/2022",
"toDate": "4/31/2022",
"consumption": 301231,
"consumptionType": "Actual",
"energySource": "NationalGridStandard",
"useOfArea": "OccupiedTenantSpace",
"sustainableProcurement": "RenewableEnergyContract"
}
]
Response (201)
{
"success": [
{
"recordId": 0,
"meterId": 2,
"fromDate": "4/1/2022",
"toDate": "4/30/2022",
"consumption": 321949,
"consumptionType": "Actual",
"energySource": "NationalGridStandard",
"useOfArea": "OccupiedTenantSpace",
"sustainableProcurement": "RenewableEnergyContract"
}
],
"exactMatch": [],
"overlapErrors": [
{
"recordId": 0,
"meterId": 2,
"fromDate": "5/1/2022",
"toDate": "5/31/2022",
"consumption": 301231,
"consumptionType": "Actual",
"energySource": "NationalGridStandard",
"useOfArea": "OccupiedTenantSpace",
"sustainableProcurement": "RenewableEnergyContract"
}
],
"instanceErrors": [],
"errors": []
}
Summary: Upload consumption records
HTTP Request
POST /api/v1/consumption/record/{forceExactMatchUpload}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
forceExactMatchUpload | path | A boolean flag instructing the API to overwrite existing consumption records with a matching start and end date | Yes | boolean |
Request body
Attribute | Type and description |
---|---|
meterId |
integer The id of the associated meter |
fromDate |
string The start date of the consumption being recorded, in the format m/d/yyyy |
toDate |
float The end date of the consumption being recorded, in the format m/d/yyyy |
consumption |
float The amount of consumption |
consumptionType |
enumeration The type of consumption, actual or estimated. This must be a valid item from the enumeration consumption type |
energySource |
enumeration The source of the energy, for example from renewables or the national energy grid. This must be a valid item from the enumeration consumption energy source |
useOfArea |
enumeration The use of area from a tenancy point of view, occupied or void. This must be a valid item from the enumeration use of area |
sustainableProcurement |
enumeration The sustainable procurement method (if any) related to this consumption. This must be a valid item from the enumeration sustainable procurement |
Response Body
The response body will include a collection of results indicating which records were successfully uploaded and which failed to upload and the reason.
Attribute | Type and description |
---|---|
recordId |
integer The SIERA-generated id of the consumption record |
meterId |
integer The id of the associated meter |
fromDate |
string The start date of the consumption uploaded, in the format m/d/yyyy |
toDate |
float The end date of the consumption uploaded, in the format m/d/yyyy |
consumption |
float The amount of consumption uploaded |
consumptionType |
enumeration The type of consumption, actual or estimated from the enumeration consumption type |
energySource |
enumeration The source of the energy, for example from renewables or the national energy grid from the enumeration consumption energy source |
useOfArea |
enumeration The use of area from a tenancy point of view, occupied or void. This must be a valid item from the enumeration use of area |
sustainableProcurement |
enumeration The sustainable procurement method (if any) related to this consumption. This must be a valid item from the enumeration sustainable procurement |
errors |
string A description of any other error which has occured when the upload was attempted |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Update consumption records
Consumption updates represent utility invoices and so they all have start and end dates. The endpoint returns a collection of results indicating which records were successfully updated and which failed to update and the reason.
The result are organised into the following lists:
Successful Updates
Consumption records which were successfully updated into SIERA
Exact Matches
Consumption records which were rejected as an existing consumption record had the same start and end date. If the parameter forceExactMatchUpload
is set to true, then these records will overwrite the existing records and appear in the Successful Updates list.
Overlap Matches
Consumption records which were rejected as existing records overlap the start and end dates of existing consumption records.
Instance Errors
The consumption record which failed to update because the associated meter or asset does not exist in the API-caller's SIERA instance
Other Errors
Consumption records which were rejected along with the reason for the rejection.
PUT /api/v1/consumption/record
curl POST https://api.sieraglobal.com/api/v1/consumption/record \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
[
{
"recordId": 13,
"meterId": 2,
"fromDate": "4/1/2022",
"toDate": "4/30/2022",
"consumption": 321949,
"consumptionType": "Actual",
"energySource": "NationalGridStandard",
"useOfArea": "OccupiedTenantSpace",
"sustainableProcurement": "RenewableEnergyContract"
},
{
"recordId": 14,
"meterId": 2,
"fromDate": "5/1/2022",
"toDate": "4/31/2022",
"consumption": 301231,
"consumptionType": "Actual",
"energySource": "NationalGridStandard",
"useOfArea": "OccupiedTenantSpace",
"sustainableProcurement": "RenewableEnergyContract"
}
]
Response (201)
{
"success": [
{
"recordId": 13,
"meterId": 2,
"fromDate": "4/1/2022",
"toDate": "4/30/2022",
"consumption": 321949,
"consumptionType": "Actual",
"energySource": "NationalGridStandard",
"useOfArea": "OccupiedTenantSpace",
"sustainableProcurement": "RenewableEnergyContract"
}
],
"exactMatch": [],
"overlapErrors": [
{
"recordId": 14,
"meterId": 2,
"fromDate": "5/1/2022",
"toDate": "5/31/2022",
"consumption": 301231,
"consumptionType": "Actual",
"energySource": "NationalGridStandard",
"useOfArea": "OccupiedTenantSpace",
"sustainableProcurement": "RenewableEnergyContract"
}
],
"instanceErrors": [],
"errors": []
}
Summary: Update consumption records
HTTP Request
PUT /api/v1/consumption/record/
Request body
Attribute | Type and description |
---|---|
recordId |
integer The SIERA-generated id of the consumption record |
meterId |
integer The id of the associated meter |
fromDate |
string The start date of the consumption being recorded, in the format m/d/yyyy |
toDate |
float The end date of the consumption being recorded, in the format m/d/yyyy |
consumption |
float The amount of consumption |
consumptionType |
enumeration The type of consumption, actual or estimated. This must be a valid item from the enumeration consumption type |
energySource |
enumeration The source of the energy, for example from renewables or the national energy grid. This must be a valid item from the enumeration consumption energy source |
useOfArea |
enumeration The use of area from a tenancy point of view, occupied or void. This must be a valid item from the enumeration use of area |
sustainableProcurement |
enumeration The sustainable procurement method (if any) related to this consumption. This must be a valid item from the enumeration sustainable procurement |
Response Body
The response body will include a collection of results indicating which records were successfully updated and which failed to update and the reason.
Attribute | Type and description |
---|---|
recordId |
integer The SIERA-generated id of the consumption record |
meterId |
integer The id of the associated meter |
fromDate |
string The start date of the consumption uploaded, in the format m/d/yyyy |
toDate |
float The end date of the consumption uploaded, in the format m/d/yyyy |
consumption |
float The amount of consumption uploaded |
consumptionType |
enumeration The type of consumption, actual or estimated from the enumeration consumption type |
energySource |
enumeration The source of the energy, for example from renewables or the national energy grid from the enumeration consumption energy source |
useOfArea |
enumeration The use of area from a tenancy point of view, occupied or void. This must be a valid item from the enumeration use of area |
sustainableProcurement |
enumeration The sustainable procurement method (if any) related to this consumption. This must be a valid item from the enumeration sustainable procurement |
errors |
string A description of any other error which has occured when the upload was attempted |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Delete consumption records
DELETE /api/v1/consumption/record
curl -X DELETE https://api.sieraglobal.com/api/v1/consumption/record \
-H "Authorization: Bearer $ACCESS_TOKEN"
-V "Content-Type: application/json" \
-d @- <<JSON
[
2, 3, 4
]
Response (200)
{
"success": [ 3 ],
"instanceerror": [ 4 ],
"error": [
{
"recordId": 2,
"error": "Meter does not exist."
}
]
}
Consumption delete requests return a list of results.
The result are organised into the following lists:
Successful Deletions
Consumption records which were successfully deleted
Instance Errors
Consumption records which failed to delete because the associated meter or asset does not exist in the API-caller's SIERA instance
Errors
Consumption records which failed to delete and an error description explaining the error message
Summary: Deletes consumption records by ID
HTTP Request
DELETE /api/v1/consumption/record
Request body
The request body is a json array of the consumption record IDs to be deleted
Response Body
The response body will include a list of results: successful uploads, instance errors or general errors. Successful uploads and instance errors will only contain the related recordId, whilst the general errors will also contain a description of the error.
Attribute | Type and description |
---|---|
recordId |
integer The id of the consumption record |
error |
string A description of the error which has occurred |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Update a consumption record
Consumption updates represent utility invoices and so they all have start and end dates. The endpoint returns a collection of results indicating if the record was successfully updated or if it failed to update and the reason.
The result is organised into the following lists:
Successful Updates
The consumption record was successfully updated into SIERA
Exact Matches
The consumption record was rejected as an existing consumption record had the same start and end date. If the parameter forceExactMatchUpload
is set to true, then these records will overwrite the existing records and appear in the Successful Updates list.
Overlap Matches
The consumption record was rejected as existing records overlap the start and end dates of existing consumption records.
Instance Errors
The consumption record failed to update because the associated meter or asset does not exist in the API-caller's SIERA instance
Other Errors
The consumption record was rejected along with the reason for the rejection.
PUT /api/v1/consumption/record/{recordId}
curl POST https://api.sieraglobal.com/api/v1/consumption/record/13 \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"recordId": 13,
"meterId": 2,
"fromDate": "4/1/2022",
"toDate": "4/30/2022",
"consumption": 321949,
"consumptionType": "Estimate",
"energySource": "NationalGridStandard",
"useOfArea": "OccupiedTenantSpace",
"sustainableProcurement": "RenewableEnergyContract"
}
Response (201)
{
"success": [
{
"recordId": 13,
"meterId": 2,
"fromDate": "4/1/2022",
"toDate": "4/30/2022",
"consumption": 321949,
"consumptionType": "Estimate",
"energySource": "NationalGridStandard",
"useOfArea": "OccupiedTenantSpace",
"sustainableProcurement": "RenewableEnergyContract"
}
],
"exactMatch": [],
"overlapErrors": [],
"instanceErrors": [],
"errors": []
}
Summary: Update a consumption record
HTTP Request
PUT /api/v1/consumption/record/{recordId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
recordId | path | A valid id of a consumption record stored in SIERA | Yes | integer |
Request body
Attribute | Type and description |
---|---|
recordId |
integer The SIERA-generated id of the consumption record |
meterId |
integer The id of the associated meter |
fromDate |
string The start date of the consumption being recorded, in the format m/d/yyyy |
toDate |
float The end date of the consumption being recorded, in the format m/d/yyyy |
consumption |
float The amount of consumption |
consumptionType |
enumeration The type of consumption, actual or estimated. This must be a valid item from the enumeration consumption type |
energySource |
enumeration The source of the energy, for example from renewables or the national energy grid. This must be a valid item from the enumeration consumption energy source |
useOfArea |
enumeration The use of area from a tenancy point of view, occupied or void. This must be a valid item from the enumeration use of area |
sustainableProcurement |
enumeration The sustainable procurement method (if any) related to this consumption. This must be a valid item from the enumeration sustainable procurement |
Response Body
The response body will include a collection of results indicating if the record was successfully updated or failed to update and the reason.
Attribute | Type and description |
---|---|
recordId |
integer The SIERA-generated id of the consumption record |
meterId |
integer The id of the associated meter |
fromDate |
string The start date of the consumption uploaded, in the format m/d/yyyy |
toDate |
float The end date of the consumption uploaded, in the format m/d/yyyy |
consumption |
float The amount of consumption uploaded |
consumptionType |
enumeration The type of consumption, actual or estimated from the enumeration consumption type |
energySource |
enumeration The source of the energy, for example from renewables or the national energy grid from the enumeration consumption energy source |
useOfArea |
enumeration The use of area from a tenancy point of view, occupied or void. This must be a valid item from the enumeration use of area |
sustainableProcurement |
enumeration The sustainable procurement method (if any) related to this consumption. This must be a valid item from the enumeration sustainable procurement |
errors |
string A description of any other error which has occured when the upload was attempted |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Delete a consumption record
DELETE /api/v1/consumption/record/{recordId}
curl -X DELETE https://api.sieraglobal.com/api/v1/consumption/record/14 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
{
"success": [ 14 ],
"instanceerror": [ ],
"error": [ ]
}
Consumption delete requests return a list of results.
The result are organised into the following lists:
Successful Deletions
The consumption record was successfully deleted
Instance Errors
The consumption record failed to delete because the associated meter or asset does not exist in the API-caller's SIERA instance
Errors
The consumption record failed to delete and an error description explaining the error message
Summary: Deletes a consumption record by ID
HTTP Request
DELETE /api/v1/consumption/record/{recordId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
recordId | path | A valid id of an asset unit stored in SIERA | Yes | integer |
Response Body
The response body will include a list of results: successful uploads, instance errors or general errors. Successful uploads and instance errors will only contain the related recordId, whilst the general errors will also contain a description of the error.
Attribute | Type and description |
---|---|
recordId |
integer The id of the consumption record |
error |
string A description of the error which has occurred |
Legacy consumption import
POST /api/v1/consumptionbulkimport/{forceExactMatchUpload}
curl -X POST https://api.sieraglobal.com/api/v1/consumptionbulkimport/false \
-H "Authorization: Bearer $ACCESS_TOKEN"
-V "Content-Type: application/json" \
-d @- <<JSON
{
"mpan": 2,
"organisationId": 1
"fromDate": "4/1/2022",
"toDate": "4/30/2022",
"consumption": 321949,
"consumptionType": "Actual",
"energySource": "NationalGridStandard"
}
Response (201)
{
"success": [
{
"recordId": 3103512,
"meterId": 2,
"organisationId": 1,
"fromDate": "4/1/2022",
"toDate": "4/30/2022",
"consumption": 321949,
"consumptionType": "Actual",
"energySource": "NationalGridStandard",
"useOfArea": "OccupiedTenantSpace",
"sustainableProcurement": "RenewableEnergyContract"
}
],
"exactMatch": [],
"overlapErrors": [
{
"recordId": 0,
"meterId": 2,
"fromDate": "5/1/2022",
"toDate": "5/31/2022",
"consumption": 301231,
"consumptionType": "Actual",
"energySource": "NationalGridStandard",
"useOfArea": "OccupiedTenantSpace",
"sustainableProcurement": "RenewableEnergyContract"
}
],
"instanceErrors": [],
"errors": []
}
Legacy consumption import is a consumption uploading method which does not require an API caller to belong to the SIERA instance where the target assets and meters are located. This provides a method for 3rd party companies to upload consumption on behalf of assets which they may not directly own or manage in SIERA.
The only requirements for a valid consumption upload is a matching meter point administration number (MPAN
) and the correct organisationId
of the owner of the target asset. Similar to using standard endpoints above, the endpoint will return a list of results which show successful uploads and any errors.
The results are organised into the following lists:
Successful Uploads
Consumption records which were successfully uploaded into SIERA
Exact Matches
Consumption records which were rejected as an existing consumption record had the same start and end date. If the parameter forceExactMatchUpload
is set to true, then these records will overwrite the existing records and appear in the Successful Uploads list.
Overlap Matches
Consumption records which were rejected as existing records overlap the start and end dates of existing consumption records.
Instance Errors
Consumption records which failed to delete because the associated meter or asset does not exist in the API-caller's SIERA instance
Other Errors
Consumption records which were rejected along with the reason for the rejection.
Summary: Uploads consumption to meters without limiting to SIERA instances
HTTP Request
POST /api/v1/consumptionbulkimport/{forceExactMatchUpload}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
forceExactMatchUpload | path | A boolean flag instructing the API to overwrite existing consumption records with a matching start and end date | Yes | boolean |
Request body
Attribute | Type and description |
---|---|
mpan |
string The meter point administration number ( MPAN ) of the associated meter |
organisationId |
integer The id of the associated organisation which manages the asset in SIERA |
fromDate |
string The start date of the consumption being recorded, in the format m/d/yyyy |
toDate |
float The end date of the consumption being recorded, in the format m/d/yyyy |
consumption |
float The amount of consumption |
consumptionType |
enumeration The type of consumption, actual or estimated. This must be a valid item from the enumeration consumption type |
energySource |
enumeration The source of the energy, for example from renewables or the national energy grid. This must be a valid item from the enumeration consumption energy source |
useOfArea |
enumeration The use of area from a tenancy point of view, occupied or void. This must be a valid item from the enumeration use of area |
sustainableProcurement |
enumeration The sustainable procurement method (if any) related to this consumption. This must be a valid item from the enumeration sustainable procurement |
Response Body
The response body will include a collection of results indicating which records were successfully uploaded and which failed to upload and the reason.
Attribute | Type and description |
---|---|
recordId |
integer The SIERA-generated id of the consumption record |
mpan |
string The meter point administration number ( MPAN ) of the associated meter |
organisationId |
integer The id of the associated organisation which manages the asset in SIERA |
meterId |
integer The id of the associated meter |
fromDate |
string The start date of the consumption uploaded, in the format m/d/yyyy |
toDate |
float The end date of the consumption uploaded, in the format m/d/yyyy |
consumption |
float The amount of consumption uploaded |
consumptionType |
enumeration The type of consumption, actual or estimated from the enumeration consumption type |
energySource |
enumeration The source of the energy, for example from renewables or the national energy grid from the enumeration consumption energy source |
useOfArea |
enumeration The use of area from a tenancy point of view, occupied or void. This must be a valid item from the enumeration use of area |
sustainableProcurement |
enumeration The sustainable procurement method (if any) related to this consumption. This must be a valid item from the enumeration sustainable procurement |
errors |
string A description of any other error which has occured when the upload was attempted |
Validation rules
When uploading new consumption or updating existing, SIERA will apply the following rules and if they are not met, a response of 400 will be returned with an error message and the field causing the validation failure. As consumption also handles bulk operations, some endpoints return results in lists. In these cases, some validations may be returned in the result and not cause a 400 response code.
The validation requirements for consumption are:
- When uploading new consumption, the meterId must be of an existing meter in SIERA.
- When updating consumption, the recordId must be of an existing consumption in SIERA.
- The consumption uploaded must be a positive number. SIERA currently only accepts absolute amounts, rather than billing data and negative adjustments.
- The fromDate and toDate must be provided, and in the dd/mm/yy format.
- For the legacy consumption upload, the mpan provided must exist on the organisation related to specified organisationId.
Waste Destinations
Waste destinations are the waste equivalent of meters. They represent the final destination for waste disposed of at an asset. Destinations can be places like a landfill, a recycling point or a materials recovery facility. Just as meters have consumption records, waste destinations have waste records, which in turn have both a summary and a record version.
Get all waste destinations
GET /api/v1/wastedestinations
curl https://api.sieraglobal.com/api/v1/wastedestinations \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"assetId": 2,
"wasteDestinationId": 2,
"wasteDestinationDescription": "Mixed Recycleables",
"comments": "Recycling for Chelsea House, London",
"contractor": "Veolia",
"reference": "Reference 1000022",
"wasteDestination": "Recycled"
},
{
"assetId": 2,
"wasteDestinationId": 3,
"wasteDestinationDescription": "General Waste",
"comments": "General Waste for Chelsea House, London",
"contractor": "Veolia",
"reference": "Reference 1000023",
"wasteDestination": "Landfill"
}
]
Summary: Provides a list of all the waste destinations
HTTP Request
GET /api/v1/wastedestination
Response Body
The response body will be a list of waste destimations.
Attribute | Type and description |
---|---|
assetId |
integer The id of the asset |
wasteDestinationId |
integer The SIERA-generated id of the waste destination |
wasteDestinationDescription |
string A description of the waste destination |
comments |
string Comments relating to the waste destination |
contractor |
string The name of the contractor providing the waste service |
reference |
string A reference for the waste destination on the asset |
wasteDestination |
enumeration A valid destination type from the waste destination enumeration |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, no waste destinations were found |
500 | Server error |
Get a waste destination
GET /api/v1/wastedestinations/{wasteDestinationId}
curl https://api.sieraglobal.com/api/v1/wastedestinations/2 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
{
"assetId": 2,
"wasteDestinationId": 2,
"wasteDestinationDescription": "Mixed Recycleables",
"comments": "Recycling for Chelsea House, London",
"contractor": "Veolia",
"reference": "Reference 1000022",
"wasteDestination": "Recycled"
}
Summary: Provides a waste destination
HTTP Request
GET /api/v1/wastedestinations/{wasteDestinationId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
wasteDestinationId | path | A valid id of a waste destination stored in SIERA | Yes | integer |
Response Body
The response body will be a waste destimation.
Attribute | Type and description |
---|---|
assetId |
integer The id of the associated asset |
wasteDestinationId |
integer The SIERA-generated id of the waste destination |
wasteDestinationDescription |
string A description of the waste destination |
comments |
string Comments relating to the waste destination |
contractor |
string The name of the contractor providing the waste service |
reference |
string A reference for the waste destination on the asset |
wasteDestination |
enumeration A valid destination type from the waste destination enumeration |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the waste destination was not found |
500 | Server error |
Upload a new waste destination
POST /api/v1/wastedestinations
curl POST https://api.sieraglobal.com/api/v1/wastedestinations \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"assetId": 2,
"wasteDestinationDescription": "Glass Recycling",
"comments": "Glass recycling for Chelsea House, London",
"contractor": "Veolia",
"reference": "Reference 1000024",
"wasteDestination": "Recycled"
}
Response (201)
{
"wasteDestinationId": 6
}
Summary: Upload a new waste destination
HTTP Request
POST /api/v1/wastedestinations
Request body
Attribute | Type and description |
---|---|
assetId |
integer The id of a valid asset in the API caller's SIERA instance |
wasteDestinationDescription |
string A description of the waste destination |
comments |
string Comments relating to the waste destination |
contractor |
string The name of the contractor providing the waste service |
reference |
string A reference for the waste destination on the asset |
wasteDestination |
enumeration A valid destination type from the waste destination enumeration |
Response Body
The response body will a new waste destination ID relating to the uploaded waste destination
Attribute | Type and description |
---|---|
wasteDestinationId |
integer The SIERA-generated id of the new waste destination |
Responses
Code | Description |
---|---|
201 | Created |
400 | Validation failure |
401 | Not found, the specified asset id was not found |
500 | Server error |
Update a waste destination
PUT /api/v1/wastedestinations/{wasteDestinationId}
curl PUT https://api.sieraglobal.com/api/v1/wastedestinations/ \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"assetId": 2,
"wasteDestinationId": 4,
"wasteDestinationDescription": "Plastic Recycling",
"comments": "Plastic recycling for Chelsea House, London",
"contractor": "Veolia",
"reference": "Reference 1000025",
"wasteDestination": "Recycled"
}
Response (200)
Summary: Updates an existing waste destination by ID
HTTP Request
PUT /api/v1/wastedestinations/{wasteDestinationId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
wasteDestinationId | path | A valid id of a waste destination stored in SIERA | Yes | integer |
Request body
Attribute | Type and description |
---|---|
assetId |
integer The id of the asset |
wasteDestinationId |
integer The SIERA-generated id of the waste destination |
wasteDestinationDescription |
string A description of the waste destination |
comments |
string Comments relating to the waste destination |
contractor |
string The name of the contractor providing the waste service |
reference |
string A reference for the waste destination on the asset |
wasteDestination |
enumeration A valid destination type from the waste destination enumeration |
Responses
Code | Description |
---|---|
200 | OK |
400 | Validation failure |
401 | Not found, the specified waste destination id was not found |
500 | Server error |
Delete a waste destination
DELETE /api/v1/wastedestinations/{wasteDestinationId}
curl -X DELETE https://api.sieraglobal.com/api/v1/wastedestinations/4 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
Summary: Deletes an existing waste destination by ID
HTTP Request
DELETE /api/v1/wastedestinations/{wasteDestinationId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
wasteDestinationId | path | The id of the waste destination to be deleted in SIERA | Yes | integer |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
401 | Not found, the specified waste destination id was not found |
500 | Server error |
Validation rules
When uploading new waste destinations or updating existing, SIERA will apply the following rules and if they are not met, a response of 400 will be returned with an error message and the field causing the validation failure.
The validation requirements for waste destinations are:
- When uploading a new waste destination, the wasteDestinationId must be 0 or null.
- When updating a waste destination, the wasteDestinationId must be of an existing waste destination in SIERA.
- The assetId must exist in SIERA.
- The wasteReference must be unique. Validation will fail if any other waste destination has the same reference.
Waste Records
Waste records in SIERA follow a similar pattern to utility consumption of meters. They both have an endpoint for a monthly summary of waste, and an endpoint to manage records with start and end dates. Just like consumption, the monthly summary is read-only and is automatically updated whenever waste records change.
Get the waste summary of a waste destination
GET /api/v1/wasterecords/{wasteDestinationId}/summary
curl https://api.sieraglobal.com/api/v1/wasterecords/4/summary \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"wasteId": 4,
"wasteDestinationId": 4,
"wasteDate": "1/1/2022",
"tonnes": 5.34214,
"landfill": 0,
"incinerated": 0,
"recycled": 5.34214,
"reuse": 0,
"anaerobic": 0,
"hazardous": 0,
"mrFunknown": 0,
"incineratedWer": 0
},
{
"wasteId": 5,
"wasteDestinationId": 4,
"wasteDate": "2/1/2022",
"tonnes": 3.4123,
"landfill": 0,
"incinerated": 0,
"recycled": 3.4123,
"reuse": 0,
"anaerobic": 0,
"hazardous": 0,
"mrFunknown": 0,
"incineratedWer": 0
},
...
{
"wasteId": 6,
"wasteDestinationId": 4,
"wasteDate": "12/1/2022",
"tonnes": 2.15475,
"landfill": 0,
"incinerated": 0,
"recycled": 2.15475,
"reuse": 0,
"anaerobic": 0,
"hazardous": 0,
"mrFunknown": 0,
"incineratedWer": 0
}
]
Summary: Provides a list of monthly summaries of waste for the specified waste destination
Waste monthly summaries are populated and updated when waste records are added or changed to SIERA. The values in each attribute of the waste summary are updated based upon the type of waste destination. For example, if the waste destination is a recycled
then the waste added to that destination will be added to the tonnes
attribute and also the to recycled
attribute. Likewise if the destination is MRFIncinerator
and the mrfOptions.recycled
value of the uploaded waste record is set to 0.5
when uploaded, then the waste value will go to tonnes
and half will go to recycled
and half to incinerated
.
The following explains the details of which attribute is updated when waste is uploaded or changed:
tonnes
Any change to waste will result in the total value being updated to reflect the overall total. All other attributes excluding hazardous
added together should equal tonnes
.
landfill
Any waste on destinations set to Landfill
or MRFLandfill
will update this attribute. MRFLandfill
will take into account the mrfOptions.recycled
option on the waste record, and the amount left after the percentage of mrf recycled indicated is sent to Recycled
will be added to Landfill
.
incinerated
Any waste on destinations set to Incinerated
or MRFIncinerated
will update this attribute. MRFIncinerated
will take into account the mrfOptions.Recycled
option on the waste record, and the amount left after the percentage of mrf recycled indicated is sent to Recycled
will be added to Incinerated
. Additionally, if a waste record is uploaded with Wer
set to true
, the waste will go to IncineratedWer
instead of Incinerated
.
recycled
Any waste on destinations set to Recycled
will update this attribute. Additionally MRFIncinerated
, MRFLandfill
or MRFUnknown
will update this attribute if the mrfOption.recycled
is set to a number over 0
. For example, mrfOption.recycled
set to 0.5
will mean half the waste uploaded to an MRF destination will go recycled and the other half to the respective main destionation, incinerator, landfill or unknown.
reuse
Any waste on destinations set to Reuse
will update this attribute.
anaerobic
Any waste on destinations set to AnaerobicDigestion
will update this attribute.
hazardous
Any waste uploaded on a waste record with isHazardous
set to true
will update this attribute in addition to the target waste destination.
mrFunknown
Any waste on destinations set to MRFUnknown
will update this attribute. MRFUnknown
will take into account the mrfOptions.recycled
option on the waste record, and the amount left after the percentage of mrf recycled indicated is sent to Recycled
will be added to mrFunknown
.
incineratedWer
Any waste on destinations set to incinerated
or MRFIncinerated
will update this attribute if the waste record uploaded has wer
set to true
. MRFIncinerated
will take into account the mrfOptions.recycled
option on the waste record, and the amount left after the percentage of mrf recycled indicated is sent to recycled
will be added to incineratedWer
.
HTTP Request
GET /api/v1/wasterecords/{wasteDestinationId}/summary
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
wasteDestinationId | path | A valid id of a waste destination stored in SIERA | Yes | integer |
Response Body
The response body will be a list of waste records associated with the waste destination specified by the wasteDestinationId parameter.
Attribute | Type and description |
---|---|
wasteId |
integer The id of the waste summary record |
wasteDestinationId |
string A description of the waste destination |
wasteDate |
string Comments relating to the waste destination |
tonnes |
float The total waste in tonnes sent to the waste destination |
landfill |
float The amount of landfill waste sent to the waste destination |
incinerated |
float The amount of incinerated waste sent to the waste destination |
recycled |
float The amount of recycled waste sent to the waste destination |
reuse |
float The amount of reuse waste sent to the waste destination |
anaerobic |
float The amount of anaerobic waste sent to the waste destination |
hazardous |
float The amount of hazardous waste sent to the waste destination |
mrFunknown |
float The amount of waste sent to the waste destination |
incineratedWer |
float The amount of incinerated WER waste sent to the waste destination |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Get waste records for a waste destination
GET /api/v1/wasterecords/{wasteDestinationId}
curl https://api.sieraglobal.com/api/v1/wasterecords/4 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"wasteRecordId": 343,
"wasteDestinationId": 4,
"fromDate": "1/1/2022",
"toDate": "1/31/2022",
"wasteStream": "Plastics",
"tonnes": 1.2343,
"incineratedWer": false,
"mrfOptions": {
"recycled": 0
}
},
{
"wasteRecordId": 344,
"wasteDestinationId": 4,
"fromDate": "2/1/2022",
"toDate": "2/28/2022",
"wasteStream": "Plastics",
"tonnes": 1.1013,
"incineratedWer": false,
"mrfOptions": {
"recycled": 0
}
},
...
{
"wasteRecordId": 354,
"wasteDestinationId": 4,
"fromDate": "12/1/2022",
"toDate": "12/31/2022",
"wasteStream": "Plastics",
"tonnes": 0.9863,
"incineratedWer": false,
"mrfOptions": {
"recycled": 0
}
}
]
Summary: Provides a list of waste records for the specified waste destination
HTTP Request
GET /api/v1/wasterecords/{wasteDestinationId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
wasteDestinationId | path | A valid id of a waste destination | Yes | integer |
Response Body
The response body will be a list of waste records associated with the waste destination specified by the wasteDestinationId parameter.
Attribute | Type and description |
---|---|
wasteRecordId |
integer The SIERA-generated id of the waste record |
wasteDestinationId |
integer The specified waste destination id |
fromDate |
string The start date of the waste record, in the format m/d/yyyy |
toDate |
string The end date of the waste record, in the format m/d/yyyy |
wasteStream |
enumeration A valid stream type from the waste stream enumeration |
tonnes |
float The total amount of waste moved to the waste destination |
incineratedWer |
boolean A boolean flag indicating if the waste being uploaded passed through a waste energy recycling (WER) facility. This only applies to Incinerator and MRFIncinerator waste destinations. Any waste uploaded with this flag set will appear in the incineratedWer field of the summary. |
mrfOptions.recycled |
float A decimal percentage reflecting the amount of waste which was recycled at the waste detination. This only applies to MRFIncinerator , MRFLandfill or MRFUnknown waste destinations |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Upload waste records
Like consumption utility invoices, waste record uploads represent periods in time and so have start and end dates. The endpoint returns a collection of results indicating which records were successfully uploaded and which failed to upload and the reason.
The results are organised into the following lists:
Successful Uploads
Waste records which were successfully uploaded into SIERA
Exact Matches
Waste records which were rejected as an existing waste record had the same start and end date. If the parameter forceExactMatchUpload
is set to true, then these records will overwrite the existing records and appear in the Successful Uploads list.
Overlap Matches
Waste records which were rejected as existing records overlap the start and end dates of existing waste records.
Instance Errors
Waste records which failed to upload because the associated waste destination or asset does not exist in the API-caller's SIERA instance
Other Errors
Waste records which were rejected along with the reason for the rejection.
POST /api/v1/wasterecords/{forceExactMatchUpload}
curl POST https://api.sieraglobal.com/api/v1/wasterecords/false \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
[
{
"wasteDestinationId": 4,
"fromDate": "2/1/2022",
"toDate": "2/28/2022",
"wasteStream": "Plastics",
"tonnes": 1.1013,
"incineratedWer": false,
"mrfOptions": {
"recycled": 0
}
},
{
"wasteDestinationId": 4,
"fromDate": "1/1/2022",
"toDate": "12/31/2020",
"wasteStream": "Plastics",
"tonnes": 12.2743,
"incineratedWer": false,
"mrfOptions": {
"recycled": 0
}
}
]
Response (200)
{
"success": [
{
"wasteRecordId": 351,
"wasteDestinationId": 4,
"fromDate": "1/1/2022",
"toDate": "12/31/2020",
"wasteStream": "Plastics",
"tonnes": 12.2743,
"incineratedWer": false,
"mrfOptions": {
"recycled": 0
}
}
],
"exactMatch": [
{
"wasteRecordId": 0,
"wasteDestinationId": 4,
"fromDate": "2/1/2022",
"toDate": "2/28/2022",
"wasteStream": "Plastics",
"tonnes": 1.1013,
"incineratedWer": false,
"mrfOptions": {
"recycled": 0
}
}
],
"overlapErrors": [],
"instanceErrors": [],
"errors": []
}
Summary: Upload waste records
HTTP Request
POST /api/v1/wasterecords/{forceExactMatchUpload}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
forceExactMatchUpload | path | A boolean flag instructing the API to overwrite existing waste records with a matching start and end date | Yes | boolean |
Request body
Attribute | Type and description |
---|---|
wasteDestinationId |
integer The specified waste destination id |
fromDate |
string The start date of the waste record, in the format m/d/yyyy |
toDate |
string The end date of the waste record, in the format m/d/yyyy |
wasteStream |
enumeration A valid stream type from the waste stream enumeration |
tonnes |
float The total amount of waste moved to the waste destination |
incineratedWer |
boolean A boolean flag indicating if the waste being uploaded passed through a waste energy recycling (WER) facility. This only applies to Incinerator and MRFIncinerator waste destinations. Any waste uploaded with this flag set will appear in the incineratedWer field of the summary. |
mrfOptions.recycled |
float A decimal percentage reflecting the amount of waste which was recycled at the waste detination. This only applies to MRFIncinerator , MRFLandfill or MRFUnknown waste destinations |
Response Body
The response body will include a collection of results indicating which records were successfully uploaded and which failed to upload and the reason.
Attribute | Type and description |
---|---|
wasteRecordId |
integer The SIERA-generated id of the waste destination |
wasteDestinationId |
integer The specified waste destination id |
fromDate |
string The start date of the waste record, in the format m/d/yyyy |
toDate |
string The end date of the waste record, in the format m/d/yyyy |
wasteStream |
enumeration A valid stream type from the waste stream enumeration |
tonnes |
float The total amount of waste moved to the waste destination |
incineratedWer |
boolean A boolean flag indicating if the waste being uploaded passed through a waste energy recycling (WER) facility. This only applies to Incinerator and MRFIncinerator waste destinations. Any waste uploaded with this flag set will appear in the incineratedWer field of the summary. |
mrfOptions.recycled |
float A decimal percentage reflecting the amount of waste which was recycled at the waste detination. This only applies to MRFIncinerator , MRFLandfill or MRFUnknown waste destinations |
errors |
string A description of any other error which has occured when the upload was attempted |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Delete waste records
DELETE /api/v1/wasterecords
curl -X DELETE https://api.sieraglobal.com/api/v1/wasterecords \
-H "Authorization: Bearer $ACCESS_TOKEN"
-V "Content-Type: application/json" \
-d @- <<JSON
[
343, 374, 345
]
Response (200)
{
"success": [ 343 ],
"instanceerror": [ 374 ],
"error": [
{
"recordId": 345,
"error": "Waste destination does not exist."
}
]
}
Waste record delete requests return a list of result.
The results are organised into the following lists:
Successful Deletions
Waste records which were successfully deleted
Instance Errors
Waste records which failed to delete because the associated meter or asset does not exist in the API-caller's SIERA instance
Errors
Waste records which failed to delete and an error description explaining the error message
Summary: Deletes waste records by ID
HTTP Request
DELETE /api/v1/wasterecords
Request body
The request body is a json array of the waste record IDs to be deleted
Response Body
The response body will include a list of results: successful uploads, instance errors or general errors. Successful uploads and instance errors will only contain the related recordId, whilst the general errors will also contain a description of the error.
Attribute | Type and description |
---|---|
recordId |
integer The id of the waste record |
error |
string A description of the error which has occurred |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified waste record id was not found |
500 | Server error |
Validation rules
When uploading new waste records or updating existing, SIERA will apply the following rules and if they are not met, a response of 400 will be returned with an error message and the field causing the validation failure. As waste records also handles bulk operations, some endpoints return results in lists. In these cases, some validations may be returned in the result and not cause a 400 response code.
The validation requirements for consumption are:
- When uploading a new waste record, the wasteRecordId must be 0 or null.
- When updating a waste record, the wasteDestinationId must be of an existing waste destination in SIERA.
- The fromDate and toDate must be provided, and in the dd/mm/yy format.
- If mrfOptions are provided, or a mrfOptions.Recycled over 0, the related waste destination must have a wasteDestination type of MrfIncinerator, MRFLandfill, or MRFUnknown.
Action Plans
The action plan endpoints allows uploading of action plan information relating to assets such as ESG-related initiatives and improvement programs. The endpoints provide the ability to download all actions, update individual actions, and delete actions.
Get all action plans
GET /api/v1/actionplans
curl https://api.sieraglobal.com/api/v1/actionplans \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"actionId": 2,
"assetId": 2,
"actionDescription": "Upgrade lighting to LED",
"impact": "Energy",
"approved": true,
"status": "AgreedActions",
"current": 350,
"target": 200,
"cost": "Low",
"costType": "RevenueServiceCharge",
"scope": "WholeBuilding",
"manager": "Jeff Parsons",
"completion": "",
"dueDate": "9/1/2022",
"currency": "GBP",
"utilityType": "NotApplicable",
"performanceMeasure": "InstallationOfHighEfficiencyEquipment",
"targetUsagePercentage": 42.86
},
{
"actionId": 3,
"assetId": 2,
"actionDescription": "Replace southfacing windows with high-efficiency glazing",
"impact": "Energy",
"approved": true,
"status": "AgreedActions",
"current": 600,
"target": 300,
"cost": "12000",
"costType": "RevenueServiceCharge",
"scope": "WholeBuilding",
"manager": "Jeff Parsons",
"completion": "",
"dueDate": "9/1/2022",
"currency": "GBP",
"utilityType": "NotApplicable",
"performanceMeasure": "WindowReplacements",
"targetUsagePercentage": 50
},
]
Summary: Provides a list of all the action plans
HTTP Request
GET /api/v1/actionplans
Response Body
The response body will be a list of action plans.
Attribute | Type and description |
---|---|
actionId |
integer The id of the action plan |
assetId |
integer The id of the asset |
actionDescription |
string A description of the action plan |
impact |
string The utility or utility group affected by the action |
approved |
boolean A boolean flag to indicate if the action plan has been approved or not |
status |
enumeration A valid action status from the action status enumeration |
current |
float The current usage amount related to this action |
target |
float A target usage the action is hoped to achieve |
cost |
string A text description of the costs of the action. This can be a number amount or relative description such as high or low. |
costType |
enumeration A valid cost type from the action cost type enumeration |
scope |
enumeration A valid floor area scope from the action scope enumeration |
manager |
string The name of a person who is considered the manager of this action |
completion |
datetime The actual completion date of the action, in the format m/d/yyyy |
dueDate |
datetime The expected completion date of the action, in the format m/d/yyyy |
currency |
string The currency of the costs related to the action, of GBP, USD or EUR. |
utilityType |
enumeration A valid utility from the action utility enumeration |
performanceMeasure |
enumeration A valid measure description from the action measure description enumeration |
targetUsagePercentage |
float A read-only percentage change between the current and target values of the action |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified waste record id was not found |
500 | Server error |
Get an action plan
GET /api/v1/actionplans/{actionId}
curl https://api.sieraglobal.com/api/v1/actionplans/6 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
{
"actionId": 6,
"assetId": 2,
"actionDescription": "Upgrade lighting to LED",
"impact": "Energy",
"approved": true,
"status": "AgreedActions",
"current": 350,
"target": 200,
"cost": "Low",
"costType": "RevenueServiceCharge",
"scope": "WholeBuilding",
"manager": "Jeff Parsons",
"completion": "",
"dueDate": "9/1/2022",
"currency": "GBP",
"utilityType": "NotApplicable",
"performanceMeasure": "InstallationOfHighEfficiencyEquipment",
"targetUsagePercentage": 42.86
}
Summary: Provides an action plan
HTTP Request
GET /api/v1/actionplans/{actionId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
actionId | path | A valid id of an action plan stored in SIERA | Yes | integer |
Response Body
The response body will be the action plan associated with the specified actionId parameter.
Attribute | Type and description |
---|---|
actionId |
integer The id of the action plan |
assetId |
integer The id of the asset |
actionDescription |
string A description of the action plan |
impact |
string The utility or utility group affected by the action |
approved |
boolean A boolean flag to indicate if the action plan has been approved or not |
status |
enumeration A valid action status from the action status enumeration |
current |
float The current usage amount related to this action |
target |
float A target usage the action is hoped to achieve |
cost |
string A text description of the costs of the action. This can be a number amount or relative description such as high or low. |
costType |
enumeration A valid cost type from the action cost type enumeration |
scope |
enumeration A valid floor area scope from the action scope enumeration |
manager |
string The name of a person who is considered the manager of this action |
completion |
datetime The actual completion date of the action, in the format m/d/yyyy |
dueDate |
datetime The expected completion date of the action, in the format m/d/yyyy |
currency |
string The currency of the costs related to the action, of GBP, USD or EUR. |
utilityType |
enumeration A valid utility from the action utility enumeration |
performanceMeasure |
enumeration A valid measure description from the action measure description enumeration |
targetUsagePercentage |
float A read-only percentage change between the current and target values of the action |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified waste record id was not found |
500 | Server error |
Upload a new action plan
POST /api/v1/actionplans
curl POST https://api.sieraglobal.com/api/v1/actionplans \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"assetId": 2,
"actionDescription": "Complete reinsulation of external wall",
"impact": "Energy",
"approved": true,
"status": "AgreedActions",
"current": 7900,
"target": 5000,
"cost": "34500",
"costType": "RevenueServiceCharge",
"scope": "WholeBuilding",
"manager": "Sue Brown",
"completion": "",
"dueDate": "5/1/2022",
"currency": "GBP",
"utilityType": "NotApplicable",
"performanceMeasure": "WallOrRoofInsulation"
}
Response (201)
{
"actionId": 5
}
Summary: Upload a new action plan
HTTP Request
POST /api/v1/actionplans
Request body
Attribute | Type and description |
---|---|
assetId |
integer The id of the asset |
actionDescription |
string A description of the action plan |
impact |
string The utility or utility group affected by the action |
approved |
boolean A boolean flag to indicate if the action plan has been approved or not |
status |
enumeration A valid action status from the action status enumeration |
current |
float The current usage amount related to this action |
target |
float A target usage the action is hoped to achieve |
cost |
string A text description of the costs of the action. This can be a number amount or relative description such as high or low. |
costType |
enumeration A valid cost type from the action cost type enumeration |
scope |
enumeration A valid floor area scope from the action scope enumeration |
manager |
string The name of a person who is considered the manager of this action |
completion |
datetime The actual completion date of the action, in the format m/d/yyyy |
dueDate |
datetime The expected completion date of the action, in the format m/d/yyyy |
currency |
string The currency of the costs related to the action, of GBP, USD or EUR. |
utilityType |
enumeration A valid utility from the action utility enumeration |
performanceMeasure |
enumeration A valid measure description from the action measure description enumeration |
Response Body
The response body will a new action plan ID relating to the uploaded action plan
Attribute | Type and description |
---|---|
actionId |
integer The SIERA-generated id of the new action plan |
Responses
Code | Description |
---|---|
201 | Created |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified asset id was not found |
500 | Server error |
Update an action plan
PUT /api/v1/actionplans/{actionId}
curl PUT https://api.sieraglobal.com/api/v1/actionplans/2 \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"actionId": 2,
"assetId": 2,
"actionDescription": "Complete reinsulation of external wall",
"impact": "Energy",
"approved": true,
"status": "AgreedActions",
"current": 9100,
"target": 5000,
"cost": "29500",
"costType": "RevenueServiceCharge",
"scope": "WholeBuilding",
"manager": "Sue Brown",
"completion": "",
"dueDate": "8/1/2022",
"currency": "GBP",
"utilityType": "NotApplicable",
"performanceMeasure": "WallOrRoofInsulation"
}
Response (200)
Summary: Updates an existing action plan by ID
HTTP Request
PUT /api/v1/actionplan/{actionId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
actionId | path | A valid id of an action plan stored in SIERA | Yes | integer |
Request body
Attribute | Type and description |
---|---|
actionId |
integer The id of the action plan |
assetId |
integer The id of the asset |
actionDescription |
string A description of the action plan |
impact |
string The utility or utility group affected by the action |
approved |
boolean A boolean flag to indicate if the action plan has been approved or not |
status |
enumeration A valid action status from the action status enumeration |
current |
float The current usage amount related to this action |
target |
float A target usage the action is hoped to achieve |
cost |
string A text description of the costs of the action. This can be a number amount or relative description such as high or low. |
costType |
enumeration A valid cost type from the action cost type enumeration |
scope |
enumeration A valid floor area scope from the action scope enumeration |
manager |
string The name of a person who is considered the manager of this action |
completion |
datetime The actual completion date of the action, in the format m/d/yyyy |
dueDate |
datetime The expected completion date of the action, in the format m/d/yyyy |
currency |
string The currency of the costs related to the action, of GBP, USD or EUR. |
utilityType |
enumeration A valid utility from the action utility enumeration |
performanceMeasure |
enumeration A valid measure description from the action measure description enumeration |
Responses
Code | Description |
---|---|
201 | Created |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified action plan id was not found |
500 | Server error |
Delete a action plan
DELETE /api/v1/actionplans/{actionId}
curl -X DELETE https://api.sieraglobal.com/api/v1/actionplans/4 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
Summary: Deletes an existing action plan by ID
HTTP Request
DELETE /api/v1/actionplans/{actionId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
actionId | path | The id of the action plan to be deleted in SIERA | Yes | integer |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified action plan id was not found |
500 | Server error |
Validation rules
When uploading new waste destinations or updating existing, SIERA will apply the following rules and if they are not met, a response of 400 will be returned with an error message and the field causing the validation failure.
The validation requirements for waste detinations are:
- When uploading a new action plan, the actionId must be 0 or null.
- When updating an action plan, the actionId must be of an existing action plan in SIERA.
- The assetId must exist in SIERA.
- The action must not be currently part of a survey which has been submitted. If this is encountered contact SIERA Support.
- The impact and performanceMeasure must be in a valid combination (as some measures may only apply to certain utilities or impacts). The table below details the valid combinations
Impact | Measure |
---|---|
Energy | AMR |
Energy | AutomationSystemUpgradesOrReplacements |
Energy | InstallationOfHighEfficiencyEquipment |
Energy | InstallationOfOnSiteRenewableEnergy |
Energy | ManagementSystemsUpgradesOrReplacements |
Energy | OccupierEngagementOrInformationalTechnologies |
Energy | TechnicalAssessmentEnergy |
Energy | WallOrRoofInsulation |
Energy | WindowReplacements |
Water | CoolingTower |
Water | DripOrSmartIrrigation |
Water | HighEfficiencyOrDryFixtures |
Water | LeakDetectionSystem |
Water | MeteringOfWaterSubsystems |
Water | OnSiteWasteWaterTreatment |
Water | ReuseOfStormWaterOrGreyWater |
Waste | CompostingLandscapeOrFoodWaste |
Water | DroughtTolerantOrNativeLandscaping |
Waste | OngoingWastePerformanceMonitoring |
Waste | OnSiteWasteWaterTreatment |
Waste | Recycling |
Waste | WasteStreamAudit |
TenantEngagement | BuildingSpecificCommunication |
TenantEngagement | FeedbackSessions |
TenantEngagement | Other |
TenantEngagement | SocialMediaOnlinePlatform |
TenantEngagement | TenantMeetingsIncludingSustainability |
TenantEngagement | TenantsReceiveFeedbackOnPerformance |
TenantEngagement | TenantSustainabilityEvents |
TenantEngagement | TenantSustainabilityGuide |
TenantEngagement | TenantSustainabilityTraining |
EPCs
Energy Performance Certificates (EPCs) exist in SIERA in 2 forms:
1. the list of EPC schemes and their ratings which are defined in a SIERA instance
2. the record of an EPC rating given to an asset or asset unit for a given EPC scheme.
The EPC endpoints allow a user to upload the record of an EPC for an asset and define any EPC scheme along with the rating bands it uses. This way, SIERA can accomodate any kind of EPC.
The EPC endpoints allow a user to upload the record of an EPC for an asset or asset unit whcih can be stored by referencing an EPC scheme which exists in the API caller's SIERA instance. When recording asset or unit EPCs, it's important to record the floor area they relate to. Many areas use the floor area of EPCs on asset units, to calculate an aggregated weighted average for unit EPCs to produce an overall asset rating.
Get all EPC records
GET /api/v1/epcs
curl https://api.sieraglobal.com/api/v1/epcs \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"epcId": 12,
"assetId": 3,
"rating": "A",
"certificateReferenceNumber": "EPC1",
"score": 10,
"date": "2021-12-22T09:14:12.784Z",
"expiry": "2021-12-22T09:14:12.784Z",
"scheme": {
"epcSchemeId": 1,
"description": "EVORA standard EPC scheme",
"invertedScoring": false,
"ratings": [
{
"ratingId": 1,
"epcSchemeId": 1,
"rating": "A+",
"from": 0,
"to": 29
},
{
"ratingId": 2,
"epcSchemeId": 1,
"rating": "A",
"from": 30,
"to": 49
}
...
{
"ratingId": 8,
"epcSchemeId": 1,
"rating": "G",
"from": 200,
"to": 999
}
],
"isDefault": true
},
"scope": "Unit",
"unit": {
"unitId": 12,
"unitName": "Unit A",
"unitReference": "TAC-234",
"occupier": "Pets At Home",
"actionNotes": "",
"gia": 1100,
"nla": 900,
"measurementUnit": "M2",
"vacant": false,
"leaseStart": "2020-12-17T12:00:00.000Z",
"leaseLength": 24,
"leaseExpiry": "2022-12-17T12:00:00.000Z",
"leaseBreak": "",
"erv": 1200,
"fri": false,
"epcExempt": false
},
"comment": "[2021-11-09] I'm a comment!",
"note" : "A single EPC comment"
},
{
"epcId": 13,
"assetId": 4,
"rating": "A",
"certificateReferenceNumber": "EPC2",
"score": 15,
"date": "2021-12-22T09:14:12.784Z",
"expiry": "2021-12-22T09:14:12.784Z",
"scheme": {
"epcSchemeId": 1,
"description": "EVORA standard EPC scheme",
"invertedScoring": false,
"ratings": [
{
"ratingId": 1,
"epcSchemeId": 1,
"rating": "A+",
"from": 0,
"to": 29
},
{
"ratingId": 2,
"epcSchemeId": 1,
"rating": "A",
"from": 30,
"to": 49
}
...
{
"ratingId": 8,
"epcSchemeId": 1,
"rating": "G",
"from": 200,
"to": 999
}
],
"isDefault": true
},
"scope": "WholeBuilding",
"unit": null,
"comment": "[2021-11-09] I'm a comment!",
"note" : "A single EPC comment"
}
]
Summary: Provides a list of all the EPC records in SIERA
HTTP Request
GET /api/v1/epcs
Response Body
The response body will be a list of all the EPC records in SIERA.
Attribute | Type and description |
---|---|
epcId |
integer The SIERA-generated id of the EPC record |
assetId |
integer The id of the asset this EPC record relates to |
rating |
string A rating generated from the EPC scheme the EPC record relates to |
certificateReferenceNumber |
string The certificate reference number of the EPC if one is available |
score |
integer The score achieved of the EPC record |
date |
datetime The date of the EPC certificate |
expiry |
datetime The expiry date of the EPC certificate stored in SIERA |
scheme.epcSchemeId |
integer The SIERA-generated id of the EPC scheme |
scheme.description |
string The name of the related EPC scheme |
scheme.invertedScoring |
boolean A boolean flag indicating if the scoring of the scheme considers 0 the lowest rating or the highest; true if 0 is the lowest, false otherwise |
scheme.isDefault |
enumeration A boolean flag indicating if a scheme is a SIERA default scheme or not |
scheme.ratings.ratingId |
integer The SIERA-generated id of an EPC scheme rating |
scheme.ratings.epcSchemeId |
integer The id of the parent EPC ccheme |
scheme.ratings.rating |
datetime The letter given to an EPC scheme rating |
scheme.ratings.from |
datetime The lower bound value of an EPC scheme rating |
scheme.ratings.to |
float The upper bound value of an EPC scheme rating |
scope |
enumeration Indicates if the EPC is related to a unit or whole building. Must be a valid item from the EPC scope enumeration |
unit.unitId |
integer The SIERA-generated id of the asset unit |
unit.unitName |
string The name of the asset unit |
unit.unitReference |
string The asset unit reference |
unit.occupier |
string The name of the current occupier of the unit |
unit.gia |
float The Gross Internal Area (GIA) of the asset, measured in units indicated by the measurement unit. This may be null |
unit.nla |
float The Net Lettable Area (NLA) of the asset, measured in units indicated by the measurement unit. This may be null |
unit.measurementUnit |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
unit.leaseStart |
datetime The start date of the tenant of this unit's lease |
unit.leaseLength |
integer The length in months of the tenant of this unit's lease |
unit.leaseExpiry |
datetime The expiry date of the tenant of this unit's lease |
unit.leaseBreak |
datetime The start date of a break in the tenant of this unit's lease |
unit.erv |
float The estimated rental value (ERV) of this unit |
unit.fri |
boolean A boolean flag indicating if the current lease is Full Repairing and Insuring (FRI) or not |
unit.epcExempt |
boolean A boolean flag indicating if this unit has an EPC exemption or not |
comment |
string The latest comment that has been recorded on the EPC record |
note |
string A single note that can be recorded against an EPC record |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified EPC id was not found |
500 | Server error |
Get an EPC record
curl https://api.sieraglobal.com/api/v1/epcs/12 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
{
"epcId": 12,
"assetId": 3,
"rating": "A",
"certificateReferenceNumber": "EPC1",
"score": 10,
"date": "2021-12-22T09:14:12.784Z",
"expiry": "2021-12-22T09:14:12.784Z",
"scheme": {
"epcSchemeId": 1,
"description": "EVORA standard EPC scheme",
"invertedScoring": false,
"ratings": [
{
"ratingId": 1,
"epcSchemeId": 1,
"rating": "A+",
"from": 0,
"to": 29
},
{
"ratingId": 2,
"epcSchemeId": 1,
"rating": "A",
"from": 30,
"to": 49
}
...
{
"ratingId": 8,
"epcSchemeId": 1,
"rating": "G",
"from": 200,
"to": 999
}
],
"isDefault": true
},
"scope": "Unit",
"unit": {
"unitId": 12,
"unitName": "Unit A",
"unitReference": "TAC-234",
"occupier": "Pets At Home",
"actionNotes": "",
"gia": 1100,
"nla": 900,
"measurementUnit": "M2",
"vacant": false,
"leaseStart": "2020-12-17T12:00:00.000Z",
"leaseLength": 24,
"leaseExpiry": "2022-12-17T12:00:00.000Z",
"leaseBreak": "",
"erv": 1200,
"fri": false,
"epcExempt": false
},
"comment": "[2021-11-09] I'm a comment!",
"note" : "A single note that can be recorded against an EPC record"
}
HTTP Request
GET /api/v1/epcs/{epcId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
epcId | path | A valid id of an EPC record stored in SIERA | Yes | integer |
Response Body
The response body will the specified EPC record which matches the epcId given as a parameter.
Attribute | Type and description |
---|---|
epcId |
integer The SIERA-generated id of the EPC record |
assetId |
integer The id of the asset this EPC record relates to |
rating |
string A rating generated from the EPC scheme the EPC record relates to |
certificateReferenceNumber |
string The certificate reference number of the EPC if one is available |
score |
integer The score achieved of the EPC record |
date |
datetime The date of the EPC certificate |
expiry |
datetime The expiry date of the EPC certificate stored in SIERA |
scheme.epcSchemeId |
integer The SIERA-generated id of the EPC scheme |
scheme.description |
string The name of the related EPC scheme |
scheme.invertedScoring |
boolean A boolean flag indicating if the scoring of the scheme considers 0 the lowest rating or the highest; true if 0 is the lowest, false otherwise |
scheme.isDefault |
enumeration A boolean flag indicating if a scheme is a SIERA default scheme or not |
scheme.ratings.ratingId |
integer The SIERA-generated id of an EPC scheme rating |
scheme.ratings.epcSchemeId |
integer The id of the parent EPC ccheme |
scheme.ratings.rating |
datetime The letter given to an EPC scheme rating |
scheme.ratings.from |
datetime The lower bound value of an EPC scheme rating |
scheme.ratings.to |
float The upper bound value of an EPC scheme rating |
scope |
enumeration Indicates if the EPC is related to a unit or whole building. Must be a valid item from the EPC scope enumeration |
unit.unitId |
integer The SIERA-generated id of the asset unit |
unit.unitName |
string The name of the asset unit |
unit.unitReference |
string The asset unit reference |
unit.occupier |
string The name of the current occupier of the unit |
unit.gia |
float The Gross Internal Area (GIA) of the asset, measured in units indicated by the measurement unit. This may be null |
unit.nla |
float The Net Lettable Area (NLA) of the asset, measured in units indicated by the measurement unit. This may be null |
unit.measurementUnit |
enumeration The unit of measurement used to indicate floor area of this asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
unit.leaseStart |
datetime The start date of the tenant of this unit's lease |
unit.leaseLength |
integer The length in months of the tenant of this unit's lease |
unit.leaseExpiry |
datetime The expiry date of the tenant of this unit's lease |
unit.leaseBreak |
datetime The start date of a break in the tenant of this unit's lease |
unit.erv |
float The estimated rental value (ERV) of this unit |
unit.fri |
boolean A boolean flag indicating if the current lease is Full Repairing and Insuring (FRI) or not |
unit.epcExempt |
boolean A boolean flag indicating if this unit has an EPC exemption or not |
comment |
string The latest comment that has been recorded on the EPC record |
note |
string A single note that can be recorded against an EPC record |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified EPC id was not found |
500 | Server error |
Upload a new EPC record
POST /api/v1/epcs
curl POST https://api.sieraglobal.com/api/v1/epcs \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"assetId": 4,
"certificateReferenceNumber": "EPC3",
"score": 17,
"date": "2021-12-22T09:14:12.784Z",
"schemeId": 2,
"scope": "WholeBuilding",
"unitId": null,
"note" :null
}
Response (201)
{
"epcId": 34
}
Summary: Upload a new EPC record
HTTP Request
POST /api/v1/epcs
Request body
Attribute | Type and description |
---|---|
assetId |
integer The id of the asset this EPC record relates to |
certificateReferenceNumber |
string The certificate reference number of the EPC if one is available |
score |
integer The score achieved of the EPC record |
date |
datetime The date of the EPC certificate |
epcSchemeId |
integer The ID of the related scheme |
scope |
enumeration Indicates if the EPC is related to a unit or whole building. Must be a valid item from the EPC scope enumeration |
unitId |
integer The ID of the related unit. This is mandatory when scope is set to "Unit" |
note |
string A single note that can be recorded against an EPC record |
Response Body
The response body will a new epc ID relating to the uploaded EPC
Attribute | Type and description |
---|---|
epcId |
integer The SIERA-generated id of the new EPC |
Responses
Code | Description |
---|---|
201 | Created |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Update an EPC record
PUT /api/v1/epcs/{epcId}
curl PUT https://api.sieraglobal.com/api/v1/epcs/13 \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"epcId": 13
"assetId": 4,
"certificateReferenceNumber": "EPC12",
"score": 20,
"date": "2021-11-07T08:11:23.813Z",
"epcSchemeId": 2,
"scope": "Unit",
"unitId": 43,
"note":null
}
Response (200)
Summary: Updates an existing EPC by ID
HTTP Request
PUT /api/v1/epcs/{epcId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
epcId | path | A valid id of an EPC stored in SIERA | Yes | integer |
Request body
Attribute | Type and description |
---|---|
epcId |
integer The id of EPC record to be updated |
assetId |
integer The id of the asset this EPC record relates to |
certificateReferenceNumber |
string The certificate reference number of the EPC if one is available |
score |
integer The score achieved of the EPC record |
date |
datetime The date of the EPC certificate |
epcSchemeId |
integer The ID of the related scheme |
scope |
enumeration Indicates if the EPC is related to a unit or whole building. Must be a valid item from the EPC scope enumeration |
unitId |
integer The ID of the related unit. This is mandatory when scope is set to "Unit" |
note |
string The latest note that has been recorded on the EPC record |
Responses
Code | Description |
---|---|
200 | OK |
400 | Validation failures |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Delete an EPC record
DELETE /api/v1/epcs/{epcId}
curl -X DELETE https://api.sieraglobal.com/api/v1/epcs/12 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
Summary: Deletes an existing EPC record by ID
HTTP Request
DELETE /api/v1/epcs/{epcId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
epcId | path | A valid id of an EPC record stored in SIERA | Yes | integer |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the EPC was not found |
500 | Server error |
Validation rules
When uploading new EPCs or updating existing, SIERA will apply the following rules and if they are not met, a response of 400 will be returned with an error message and the field causing the validation failure.
The validation requirements for EPCs are:
- When uploading a new EPC, the epcId must be 0 or null.
- When updating an EPC, the epcId must be of an existing EPC in SIERA.
- The assetId must exist in SIERA.
- The unitId must exist in SIERA if used.
- If the scope is unit then a valid unitId must be present
EPC Schemes
Energy Performance Certificates (EPCs) exist in SIERA in 2 forms:
1. the list of EPC schemes and their ratings which are defined in a SIERA instance
2. the record of an EPC rating given to an asset or asset unit for a given EPC scheme.
SIERA provides a standard EPC which is generic in nature and defined by EVORA consultants. The EPC Scheme endpoints allow an API caller to define any EPC scheme along with the rating bands it uses. The scheme may then be referenced and used to upload an EPC record for an asset whose rating will be mapped to an EPC scheme's rating boundaries to produce a letter grading.
The EVORA standard EPC scheme is defined as :
Rating letter | Lower bound | Upper bound |
---|---|---|
A+ | 0 | 29 |
A | 30 | 49 |
B | 50 | 74 |
C | 75 | 99 |
D | 100 | 129 |
E | 130 | 159 |
F | 160 | 199 |
G | 200 | 999 |
As an example of an EPC record using this scheme, an asset having an whole building EPC with a rating of 36 would be classed as an A.
As EPC Schemes are country-specific, it's recommended to upload appropriate EPC schemes for the assets in an instance.
Get all schemes
GET /api/v1/epcs/schemes
curl https://api.sieraglobal.com/api/v1/epcs/schemes \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"epcSchemeId": 1,
"description": "EVORA standard EPC scheme",
"invertedScoring": false,
"ratings": [
{
"ratingId": 1,
"epcSchemeId": 1,
"rating": "A+",
"from": 0,
"to": 29
},
{
"ratingId": 2,
"epcSchemeId": 1,
"rating": "A",
"from": 30,
"to": 49
}
...
{
"ratingId": 8,
"epcSchemeId": 1,
"rating": "G",
"from": 200,
"to": 999
}
],
"isDefault": true
}
]
Summary: Provides a list of all the EPC schemes in SIERA, and the EVORA standard EPC scheme
HTTP Request
GET /api/v1/epcs/schemes
Response Body
The response body will be a list of all the EPC schemes in SIERA, and the EVORA standard EPC scheme.
Attribute | Type and description |
---|---|
epcSchemeId |
integer The SIERA-generated id of the EPC scheme |
description |
string The name of the EPC scheme |
invertedScoring |
boolean A boolean flag indicating if the scoring of the scheme considers 0 the lowest rating or the highest; true if 0 is the lowest, false otherwise |
isDefault |
enumeration A boolean flag indicating if a scheme is a SIERA default scheme or not |
ratings.ratingId |
integer The SIERA-generated id of the EPC scheme rating |
ratings.epcSchemeId |
integer The id of the parent EPC ccheme |
ratings.rating |
datetime The letter given to an EPC scheme rating |
ratings.from |
datetime The lower bound value of an EPC scheme rating |
ratings.to |
float The upper bound value of an EPC scheme rating |
Responses
Code | Description |
---|---|
200 | OK |
400 | Validation failures |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the EPC was not found |
500 | Server error |
Upload a new scheme
POST /api/v1/epcs/schemes
curl POST https://api.sieraglobal.com/api/v1/epcs/schemes \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"description": "Custom EPC scheme",
"invertedScoring": false,
"ratings": [
{
"rating": "A+",
"from": 0,
"to": 29
},
{
"rating": "A",
"from": 30,
"to": 49
}
...
{
"rating": "G",
"from": 200,
"to": 999
}
]
}
Response (201)
{
"epcSchemeId": 24
}
Summary: Upload a new EPC scheme
HTTP Request
POST /api/v1/epcs/schemes
Request body
Attribute | Type and description |
---|---|
description |
string The name of the EPC scheme |
invertedScoring |
boolean A boolean flag indicating if the scoring of the scheme considers 0 the lowest rating or the highest; true if 0 is the lowest, false otherwise |
ratings.rating |
datetime The letter given to an EPC scheme rating |
ratings.from |
datetime The lower bound value of an EPC scheme rating |
ratings.to |
float The upper bound value of an EPC scheme rating |
Response Body
The response body will a new EPC scheme ID relating to the uploaded EPC scheme
Attribute | Type and description |
---|---|
epcSchemeId |
integer The SIERA-generated id of the new EPC scheme |
Responses
Code | Description |
---|---|
201 | Created |
400 | Validation failures |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Update a scheme
PUT /api/v1/epcs/schemes/{epcSchemeId}
curl PUT https://api.sieraglobal.com/api/v1/epcs/schemes/7 \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"epcSchemeId": 7,
"description": "Custom EPC scheme",
"invertedScoring": false
}
Response (200)
Summary: Updates an existing EPC scheme by ID
HTTP Request
PUT /api/v1/epcs/schemes/{epcSchemeId}
Request body
Attribute | Type and description |
---|---|
epcSchemeId |
integer The SIERA-generated id of the EPC scheme |
description |
string The name of the EPC scheme |
invertedScoring |
boolean A boolean flag indicating if the scoring of the scheme considers 0 the lowest rating or the highest; true if 0 is the lowest, false otherwise |
Responses
Code | Description |
---|---|
201 | Created |
400 | Validation failures |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified EPC scheme id was not found |
500 | Server error |
Delete a scheme
curl -X DELETE https://api.sieraglobal.com/api/v1/epcs/schemes/2 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
Summary: Deletes an existing EPC scheme by ID
HTTP Request
DELETE /api/v1/epcs/schemes/{epcSchemeId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
epcSchemeId | path | The id of the EPC scheme to be deleted in SIERA | Yes | integer |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified EPC ccheme id was not found |
500 | Server error |
Upload a new scheme rating
POST /api/v1/epcs/schemes/{epcSchemeId}/ratings
curl POST https://api.sieraglobal.com/api/v1/epcs/schemes/1/ratings \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"epcSchemeId": 1,
"rating": "A+",
"from": 0,
"to": 29
}
Response (201)
{
"ratingId": 24
}
Summary: Upload a new EPC scheme rating
HTTP Request
POST /api/v1/epcs/schemes/{epcSchemeId}/ratings
Request body
Attribute | Type and description |
---|---|
epcSchemeId |
integer The id of the parent EPC ccheme |
rating |
datetime The letter given to an EPC scheme rating |
from |
datetime The lower bound value of an EPC scheme rating |
to |
float The upper bound value of an EPC scheme rating |
Response Body
The response body will a new EPC scheme rating ID relating to the uploaded EPC scheme rating
Attribute | Type and description |
---|---|
ratingId |
integer The SIERA-generated id of the new EPC scheme rating |
Responses
Code | Description |
---|---|
201 | Created |
400 | Validation failures |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified unit rate id was not found |
500 | Server error |
Update a scheme rating
PUT /api/v1/epcs/schemes/{epcSchemeId}/ratings/{ratingId}
curl PUT https://api.sieraglobal.com/api/v1/epcs/schemes/1/ratings/1 \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"ratingId": 1,
"epcSchemeId": 1,
"rating": "A+",
"from": 0,
"to": 10
}
Response (200)
Summary: Update an EPC scheme rating
HTTP Request
PUT /api/v1/epcs/schemes/{epcSchemeId}/ratings/{ratingId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
epcSchemeId | path | The id of the parent EPC scheme | Yes | integer |
ratingId | path | The id of the EPC scheme rating | Yes | integer |
Request body
Attribute | Type and description |
---|---|
ratingId |
integer The id of the EPC scheme rating to be updated |
epcSchemeId |
integer The id of the parent EPC ccheme |
rating |
datetime The letter given to an EPC scheme rating |
from |
datetime The lower bound value of an EPC scheme rating |
to |
float The upper bound value of an EPC scheme rating |
Responses
Code | Description |
---|---|
200 | OK |
400 | Validation failures |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified EPC scheme rating id was not found |
500 | Server error |
Delete a scheme rating
DELETE /api/v1/epcs/schemes/{schemeId}/ratings/{ratingId}
curl -X DELETE https://api.sieraglobal.com/api/v1/epcs/schemes/1/ratings/1 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
Summary: Deletes an existing EPC scheme rating by ID
HTTP Request
DELETE /api/v1/epcs/schemes/{epcSchemeId}/ratings/{ratingId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
epcSchemeId | path | The id of the parent EPC scheme | Yes | integer |
ratingId | path | The id of the EPC scheme rating | Yes | integer |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
401 | Not found, the specified EPC scheme rating id was not found |
500 | Server error |
Validation rules
When uploading new EPC schemes or updating existing, SIERA will apply the following rules and if they are not met, a response of 400 will be returned with an error message and the field causing the validation failure.
The validation requirements for EPC schemes are:
- When uploading a new EPC scheme, the epcSchemeId must be 0 or null.
- When updating an EPC, the epcSchemeId must be of an existing EPC scheme in SIERA.
- When uploading or updating an EPC scheme rating, the epcSchemeId must exist in SIERA.
Organisations
The Organisations endpoints allow you to create and manage organisations to associated with assets in SIERA. You can upload new organisations, update organisations or delete them from a given instance in SIERA.
Get all organisations
GET /api/v1/organisations
curl https://api.sieraglobal.com/api/v1/organisations \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"organisationId": 1,
"organisationName": "TPG Financial Services",
"reportingCurrency": "GBP",
"reportingMeasurementUnit": "M2",
"yearStart": 1
},
{
"organisationId": 2,
"organisationName": "Colias",
"reportingCurrency": "GBP",
"reportingMeasurementUnit": "FT2",
"yearStart": 4
},
{
"organisationId": 3,
"organisationName": "Sakitai",
"reportingCurrency": "GBP",
"reportingMeasurementUnit": "M2",
"yearStart": 1
}
]
Summary: Provides a list of all the organisations in SIERA
HTTP Request
GET /api/v1/organisations
Response Body
The response body will be a list of organisations.
Attribute | Type and description |
---|---|
organisationId |
integer The SIERA-generated id of the organisation |
organisationName |
string The name of the organisation |
reportingCurrency |
string The 3-letter code of the currency used for reporting in the organisation |
reportingMeasurementUnit |
enumeration The unit of measurement used to indicate floor area of the asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
yearStart |
integer The month considered the start of the year for the organisation, 1 for a calendar start (January), 4 for financial year start (April) |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the organisation was not found |
500 | Server error |
Get an organisation
GET /api/v1/organisations
curl https://api.sieraglobal.com/api/v1/organisations/2 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
{
"organisationId": 2,
"organisationName": "Colias",
"reportingCurrency": "GBP",
"reportingMeasurementUnit": "FT2",
"yearStart": 4
}
Summary: Provides an organisation
HTTP Request
GET /api/v1/organisations
Response Body
The response body will be an organisation.
Attribute | Type and description |
---|---|
organisationId |
integer The SIERA-generated id of the organisation |
organisationName |
string The name of the organisation |
reportingCurrency |
string The 3-letter code of the currency used for reporting in the organisation |
reportingMeasurementUnit |
enumeration The unit of measurement used to indicate floor area of the asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
yearStart |
integer The month considered the start of the year for the organisation, 1 for a calendar start (January), 4 for financial year start (April) |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the organisation was not found |
500 | Server error |
Upload a new organisation
POST /api/v1/organisations
curl POST https://api.sieraglobal.com/api/v1/organisations \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"organisationName": "PL Green organisation",
"reportingCurrency": "GBP",
"reportingMeasurementUnit": "M2",
"yearStart": 4,
}
Response (201)
{
"organisationId": 6
}
Summary: Upload a new organisation
HTTP Request
POST /api/v1/organisations
Request body
Attribute | Type and description |
---|---|
organisationName |
string The name of the organisation |
reportingCurrency |
string The 3-letter code of the currency used for reporting in the organisation |
reportingMeasurementUnit |
enumeration The unit of measurement used to indicate floor area of the asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
yearStart |
integer The month considered the start of the year for the organisation, 1 for a calendar start (January), 4 for financial year start (April) |
Response Body
The response body will a new organisation ID relating to the uploaded organisation
Attribute | Type and description |
---|---|
organisationId |
integer The SIERA-generated id of the new organisation |
Responses
Code | Description |
---|---|
201 | Created |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Update an organisation
PUT /api/v1/organisations/{organisationId}
curl PUT https://api.sieraglobal.com/api/v1/organisations/3 \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"organisationName": "PL Green organisation",
"reportingCurrency": "GBP",
"reportingMeasurementUnit": "FT2",
"yearStart": 4
}
Response (200)
Summary: Updates an existing organisation by ID
HTTP Request
PUT /api/v1/organisations/{organisationId}
Paraorganisations
Name | Located in | Description | Required | Type |
---|---|---|---|---|
organisationId | path | The id of the organisation to be updated in SIERA | Yes | integer |
Request body
Attribute | Type and description |
---|---|
organisationId |
integer The SIERA-generated id of the organisation |
organisationName |
string The name of the organisation |
reportingCurrency |
string The 3-letter code of the currency used for reporting in the organisation |
reportingMeasurementUnit |
enumeration The unit of measurement used to indicate floor area of the asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
yearStart |
integer The month considered the start of the year for the organisation, 1 for a calendar start (January), 4 for financial year start (April) |
Responses
Code | Description |
---|---|
201 | Created |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified organisation id was not found |
500 | Server error |
Delete an organisation
DELETE /api/v1/organisations/{organisationId}
curl -X DELETE https://api.sieraglobal.com/api/v1/organisations/2 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
Summary: Deletes an existing organisation by ID
HTTP Request
DELETE /api/v1/organisation/{organisationId}
Paraorganisations
Name | Located in | Description | Required | Type |
---|---|---|---|---|
organisationId | path | The id of the organisation to be deleted in SIERA | Yes | integer |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the organisation was not found |
500 | Server error |
Validation rules
When uploading new organisations or updating existing, SIERA will apply the following rules and if they are not met, a response of 400 will be returned with an error message and the field causing the validation failure.
The validation requirements for organisations are:
- When uploading a new organisation, the organisationId must be 0 or null.
- When updating an organisation, the organisationId must be of an existing organisation in SIERA.
Funds
The Funds endpoints allow you to create and manage funds to associated with assets in SIERA. You can upload new funds, update funds or delete them from a given instance in SIERA. Note that a fund must be associated with an organisation and can't exist on its own.
Get all funds
GET /api/v1/funds
curl https://api.sieraglobal.com/api/v1/funds \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"fundId": 1,
"fundName": "TG Pension Fund",
"reportingCurrency": "GBP",
"reportingMeasurementUnit": "M2",
"yearStart": 4,
"organisationId": 3
},
{
"fundId": 2,
"fundName": "TF Sustainable Fund",
"reportingCurrency": "GBP",
"reportingMeasurementUnit": "M2",
"yearStart": 4,
"organisationId": 3
}
]
Summary: Provides a list of all the funds in SIERA
HTTP Request
GET /api/v1/funds
Response Body
The response body will be a list of funds.
Attribute | Type and description |
---|---|
fundId |
integer The SIERA-generated id of the fund |
fundName |
string The name of the fund |
reportingCurrency |
string The 3-letter code of the currency used for reporting in the fund |
reportingMeasurementUnit |
enumeration The unit of measurement used to indicate floor area of the asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
yearStart |
integer The month considered the start of the year for the fund, 1 for a calendar start (January), 4 for financial year start (April) |
organisationId |
integer The id of the associated organisation |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the fund was not found |
500 | Server error |
Get a fund
GET /api/v1/funds/{fundId}
curl https://api.sieraglobal.com/api/v1/funds/2 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
{
"fundId": 2,
"fundName": "TF Sustainable Fund",
"reportingCurrency": "GBP",
"reportingMeasurementUnit": "M2",
"yearStart": 1,
"organisationId": 3
}
Summary: Provides a single fund given an ID
HTTP Request
GET /api/v1/funds/{fundId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
fundId | path | A valid id of a fund stored in SIERA | Yes | integer |
Response Body
The response body will the specified fund which matches the fundId given as a parameter.
Attribute | Type and description |
---|---|
fundId |
integer The SIERA-generated id of the fund |
fundName |
string The name of the fund |
reportingCurrency |
string The 3-letter code of the currency used for reporting in the fund |
reportingMeasurementUnit |
enumeration The unit of measurement used to indicate floor area of the asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
yearStart |
integer The month considered the start of the year for the fund, 1 for a calendar start (January), 4 for financial year start (April) |
organisationId |
integer The id of the associated organisation |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the fund was not found |
500 | Server error |
Upload a new fund
POST /api/v1/funds
curl POST https://api.sieraglobal.com/api/v1/assets \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"fundName": "PL Green Fund",
"reportingCurrency": "GBP",
"reportingMeasurementUnit": "M2",
"yearStart": 1,
"organisationId": 3
}
Response (201)
{
"fundId": 6
}
Summary: Upload a new fund
HTTP Request
POST /api/v1/funds
Request body
Attribute | Type and description |
---|---|
fundId |
integer The SIERA-generated id of the fund |
fundName |
string The name of the fund |
reportingCurrency |
string The 3-letter code of the currency used for reporting in the fund |
reportingMeasurementUnit |
enumeration The unit of measurement used to indicate floor area of the asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
yearStart |
integer The month considered the start of the year for the fund, 1 for a calendar start (January), 4 for financial year start (April) |
organisationId |
integer The id of the associated organisation |
Response Body
The response body will a new fund ID relating to the uploaded fund
Attribute | Type and description |
---|---|
fundId |
integer The SIERA-generated id of the new fund |
Responses
Code | Description |
---|---|
201 | Created |
400 | Validation failure |
401 | Not found, the specified organisation id was not found |
500 | Server error |
Update a fund
PUT /api/v1/funds/{fundId}
curl PUT https://api.sieraglobal.com/api/v1/funds/11 \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"fundId": 2
"fundName": "TF Sustainable Green Fund",
"reportingCurrency": "GBP",
"reportingMeasurementUnit": "FT2",
"yearStart": 1,
"organisationId": 3
}
Response (200)
Summary: Updates an existing fund by ID
HTTP Request
PUT /api/v1/funds/{fundId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
fundId | path | The id of the fund to be updated in SIERA | Yes | integer |
Request body
Attribute | Type and description |
---|---|
fundId |
integer The SIERA-generated id of the fund |
fundName |
string The name of the fund |
reportingCurrency |
string The 3-letter code of the currency used for reporting in the fund |
reportingMeasurementUnit |
enumeration The unit of measurement used to indicate floor area of the asset. Must be a valid item from the measurement unit enumeration (m2 or ft2) |
yearStart |
integer The month considered the start of the year for the fund, 1 for a calendar start (January), 4 for financial year start (April) |
organisationId |
integer The id of the associated organisation |
Responses
Code | Description |
---|---|
201 | Created |
400 | Validation failure, one or more of the enumerations were not correctly identified |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the fund or specified organisationId was not found |
500 | Server error |
Delete a fund
DELETE /api/v1/funds/{fundId}
curl -X DELETE https://api.sieraglobal.com/api/v1/funds/2 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
Summary: Deletes an existing fund by ID
HTTP Request
DELETE /api/v1/funds/{fundId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
fundId | path | The id of the fund to be deleted in SIERA | Yes | integer |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the fund was not found |
500 | Server error |
Validation rules
When uploading new funds or updating existing, SIERA will apply the following rules and if they are not met, a response of 400 will be returned with an error message and the field causing the validation failure.
The validation requirements for funds are:
- When uploading a new fund, the fundId must be 0 or null.
- When updating a fund, the fundId must be of an existing fund in SIERA.
- The organisationId must be provided and be for a valid organisation in SIERA.
Carbon Factors
Carbon Factors in SIERA indicate how much carbon is emitted per unit of energy. As an example, carbon emission factors for electricity meters allow SIERA to display a kgCO2 for a given kWh of consumption.
SIERA provides default carbon factors which can be used in place of custom carbon factors. These default values were created by EVORA consultants, and can only be selected on meters. They cannot be changed or deleted. The default carbon factors are also purposefully valid from the beginning of 2021 until 2099. SIERA can contain multiple annual rates for each carbon factor. Each rate must have a valid date range over which the factor can be applied. The date ranges of each rate must not overlap, so that given a date a single factor can be chosen.
The default carbon factors are:
Default name | Meter Type | Valid from | Valid to | Rate |
---|---|---|---|---|
EVORA default electricity carbon emission factor | Electricity | 1/1/2021 | 1/1/2099 | 0.2123 |
EVORA default gas carbon emission factor | Gas | 1/1/2021 | 1/1/2099 | 0.184 |
EVORA default district heating carbon emission factor | District Heating | 1/1/2021 | 1/1/2099 | 0.247 |
EVORA default district cooling carbon emission factor | District Cooling | 1/1/2021 | 1/1/2099 | 0.247 |
EVORA default oil carbon emission factor | Oil | 1/1/2021 | 1/1/2099 | 0.268 |
EVORA default water carbon emission factor | Water | 1/1/2021 | 1/1/2099 | 0 |
Get all carbon factors
GET /api/v1/carbonfactors
curl https://api.sieraglobal.com/api/v1/carbonfactors \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"carbonFactorId": 1,
"description": "EVORA default electricity carbon emission factor",
"meterType": "Electricity",
"factorType": "LocationBased",
"isDefault": true,
"carbonFactorRates": [
{
"carbonFactorRateId": 5,
"fromDate": "2021-01-01T12:00:00.000Z",
"toDate": "2099-01-01T12:00:00.000Z",
"rate": 0.12
}
]
},
{
"carbonFactorId": 2,
"description": "EVORA default gas carbon emission factor",
"meterType": "Gas",
"factorType": "MarketBased",
"isDefault": true,
"carbonFactorRates": [
{
"carbonFactorRateId": 6,
"fromDate": "2021-01-01T12:00:00.000Z",
"toDate": "2099-01-01T12:00:00.000Z",
"rate": 0.12
}
]
}
]
Summary: Provides a list of all the carbon factors in SIERA, and the SIERA default carbon factors
HTTP Request
GET /api/v1/carbonfactors
Response Body
The response body will be a list of carbon factors in the API caller's instance, and the SIERA default carbon factors.
Attribute | Type and description |
---|---|
carbonFactorId |
integer The SIERA-generated id of the carbon factor |
description |
string The name of the carbon factor |
meterType |
enumeration A valid utility from the meter type enumeration |
factorType |
enumeration A valid factor type of this factor, either market-based or location-based, from the factor type enumeration |
isDefault |
boolean A boolean flag indicating if this factor is a SIERA default carbon factor or not |
carbonFactorRates.carbonFactorRateId |
integer The SIERA-generated id of the rate |
carbonFactorRates.fromDate |
datetime The start date the carbon factor rate is valid from |
carbonFactorRates.toDate |
datetime The date the carbon factor rate is valid until |
carbonFactorRates.rate |
float The carbon factor rate value |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the carbon factor was not found |
500 | Server error |
Get a carbon factor
GET /api/v1/carbonfactors/{carbonFactorId}
curl https://api.sieraglobal.com/api/v1/carbonfactors/2 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
{
"carbonFactorId": 2,
"description": "EVORA default gas carbon emission factor",
"meterType": "Gas",
"factorType": "MarketBased",
"isDefault": true,
"carbonFactorRates": [
{
"carbonFactorRateId": 6,
"fromDate": "2021-01-01T12:00:00.000Z",
"toDate": "2099-01-01T12:00:00.000Z",
"rate": 0.12
}
]
}
Summary: Provides a single carbon factor given an ID
HTTP Request
GET /api/v1/carbonfactors/{carbonFactorId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
carbonFactorId | path | A valid id of a carbon factor stored in SIERA | Yes | integer |
Response Body
The response body will the specified carbon factor which matches the carbonFactorId given as a parameter.
Attribute | Type and description |
---|---|
carbonFactorId |
integer The SIERA-generated id of the carbon factor |
description |
string The name of the carbon factor |
meterType |
enumeration A valid utility from the meter type enumeration |
factorType |
enumeration A valid factor type of this factor, either market-based or location-based, from the factor type enumeration |
isDefault |
boolean A boolean flag indicating if this factor is a SIERA default carbon factor or not |
carbonFactorRates.carbonFactorRateId |
integer The SIERA-generated id of the rate |
carbonFactorRates.fromDate |
datetime The start date the carbon factor rate is valid from |
carbonFactorRates.toDate |
datetime The date the carbon factor rate is valid until |
carbonFactorRates.rate |
float The carbon factor rate value |
Responses
Code | Description |
---|---|
200 | OK |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Upload a new carbon factor
POST /api/v1/carbonfactors
curl POST https://api.sieraglobal.com/api/v1/carbonfactors \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"description": "Custom German carbon emission factor",
"meterType": "Electricity",
"factorType": "LocationBased",
"carbonFactorRates": [
{
"fromDate": "2021-01-01T12:00:00.000Z",
"toDate": "2099-01-01T12:00:00.000Z",
"rate": 0.12
}
]
}
Response (201)
{
"carbonFactorId": 12
}
Summary: Upload a new carbon factor
HTTP Request
POST /api/v1/carbonfactors
Request body
Attribute | Type and description |
---|---|
description |
string The name of the carbon factor |
meterType |
enumeration A valid utility from the meter type enumeration |
factorType |
enumeration A valid factor type of this factor, either market-based or location-based, from the factor type enumeration |
carbonFactorRates.fromDate |
datetime The start date the carbon factor rate is valid from |
carbonFactorRates.toDate |
datetime The date the carbon factor rate is valid until |
carbonFactorRates.rate |
float The carbon factor rate value |
Response Body
The response body will a new carbon factor ID relating to the uploaded carbon factor
Attribute | Type and description |
---|---|
carbonFactorId |
integer The SIERA-generated id of the new carbon factor |
Responses
Code | Description |
---|---|
200 | OK |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Update a carbon factor
PUT /api/v1/carbonfactors/{carbonFactorId}
curl PUT https://api.sieraglobal.com/api/v1/carbonfactors/11 \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"description": "Custom France carbon emission factor",
"meterType": "Electricity",
"factorType": "LocationBased",
"carbonFactorRates": [
{
"fromDate": "2021-01-01T12:00:00.000Z",
"toDate": "2099-01-01T12:00:00.000Z",
"rate": 0.22
}
]
}
Response (200)
Summary: Updates an existing carbon factor by ID
HTTP Request
PUT /api/v1/carbonfactors/{carbonFactorId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
carbonFactorId | path | The id of the carbon factor to be updated in SIERA | Yes | integer |
Request body
Attribute | Type and description |
---|---|
carbonFactorId |
integer The id of the carbon factor |
description |
string The name of the carbon factor |
meterType |
enumeration A valid utility from the meter type enumeration |
factorType |
enumeration A valid factor type of this factor, either market-based or location-based, from the factor type enumeration |
carbonFactorRates.carbonFactorRateId |
integer The id of the rate |
carbonFactorRates.fromDate |
datetime The start date the carbon factor rate is valid from |
carbonFactorRates.toDate |
datetime The date the carbon factor rate is valid until |
carbonFactorRates.rate |
float The carbon factor rate value |
Responses
Code | Description |
---|---|
201 | Created |
400 | Validation failure |
401 | Not found, the specified carbon factor id was not found |
500 | Server error |
Delete a carbon factor
DELETE /api/v1/carbonfactors/{carbonFactorId}
curl -X DELETE https://api.sieraglobal.com/api/v1/carbonfactors/2 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
Summary: Deletes an existing carbon factor by ID
HTTP Request
DELETE /api/v1/carbonfactors/{carbonFactorId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
carbonFactorId | path | The id of the carbon factor to be deleted in SIERA | Yes | integer |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified carbon factor id was not found |
500 | Server error |
Upload a new carbon factor rate
POST /api/v1/carbonfactors/{carbonFactorId}/rates/
curl POST https://api.sieraglobal.com/api/v1/carbonfactors/11/rates \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"carbonFactorId": 11,
"rate": 0.13,
"fromDate": "2022-01-01T12:00:00.000Z",
"toDate": "2099-01-01T12:00:00.000Z"
}
Response (201)
{
"rateId": 13,
"rate": 0.13,
"fromDate": "2022-01-01T12:00:00.000Z",
"toDate": "2099-01-01T12:00:00.000Z",
"error": ""
}
Summary: Upload a new carbon factor rate
HTTP Request
POST /api/v1/carbonfactors/{carbonFactorId}/rates
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
carbonFactorId | path | The id of the carbon factor to be deleted in SIERA | Yes | integer |
Request body
Attribute | Type and description |
---|---|
rateId |
integer The id of the parent carbon factor |
rate |
float The rate value |
fromDate |
datetime The start date the rate is valid from |
toDate |
datetime The date the rate is valid until |
Response Body
The response body will the new rate with a new rate ID relating to the uploaded carbon rate
Attribute | Type and description |
---|---|
rateId |
integer The SIERA-generated id of the rate |
rate |
float The rate value |
fromDate |
datetime The start date the rate is valid from |
toDate |
datetime The date the rate is valid until |
error |
string Any error text from the upload indicating a failure |
Responses
Code | Description |
---|---|
200 | OK |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified carbon factor id was not found |
500 | Server error |
Update a carbon factor rate
PUT /api/v1/carbonfactors/{carbonFactorId}/rates/{rateId}
curl PUT https://api.sieraglobal.com/api/v1/carbonfactors/11/rates/3 \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"carbonFactorId": 11,
"rateId": 3,
"rate": 0.27,
"fromDate": "2022-01-01T12:00:00.000Z",
"toDate": "2099-01-01T12:00:00.000Z"
}
Response (201)
{
"rateId": 13,
"rate": 0.13,
"fromDate": "2022-01-01T12:00:00.000Z",
"toDate": "2099-01-01T12:00:00.000Z",
"error": ""
}
Summary: Update a carbon factor rate
HTTP Request
PUT /api/v1/carbonfactors/{carbonFactorId}/rates/{carbonFactorRateId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
carbonFactorId | path | The parent id of the carbon factor of the rate to be update in SIERA | Yes | integer |
rateId | path | The id of the rate to be updated in SIERA | Yes | integer |
Request body
Attribute | Type and description |
---|---|
carbonFactorId |
integer The id of the parent carbon factor |
rateId |
integer The id of the rate |
rate |
float The rate value |
fromDate |
datetime The start date the rate is valid from |
toDate |
datetime The date the rate is valid until |
Responses
Code | Description |
---|---|
200 | OK |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified rate or carbon factor id was not found |
500 | Server error |
Delete a carbon factor rate
DELETE /api/v1/carbonfactors/{carbonFactorId}/rates/{carbonFactorRateId}
curl -X DELETE https://api.sieraglobal.com/api/v1/carbonfactors/11/rates/3 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
Summary: Deletes an existing carbon factor by ID
HTTP Request
DELETE /api/v1/carbonfactors/{carbonFactorId}/rates/{rateId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
carbonFactorId | path | The parent id of the carbon factor of the rate to be deleted in SIERA | Yes | integer |
rateId | path | The id of the carbon factor rate to be deleted in SIERA | Yes | integer |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified rate or carbon factor id was not found |
500 | Server error |
Validation rules
When uploading new carbon factors or updating existing, SIERA will apply the following rules and if they are not met, a response of 400 will be returned with an error message and the field causing the validation failure.
The validation requirements for carbon factors are:
- When uploading a new carbon factor, the carbonFactorId must be 0 or null.
- When updating a carbon factor, the carbonFactorId must be of an existing carbon factor in SIERA.
The validation requirements for carbon factors rates are:
- When uploading a new carbon factor rate, the rateId must be 0 or null.
- When updating a carbon factor, the rateId must be of an existing carbon factor rate in SIERA.
- The carbonFactorId must be provided and for a valid carbon factor in SIERA.
- The fromDate must be before or equal to the toDate. Both must be provided.
- The date range specified by fromDate and toDate must not match an existing rate on the same parent carbon factor in SIERA.
- The date range specified by fromDate and toDate must not overlap dates of an existing rate on the same parent carbon factor in SIERA.
Unit Rates
Unit rates in SIERA indicate how much a unit of energy costs in financial terms. As an example, unit rates for electricity meters allow SIERA to display a cost for a given kWh of consumption. It's important to bear in mind that unit rates only provide a rough estimation of the cost. When calculating actual costs, per-minute unit rates are used which vary throughout the day. SIERA simply applies a single factor for all consumption on a meter, irrespective of time.
SIERA provides default unit rates which can be used in place of custom unit rates. These default values were created by EVORA consultants, and can only be selected on meters. They cannot be changed or deleted. The default rates are also purposefully valid from the beginning of 2021 until 2099. SIERA can contain multiple annual rates for each unit rate. Each rate must have a valid date range over which the rate can be applied. The date ranges of each rate must not overlap, so that given a date a single rate can be chosen.
The default unit rates are:
Default name | Currency | Units | Valid from | Valid to | Rate |
---|---|---|---|---|---|
EVORA standard electricity rate (GBP) | GBP | kWh | 1/1/2021 | 1/1/2099 | 0.12 |
EVORA standard fuel rate (GBP) | GBP | kWh | 1/1/2021 | 1/1/2099 | 0.03 |
EVORA standard water rate (GBP) | GBP | kWh | 1/1/2021 | 1/1/2099 | 2.1 |
EVORA standard electricity rate (USD) | USD | kWh | 1/1/2021 | 1/1/2099 | 0.15 |
EVORA standard fuel rate (USD) | USD | kWh | 1/1/2021 | 1/1/2099 | 0.4 |
EVORA standard water rate (USD) | USD | kWh | 1/1/2021 | 1/1/2099 | 3 |
EVORA standard electricity rate (EUR) | EUR | kWh | 1/1/2021 | 1/1/2099 | 0.22 |
EVORA standard fuel rate (EUR) | EUR | kWh | 1/1/2021 | 1/1/2099 | 0.05 |
EVORA standard water rate (EUR) | EUR | kWh | 1/1/2021 | 1/1/2099 | 3.75 |
Get all unit rates
GET /api/v1/unitrates
curl https://api.sieraglobal.com/api/v1/unitrates \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"unitRateID": 1,
"description": "EVORA standard electricity rate (GBP)",
"currency": "BritishPound",
"unit": "kWh",
"meterType": "Electricity",
"rates": [
{
"rateID": 1,
"unitRateID": 1,
"fromDate": "2021-01-01T12:00:00.000Z",
"toDate": "2099-01-01T12:00:00.000Z",
"rate": 0.12
}
]
},
{
"unitRateID": 2,
"description": "EVORA standard fuel rate (GBP)",
"currency": "BritishPound",
"unit": "kWh",
"meterType": null,
"rates": [
{
"rateID": 2,
"unitRateID": 2,
"fromDate": "2021-01-01T12:00:00.000Z",
"toDate": "2099-01-01T12:00:00.000Z",
"rate": 0.03
}
]
}
]
Summary: Provides a list of all the unit rates in SIERA, and the SIERA default unit rates
HTTP Request
GET /api/v1/unitrates
Response Body
The response body will be a list of unit rates in the API caller's instance, and the SIERA default unit rates.
Attribute | Type and description |
---|---|
unitRateID |
integer The SIERA-generated id of the unit rate |
description |
string The name of the unit rate |
currency |
enumeration The currency used for reporting in the unit rate, from the currency enumeration |
unit |
string The units of energy the rate relates to |
meterType |
enumeration A valid utility from the meter type enumeration |
rates.rateID |
integer The SIERA-generated id of the rate |
rates.unitRateID |
integer The id of the parent unit rate |
rates.fromDate |
datetime The start date the rate is valid from |
rates.toDate |
datetime The date the rate is valid until |
rates.rate |
float The rate value |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the unit rate was not found |
500 | Server error |
Get a unit rate
GET /api/v1/unitrates/{unitRateId}
curl https://api.sieraglobal.com/api/v1/unitrates/2 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
{
"unitRateID": 2,
"description": "EVORA standard fuel rate (GBP)",
"currency": "BritishPound",
"unit": "kWh",
"meterType": null,
"rates": [
{
"rateID": 2,
"unitRateID": 2,
"fromDate": "2021-01-01T12:00:00.000Z",
"toDate": "2099-01-01T12:00:00.000Z",
"rate": 0.03
}
]
}
Summary: Provides a single unit rate given an ID
HTTP Request
GET /api/v1/unitrates/{unitRateId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
unitRateId | path | A valid id of a unit rate stored in SIERA | Yes | integer |
Response Body
The response body will the specified unit rate which matches the unitRateId given as a parameter.
Attribute | Type and description |
---|---|
unitRateID |
integer The SIERA-generated id of the unit rate |
description |
string The name of the unit rate |
currency |
enumeration The currency used for reporting in the unit rate, from the currency enumeration |
unit |
string The units of energy the rate relates to |
meterType |
enumeration A valid utility from the meter type enumeration |
rates.rateID |
integer The SIERA-generated id of the rate |
rates.unitRateID |
integer The id of the parent unit rate |
rates.fromDate |
datetime The start date the rate is valid from |
rates.toDate |
datetime The date the rate is valid until |
rates.rate |
float The rate value |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the unit rate was not found |
500 | Server error |
Upload a new unit rate
POST /api/v1/unitrates
curl POST https://api.sieraglobal.com/api/v1/unitrates \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"description": "Custom electricity rate",
"currency": "BritishPound",
"unit": "kWh",
"meterType": "Electricity",
"rates": [
{
"rate": 0.12,
"fromDate": "2021-01-01T12:00:00.000Z",
"toDate": "2099-01-01T12:00:00.000Z"
}
]
}
Response (201)
{
"unitRateId": 11
}
Summary: Upload a new unit rate
HTTP Request
POST /api/v1/unitrates
Request body
Attribute | Type and description |
---|---|
description |
string The name of the unit rate |
currency |
enumeration The currency used for reporting in the unit rate, from the currency enumeration |
unit |
string The units of energy the rate relates to |
meterType |
enumeration A valid utility from the meter type enumeration |
rates.rate |
float The rate value |
rates.fromDate |
datetime The start date the rate is valid from |
rates.toDate |
datetime The date the rate is valid until |
Response Body
The response body will a new unit rate ID relating to the uploaded unit rate
Attribute | Type and description |
---|---|
unitRateId |
integer The SIERA-generated id of the new unit rate |
Responses
Code | Description |
---|---|
200 | OK |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Update a unit rate
PUT /api/v1/unitrates/{unitRateId}
curl PUT https://api.sieraglobal.com/api/v1/unitrates/11 \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"unitRateID": 11,
"description": "Custom electricity rate",
"currency": "BritishPound",
"unit": "kWh",
"meterType": "Electricity",
"rates": [
{
"unitRateID": 11,
"rateID": 2,
"rate": 0.12,
"fromDate": "2021-01-01T12:00:00.000Z",
"toDate": "2099-01-01T12:00:00.000Z"
}
]
}
Response (200)
Summary: Updates an existing unit rate by ID
HTTP Request
PUT /api/v1/unitrates/{unitRateId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
unitRateId | path | The id of the unit rate to be updated in SIERA | Yes | integer |
Request body
Attribute | Type and description |
---|---|
unitRateID |
integer The id of the unit rate to be updated |
description |
string The name of the unit rate |
currency |
enumeration The currency used for reporting in the unit rate, from the currency enumeration |
unit |
string The units of energy the rate relates to |
meterType |
enumeration A valid utility from the meter type enumeration |
rates.rateID |
integer The id of the rate to be updated |
rates.unitRateID |
integer The id of the parent unit rate |
rates.fromDate |
datetime The start date the rate is valid from |
rates.toDate |
datetime The date the rate is valid until |
rates.rate |
float The rate value |
Responses
Code | Description |
---|---|
200 | OK |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified unit rate id was not found |
500 | Server error |
Delete a unit rate
DELETE /api/v1/unitrates/{unitRateId}
curl -X DELETE https://api.sieraglobal.com/api/v1/unitrates/2 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
Summary: Deletes an existing unit rate by ID
HTTP Request
DELETE /api/v1/unitrates/{unitRateId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
unitRateId | path | The id of the unit rate to be deleted in SIERA | Yes | integer |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified unit rate id was not found |
500 | Server error |
Upload a new rate
POST /api/v1/unitrates/{unitRateId}/rates/
curl POST https://api.sieraglobal.com/api/v1/unitrates/11/rates \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"unitRateID": 11,
"rate": 0.13,
"fromDate": "2022-01-01T12:00:00.000Z",
"toDate": "2099-01-01T12:00:00.000Z"
}
Response (201)
{
"rateId": 11
}
Summary: Upload a new rate
HTTP Request
POST /api/v1/unitrates/{unitRateId}/rates
Request body
Attribute | Type and description |
---|---|
unitRateID |
integer The id of the parent unit rate |
rate |
float The rate value |
fromDate |
datetime The start date the rate is valid from |
toDate |
datetime The date the rate is valid until |
Response Body
The response body will a new rate ID relating to the uploaded rate
Attribute | Type and description |
---|---|
rateId |
integer The SIERA-generated id of the new rate |
Responses
Code | Description |
---|---|
201 | Created |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified unit rate id was not found |
500 | Server error |
Update a rate
PUT /api/v1/unitrates/{unitRateId}/rates/
curl PUT https://api.sieraglobal.com/api/v1/unitrates/11/rates/3 \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"unitRateID": 11,
"rateID": 3,
"rate": 0.27,
"fromDate": "2022-01-01T12:00:00.000Z",
"toDate": "2099-01-01T12:00:00.000Z"
}
Response (201)
Summary: Update a rate
HTTP Request
PUT /api/v1/unitrates/{unitRateId}/rates/{rateId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
unitRateId | path | The parent id of the unit rate of the rate to be update in SIERA | Yes | integer |
rateId | path | The id of the rate to be updated in SIERA | Yes | integer |
Request body
Attribute | Type and description |
---|---|
unitRateID |
integer The id of the parent unit rate |
rateID |
integer The id of the rate |
rate |
float The rate value |
fromDate |
datetime The start date the rate is valid from |
toDate |
datetime The date the rate is valid until |
Responses
Code | Description |
---|---|
200 | OK |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified unit rate id was not found |
500 | Server error |
Delete a rate
DELETE /api/v1/unitrates/{unitRateId}/rates/{rateId}
curl -X DELETE https://api.sieraglobal.com/api/v1/unitrates/11/rates/3 \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
Summary: Deletes an existing unit rate by ID
HTTP Request
DELETE /api/v1/unitrates/{unitRateId}/rates/{rateId}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
unitRateId | path | The parent id of the unit rate of the rate to be deleted in SIERA | Yes | integer |
rateId | path | The id of the rate to be deleted in SIERA | Yes | integer |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the specified unit rate id was not found |
500 | Server error |
Validation rules
When uploading new unit rates or updating existing, SIERA will apply the following rules and if they are not met, a response of 400 will be returned with an error message and the field causing the validation failure.
The validation requirements for unit rates are:
- When uploading a new unit rate, the unitRateId must be 0 or null.
- When updating a unit rate, the unitRateId must be of an existing unit rate in SIERA.
The validation requirements for unit rate rates are:
- When uploading a new rate, the rateId must be 0 or null.
- When updating a rate, the rateId must be of an existing unit rate in SIERA.
- The unitRateId must be provided and be for a valid unit rate in SIERA.
Currencies
The Currencies endpoints allow you to upload and manage currencies to associated with data in SIERA. You can upload new currencies, update currencies or delete them from a given instance in SIERA. Default currencies are provided for Great British Pounds (GBP, £), US Dollars (USD, $) and Euros (EUR, €). These defaults can not be deleted or updated. Currencies currently allow correct labelling of data in SIERA, and (at this time) offer no conversion functionality.
Get all currencies
GET /api/v1/currency
curl https://api.sieraglobal.com/api/v1/currency \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
[
{
"currencyCode": "GBP",
"currencyName": "Great British Pounds",
"currencySymbol": "£",
"isDefault": true
},
{
"currencyCode": "USD",
"currencyName": "US Dollars",
"currencySymbol": "$",
"isDefault": true
},
{
"currencyCode": "EUR",
"currencyName": "Euros",
"currencySymbol": "€",
"isDefault": true
}
]
Summary: Provides a list of all the currencies in SIERA
HTTP Request
GET /api/v1/currency
Response Body
The response body will be a list of currencies.
Attribute | Type and description |
---|---|
currencyCode |
string The three-letter currency code of the currency |
currencyCode |
string The full name of the currency |
currencyCode |
string The currency symbol of the currency |
isDefault |
bool A flag indicating if the currency is a default in SIERA |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the currency was not found |
500 | Server error |
Get all currencies
GET /api/v1/currency/{currencyCode}
curl https://api.sieraglobal.com/api/v1/currency/GBP \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
{
"currencyCode": "GBP",
"currencyName": "Great British Pounds",
"currencySymbol": "£",
"isDefault": true
}
Summary: Provides a currency in SIERA
HTTP Request
GET /api/v1/currency/GBP
Response Body
The response body will be a currency.
Attribute | Type and description |
---|---|
currencyCode |
string The three-letter currency code of the currency |
currencyCode |
string The full name of the currency |
currencyCode |
string The currency symbol of the currency |
isDefault |
bool A flag indicating if the currency is a default in SIERA |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the currency was not found |
500 | Server error |
Upload a new currency
POST /api/v1/currency
curl POST https://api.sieraglobal.com/api/v1/currency \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"currencyCode": "JPY",
"currencyName": "Japanese Yen",
"currencySymbol": "¥"
}
Response (201)
{
"currencyCode": "JPY"
}
Summary: Upload a new currency
HTTP Request
POST /api/v1/currency
Request body
Attribute | Type and description |
---|---|
currencyCode |
string The three-letter currency code of the currency |
currencyCode |
string The full name of the currency |
currencyCode |
string The currency symbol of the currency |
Response Body
The response body will a new fund ID relating to the uploaded fund
Attribute | Type and description |
---|---|
currencyCode |
integer The three-letter currency code of the currency |
Responses
Code | Description |
---|---|
201 | Created |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
500 | Server error |
Update a currency
PUT /api/v1/currency/{currencyCode}
curl PUT https://api.sieraglobal.com/api/v1/currency/JPY \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-V "Content-Type: application/json" \
-d @- <<JSON
{
"currencyCode": "JPY",
"currencyName": "Japanese Yen Updated",
"currencySymbol": "¥"
}
Response (200)
Summary: Updates an existing currency by code
HTTP Request
PUT /api/v1/currency/{currencyCode}
Parameter
Name | Located in | Description | Required | Type |
---|---|---|---|---|
currencyCode | path | The code of the currency to be updated in SIERA | Yes | integer |
Request body
Attribute | Type and description |
---|---|
currencyCode |
string The three-letter currency code of the currency |
currencyCode |
string The full name of the currency |
currencyCode |
string The currency symbol of the currency |
Responses
Code | Description |
---|---|
201 | Created |
400 | Validation failure |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the currency was not found |
500 | Server error |
Delete a currency
DELETE /api/v1/currency/{currencyCode}
curl -X DELETE https://api.sieraglobal.com/api/v1/currency/JPY \
-H "Authorization: Bearer $ACCESS_TOKEN"
Response (200)
Summary: Deletes an existing currency by code
HTTP Request
DELETE /api/v1/currency/{currencyCode}
Parameters
Name | Located in | Description | Required | Type |
---|---|---|---|---|
currencyCode | path | The code of the currency to be updated in SIERA | Yes | integer |
Responses
Code | Description |
---|---|
200 | OK |
401 | Unauthorised, the header token expired or is missing |
404 | Not found, the currency was not found |
500 | Server error |
Validation rules
When uploading new currencies or updating existing, SIERA will apply the following rules and if they are not met, a response of 400 will be returned with an error message and the field causing the validation failure.
The validation requirements for currencies are:
- When updating a currency, the currencyCode must be of an existing currency in SIERA.
- The currencyCode must not belong to a default currency. Default currencies cannot be updated or deleted.
Enumerations
The SIERA API uses the following enumerations to limit variables to a range of choices.
Action Cost Type
[ None, RevenueServiceCharge, CapitalNonRecoverable, CapitalRecoverable ]
Enumeration | Description |
---|---|
None | |
RevenueServiceCharge | Actions whose costs are claimed back through the tenant service charge |
CapitalNonRecoverable | Actions whose costs are classed as capital non-recoverable through the life of the asset or site |
CapitalRecoverable | Actions whose costs are classed as capital recoverable through the life of the asset or site |
Action Measure Description
[ NotApplicable, SystemsCommissioningOrRetroCommissioning, AutomationSystemUpgradesOrReplacements, ManagementSystemsUpgradesOrReplacements, WallOrRoofInsulation, SmartGridOrSmartBuildingTechnologies, WindowReplacements, InstallationOfHighEfficiencyEquipment, InstallationOfOnSiteRenewableEnergy, OccupierEngagementOrInformationalTechnologies, HighEfficiencyOrDryFixtures, MeteringOfWaterSubsystems, ReuseOfStormWaterOrGreyWater, OnSiteWasteWaterTreatment, CoolingTower, LeakDetectionSystem, DripOrSmartIrrigation, DroughtTolerantOrNativeLandscaping, OngoingWastePerformanceMonitoring, Recycling, WasteManagement, WasteStreamAudit, CompostingLandscapeOrFoodWaste, AMR ]
Enumeration | Description |
---|---|
NotApplicable | |
SystemsCommissioningOrRetroCommissioning | The process of ensuring that systems are designed, installed, and functionally tested, and that they are capable of being operated and maintained to perform optimally |
AutomationSystemUpgradesOrReplacements | Refers to the computer-based centralized system installed in buildings that controls and monitors equipment such as ventilation, airconditioning, heating, lighting, alarms and communications Upgrades and replacements refers to the process of ensuring the building automation system is operating at full capacity, as to achieve optimal management of systems and increase energy efficiency |
ManagementSystemsUpgradesOrReplacements | Energy management software solutions, which include functionality to forecast and adjust energy demand in a building |
WallOrRoofInsulation | |
SmartGridOrSmartBuildingTechnologies | Computer-based control and automation of electricity network systems, to support and manage electricity demand in a sustainable, integrated manner |
WindowReplacements | Windows replacements of any kind on an asset to reduce overall consumption and thermal energy loss |
InstallationOfHighEfficiencyEquipment | Specification and purchase of electrical equipment and appliances that minimize the building‘s energy needs This includes, but it is not limited to: energy efficient lighting upgrades/replacements and HVAC system upgrades/replacements |
InstallationOfOnSiteRenewableEnergy | Renewable energy produced on-site, to meet some or all of the building’s energy requirements |
OccupierEngagementOrInformationalTechnologies | Communication and information technologies implemented to inform and engage with tenants in regards to their energy use |
HighEfficiencyOrDryFixtures | Appliances and plumbing equipment that conserve water without compromising performance (also known as “ultra-low-flow” fixtures) / Fixtures that do not require the use of water, such as composting toilet systems and waterless urinals |
MeteringOfWaterSubsystems | Installing sub-meters to measure the water consumption of applicable subsystems, such as irrigation, indoor plumbing fixtures, domestic hot water, reclaimed water or other process water uses, which supports effective water management and identifying opportunities for additional water savings |
ReuseOfStormWaterOrGreyWater | Water that collects during precipitation, which can be stored on-site for eventual reuse for non-potable applications Examples can include, but are not limited to: landscape irrigation and/or flush fixtures |
OnSiteWasteWaterTreatment | Process of water decontamination as a consequence of any anthropogenic, industrial or commercial use, before the water is released again into the environment or is re-used |
CoolingTower | A cooling tower is a heat rejection device which extracts waste heat to the atmosphere through the cooling of a water stream to a lower temperature Reduction of potable water consumption for cooling towers (or evaporative condenser equipment) can be achieved through effective water management, including conducting a water analysis to measure the concentration of at least five control parameters in order to optimize the cooling tower cycles and/or use of non-potable makeup water for a minimum of 20% of the makeup water |
LeakDetectionSystem | Systems that detect water leaks Examples can include, but are not limited to: condensate water overflow, chiller water leaks, plumbing line cracks, heating/cooling piping leaks and outside seepage |
DripOrSmartIrrigation | Drip irrigation systems save water by irrigating, fertilizing and aerating trees, shrubs, plants and bushes directly at the roots Smart irrigation systems save water by adjusting the watering schedule and amount of water used for irrigation based on a variety of factors and inputs, including weather, plant species and soil type |
DroughtTolerantOrNativeLandscaping | Adapted or indigenous vegetation that has evolved to the geography, hydrology and climate of a region requiring minimal or no supplemental watering beyond natural rainfall |
OngoingWastePerformanceMonitoring | Track and measure ongoing waste volumes generated on a minimum quarterly basis, by either weight or volume, to help identify diversion and recycling opportunities within the organization Conduct a minimum annual review to evaluate performance |
Recycling | A program for materials that can be locally recycled and contracted with a recycling service provider Provide appropriately sized recycling collection and storage areas within the entity’s real estate holdings to enable occupants to sort, collect and divert materials from landfill |
WasteManagement | Hazardous and non-hazardous waste including reuse, recycling, composting, recovery, incineration, landfill, and on-site storage |
WasteStreamAudit | A formal process used to quantify the type and amount of waste being generated, by weight or volume, to help identify effective waste reduction, separation and recycling opportunities |
CompostingLandscapeOrFoodWaste | Composting is the controlled decomposition of organic material which produces useful soil amendment products Engage in landscape and/or food waste composting either on-site or by contracting with a composting service provider |
AMR | Meter readings taken automatically at predefined frequencies by building management systems or smart metering systems |
Action Scope
[ CommonAreas, Exterior, Landlord, TenantServices, WholeBuilding ]
Enumeration | Description |
---|---|
CommonAreas | Actions related to areas shared with other building occupants, including entrance areas, corridors, lifts, staircases,waste storage stores, communal kitchen, breakout facilities, etc |
Exterior | Actions related to the outdoor areas of an asset or site |
Landlord | |
TenantServices | Actions related to lettable floor area, both vacant and let/leased |
WholeBuilding | Actions related to the entirety of an asset or site |
Action Status
[ ActionsUnderReview, AgreedActions, Completed, NotApplicable, Applicable ]
Enumeration | Description |
---|---|
ActionsUnderReview | Actions which are being considered but not yet accepted |
AgreedActions | Actions which have been agreed to be implemented or planned for implementation |
Completed | Actions which have been completed |
NotApplicable | Actions which have been considered not applicable for an asset or site |
Applicable | Actions which have been considered applicable for an asset or site and which are awaiting review |
Action Utility
[ NotApplicable, DistrictCooling, DistrictHeating, Electricity, Gas, Water, Waste, Oil ]
Enumeration | Description |
---|---|
NotApplicable | This value is only sent by SIERA to indicate missing data. It may not be chosen for uploads or updates |
DistrictCooling | Actions relating to reductions in energy from district cooling energy sources |
DistrictHeating | Actions relating to reductions in energy from district heating energy sources |
Electricity | Actions relating to reductions in electrical energy usage |
Gas | Actions relating to reductions in gas energy usage |
Water | Actions relating to reductions in water usage |
Waste | Actions relating to reductions in waste |
Oil | Actions relating to meters providing energy as oil, such as flow meters |
Area Covered
[ All, CommonAreas, SharedServices, WholeBuilding, OutdoorExteriorAreaParking, TenantSpace, NotSet ]
Area covered describes where the energy is used with the aim of understanding who is responsible for the energy usage or its reduction
Enumeration | Description |
---|---|
All | This value is only sent by SIERA to indicate missing data. It may not be chosen for uploads or updates |
CommonAreas | Energy used by areas shared with other building occupants, including entrance areas, corridors, lifts, staircases,waste storage stores, communal kitchen, breakout facilities, etc |
SharedServices | Shared Services/Central Plant is a central source providing energy for the whole building, including common areas and shared services for tenants |
WholeBuilding | Energy used by tenants and base building services in both lettable/leasable and common spaces, but is not available or metered separately |
OutdoorExteriorAreaParking | Energy used in outdoor areas of an asset or site, including any parking spaces |
TenantSpace | Lettable floor area (both vacant and let/leased areas) that is or can be occupied by tenants |
NotSet | This value is only sent by SIERA to indicate missing data. It may not be chosen for uploads or updates |
Asset Control
[ Unknown, Landlord, Tenant ]
Asset control indicates who is responsible for the overall energy usage of the asset or site
Enumeration | Description |
---|---|
Unknown | This value is only sent by SIERA to indicate missing data. It may not be chosen for uploads or updates |
Landlord | An asset or site which is managed by the landlord |
Tenant | An asset or site which is managed by the tenant |
Asset Status
[ NotSpecified, StandingInvestment, Land, ResidentialDevelopment, Built, NewConstruction, MajorRenovation, MajorRefurbishment ]
Asset status indicates the current state of the asset in relation to its ability to be commercially occupied
Enumeration | Description |
---|---|
NotSpecified | This value is only sent by SIERA to indicate missing data. It may not be chosen for uploads or updates |
StandingInvestment | Standing Investment |
Land | Land |
ResidentialDevelopment | Residential Development |
Built | Built |
NewConstruction | New Construction |
MajorRenovation | Major Renovation |
MajorRefurbishment | Major Refurbishment |
Consumption Energy Source
[ NationalGridStandard, NationalGridGreen, Renewable, Other ]
Enumeration | Description |
---|---|
NationalGridStandard | Energy sourced from the national energy grid of a country |
NationalGridGreen | Energy sourced from a 100% renewable energy contract |
Renewable | Energy sourced from renewable sources |
Other | Energy sourced from an unknown source |
Consumption Sustainable Procurement
[ RenewableEnergyContract, SelfSupplyRenewables, ExportedConsumption, NoRenewableEnergyContract, OnsiteWaterReuse, OnsiteWaterCapture, StandardWaterSupply ]
Enumeration | Description |
---|---|
RenewableEnergyContract | A renewable energy contract arrangement with an Energy supplier |
SelfSupplyRenewables | Renewables generated on-site |
ExportedConsumption | Consumption generated on-site and exported |
NoRenewableEnergyContract | No renewable energy contract in place |
OnsiteWaterReuse | Water is reused on-site |
OnsiteWaterCapture | Water is captured on site but not re-used |
StandardWaterSupply | Standard water supply |
Consumption Use Of Area
[ OccupiedTenantSpace, VacantTenantSpace, LandlordSpace ]
Enumeration | Description |
---|---|
OccupiedTenantSpace | Tenant space with tenants in place (occupied) |
VacantTenantSpace | Tenant space with no tenants in place (void) |
LandlordSpace | Landlord space |
Country
[ NotSpecified, Afghanistan, AlandIslands, Albania, Algeria, AmericanSamoa, Andorra, Angola, Anguilla, Antarctica, AntiguaandBarbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belarus, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, BonaireSintEustatiusandSaba, BosniaHerzegovina, Botswana, BouvetIsland, Brazil, BritishIndianOceanTerritory, BruneiDarussalam, Bulgaria, BurkinaFaso, Burundi, CaboVerde, Cambodia, Cameroon, Canada, CaymanIslands, CentralAfricanRepublic, Chad, Chile, China, ChristmasIsland, CocosKeelingIslands, Colombia, Comoros, Congo, CongoDemocraticRepublic, CookIslands, CostaRica, CotedIvoire, Croatia, Cuba, Curacao, Cyprus, Czechia, Denmark, Djibouti, Dominica, DominicanRepublic, Ecuador, Egypt, ElSalvador, EquatorialGuinea, Eritrea, Estonia, Eswatini, Ethiopia, FalklandIslands, FaroeIslands, Fiji, Finland, France, FrenchGuiana, FrenchPolynesia, FrenchSouthernTerritories, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, Guadeloupe, Guam, Guatemala, Guernsey, Guinea, GuineaBissau, Guyana, Haiti, HeardIslandandMcDonaldIslands, HolySee, Honduras, HongKong, Hungary, Iceland, India, Indonesia, Iran, Iraq, Ireland, IsleofMan, Israel, Italy, Jamaica, Japan, Jersey, Jordan, Kazakhstan, Kenya, Kiribati, KoreaNorth, KoreaSouth, Kuwait, Kyrgyzstan, Lao, Latvia, Lebanon, Lesotho, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Macao, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, Malvinas, MarshallIslands, Martinique, Mauritania, Mauritius, Mayotte, Mexico, Micronesia, Moldova, Monaco, Mongolia, Montenegro, Montserrat, Morocco, Mozambique, Myanmar, Namibia, Nauru, Nepal, Netherlands, NewCaledonia, NewZealand, Nicaragua, Niger, Nigeria, Niue, NorfolkIsland, NorthMacedonia, NorthernMarianaIslands, Norway, Oman, Pakistan, Palau, Palestine, Panama, PapuaNewGuinea, Paraguay, Peru, Philippines, Pitcairn, Poland, Portugal, PuertoRico, Qatar, Reunion, Romania, RussianFederation, Rwanda, SaintBarthelemy, SaintHelenaAscensionandTristandaCunha, SaintKittsandNevis, SaintLucia, SaintMartin, SaintPierreandMiquelon, SaintVincentandtheGrenadines, Samoa, SanMarino, SaoTomeandPrincipe, SaudiArabia, Senegal, Serbia, Seychelles, SierraLeone, Singapore, SintMaarten, Slovakia, Slovenia, SolomonIslands, Somalia, SouthAfrica, SouthGeorgiaandtheSouthSandwichIslands, SouthSudan, Spain, SriLanka, Sudan, Suriname, SvalbardandJanMayen, Sweden, Switzerland, SyrianArabRepublic, Taiwan, Tajikistan, Tanzania, Thailand, TimorLeste, Togo, Tokelau, Tonga, TrinidadandTobago, Tunisia, Turkey, Turkmenistan, TurksandCaicosIslands, Tuvalu, Uganda, Ukraine, UnitedArabEmirates, UnitedKingdom, UnitedStatesMinorOutlyingIslands, UnitedStates, Uruguay, Uzbekistan, Vanuatu, Venezuela, VietNam, VirginIslandsBritish, VirginIslandsUS, WallisandFutuna, WesternSahara, Yemen, Zambia, Zimbabwe ]
SIERA uses the ISO 3166 list of country names.
Enumeration | Description |
---|---|
NotSpecified | This value is only sent by SIERA to indicate missing data. It may not be chosen for uploads or updates |
Afghanistan | Afghanistan |
AlandIslands | Åland Islands |
Albania | Albania |
Algeria | Algeria |
AmericanSamoa | American Samoa |
Andorra | Andorra |
Angola | Angola |
Anguilla | Anguilla |
Antarctica | Antarctica |
AntiguaandBarbuda | Antigua and Barbuda |
Argentina | Argentina |
Armenia | Armenia |
Aruba | Aruba |
Australia | Australia |
Austria | Austria |
Azerbaijan | Azerbaijan |
Bahamas | Bahamas |
Bahrain | Bahrain |
Bangladesh | Bangladesh |
Barbados | Barbados |
Belarus | Belarus |
Belgium | Belgium |
Belize | Belize |
Benin | Benin |
Bermuda | Bermuda |
Bhutan | Bhutan |
Bolivia | Bolivia (Plurinational State of) |
BonaireSintEustatiusandSaba | Bonaire, Sint Eustatius and Saba |
BosniaHerzegovina | Bosnia and Herzegovina |
Botswana | Botswana |
BouvetIsland | Bouvet Island |
Brazil | Brazil |
BritishIndianOceanTerritory | British Indian Ocean Territory |
BruneiDarussalam | Brunei Darussalam |
Bulgaria | Bulgaria |
BurkinaFaso | Burkina Faso |
Burundi | Burundi |
CaboVerde | Cabo Verde |
Cambodia | Cambodia |
Cameroon | Cameroon |
Canada | Canada |
CaymanIslands | Cayman Islands |
CentralAfricanRepublic | Central African Republic |
Chad | Chad |
Chile | Chile |
China | China |
ChristmasIsland | Christmas Island |
CocosKeelingIslands | Cocos (Keeling) Islands |
Colombia | Colombia |
Comoros | Comoros |
Congo | Congo |
CongoDemocraticRepublic | Congo, Democratic Republic of the |
CookIslands | Cook Islands |
CostaRica | Costa Rica |
CotedIvoire | Côte d'Ivoire |
Croatia | Croatia |
Cuba | Cuba |
Curacao | Curaçao |
Cyprus | Cyprus |
Czechia | Czechia |
Denmark | Denmark |
Djibouti | Djibouti |
Dominica | Dominica |
DominicanRepublic | Dominican Republic |
Ecuador | Ecuador |
Egypt | Egypt |
ElSalvador | El Salvador |
EquatorialGuinea | Equatorial Guinea |
Eritrea | Eritrea |
Estonia | Estonia |
Eswatini | Eswatini |
Ethiopia | Ethiopia |
FalklandIslands | Falkland Islands (Malvinas) |
FaroeIslands | Faroe Islands |
Fiji | Fiji |
Finland | Finland |
France | France |
FrenchGuiana | French Guiana |
FrenchPolynesia | French Polynesia |
FrenchSouthernTerritories | French Southern Territories |
Gabon | Gabon |
Gambia | Gambia |
Georgia | Georgia |
Germany | Germany |
Ghana | Ghana |
Gibraltar | Gibraltar |
Greece | Greece |
Greenland | Greenland |
Grenada | Grenada |
Guadeloupe | Guadeloupe |
Guam | Guam |
Guatemala | Guatemala |
Guernsey | Guernsey |
Guinea | Guinea |
Guinea-Bissau | Guinea-Bissau |
Guyana | Guyana |
Haiti | Haiti |
HeardIslandandMcDonaldIslands | Heard Island and McDonald Islands |
HolySee | Holy See |
Honduras | Honduras |
HongKong | Hong Kong |
Hungary | Hungary |
Iceland | Iceland |
India | India |
Indonesia | Indonesia |
Iran | Iran (Islamic Republic of) |
Iraq | Iraq |
Ireland | Ireland |
IsleofMan | Isle of Man |
Israel | Israel |
Italy | Italy |
Jamaica | Jamaica |
Japan | Japan |
Jersey | Jersey |
Jordan | Jordan |
Kazakhstan | Kazakhstan |
Kenya | Kenya |
Kiribati | Kiribati |
KoreaNorth | Korea (Democratic People's Republic of) |
KoreaSouth | Korea, Republic of |
Kuwait | Kuwait |
Kyrgyzstan | Kyrgyzstan |
Lao | Lao People's Democratic Republic |
Latvia | Latvia |
Lebanon | Lebanon |
Lesotho | Lesotho |
Liberia | Liberia |
Libya | Libya |
Liechtenstein | Liechtenstein |
Lithuania | Lithuania |
Luxembourg | Luxembourg |
Macao | Macao |
Madagascar | Madagascar |
Malawi | Malawi |
Malaysia | Malaysia |
Maldives | Maldives |
Mali | Mali |
Malta | Malta |
Malvinas | Malvinas |
MarshallIslands | Marshall Islands |
Martinique | Martinique |
Mauritania | Mauritania |
Mauritius | Mauritius |
Mayotte | Mayotte |
Mexico | Mexico |
Micronesia | Micronesia (Federated States of) |
Moldova | Moldova, Republic of |
Monaco | Monaco |
Mongolia | Mongolia |
Montenegro | Montenegro |
Montserrat | Montserrat |
Morocco | Morocco |
Mozambique | Mozambique |
Myanmar | Myanmar |
Namibia | Namibia |
Nauru | Nauru |
Nepal | Nepal |
Netherlands | Netherlands |
NewCaledonia | New Caledonia |
NewZealand | New Zealand |
Nicaragua | Nicaragua |
Niger | Niger |
Nigeria | Nigeria |
Niue | Niue |
NorfolkIsland | Norfolk Island |
NorthMacedonia | North Macedonia |
NorthernMarianaIslands | Northern Mariana Islands |
Norway | Norway |
Oman | Oman |
Pakistan | Pakistan |
Palau | Palau |
Palestine | Palestine, State of |
Panama | Panama |
PapuaNewGuinea | Papua New Guinea |
Paraguay | Paraguay |
Peru | Peru |
Philippines | Philippines |
Pitcairn | Pitcairn |
Poland | Poland |
Portugal | Portugal |
PuertoRico | Puerto Rico |
Qatar | Qatar |
Reunion | Réunion |
Romania | Romania |
RussianFederation | Russian Federation |
Rwanda | Rwanda |
SaintBarthelemy | Saint Barthélemy |
SaintHelenaAscensionandTristandaCunha | Saint Helena, Ascension and Tristan da Cunha |
SaintKittsandNevis | Saint Kitts and Nevis |
SaintLucia | Saint Lucia |
SaintMartin | Saint Martin (French part) |
SaintPierreandMiquelon | Saint Pierre and Miquelon |
SaintVincentandtheGrenadines | Saint Vincent and the Grenadines |
Samoa | Samoa |
SanMarino | San Marino |
SaoTomeandPrincipe | Sao Tome and Principe |
SaudiArabia | Saudi Arabia |
Senegal | Senegal |
Serbia | Serbia |
Seychelles | Seychelles |
SierraLeone | Sierra Leone |
Singapore | Singapore |
SintMaarten | Sint Maarten (Dutch part) |
Slovakia | Slovakia |
Slovenia | Slovenia |
SolomonIslands | Solomon Islands |
Somalia | Somalia |
SouthAfrica | South Africa |
SouthGeorgiaandtheSouthSandwichIslands | South Georgia and the South Sandwich Islands |
SouthSudan | South Sudan |
Spain | Spain |
SriLanka | Sri Lanka |
Sudan | Sudan |
Suriname | Suriname |
SvalbardandJanMayen | Svalbard and Jan Mayen |
Sweden | Sweden |
Switzerland | Switzerland |
SyrianArabRepublic | Syrian Arab Republic |
Taiwan | Taiwan, Province of China |
Tajikistan | Tajikistan |
Tanzania | Tanzania, United Republic of |
Thailand | Thailand |
TimorLeste | Timor-Leste |
Togo | Togo |
Tokelau | Tokelau |
Tonga | Tonga |
TrinidadandTobago | Trinidad and Tobago |
Tunisia | Tunisia |
Turkey | Turkey |
Turkmenistan | Turkmenistan |
TurksandCaicosIslands | Turks and Caicos Islands |
Tuvalu | Tuvalu |
Uganda | Uganda |
Ukraine | Ukraine |
UnitedArabEmirates | United Arab Emirates |
UnitedKingdom | United Kingdom |
UnitedStatesMinorOutlyingIslands | United States Minor Outlying Islands |
UnitedStates | United States |
Uruguay | Uruguay |
Uzbekistan | Uzbekistan |
Vanuatu | Vanuatu |
Venezuela | Venezuela (Bolivarian Republic of) |
VietNam | Viet Nam |
VirginIslandsBritish | Virgin Islands (British) |
VirginIslandsUS | Virgin Islands (U.S.) |
WallisandFutuna | Wallis and Futuna |
WesternSahara | Western Sahara |
Yemen | Yemen |
Zambia | Zambia |
Zimbabwe | Zimbabwe |
Currency
[ BritishPound, USDollar, Euros ]
Enumeration | Description |
---|---|
BritishPound | Great British Pound (GBP £) |
USDollar | US Dollar (USD $) |
Euros | Euros (EUR €) |
Factor Type
[ LocationBased, MarketBased ]
Factor Type is used on carbon factors to indicate whether a carbon emissions factors relates to a location based factor or a factor which reflects the carbon emissions of a specific supplier and a contract
Enumeration | Description |
---|---|
LocationBased | Carbon factors based upon a location such as country |
MarketBased | Carbon factors based upon a specific energy supplier |
Generation Type
[ NotSpecified, NationalGrid, NationalGridGreen, CHP, SelfSupplyRenewables ]
Enumeration | Description |
---|---|
NotSpecified | This value is only sent by SIERA to indicate missing data. It may not be chosen for uploads or updates |
NationalGrid | Energy sourced from the national energy grid of a country |
NationalGridGreen | Energy sourced from a 100% renewable energy contract |
CHP | Combined heat and power, also known as cogeneration, is the concurrent production of electricity or mechanical power and useful thermal energy (heating and/or cooling) from a single source of energy |
SelfSupplyRenewables | Energy sourced from on-site renewable consumption |
GRESB Sector
[ Other, EducationLibrary, EducationOther, EducationSchool, EducationUniversity, Healthcare, HealthcareCenter, HealthcareOther, HealthcareSeniorHomes, Hotel, IndustrialBusinessParks, IndustrialDistributionWarehouse, IndustrialPark, IndustrialManufacturing, IndustrialOther, LodgingLeisureRecreation, LodgingLeisureRecreationFitnessCenter, LodgingLeisureRecreationIndoorArena, LodgingLeisureRecreationMuseumGallery, LodgingLeisureRecreationOther, LodgingLeisureRecreationPerformingArts, LodgingLeisureRecreationSwimmingCenter, MedicalOffice, MixedUseOfficeIndustrial, MixedUseOfficeResidential, MisedUseOfficeRetail, MixedUseOther, Office, OfficeBusinessPark, OfficeCorporateHighRise, OfficeCorporateLowRise, OfficeCorporateMidRise, OfficeMedical, OfficeOther, OtherParkingIndoors, OtherSelfStorage, ResidentialMultiFamily, ResidentialFamilyHomes, ResidentialMultiFamilyHighRise, ResidentialMultiFamilyLowRise, ResidentialMultiFamilyMidRise, ResidentialOther, ResidentialRetirementLiving, ResidentialStudentHousing, RetailHighStreet, RetailOther, RetailRestaurantsBars, RetailLifestyleCenter, RetailShoppingCenter, RetailCenterStripMall, RetailCenterWarehouse, TechnologyScienceDataCenter, TechnologyScienceLaboratory, TechnologyScienceOther ]
Enumeration | Description |
---|---|
Other | Other |
EducationLibrary | Education: Library |
EducationOther | Education: Other |
EducationSchool | Education: School |
EducationUniversity | Education: University |
Healthcare | Healthcare |
HealthcareCenter | Healthcare: Healthcare Center |
HealthcareOther | Healthcare: Other |
HealthcareSeniorHomes | Healthcare: Senior Homes |
Hotel | Hotel |
IndustrialBusinessParks | Industrial: Business Parks |
IndustrialDistributionWarehouse | Industrial: Distribution Warehouse |
IndustrialPark | Industrial: Industrial Park |
IndustrialManufacturing | Industrial: Manufacturing |
IndustrialOther | Industrial: Other |
LodgingLeisureRecreation | Lodging, Leisure & Recreation |
LodgingLeisureRecreationFitnessCenter | Lodging, Leisure & Recreation: Fitness Center |
LodgingLeisureRecreationIndoorArena | Lodging, Leisure & Recreation: Indoor Arena |
LodgingLeisureRecreationMuseumGallery | Lodging, Leisure & Recreation: Museum/Gallery |
LodgingLeisureRecreationOther | Lodging, Leisure & Recreation: Other |
LodgingLeisureRecreationPerformingArts | Lodging, Leisure & Recreation: Performing Arts |
LodgingLeisureRecreationSwimmingCenter | Lodging, Leisure & Recreation: Swimming Center |
MedicalOffice | Medical Office |
MixedUseOfficeIndustrial | Mixed Use: Office/Industrial |
MixedUseOfficeResidential | Mixed Use: Office/Residential |
MisedUseOfficeRetail | Mixed Use: Office/Retail |
MixedUseOther | Mixed Use: Other |
Office | Office |
OfficeBusinessPark | Office: Business Park |
OfficeCorporateHighRise | Office: Corporate: High-Rise Office |
OfficeCorporateLowRise | Office: Corporate: Low-Rise Office |
OfficeCorporateMidRise | Office: Corporate: Mid-Rise Office |
OfficeMedical | Office: Medical Office |
OfficeOther | Office: Other |
OtherParkingIndoors | Other: Parking (Indoors) |
OtherSelfStorage | Other: Self-Storage |
ResidentialMultiFamily | Residential, Multi-family |
ResidentialFamilyHomes | Residential: Family Homes |
ResidentialMultiFamilyHighRise | Residential: Multi-Family: High-Rise Multi-Family |
ResidentialMultiFamilyLowRise | Residential: Multi-Family: Low-Rise Multi-Family |
ResidentialMultiFamilyMidRise | Residential: Multi-Family: Mid-Rise Multi Family |
ResidentialOther | Residential: Other |
ResidentialRetirementLiving | Residential: Retirement Living |
ResidentialStudentHousing | Residential: Student Housing |
RetailHighStreet | Retail: High Street |
RetailOther | Retail: Other |
RetailRestaurantsBars | Retail: Restaurants/Bars |
RetailLifestyleCenter | Retail: Retail Centers: Lifestyle Center |
RetailShoppingCenter | Retail: Retail Centers: Shopping Center |
RetailCenterStripMall | Retail: Retail Centers: Strip Mall |
RetailCenterWarehouse | Retail: Retail Centers: Warehouse |
TechnologyScienceDataCenter | Technology/Science: Data Center |
TechnologyScienceLaboratory | Technology/Science: Laboratory/Life Sciences |
TechnologyScienceOther | Technology/Science: Other |
Measurement Unit
[ M2, FT2 ]
Enumeration | Description |
---|---|
M2 | Meters squared |
FT2 | Feet squared |
Meter Consumption Type
[ Actual, Estimate ]
Enumeration | Description |
---|---|
Actual | Consumption that was read from the meter |
Estimate | Consumption that was estimated based upon other readings |
Meter Control
[ Landlord, Tenant ]
Enumeration | Description |
---|---|
Landlord | Meter consumption purchased by the landlord |
Tenant | Meter consumption purchased by the tenant |
Meter Type
[ Electricity, Water, Gas, Oil, DistrictHeating, DistrictCooling, Carbon, Waste ]
Enumeration | Description |
---|---|
Electricity | Meters providing electrical energy |
Water | Meters providing water |
Gas | Meters providing gas energy |
Oil | Meters providing energy as oil, such as flow meters |
DistrictHeating | Meters providing heating energy from a centralised source |
DistrictCooling | Meters providing cooling from a centralised source |
Carbon | |
Waste |
EPC Scope
[ NotSpecified, WholeBuilding, Unit ]
Enumeration | Description |
---|---|
NotSpecified | Not Specified |
WholeBuilding | Whole Building |
Unit | Unit |
Meter Control
[ Landlord, Tenant ]
Meter control indicates who is responsible for the purchasing of the energy or water of the meter
Enumeration | Description |
---|---|
Landlord | A meter whose energy or water is purchased by the landlord |
Tenant | A meter whose energy or water is purchased by the tenant |
Sector
[ Retail, Office, Industrial, Residential, Hotel, LodgingLeisureRecreation, Education, TechnologyScience, Healthcare, MixedUseOffice, Other ]
The Sector enumeration defines the different property sectors used by SIERA
Enumeration | Description |
---|---|
Retail | Any retail site or asset |
Office | Any office site or asset |
Industrial | Any industrial site or asset |
Residential | Any residential site or asset |
Hotel | Any hotel, motel, youth hostel, lodging or resort |
LodgingLeisureRecreation | Sites or assets related to leisure and recreation such as (but not limited to) stadiums, fitness centers, museums or theatres |
Education | Any school, college, university or library. |
TechnologyScience | Sites or assets related to technology or science such as data centres, laboratories or research facilities |
Healthcare | Sites or assets related to healthcare, medecine or residential care |
MixedUseOffice | Offices containing a mix of one or more other sectors, such as Offices with Retail |
Other | Any site or asset which does not fit another sector |
Waste Destination
[ AnaerobicDigestion, Incinerator, Landfill, MRFIncinerator, MRFLandfill, MRFUnknown, Recycled, Compost, Reuse ]
The waste destination indicates the final destination of waste and the method by which its reycled or reused if possible.
Enumeration | Description |
---|---|
AnaerobicDigestion | Anaerobic digestion is a destination where waste is broken down by microorganisms in the absence of oxygen |
Incinerator | Incinerated waste which has no recyclable, or reusable component |
Landfill | Waste which goes to a landfill |
MRFIncinerator | A materials recovery facility including a incinerator for the waste which cannot be recovered |
MRFLandfill | A materials recovery facility including a landfill for the waste which cannot be recovered |
MRFUnknown | A materials recovery facility with an unknown destination for the waste which cannot be recovered |
Recycled | Directly recycled waste |
Compost | Directly composted waste for later reuse |
Reuse | Directly reusable waste |
Waste Stream
[ GeneralWaste, MixedRecyclables, Plastics, PaperandCardboard, Glass, MixedMetals, Food, WEEE, FluorescentTubes, InterceptorWaste, PrinterToners ]
The waste stream of a waste destination is a categorisation of the waste being disposed of
Enumeration | Description |
---|---|
MixedRecyclables | Mixed recyclables disposed of together such as plastic and paper waste |
Plastics | Any plastic waste |
PaperandCardboard | Any paper or carboard waste |
Glass | Glass waste |
MixedMetals | Metal waste of any kind disposed of alone or aggregated |
Food | Food waste or any other byproduct |
WEEE | Waste electrical and electronic equipment |
FluorescentTubes | Flourescent lighting tubes |
InterceptorWaste | Materials used as a waste interceptor |
PrinterToners | Printer toners |
GeneralWaste | Waste that does not fit into any other stream type |
API Version History
All updates to our API will be documented in this section. If a backwards-incompatible update is released, all API users will be notified in advance and be given ample time to upgrade.
- Version 1.02 – Apr 27, 2023
-
- Added the expected date format (dd/mm/yy) for date values.
- Version 1.02 – Sep 29, 2022
-
- AreaCovered enum 'all' value description added.
- Added note for consumption records.
- Fixed full stop inconsistencies within changelog.
- Version 1.01 – Aug 31, 2022
-
- Corrected the use of the enum Country in Asset endpoint examples from 'United Kingdom' to the correct 'UnitedKingdom'.
- Version 1 – Aug 23, 2022
-
- Validation rules added to all endpoints.
- PropertyId renamed to AssetId on all endpoints.
- Additional properties added to EPC endpoints.
- Additional properties added to Assets endpoints.
- Assets.ControlledBy changed to AssetControl enumeration.
- POST and PUT endpoints have been adjusted to follow a consistent Rest API URL pattern.
- All POST endpoints now return the ID of the newly created entity.
- Waste Destinations endpoints renamed from /wastedestination to /wastedestinations.
- Waste Records endpoints renamed from /wasterecord to /wasterecords.
- Individual GET endpoints added to all endpoints using all-entity retrieval.
- All asset level entity GET endpoints moved to the Asset endpoints.
- CarbonFactor.TariffType renamed to FactorType.
- ConsumptionUseOfArea and ConsumptionSustainableProcurement added to Consumption endpoints.
- Some unselectable enum values which are used to accomodate missing data have been marked in the Enumerations section.
- Version 0.1 – Dec 22, 2021
-
- Initial upload of draft content.
- Warning added relating to draft nature and forthcoming authentication changes.