Reposit Power Market API API Reference
Documentation for the Reposit Power Market API. Used by fleet.repositpower.com and related services. Please review our versioning and support policy before using the API.
API Endpoint
https://marketapi.repositpower.com/ Contact: api@repositpower.com
Schemes: https
Version: 1.0.0
Authentication
AccessToken
To authenticate you need to generate and API Key using Reposit Fleet. API Keys can be limited to whitelisted origin IP addresses for secruity and do not expire making them more suitable to server-to-server comms. API keys may also be revoked via Reposit Fleet.
Creating an API Key
API keys for the Reposit Market API can be generated by first logging in to Reposit Fleet. Once you have logged in click your username at the top right and then select " User Settings"
Within the section labelled "API Keys" click the "Add API Key" button.
Within the dialog that appears you will be able to name the key you are generating and specify a whitelist of IP addresses that this token is valid for. You will also need to confirm your password. When you have configured your keys settings click "Add" and your newly created key will be displayed - the key itself is not stored by Reposit and therefore this is your only opportunity to save the key securely.
Note: The generated key authenticates as the account that you are currently logged in to R eposit Fleet for and as such will carry the same permissions. If you require a locked down account it is recommend that you create a new account for Reposit Fleet and generate the API Key for this account.
Using an API Key
Simply add Bearer followed by the API key in the Authorization header of any request to Market API.
e.g.:
Authorization: Bearer A2YWQiLCJpc3...
Revoking an API Key
If an API Key becomes lost or is no longer required then the API Key can be revoked.
Login to Reposit Fleet as the user for which you wish to revoke the API Key and proceed to User Settings.
From within the "API Keys" you will be able to see a table of all issued API Keys, find the API Key you wish to revoke and select the "Remove" link in the table.
Once an API Key is removed it will cease to work immedately and can not be recovered or reinstated.
Node
API end-points related to deployments.
All Nodes
Return basic information and URLs on how to obtain more information about nodes. Each URL can also be expanded in place using the expand URL parameter
Any property that contains a URL path rather than data can be expanded in place using the expand query string parameter. This is a CSV list of each property name which should be expanded. e.g. ?expand=network,address
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
Default response
{
"data": [
{
"address": "/api/nodes/bdeea25eb01b460da11e9208007ec2e5/address",
"id": "bdeea25eb01b460da11e9208007ec2e5",
"network": "/api/nodes/bdeea25eb01b460da11e9208007ec2e5/network",
"status": "/api/nodes/bdeea25eb01b460da11e9208007ec2e5/status",
"namePlate": "/api/nodes/bdeea25eb01b460da11e9208007ec2e5/namePlate"
},
{
"address\"": "/api/nodes/521444180bee43bda8e51ffe8a64c9bc/address",
"id": "521444180bee43bda8e51ffe8a64c9bc",
"network": "/api/nodes/521444180bee43bda8e51ffe8a64c9bc/network",
"status": "/api/nodes/521444180bee43bda8e51ffe8a64c9bc/status",
"namePlate": "/api/nodes/521444180bee43bda8e51ffe8a64c9bc/namePlate"
}
],
"status": "OK"
}
Fully Expanded Response (?expand=address,network,status,system)
{
"data": [
{
"address": {
"city": "Canberra",
"country": "Australia",
"lat": -35.333502,
"lng": 149.170508,
"postcode": "2609",
"state": "ACT",
"street": "Yallourn Street",
"street_number": "17/2"
},
"id": "bdeea25eb01b460da11e9208007ec2e5",
"network": {
"nmi": "10000200030"
},
"status": {
"operationalStatus": {
"lastTimestamp": 1505695466,
"lastValue": 0
},
"ping": {
"lastTimestamp": 1505695468
}
},
"namePlate": {
"batteryCapacity": 6.4,
"inverterPower": 3,
"batteryPower": 2
}
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Address/Location Info
Return full address and lat/long information of a node.
The ID of the node.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"city": "Turner",
"country": "Australia",
"lat": -35.26671,
"lng": 149.12879,
"postcode": "2612",
"state": "ACT",
"street": "Macleay St",
"street_number": "52"
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Network Info
Returns the NMI for this node.
The ID of the node.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"nmi": 4102000000
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Operational Status
Returns the latest operational status information for this node.
The ID of the node.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"operationalStatus": {
"lastTimestamp": 1505189841,
"lastValue": 0
},
"ping": {
"lastTimestamp": 1505189845
}
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Name Plate
Returns information about the energy system attached to this node.
The ID of the node.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"batteryCapacity": 6.4,
"inverterPower": 3,
"batteryPower": 2
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Name Plate
Returns events and changes in state to this node sorted by time descending. This will only return the first 100 results by default, as the number of results can be quite large. Therefore you must use the limit and offset parameters as specified below to retrieve either all results, or a page at a time. This endpoint only returns basic information; more details can be retrieved from the endpoint specific to that event type, e.g. from /api/dispatches
The ID of the node.
An integer to offset the results by - to use for paging through the total results. If limit is specified, this is set to 0 by default.
An integer to limit the results by - to use for paging through the total results. By default this is 100, or the maximum number of results (whichever is lower).
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"description": "Network Support",
"duration": 3600,
"eventType": "DISPATCH",
"id": "b02067ae-d274-4d75-a00b-81a78184e987",
"ts": 1523430000
},
{
"description": "Network Support",
"duration": 3600,
"eventType": "DISPATCH",
"id": "64948b88-7af5-49a7-9b04-e0055419eaf8",
"ts": 1517547600
},
{
"description": "The Reposit System was commissioned.",
"eventType": "COMMISSIONED",
"ts": 1511204358
}
],
"meta": {
"count": 6,
"next": null,
"previous": "https://marketapi.repositpower.com/api/nodes/5b0a63855f2f4f819ccda226ca9d14e8/events?limit=3&offset=0"
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Power Station
API end-points related to powerstations.
All Power Stations
Returns a list of power stations associated with the currently authenticated user's organisation.
Optional. Set to true to include powerstation predictions in the response.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"description": null,
"id": "e7430ccb21644d7b9e0a443933f25c7f",
"name": "New Powerstation on dmarket",
"namePlate": {
"capacity": 17.1,
"power": 13
},
"nodes": [
"d4c58e243e694bba9e57cbdf42970faf",
"5320123eac5e4fd5baaea0bf442659bb"
]
},
{
"description": "A sample powerstation for dispatches",
"id": "3561817084be49c0b77d7d65903792ff",
"name": "Sample One",
"namePlate": {
"batteryCapacity": 29,
"batteryPower": 16.3,
"inverterPower": 18.5
},
"nodes": [
"5320123eac5e4fd5baaea0bf442659bb",
"e720e221204149ec9fa172583bcf4258",
"d4c58e243e694bba9e57cbdf42970faf"
]
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Create Power Station
Creates a new powerstation and returns its details.
The powerstation to create.
- name: string
-
A recognisable name to give this powerstation.
- description: string
-
An option description of this powerstation
- type: string , x ∈ { STATIC (default) , DYNAMIC }
-
The type of powerstation, either STATIC for a specified list of node IDs or DYNAMIC to suply a filter. When using DYNAMIC ans supplying a filter the powerstation will automatically add any nodes that match the filter criteria.
- nodes: string[]
-
An array of node IDs that belong to this powerstation if the powerstation type is STATIC. Otherwise this must be null
- filters: object
-
When specifying a DYNAMIC powerstation type you must also supply the filters that this powerstation is built from.
- postcodes: string[]
-
An array of postcodes that a node can be in for it to be included in this powerstation.
- state: string , x ∈ { ACT , NSW , NT , QLD , SA , TAS , VIC , WA }
-
The state or territory that a node must be in for it to be included in this powerstation.
Request Example
{
"name": "My First Powerstation",
"nodes": [
"f7b05c5632334403ac0895959f8d00e7",
"4f0cf230c728478da0822aa7f2d1f9ef",
"56af6a12ae9049298aaa38cde5781145"
]
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"description": null,
"id": "e7430ccb21644d7b9e0a443933f25c7f",
"name": "My First Powerstation",
"namePlate": {
"batteryCapacity": 17.1,
"batteryPower": 11,
"inverterPower": 13
},
"nodes": [
"f7b05c5632334403ac0895959f8d00e7",
"4f0cf230c728478da0822aa7f2d1f9ef",
"56af6a12ae9049298aaa38cde5781145"
]
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Get Single Power Station
Returns the details of the power station with the supplied UID.
The ID of the power station.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Invalid powerstation UID specified.
Response Example (200 OK)
{
"data": {
"description": null,
"id": "e7430ccb21644d7b9e0a443933f25c7f",
"name": "New Powerstation on dmarket",
"namePlate": {
"capacity": 17.1,
"power": 13
},
"nodes": [
"d4c58e243e694bba9e57cbdf42970faf",
"5320123eac5e4fd5baaea0bf442659bb"
]
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Response Example (404 Not Found)
{
"error": "Powerstation e7430ccb21644d7b9e0a443933f25c7f not found",
"status": "ERROR"
}
Update Power Station
Updates an existing powerstation specified by its id and returns its details.
The powerstation to update.
- name: string
- description: string
-
An option description of this powerstation
- nodes: string[]
-
A list of nodes IDs that make up this powerstation.
The ID of the power station.
Request Example
{
"name": "My First Powerstation",
"nodes": [
"f7b05c5632334403ac0895959f8d00e7",
"4f0cf230c728478da0822aa7f2d1f9ef",
"56af6a12ae9049298aaa38cde5781145"
]
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Invalid powerstation ID specified.
Response Example (200 OK)
{
"data": {
"description": null,
"id": "e7430ccb21644d7b9e0a443933f25c7f",
"name": "My First Powerstation",
"namePlate": {
"capacity": 17.1,
"power": 13
},
"nodes": [
"f7b05c5632334403ac0895959f8d00e7",
"4f0cf230c728478da0822aa7f2d1f9ef",
"56af6a12ae9049298aaa38cde5781145"
]
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Response Example (404 Not Found)
{
"error": "Powerstation e7430ccb21644d7b9e0a443933f25c7f not found",
"status": "ERROR"
}
Delete Power Station
Deletes a powerstation with with the supplied ID.
The ID of the power station.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Invalid powerstation ID specified.
Response Example (200 OK)
{
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Response Example (404 Not Found)
{
"error": "Powerstation e7430ccb21644d7b9e0a443933f25c7f not found",
"status": "ERROR"
}
Data - Downsampled
Return stored metrics for this powerstation or its nodes by downsampling.
The ID of the power station.
This returns downsampled data of metrics for this powerstation.
Timestamps in the response refer to the start of the period.
The metrics to retreive as a comma separated list of any combination of the following:
- meterVoltage - The average voltage (V) across all phases as measured at the meter/grid
- meterFrequence - The average frequency (Hz) across all phases as measured at the meter/grid
- meterPower - The total (sum) real power (kW) across all phases as measured at the meter/grid
- meterReactivePower - The total (sum) reactive power (var) across all phases as measure at the meter/grid
- solarPower - The total (sum) real power (kW) across all solar phases being generated by the PV array
- solarReactivePower - The total (sum) reactive power (var) across all solar phases being generated by the PV array
- remainingCharge - The total (sum) remaining charge (W) of the all batteries attached to this system
- batteryPower - The total (sum) real power (kW) measured at the battery of all batteries attached to this system
- inverterReactivePower - The total (sum) reactive power (var) measured at the inverter
- inverterApparentPower - The total (sum) apparent power (kW) measured at the inverter
- meterCurrent - The total (sum) current (Amp) measured at the meter/grid
All real power measurements follow a sink convention, while all reactive power measurements follow a source convention. Apparent power is always positive.
If ?format=nodes is specified then you may also request the data to be split by phases by adding a phase letter after the metric name, for example meterVoltage{a}. These can be combined to request multiple phases, for example meterVoltage{a|b}. Or you can request all phases with an asterix, for example meterVoltage{*}. Note that meterVoltage{*} is equivalent to meterVoltage{a|b|c}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
Phase suffixes may be used on the following metrics: meterVoltage, meterFrequency, meterPower, meterReactivePower, solarPower, solarReactivePower.
Please note that phases are currently arbitrary - we cannot determine which phase is red/white/blue. For all single phase installations the data will be available on phase a.
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
The downsampling interval in seconds
The format you which to retreive the results, either powerstation or nodes
The fill policy to use for empty values. By default any empty values for a deployment (i.e. a missing chuck of data) are ommitted. Specify fill=null to return all times with null values if the data is missing. Only null is supported.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
By powerstation
{
"data": [
{
"meterPower{a}": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
}
},
{
"meterPower{b}": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3857383972607584
}
},
{
"meterVoltage": {
"1505109600": 244.3849693243306,
"1505111400": 245.38573839726075
}
}
],
"status": "OK"
}
By nodes
{
"data": [
{
"meterPower{a}": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3580208346247673
}
}
},
{
"meterPower{b}": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3580208346247673
}
}
},
{
"meterVoltage": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 244.38573839726075,
"1505111400": 244.38062500105136
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 245.3849693243306,
"1505111400": 245.35802083462477
}
}
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Raw
Return stored metrics for this powerstation or its nodes without applying any downsampling.
The ID of the power station.
This returns raw data of metrics for this powerstation as collected by each device.
Timestamps in the response refer to the time at which the data was sampled.
No guarantees can be made about aligned data. e.g. meterPower may be collected at slightly different times per phases, and meterPower might be collected at a different time than meterVoltage.
The metrics to retreive as a comma separated list of any combination of the following:
- meterVoltage - The average voltage (V) across all phases as measured at the meter/grid
- meterFrequence - The average frequency (Hz) across all phases as measured at the meter/grid
- meterPower - The total (sum) real power (kW) across all phases as measured at the meter/grid
- meterReactivePower - The total (sum) reactive power (var) across all phases as measure at the meter/grid
- solarPower - The total (sum) real power (kW) across all solar phases being generated by the PV array
- solarReactivePower - The total (sum) reactive power (var) across all solar phases being generated by the PV array
- remainingCharge - The total (sum) remaining charge (W) of the all batteries attached to this system
- batteryPower - The total (sum) real power (kW) measured at the battery of all batteries attached to this system
- inverterReactivePower - The total (sum) reactive power (var) measured at the inverter
- inverterApparentPower - The total (sum) apparent power (kW) measured at the inverter
- meterCurrent - The total (sum) current (Amp) measured at the meter/grid
All real power measurements follow a sink convention, while all reactive power measurements follow a source convention. Apparent power is always positive.
If ?format=nodes is specified then you may also request the data to be split by phases by adding a phase letter after the metric name, for example meterVoltage{a}. These can be combined to request multiple phases, for example meterVoltage{a|b}. Or you can request all phases with an asterix, for example meterVoltage{*}. Note that meterVoltage{*} is equivalent to meterVoltage{a|b|c}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
Phase suffixes may be used on the following metrics: meterVoltage, meterFrequency, meterPower, meterReactivePower, solarPower, solarReactivePower.
Please note that phases are currently arbitrary - we cannot determine which phase is red/white/blue. For all single phase installations the data will be available on phase a.
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
The format you which to retreive the results, either powerstation or nodes
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
By powerstation
{
"data": [
{
"meterPower{a}": {
"1505108933": 0.3857383972607584,
"1505108937": 0.3806250010513597
}
},
{
"meterPower{b}": {
"1505108944": 0.3849693243306107
}
},
{
"meterVoltage": {
"1505108933": 243.3849693243306,
"1505108937": 244.3849693243306,
"1505108941": 245.38573839726075
}
}
],
"status": "OK"
}
By nodes
{
"data": [
{
"meterPower{a}": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505108933": 0.3857383972607584,
"1505108937": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505108934": 0.3849693243306107,
"1505108938": 0.3580208346247673
}
}
},
{
"meterPower{b}": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505108933": 0.3857383972607584,
"1505108937": 0.3806250010513597,
"1505108941": 0.3806250010513597,
"1505108943": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505108934": 0.3849693243306107,
"1505108936": 0.3580208346247673,
"1505108939": 0.3580208346247673
}
}
},
{
"meterVoltage": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505108937": 244.38573839726075,
"1505108940": 244.38062500105136
},
"e720e221204149ec9fa172583bcf4258": {
"1505108937": 245.3849693243306
}
}
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Latest
Returns the latest value of the metrics for the powerstation or nodes up to a maximum age of data.
The ID of the power station.
This returns the single, most recent (up to a given max age) data point we have for each metric.
No timestamps are given for this data but you can be sure that no data point will be older than the maxAge query parameter. If you require specific timestamps please consider using the /data or /data/raw end points.
The metrics to retreive as a comma separated list of any combination of the following:
- meterVoltage - The average voltage (V) across all phases as measured at the meter/grid
- meterFrequence - The average frequency (Hz) across all phases as measured at the meter/grid
- meterPower - The total (sum) real power (kW) across all phases as measured at the meter/grid
- meterReactivePower - The total (sum) reactive power (var) across all phases as measure at the meter/grid
- solarPower - The total (sum) real power (kW) across all solar phases being generated by the PV array
- solarReactivePower - The total (sum) reactive power (var) across all solar phases being generated by the PV array
- remainingCharge - The total (sum) remaining charge (W) of the all batteries attached to this system
- batteryPower - The total (sum) real power (kW) measured at the battery of all batteries attached to this system
- inverterReactivePower - The total (sum) reactive power (var) measured at the inverter
- inverterApparentPower - The total (sum) apparent power (kW) measured at the inverter
- meterCurrent - The total (sum) current (Amp) measured at the meter/grid
All real power measurements follow a sink convention, while all reactive power measurements follow a source convention. Apparent power is always positive.
If ?format=nodes is specified then you may also request the data to be split by phases by adding a phase letter after the metric name, for example meterVoltage{a}. These can be combined to request multiple phases, for example meterVoltage{a|b}. Or you can request all phases with an asterix, for example meterVoltage{*}. Note that meterVoltage{*} is equivalent to meterVoltage{a|b|c}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
Phase suffixes may be used on the following metrics: meterVoltage, meterFrequency, meterPower, meterReactivePower, solarPower, solarReactivePower.
Please note that phases are currently arbitrary - we cannot determine which phase is red/white/blue. For all single phase installations the data will be available on phase a.
The maximum age of the data that should be considered "latest" in seconds
The format you which to retreive the results, either powerstation or nodes
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
By powerstation
{
"data": [
{
"meterPower{a}": 0.3806250010513597
},
{
"meterPower{b}": 0.3849693243306107
},
{
"meterVoltage": 245.38573839726075
}
],
"status": "OK"
}
By nodes
{
"data": [
{
"meterPower{a}": {
"d4c58e243e694bba9e57cbdf42970faf": 0.3857383972607584,
"e720e221204149ec9fa172583bcf4258": 0.3580208346247673
}
},
{
"meterPower{b}": {
"d4c58e243e694bba9e57cbdf42970faf": 0.3806250010513597,
"e720e221204149ec9fa172583bcf4258": 0.3580208346247673
}
},
{
"meterVoltage": {
"d4c58e243e694bba9e57cbdf42970faf": 244.38062500105136,
"e720e221204149ec9fa172583bcf4258": 245.3849693243306
}
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Installer
All Nodes
Return basic information and URLs on how to obtain more information about nodes. Each URL can also be expanded in place using the expand URL parameter
Any property that contains a URL path rather than data can be expanded in place using the expand query string parameter. This is a CSV list of each property name which should be expanded. e.g. ?expand=network,address
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
Default response
{
"data": [
{
"address": "/api/nodes/bdeea25eb01b460da11e9208007ec2e5/address",
"id": "bdeea25eb01b460da11e9208007ec2e5",
"network": "/api/nodes/bdeea25eb01b460da11e9208007ec2e5/network",
"status": "/api/nodes/bdeea25eb01b460da11e9208007ec2e5/status",
"namePlate": "/api/nodes/bdeea25eb01b460da11e9208007ec2e5/namePlate"
},
{
"address\"": "/api/nodes/521444180bee43bda8e51ffe8a64c9bc/address",
"id": "521444180bee43bda8e51ffe8a64c9bc",
"network": "/api/nodes/521444180bee43bda8e51ffe8a64c9bc/network",
"status": "/api/nodes/521444180bee43bda8e51ffe8a64c9bc/status",
"namePlate": "/api/nodes/521444180bee43bda8e51ffe8a64c9bc/namePlate"
}
],
"status": "OK"
}
Fully Expanded Response (?expand=address,network,status,system)
{
"data": [
{
"address": {
"city": "Canberra",
"country": "Australia",
"lat": -35.333502,
"lng": 149.170508,
"postcode": "2609",
"state": "ACT",
"street": "Yallourn Street",
"street_number": "17/2"
},
"id": "bdeea25eb01b460da11e9208007ec2e5",
"network": {
"nmi": "10000200030"
},
"status": {
"operationalStatus": {
"lastTimestamp": 1505695466,
"lastValue": 0
},
"ping": {
"lastTimestamp": 1505695468
}
},
"namePlate": {
"batteryCapacity": 6.4,
"inverterPower": 3,
"batteryPower": 2
}
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Address/Location Info
Return full address and lat/long information of a node.
The ID of the node.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"city": "Turner",
"country": "Australia",
"lat": -35.26671,
"lng": 149.12879,
"postcode": "2612",
"state": "ACT",
"street": "Macleay St",
"street_number": "52"
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Network Info
Returns the NMI for this node.
The ID of the node.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"nmi": 4102000000
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Operational Status
Returns the latest operational status information for this node.
The ID of the node.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"operationalStatus": {
"lastTimestamp": 1505189841,
"lastValue": 0
},
"ping": {
"lastTimestamp": 1505189845
}
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Name Plate
Returns information about the energy system attached to this node.
The ID of the node.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"batteryCapacity": 6.4,
"inverterPower": 3,
"batteryPower": 2
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Name Plate
Returns events and changes in state to this node sorted by time descending. This will only return the first 100 results by default, as the number of results can be quite large. Therefore you must use the limit and offset parameters as specified below to retrieve either all results, or a page at a time. This endpoint only returns basic information; more details can be retrieved from the endpoint specific to that event type, e.g. from /api/dispatches
The ID of the node.
An integer to offset the results by - to use for paging through the total results. If limit is specified, this is set to 0 by default.
An integer to limit the results by - to use for paging through the total results. By default this is 100, or the maximum number of results (whichever is lower).
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"description": "Network Support",
"duration": 3600,
"eventType": "DISPATCH",
"id": "b02067ae-d274-4d75-a00b-81a78184e987",
"ts": 1523430000
},
{
"description": "Network Support",
"duration": 3600,
"eventType": "DISPATCH",
"id": "64948b88-7af5-49a7-9b04-e0055419eaf8",
"ts": 1517547600
},
{
"description": "The Reposit System was commissioned.",
"eventType": "COMMISSIONED",
"ts": 1511204358
}
],
"meta": {
"count": 6,
"next": null,
"previous": "https://marketapi.repositpower.com/api/nodes/5b0a63855f2f4f819ccda226ca9d14e8/events?limit=3&offset=0"
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Fleet Data - Downsampled
Return stored metrics for the entire fleet by downsampling.
This returns downsampled data of metrics for this powerstation.
Timestamps in the response refer to the start of the period.
The metrics to retreive as a comma separated list of any combination of the following:
- meterVoltage - The average voltage (V) across all phases as measured at the meter/grid
- meterFrequence - The average frequency (Hz) across all phases as measured at the meter/grid
- meterPower - The total (sum) real power (kW) across all phases as measured at the meter/grid
- meterReactivePower - The total (sum) reactive power (var) across all phases as measure at the meter/grid
- solarPower - The total (sum) real power (kW) across all solar phases being generated by the PV array
- solarReactivePower - The total (sum) reactive power (var) across all solar phases being generated by the PV array
- remainingCharge - The total (sum) remaining charge (W) of the all batteries attached to this system
- batteryPower - The total (sum) real power (kW) measured at the battery of all batteries attached to this system
- inverterReactivePower - The total (sum) reactive power (var) measured at the inverter
- inverterApparentPower - The total (sum) apparent power (kW) measured at the inverter
- meterCurrent - The total (sum) current (Amp) measured at the meter/grid
All real power measurements follow a sink convention, while all reactive power measurements follow a source convention. Apparent power is always positive.
Phase suffixes may be used on the following metrics: meterVoltage, meterFrequency, meterPower, meterReactivePower, solarPower, solarReactivePower.
Please note that phases are currently arbitrary - we cannot determine which phase is red/white/blue. For all single phase installations the data will be available on phase a.
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
The downsampling interval in seconds
The fill policy to use for empty values. By default any empty values for a deployment (i.e. a missing chuck of data) are ommitted. Specify fill=null to return all times with null values if the data is missing. Only null is supported.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
data
[
{
"meterPower": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3580208346247673
}
}
},
{
"meterVoltage": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 244.38573839726075,
"1505111400": 244.38062500105136
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 245.3849693243306,
"1505111400": 245.35802083462477
}
}
}
]
status
"OK"
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Customer
Assign customers to a capability
Takes a list of customers and assigns them to a capability. Returns a list of changes that have been applied and/or a list or errors.
Request Example
[
{
"customers": [
{
"nmi": "11000000001",
"capabilities": [
{
"name": "Hoodwink Network Support",
"startDate": "2018-01-01"
}
],
"tariff": [
{
"code": "HOODWINK_PLAN",
"startDate": "2018-01-01",
"discount": 0
}
]
},
{
"nmi": "10000000001",
"capabilities": [
{
"name": "Jensen Network Support",
"startDate": "2017-01-01"
}
]
}
]
}
]
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"errors": [
{
"message": "Effective start date must be on or after the starting date of the capability - 2018-01-01",
"errorCode": "invalid_capability",
"customers": [
"12345123451",
"110000012",
"1000000001"
]
},
{
"message": "Customer already assigned to another retailer",
"customers": [
"12345123451"
]
},
{
"message": "Must have a capability code",
"customers": [
"12345123451"
]
}
]
},
{
"warnings": [
{
"message": "Customer is not yet commissioned",
"errorCode": "not_commissioned_customer",
"customers": [
"1100000006"
]
}
],
"success": [
"1100000001",
"1100000002",
"1100000003",
"1100000004",
"1100000005",
"1100000006"
]
}
]
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Register a new customer with Reposit prior to installation of the Reposit Controller
Registers a new customer with Reposit so that the on-boarding process can be initiated. This helps streamline the installation process.
The powerstation to create.
- nmi: string
-
The NMI of the customer if known. Please include the checksum where possible.
- name: string
-
The full name of the customer - please include both first and last names.
- phone: string
-
Customers best contact number
- addressLine1: string
-
The first line of the customers address
- city: string
-
The suburb of the customer
- state: string , x ∈ { ACT , NSW , NT , QLD , SA , TAS , VIC , WA }
-
The state of the customer
- country: string
-
The country of the customer. e.g. Australia.
- postcode: string
-
The postcode of the customer.
Request Example
{
"nmi": "11004628573",
"name": "Joe Bloggs",
"phone": "0402 123 456",
"addressLine1": "17/2 Yallourn St",
"city": "Fyshwick",
"state": "ACT",
"country": "Australia",
"postcode": "2609"
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"nmi": "11004628573",
"name": "Joe Bloggs",
"phone": "0402 123 456",
"addressLine1": "17/2 Yallourn St",
"city": "Fyshwick",
"state": "ACT",
"country": "Australia",
"postcode": "2609"
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data
API end-points related to obtaining metric data.
Data - Downsampled
Return stored metrics for this powerstation or its nodes by downsampling.
The ID of the power station.
This returns downsampled data of metrics for this powerstation.
Timestamps in the response refer to the start of the period.
The metrics to retreive as a comma separated list of any combination of the following:
- meterVoltage - The average voltage (V) across all phases as measured at the meter/grid
- meterFrequence - The average frequency (Hz) across all phases as measured at the meter/grid
- meterPower - The total (sum) real power (kW) across all phases as measured at the meter/grid
- meterReactivePower - The total (sum) reactive power (var) across all phases as measure at the meter/grid
- solarPower - The total (sum) real power (kW) across all solar phases being generated by the PV array
- solarReactivePower - The total (sum) reactive power (var) across all solar phases being generated by the PV array
- remainingCharge - The total (sum) remaining charge (W) of the all batteries attached to this system
- batteryPower - The total (sum) real power (kW) measured at the battery of all batteries attached to this system
- inverterReactivePower - The total (sum) reactive power (var) measured at the inverter
- inverterApparentPower - The total (sum) apparent power (kW) measured at the inverter
- meterCurrent - The total (sum) current (Amp) measured at the meter/grid
All real power measurements follow a sink convention, while all reactive power measurements follow a source convention. Apparent power is always positive.
If ?format=nodes is specified then you may also request the data to be split by phases by adding a phase letter after the metric name, for example meterVoltage{a}. These can be combined to request multiple phases, for example meterVoltage{a|b}. Or you can request all phases with an asterix, for example meterVoltage{*}. Note that meterVoltage{*} is equivalent to meterVoltage{a|b|c}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
Phase suffixes may be used on the following metrics: meterVoltage, meterFrequency, meterPower, meterReactivePower, solarPower, solarReactivePower.
Please note that phases are currently arbitrary - we cannot determine which phase is red/white/blue. For all single phase installations the data will be available on phase a.
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
The downsampling interval in seconds
The format you which to retreive the results, either powerstation or nodes
The fill policy to use for empty values. By default any empty values for a deployment (i.e. a missing chuck of data) are ommitted. Specify fill=null to return all times with null values if the data is missing. Only null is supported.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
By powerstation
{
"data": [
{
"meterPower{a}": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
}
},
{
"meterPower{b}": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3857383972607584
}
},
{
"meterVoltage": {
"1505109600": 244.3849693243306,
"1505111400": 245.38573839726075
}
}
],
"status": "OK"
}
By nodes
{
"data": [
{
"meterPower{a}": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3580208346247673
}
}
},
{
"meterPower{b}": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3580208346247673
}
}
},
{
"meterVoltage": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 244.38573839726075,
"1505111400": 244.38062500105136
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 245.3849693243306,
"1505111400": 245.35802083462477
}
}
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Raw
Return stored metrics for this powerstation or its nodes without applying any downsampling.
The ID of the power station.
This returns raw data of metrics for this powerstation as collected by each device.
Timestamps in the response refer to the time at which the data was sampled.
No guarantees can be made about aligned data. e.g. meterPower may be collected at slightly different times per phases, and meterPower might be collected at a different time than meterVoltage.
The metrics to retreive as a comma separated list of any combination of the following:
- meterVoltage - The average voltage (V) across all phases as measured at the meter/grid
- meterFrequence - The average frequency (Hz) across all phases as measured at the meter/grid
- meterPower - The total (sum) real power (kW) across all phases as measured at the meter/grid
- meterReactivePower - The total (sum) reactive power (var) across all phases as measure at the meter/grid
- solarPower - The total (sum) real power (kW) across all solar phases being generated by the PV array
- solarReactivePower - The total (sum) reactive power (var) across all solar phases being generated by the PV array
- remainingCharge - The total (sum) remaining charge (W) of the all batteries attached to this system
- batteryPower - The total (sum) real power (kW) measured at the battery of all batteries attached to this system
- inverterReactivePower - The total (sum) reactive power (var) measured at the inverter
- inverterApparentPower - The total (sum) apparent power (kW) measured at the inverter
- meterCurrent - The total (sum) current (Amp) measured at the meter/grid
All real power measurements follow a sink convention, while all reactive power measurements follow a source convention. Apparent power is always positive.
If ?format=nodes is specified then you may also request the data to be split by phases by adding a phase letter after the metric name, for example meterVoltage{a}. These can be combined to request multiple phases, for example meterVoltage{a|b}. Or you can request all phases with an asterix, for example meterVoltage{*}. Note that meterVoltage{*} is equivalent to meterVoltage{a|b|c}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
Phase suffixes may be used on the following metrics: meterVoltage, meterFrequency, meterPower, meterReactivePower, solarPower, solarReactivePower.
Please note that phases are currently arbitrary - we cannot determine which phase is red/white/blue. For all single phase installations the data will be available on phase a.
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
The format you which to retreive the results, either powerstation or nodes
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
By powerstation
{
"data": [
{
"meterPower{a}": {
"1505108933": 0.3857383972607584,
"1505108937": 0.3806250010513597
}
},
{
"meterPower{b}": {
"1505108944": 0.3849693243306107
}
},
{
"meterVoltage": {
"1505108933": 243.3849693243306,
"1505108937": 244.3849693243306,
"1505108941": 245.38573839726075
}
}
],
"status": "OK"
}
By nodes
{
"data": [
{
"meterPower{a}": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505108933": 0.3857383972607584,
"1505108937": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505108934": 0.3849693243306107,
"1505108938": 0.3580208346247673
}
}
},
{
"meterPower{b}": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505108933": 0.3857383972607584,
"1505108937": 0.3806250010513597,
"1505108941": 0.3806250010513597,
"1505108943": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505108934": 0.3849693243306107,
"1505108936": 0.3580208346247673,
"1505108939": 0.3580208346247673
}
}
},
{
"meterVoltage": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505108937": 244.38573839726075,
"1505108940": 244.38062500105136
},
"e720e221204149ec9fa172583bcf4258": {
"1505108937": 245.3849693243306
}
}
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Latest
Returns the latest value of the metrics for the powerstation or nodes up to a maximum age of data.
The ID of the power station.
This returns the single, most recent (up to a given max age) data point we have for each metric.
No timestamps are given for this data but you can be sure that no data point will be older than the maxAge query parameter. If you require specific timestamps please consider using the /data or /data/raw end points.
The metrics to retreive as a comma separated list of any combination of the following:
- meterVoltage - The average voltage (V) across all phases as measured at the meter/grid
- meterFrequence - The average frequency (Hz) across all phases as measured at the meter/grid
- meterPower - The total (sum) real power (kW) across all phases as measured at the meter/grid
- meterReactivePower - The total (sum) reactive power (var) across all phases as measure at the meter/grid
- solarPower - The total (sum) real power (kW) across all solar phases being generated by the PV array
- solarReactivePower - The total (sum) reactive power (var) across all solar phases being generated by the PV array
- remainingCharge - The total (sum) remaining charge (W) of the all batteries attached to this system
- batteryPower - The total (sum) real power (kW) measured at the battery of all batteries attached to this system
- inverterReactivePower - The total (sum) reactive power (var) measured at the inverter
- inverterApparentPower - The total (sum) apparent power (kW) measured at the inverter
- meterCurrent - The total (sum) current (Amp) measured at the meter/grid
All real power measurements follow a sink convention, while all reactive power measurements follow a source convention. Apparent power is always positive.
If ?format=nodes is specified then you may also request the data to be split by phases by adding a phase letter after the metric name, for example meterVoltage{a}. These can be combined to request multiple phases, for example meterVoltage{a|b}. Or you can request all phases with an asterix, for example meterVoltage{*}. Note that meterVoltage{*} is equivalent to meterVoltage{a|b|c}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
Phase suffixes may be used on the following metrics: meterVoltage, meterFrequency, meterPower, meterReactivePower, solarPower, solarReactivePower.
Please note that phases are currently arbitrary - we cannot determine which phase is red/white/blue. For all single phase installations the data will be available on phase a.
The maximum age of the data that should be considered "latest" in seconds
The format you which to retreive the results, either powerstation or nodes
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
By powerstation
{
"data": [
{
"meterPower{a}": 0.3806250010513597
},
{
"meterPower{b}": 0.3849693243306107
},
{
"meterVoltage": 245.38573839726075
}
],
"status": "OK"
}
By nodes
{
"data": [
{
"meterPower{a}": {
"d4c58e243e694bba9e57cbdf42970faf": 0.3857383972607584,
"e720e221204149ec9fa172583bcf4258": 0.3580208346247673
}
},
{
"meterPower{b}": {
"d4c58e243e694bba9e57cbdf42970faf": 0.3806250010513597,
"e720e221204149ec9fa172583bcf4258": 0.3580208346247673
}
},
{
"meterVoltage": {
"d4c58e243e694bba9e57cbdf42970faf": 244.38062500105136,
"e720e221204149ec9fa172583bcf4258": 245.3849693243306
}
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Fleet Data - Downsampled
Return stored metrics for the entire fleet by downsampling.
This returns downsampled data of metrics for this powerstation.
Timestamps in the response refer to the start of the period.
The metrics to retreive as a comma separated list of any combination of the following:
- meterVoltage - The average voltage (V) across all phases as measured at the meter/grid
- meterFrequence - The average frequency (Hz) across all phases as measured at the meter/grid
- meterPower - The total (sum) real power (kW) across all phases as measured at the meter/grid
- meterReactivePower - The total (sum) reactive power (var) across all phases as measure at the meter/grid
- solarPower - The total (sum) real power (kW) across all solar phases being generated by the PV array
- solarReactivePower - The total (sum) reactive power (var) across all solar phases being generated by the PV array
- remainingCharge - The total (sum) remaining charge (W) of the all batteries attached to this system
- batteryPower - The total (sum) real power (kW) measured at the battery of all batteries attached to this system
- inverterReactivePower - The total (sum) reactive power (var) measured at the inverter
- inverterApparentPower - The total (sum) apparent power (kW) measured at the inverter
- meterCurrent - The total (sum) current (Amp) measured at the meter/grid
All real power measurements follow a sink convention, while all reactive power measurements follow a source convention. Apparent power is always positive.
Phase suffixes may be used on the following metrics: meterVoltage, meterFrequency, meterPower, meterReactivePower, solarPower, solarReactivePower.
Please note that phases are currently arbitrary - we cannot determine which phase is red/white/blue. For all single phase installations the data will be available on phase a.
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
The downsampling interval in seconds
The fill policy to use for empty values. By default any empty values for a deployment (i.e. a missing chuck of data) are ommitted. Specify fill=null to return all times with null values if the data is missing. Only null is supported.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
data
[
{
"meterPower": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3580208346247673
}
}
},
{
"meterVoltage": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 244.38573839726075,
"1505111400": 244.38062500105136
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 245.3849693243306,
"1505111400": 245.35802083462477
}
}
}
]
status
"OK"
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Downsampled
Return stored metrics for this asset by downsampling.
The ID of the asset.
This returns downsampled data of metrics for this asset.
Timestamps in the response refer to the start of the period.
The metrics to retreive as a comma separated list of any combination of the following:
- current
- incomingVoltage
- upstreamVoltage
- downstreamVoltage
- tapPosition
- apparentPower
- activePower
- mainsVoltage
- counter
You may also request the data to be split by phases by adding the phase letter after the metric name, for example current{r} (for phase=red). These can be combined to request multiple phases, for example current{r|w} (both red and white). Phase pairs can also be specified, for example mainsVoltage{br} or mainsVoltage{br|wb}. Or you can request all phases with an asterix, for example current{*}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
The counter metric has two types - counter{increment} and counter{decrement}. These values represent the change increment or decrement respectively to the overall count, but when this type is omitted it will return the net change for the time period. For instance, if at timestamp 1512080248 the value was 4, and at 1512080276 the value was -2 then the data returned over this period will be the sum - in this case, 2.
Phase suffixes may be used on the following metrics: current, incomingVoltage, mainsVoltage
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
The downsampling interval in seconds
The fill policy to use for empty values. By default any empty values for an asset (i.e. a missing chuck of data) are ommitted. Specify fill=null to return all times with null values if the data is missing. Only null is supported.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
data
[
{
"current{r}": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
}
},
{
"current{w}": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3857383972607584
}
},
{
"current{b}": {
"1505109600": 244.3849693243306,
"1505111400": 245.38573839726075
}
},
{
"mainsVoltage{br|rw}": {
"1505109600": 244.3849693243306,
"1505111400": 245.38573839726075
}
}
]
status
"OK"
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Raw
Return stored metrics for this asset without applying any downsampling.
The ID of the asset.
This returns raw data of metrics for this asset as collected by each device.
Timestamps in the response refer to the time at which the data was sampled.
No guarantees can be made about aligned data. e.g. current may be collected at slightly different times per phases, and upstreamVoltage might be collected at a different time than downstreamVoltage.
The metrics to retreive as a comma separated list of any combination of the following:
- current
- incomingVoltage
- upstreamVoltage
- downstreamVoltage
- tapPosition
- apparentPower
- activePower
- mainsVoltage
- counter
You may also request the data to be split by phases by adding the phase letter after the metric name, for example current{r} (for phase=red). These can be combined to request multiple phases, for example current{r|w} (both red and white). Phase pairs can also be specified, for example mainsVoltage{br} or mainsVoltage{br|wb}. Or you can request all phases with an asterix, for example current{*}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
The counter metric has two types - counter{increment} and counter{decrement}. These values represent the change increment or decrement respectively to the overall count, but when this type is omitted it will return the net change for the time period. For instance, if at timestamp 1512080248 the value was 4, and at 1512080276 the value was -2 then the data returned over this period will be the sum - in this case, 2.
Phase suffixes may be used on the following metrics: current, incomingVoltage, mainsVoltage
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
data
[
{
"current{r}": {
"1505108933": 0.3857383972607584,
"1505108937": 0.3806250010513597
}
},
{
"current{b}": {
"1505108944": 0.3849693243306107
}
},
{
"apparentPower": {
"1505108933": 243.3849693243306,
"1505108937": 244.3849693243306,
"1505108941": 245.38573839726075
}
}
]
status
"OK"
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Create Asset Data
Provide data pertaining to a particular asset.
The data to provide. If existing timestamps are specified then the data will be
overwritten. if data is posted for the counter{decrement} metric then this value will be saved as a negative number, regardless of sign provided.
- data: object
-
The data to be provided for an asset, including metric name, timestamp and value.
The ID of the asset.
Request Example
{
"data": [
{
"current": {
"1511752328": 200,
"1511752335": 205,
"1511752360": 203
}
},
{
"mainsVoltage": {
"1511752328": 240,
"1511752330": 241
}
}
]
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
data
[
{
"current": {
"1511752328": 200,
"1511752335": 205,
"1511752360": 203
}
},
{
"mainsVoltage": {
"1511752328": 240,
"1511752330": 241
}
}
]
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Latest
Returns the latest value of the metrics for the asset up to a maximum age of data.
The ID of the asset.
This returns the single, most recent (up to a given max age) data point we have for each metric.
No timestamps are given for this data but you can be sure that no data point will be older than the maxAge query parameter. If you require specific timestamps please consider using the /data or /data/raw end points.
The metrics to retreive as a comma separated list of any combination of the following:
- current
- incomingVoltage
- upstreamVoltage
- downstreamVoltage
- tapPosition
- apparentPower
- activePower
- mainsVoltage
- counter
You may also request the data to be split by phases by adding the phase letter after the metric name, for example current{r} (for phase=red). These can be combined to request multiple phases, for example current{r|w} (both red and white). Phase pairs can also be specified, for example mainsVoltage{br} or mainsVoltage{br|wb}. Or you can request all phases with an asterix, for example current{*}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
Phase suffixes may be used on the following metrics: current, incomingVoltage, mainsVoltage
The maximum age of the data that should be considered "latest" in seconds
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
data
[
{
"current{r}": 0.3806250010513597
},
{
"current{b}": 0.3849693243306107
},
{
"upstreamVolts": 245.38573839726075
}
]
status
"OK"
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Asset
API end-points related to assets.
All Assets
Returns a list of assets associated with the currently authenticated user's organisation.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"id": "599ce96fceba40bba8afc36f177c1e98",
"name": "First Asset Example"
},
{
"id": "0796a71c54524c05b7af503196994c34",
"name": "Second Asset Example"
}
]
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Get Single Asset
Returns the details of the asset with the supplied UID.
The ID of the asset.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"id": "599ce96fceba40bba8afc36f177c1e98",
"name": "First Asset Example"
}
]
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Downsampled
Return stored metrics for this asset by downsampling.
The ID of the asset.
This returns downsampled data of metrics for this asset.
Timestamps in the response refer to the start of the period.
The metrics to retreive as a comma separated list of any combination of the following:
- current
- incomingVoltage
- upstreamVoltage
- downstreamVoltage
- tapPosition
- apparentPower
- activePower
- mainsVoltage
- counter
You may also request the data to be split by phases by adding the phase letter after the metric name, for example current{r} (for phase=red). These can be combined to request multiple phases, for example current{r|w} (both red and white). Phase pairs can also be specified, for example mainsVoltage{br} or mainsVoltage{br|wb}. Or you can request all phases with an asterix, for example current{*}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
The counter metric has two types - counter{increment} and counter{decrement}. These values represent the change increment or decrement respectively to the overall count, but when this type is omitted it will return the net change for the time period. For instance, if at timestamp 1512080248 the value was 4, and at 1512080276 the value was -2 then the data returned over this period will be the sum - in this case, 2.
Phase suffixes may be used on the following metrics: current, incomingVoltage, mainsVoltage
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
The downsampling interval in seconds
The fill policy to use for empty values. By default any empty values for an asset (i.e. a missing chuck of data) are ommitted. Specify fill=null to return all times with null values if the data is missing. Only null is supported.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
data
[
{
"current{r}": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
}
},
{
"current{w}": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3857383972607584
}
},
{
"current{b}": {
"1505109600": 244.3849693243306,
"1505111400": 245.38573839726075
}
},
{
"mainsVoltage{br|rw}": {
"1505109600": 244.3849693243306,
"1505111400": 245.38573839726075
}
}
]
status
"OK"
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Raw
Return stored metrics for this asset without applying any downsampling.
The ID of the asset.
This returns raw data of metrics for this asset as collected by each device.
Timestamps in the response refer to the time at which the data was sampled.
No guarantees can be made about aligned data. e.g. current may be collected at slightly different times per phases, and upstreamVoltage might be collected at a different time than downstreamVoltage.
The metrics to retreive as a comma separated list of any combination of the following:
- current
- incomingVoltage
- upstreamVoltage
- downstreamVoltage
- tapPosition
- apparentPower
- activePower
- mainsVoltage
- counter
You may also request the data to be split by phases by adding the phase letter after the metric name, for example current{r} (for phase=red). These can be combined to request multiple phases, for example current{r|w} (both red and white). Phase pairs can also be specified, for example mainsVoltage{br} or mainsVoltage{br|wb}. Or you can request all phases with an asterix, for example current{*}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
The counter metric has two types - counter{increment} and counter{decrement}. These values represent the change increment or decrement respectively to the overall count, but when this type is omitted it will return the net change for the time period. For instance, if at timestamp 1512080248 the value was 4, and at 1512080276 the value was -2 then the data returned over this period will be the sum - in this case, 2.
Phase suffixes may be used on the following metrics: current, incomingVoltage, mainsVoltage
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
data
[
{
"current{r}": {
"1505108933": 0.3857383972607584,
"1505108937": 0.3806250010513597
}
},
{
"current{b}": {
"1505108944": 0.3849693243306107
}
},
{
"apparentPower": {
"1505108933": 243.3849693243306,
"1505108937": 244.3849693243306,
"1505108941": 245.38573839726075
}
}
]
status
"OK"
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Create Asset Data
Provide data pertaining to a particular asset.
The data to provide. If existing timestamps are specified then the data will be
overwritten. if data is posted for the counter{decrement} metric then this value will be saved as a negative number, regardless of sign provided.
- data: object
-
The data to be provided for an asset, including metric name, timestamp and value.
The ID of the asset.
Request Example
{
"data": [
{
"current": {
"1511752328": 200,
"1511752335": 205,
"1511752360": 203
}
},
{
"mainsVoltage": {
"1511752328": 240,
"1511752330": 241
}
}
]
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
data
[
{
"current": {
"1511752328": 200,
"1511752335": 205,
"1511752360": 203
}
},
{
"mainsVoltage": {
"1511752328": 240,
"1511752330": 241
}
}
]
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Latest
Returns the latest value of the metrics for the asset up to a maximum age of data.
The ID of the asset.
This returns the single, most recent (up to a given max age) data point we have for each metric.
No timestamps are given for this data but you can be sure that no data point will be older than the maxAge query parameter. If you require specific timestamps please consider using the /data or /data/raw end points.
The metrics to retreive as a comma separated list of any combination of the following:
- current
- incomingVoltage
- upstreamVoltage
- downstreamVoltage
- tapPosition
- apparentPower
- activePower
- mainsVoltage
- counter
You may also request the data to be split by phases by adding the phase letter after the metric name, for example current{r} (for phase=red). These can be combined to request multiple phases, for example current{r|w} (both red and white). Phase pairs can also be specified, for example mainsVoltage{br} or mainsVoltage{br|wb}. Or you can request all phases with an asterix, for example current{*}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
Phase suffixes may be used on the following metrics: current, incomingVoltage, mainsVoltage
The maximum age of the data that should be considered "latest" in seconds
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
data
[
{
"current{r}": 0.3806250010513597
},
{
"current{b}": 0.3849693243306107
},
{
"upstreamVolts": 245.38573839726075
}
]
status
"OK"
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Curtailment
API end-points related to export curtailments.
Get curtailment constraints
Return the constraints of a Virtual Power Plant given a set of query parameters. The parameters correspond to fields to specify when creating a curtailment. This route should be used before executing a curtailment in order to determine the capabilities of that particular Virtual Power Plant.
The ID of the power station being curtailed.
The duration of the curtailment in seconds.
OK
Response Example (200 OK)
{
"data": {
"realPowerP": 55
}
}
All Curtailments
Returns a list of export curtailments. Use of this route without limit/offset parameters is deprecated.
A filter to apply to the returned export curtailments. One of UPCOMING, COMPLETED, INPROGRESS, CANCELLED. Leave empty to view all.
An integer to offset the results by - to use for paging through the total results. If limit is specified, this is 0 by default.
An integer to limit the results by - to use for paging through the total results. By default this is 100.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"component": "solar",
"id": "8380ecf0-e8b9-42c7-8bb5-2e75d13bf484",
"powerstation": "05bf160741c343ce869d0e9ec7b2ad88",
"request": {
"duration": 1800,
"realPowerP": -1.4,
"startTime": 1503026870
},
"state": "COMPLETED"
},
{
"component": "solar",
"id": "b2588e2c-5675-48aa-a835-9c887b52b16a",
"powerstation": null,
"request": {
"duration": 600,
"realPowerP": -1.4,
"startTime": 1503452085
},
"state": "COMPLETED"
}
]
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Create Curtailment
Create an export curtailment request.
The curtailment to create.
- component: string , x ∈ { grid , solar }
-
The component that is being curtailed.
- powerstation: string
-
The ID of the power station being curtailed.
- realPowerP: number
-
The real power limit to which the aggregated components are being curtailed (kW). This value must always be negative.
- startTime: number
-
A unix timestamp of the start time of the curtailment.
- duration: number
-
The duration of the curtailment in seconds.
Request Example
{
"component": "grid",
"powerstation": "cd0412cbc2e444d7a170520ba284091a",
"realPowerP": -1,
"startTime": 1504549112,
"duration": 21600
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"component": "grid",
"powerstation": "cd0412cbc2e444d7a170520ba284091a",
"realPowerP": -1,
"startTime": 1504549112,
"duration": 1505549112
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Get Single Curtailment
Returns detailed data about the export curtailment with the supplied curtailment ID.
The ID of the export curtailment.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"component": "grid",
"createdAt": 1504140351,
"currentResponse": {
"deploymentsAccepted": 1
},
"id": "aa2df12e-d628-45d6-8a90-2d9b6d6137aa",
"powerstation": "05bf160741c343ce869d0e9ec7b2ad88",
"request": {
"deploymentsRequested": 1,
"duration": 21600,
"realPowerP": -1,
"startTime": 1504549112
},
"nodes": [
"d4c58e243e694bba9e57cbdf42970faf",
"e720e221204149ec9fa172583bcf4258"
],
"state": "UPCOMING"
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Cancel Curtailment
Cancels a scheduled curtailment
The ID of the export curtailment.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"status": "OK"
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Get Curtailment Setpoint
Get the current setpoint for default curtailment behaviour.
The ID of the powerstation to query.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
A curtailment setpoint for the requested powerstation cannot be found. Either the powerstation has not been created or it is has not yet received a valid setpoint.
Response Example (200 OK)
{
"data": {
"powerstation": "eb014defdded417e8b6a9d7ed078cedf",
"meterRealPowerP": 0,
"inverterRealPowerP": -24
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Response Example (404 Not Found)
{
"message": "No setpoint for powerstation '6442adf69e004405808542b687bcf494' found.",
"status": "NOT FOUND"
}
Change Curtailment Setpoint
Change the setpoint for default curtailment behaviour.
The updated curtailment setpoint.
- powerstation: string
-
The ID of the power station being updated.
- meterRealPowerP: number
-
The real power limit to which the aggregated grid output is being curtailed by default (kW). A null entry removes any constraint from the component. Other values must always be negative.
- inverterRealPowerP: number
-
The real power limit to which the aggregated inverter output is being curtailed by default (kW). A null entry removes any constraint from the component. Other values must always be negative.
Request Example
{
"powerstation": "cd0412cbc2e444d7a170520ba284091a",
"meterRealPowerP": 0,
"inverterRealPowerP": -1.3
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"status": "OK"
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Curtailment Heartbeat
Send a curtailment heartbeat to a powerstation. Nodes receiving a heartbeat will return to their default curtailment behaviour if the heartbeat is lost.
The updated curtailment setpoint.
- powerstation: string
-
The ID of the power station being heartbeated.
Request Example
{
"powerstation": "cd0412cbc2e444d7a170520ba284091a"
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"status": "OK"
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Dispatch
API end-points related to export dispatches.
All Dispatches
Return all dispatches/support requests with their basic details. Use of this route without offset/limit parameters is deprecated.
A filter to apply to the returned dispatches/support requests. One of UPCOMING, COMPLETED, INPROGRESS or left empty to view all.
An integer to offset the results by - to use for paging through the total results. By default this is 0
An integer to limit the results by - to use for paging through the total results. By default this is 100.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"component": "battery",
"id": "bf6e5c09-9e25-4ff0-a2af-d81185e4abc4",
"powerstation": "05bf160741c343ce869d0e9ec7b2ad88",
"request": {
"duration": 3600,
"powerFactor": 0.7,
"powerFactorLeadLag": "LEADING",
"realPowerP": 38.2,
"startTime": 1497336240
},
"state": "COMPLETED"
}
]
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Create Dispatch
Creates a new dispatch with the specified details
The dispatch to create.
- powerstation: string
-
The id of the powerstation to dispatch
- startTime: integer
-
The unix timestamp at which this dispatch should start.
- duration: integer
-
The duration of the request in seconds.
- realPowerP: number
-
The amount of real power to be dispatched in kW
- powerFactor: number
-
The requested power factor for this dispatch/support request. This is only accepted if your account has been enabled for power factor/voltage control.
- powerFactorLeadLag: string , x ∈ { LEADING , LAGGING }
-
Used only when power_factor is also present and indicates if the specified power factor is LEADING or LAGGING. This is only accepted if your account has been enabled for power factor/voltage control.
Request Example
{
"powerstation": "57dfc43d3b9a4c99b05c7794f5d6abb3",
"startTime": 1505214000,
"duration": 28800,
"realPowerP": 2.6,
"powerFactor": 0.7,
"powerFactorLeadLag": "LAGGING"
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"id": "0c127211-bc31-4d11-8f32-19008c75cf80",
"status": "OK"
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Get Single Dispatch
Return detailed data about a specific dispatch/support request as specified by the dispatchId in the URL.
The ID of the dispatch/support request for which to fetch details.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"component": "battery",
"createdAt": 1497336240,
"currentResponse": {
"deploymentsAccepted": 0,
"deploymentsResponded": 0,
"powerFactor": 0.7,
"powerFactorLeadLag": "LEADING",
"realPowerP": 38.2,
"rejectedRealPowerP": 0.21
},
"id": "bf6e5c09-9e25-4ff0-a2af-d81185e4abc4",
"powerstation": "05bf160741c343ce869d0e9ec7b2ad88",
"prediction": {
"data": [
-5.960000001858923e-8,
-5.960000001858923e-8,
-5.960000001858923e-8,
-5.960000001858923e-8,
-2.97999999121501e-8,
-8.94000000695172e-8,
-1.49000000115862e-7,
-2.98000000231724e-8,
-1.489999998938174e-7,
-2.98000000231724e-8,
-8.93999999584949e-8,
-2.9700000014898364e-8,
-8.940000001400605e-8
],
"deltaSeconds": 1800,
"startTime": 1505181600
},
"request": {
"deploymentsRequested": 6,
"duration": 3600,
"powerFactor": 0.7,
"powerFactorLeadLag": "LEADING",
"realPowerP": 38.2,
"startTime": 1497336240
},
"nodes": [
"f7b05c5632334403ac0895959f8d00e7",
"4f0cf230c728478da0822aa7f2d1f9ef",
"56af6a12ae9049298aaa38cde5781145",
"3b904d6c1a8549f3adc0b0dd4a7e9fc6",
"50cafb993f54499cb03396f236dfee6d",
"f93c98b6df01472283bc9fbb5d7a6d8d",
"4858794e8ab3410cb523fcf03e4cc573"
],
"state": "COMPLETED"
}
]
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Network
Indicates this API end-point is available to network organisations.
All Nodes
Return basic information and URLs on how to obtain more information about nodes. Each URL can also be expanded in place using the expand URL parameter
Any property that contains a URL path rather than data can be expanded in place using the expand query string parameter. This is a CSV list of each property name which should be expanded. e.g. ?expand=network,address
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
Default response
{
"data": [
{
"address": "/api/nodes/bdeea25eb01b460da11e9208007ec2e5/address",
"id": "bdeea25eb01b460da11e9208007ec2e5",
"network": "/api/nodes/bdeea25eb01b460da11e9208007ec2e5/network",
"status": "/api/nodes/bdeea25eb01b460da11e9208007ec2e5/status",
"namePlate": "/api/nodes/bdeea25eb01b460da11e9208007ec2e5/namePlate"
},
{
"address\"": "/api/nodes/521444180bee43bda8e51ffe8a64c9bc/address",
"id": "521444180bee43bda8e51ffe8a64c9bc",
"network": "/api/nodes/521444180bee43bda8e51ffe8a64c9bc/network",
"status": "/api/nodes/521444180bee43bda8e51ffe8a64c9bc/status",
"namePlate": "/api/nodes/521444180bee43bda8e51ffe8a64c9bc/namePlate"
}
],
"status": "OK"
}
Fully Expanded Response (?expand=address,network,status,system)
{
"data": [
{
"address": {
"city": "Canberra",
"country": "Australia",
"lat": -35.333502,
"lng": 149.170508,
"postcode": "2609",
"state": "ACT",
"street": "Yallourn Street",
"street_number": "17/2"
},
"id": "bdeea25eb01b460da11e9208007ec2e5",
"network": {
"nmi": "10000200030"
},
"status": {
"operationalStatus": {
"lastTimestamp": 1505695466,
"lastValue": 0
},
"ping": {
"lastTimestamp": 1505695468
}
},
"namePlate": {
"batteryCapacity": 6.4,
"inverterPower": 3,
"batteryPower": 2
}
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Address/Location Info
Return full address and lat/long information of a node.
The ID of the node.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"city": "Turner",
"country": "Australia",
"lat": -35.26671,
"lng": 149.12879,
"postcode": "2612",
"state": "ACT",
"street": "Macleay St",
"street_number": "52"
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Network Info
Returns the NMI for this node.
The ID of the node.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"nmi": 4102000000
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Operational Status
Returns the latest operational status information for this node.
The ID of the node.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"operationalStatus": {
"lastTimestamp": 1505189841,
"lastValue": 0
},
"ping": {
"lastTimestamp": 1505189845
}
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Name Plate
Returns information about the energy system attached to this node.
The ID of the node.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"batteryCapacity": 6.4,
"inverterPower": 3,
"batteryPower": 2
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Name Plate
Returns events and changes in state to this node sorted by time descending. This will only return the first 100 results by default, as the number of results can be quite large. Therefore you must use the limit and offset parameters as specified below to retrieve either all results, or a page at a time. This endpoint only returns basic information; more details can be retrieved from the endpoint specific to that event type, e.g. from /api/dispatches
The ID of the node.
An integer to offset the results by - to use for paging through the total results. If limit is specified, this is set to 0 by default.
An integer to limit the results by - to use for paging through the total results. By default this is 100, or the maximum number of results (whichever is lower).
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"description": "Network Support",
"duration": 3600,
"eventType": "DISPATCH",
"id": "b02067ae-d274-4d75-a00b-81a78184e987",
"ts": 1523430000
},
{
"description": "Network Support",
"duration": 3600,
"eventType": "DISPATCH",
"id": "64948b88-7af5-49a7-9b04-e0055419eaf8",
"ts": 1517547600
},
{
"description": "The Reposit System was commissioned.",
"eventType": "COMMISSIONED",
"ts": 1511204358
}
],
"meta": {
"count": 6,
"next": null,
"previous": "https://marketapi.repositpower.com/api/nodes/5b0a63855f2f4f819ccda226ca9d14e8/events?limit=3&offset=0"
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
All Power Stations
Returns a list of power stations associated with the currently authenticated user's organisation.
Optional. Set to true to include powerstation predictions in the response.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"description": null,
"id": "e7430ccb21644d7b9e0a443933f25c7f",
"name": "New Powerstation on dmarket",
"namePlate": {
"capacity": 17.1,
"power": 13
},
"nodes": [
"d4c58e243e694bba9e57cbdf42970faf",
"5320123eac5e4fd5baaea0bf442659bb"
]
},
{
"description": "A sample powerstation for dispatches",
"id": "3561817084be49c0b77d7d65903792ff",
"name": "Sample One",
"namePlate": {
"batteryCapacity": 29,
"batteryPower": 16.3,
"inverterPower": 18.5
},
"nodes": [
"5320123eac5e4fd5baaea0bf442659bb",
"e720e221204149ec9fa172583bcf4258",
"d4c58e243e694bba9e57cbdf42970faf"
]
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Create Power Station
Creates a new powerstation and returns its details.
The powerstation to create.
- name: string
-
A recognisable name to give this powerstation.
- description: string
-
An option description of this powerstation
- type: string , x ∈ { STATIC (default) , DYNAMIC }
-
The type of powerstation, either STATIC for a specified list of node IDs or DYNAMIC to suply a filter. When using DYNAMIC ans supplying a filter the powerstation will automatically add any nodes that match the filter criteria.
- nodes: string[]
-
An array of node IDs that belong to this powerstation if the powerstation type is STATIC. Otherwise this must be null
- filters: object
-
When specifying a DYNAMIC powerstation type you must also supply the filters that this powerstation is built from.
- postcodes: string[]
-
An array of postcodes that a node can be in for it to be included in this powerstation.
- state: string , x ∈ { ACT , NSW , NT , QLD , SA , TAS , VIC , WA }
-
The state or territory that a node must be in for it to be included in this powerstation.
Request Example
{
"name": "My First Powerstation",
"nodes": [
"f7b05c5632334403ac0895959f8d00e7",
"4f0cf230c728478da0822aa7f2d1f9ef",
"56af6a12ae9049298aaa38cde5781145"
]
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"description": null,
"id": "e7430ccb21644d7b9e0a443933f25c7f",
"name": "My First Powerstation",
"namePlate": {
"batteryCapacity": 17.1,
"batteryPower": 11,
"inverterPower": 13
},
"nodes": [
"f7b05c5632334403ac0895959f8d00e7",
"4f0cf230c728478da0822aa7f2d1f9ef",
"56af6a12ae9049298aaa38cde5781145"
]
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Get Single Power Station
Returns the details of the power station with the supplied UID.
The ID of the power station.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Invalid powerstation UID specified.
Response Example (200 OK)
{
"data": {
"description": null,
"id": "e7430ccb21644d7b9e0a443933f25c7f",
"name": "New Powerstation on dmarket",
"namePlate": {
"capacity": 17.1,
"power": 13
},
"nodes": [
"d4c58e243e694bba9e57cbdf42970faf",
"5320123eac5e4fd5baaea0bf442659bb"
]
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Response Example (404 Not Found)
{
"error": "Powerstation e7430ccb21644d7b9e0a443933f25c7f not found",
"status": "ERROR"
}
Update Power Station
Updates an existing powerstation specified by its id and returns its details.
The powerstation to update.
- name: string
- description: string
-
An option description of this powerstation
- nodes: string[]
-
A list of nodes IDs that make up this powerstation.
The ID of the power station.
Request Example
{
"name": "My First Powerstation",
"nodes": [
"f7b05c5632334403ac0895959f8d00e7",
"4f0cf230c728478da0822aa7f2d1f9ef",
"56af6a12ae9049298aaa38cde5781145"
]
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Invalid powerstation ID specified.
Response Example (200 OK)
{
"data": {
"description": null,
"id": "e7430ccb21644d7b9e0a443933f25c7f",
"name": "My First Powerstation",
"namePlate": {
"capacity": 17.1,
"power": 13
},
"nodes": [
"f7b05c5632334403ac0895959f8d00e7",
"4f0cf230c728478da0822aa7f2d1f9ef",
"56af6a12ae9049298aaa38cde5781145"
]
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Response Example (404 Not Found)
{
"error": "Powerstation e7430ccb21644d7b9e0a443933f25c7f not found",
"status": "ERROR"
}
Delete Power Station
Deletes a powerstation with with the supplied ID.
The ID of the power station.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Invalid powerstation ID specified.
Response Example (200 OK)
{
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Response Example (404 Not Found)
{
"error": "Powerstation e7430ccb21644d7b9e0a443933f25c7f not found",
"status": "ERROR"
}
Data - Downsampled
Return stored metrics for this powerstation or its nodes by downsampling.
The ID of the power station.
This returns downsampled data of metrics for this powerstation.
Timestamps in the response refer to the start of the period.
The metrics to retreive as a comma separated list of any combination of the following:
- meterVoltage - The average voltage (V) across all phases as measured at the meter/grid
- meterFrequence - The average frequency (Hz) across all phases as measured at the meter/grid
- meterPower - The total (sum) real power (kW) across all phases as measured at the meter/grid
- meterReactivePower - The total (sum) reactive power (var) across all phases as measure at the meter/grid
- solarPower - The total (sum) real power (kW) across all solar phases being generated by the PV array
- solarReactivePower - The total (sum) reactive power (var) across all solar phases being generated by the PV array
- remainingCharge - The total (sum) remaining charge (W) of the all batteries attached to this system
- batteryPower - The total (sum) real power (kW) measured at the battery of all batteries attached to this system
- inverterReactivePower - The total (sum) reactive power (var) measured at the inverter
- inverterApparentPower - The total (sum) apparent power (kW) measured at the inverter
- meterCurrent - The total (sum) current (Amp) measured at the meter/grid
All real power measurements follow a sink convention, while all reactive power measurements follow a source convention. Apparent power is always positive.
If ?format=nodes is specified then you may also request the data to be split by phases by adding a phase letter after the metric name, for example meterVoltage{a}. These can be combined to request multiple phases, for example meterVoltage{a|b}. Or you can request all phases with an asterix, for example meterVoltage{*}. Note that meterVoltage{*} is equivalent to meterVoltage{a|b|c}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
Phase suffixes may be used on the following metrics: meterVoltage, meterFrequency, meterPower, meterReactivePower, solarPower, solarReactivePower.
Please note that phases are currently arbitrary - we cannot determine which phase is red/white/blue. For all single phase installations the data will be available on phase a.
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
The downsampling interval in seconds
The format you which to retreive the results, either powerstation or nodes
The fill policy to use for empty values. By default any empty values for a deployment (i.e. a missing chuck of data) are ommitted. Specify fill=null to return all times with null values if the data is missing. Only null is supported.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
By powerstation
{
"data": [
{
"meterPower{a}": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
}
},
{
"meterPower{b}": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3857383972607584
}
},
{
"meterVoltage": {
"1505109600": 244.3849693243306,
"1505111400": 245.38573839726075
}
}
],
"status": "OK"
}
By nodes
{
"data": [
{
"meterPower{a}": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3580208346247673
}
}
},
{
"meterPower{b}": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3580208346247673
}
}
},
{
"meterVoltage": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 244.38573839726075,
"1505111400": 244.38062500105136
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 245.3849693243306,
"1505111400": 245.35802083462477
}
}
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Raw
Return stored metrics for this powerstation or its nodes without applying any downsampling.
The ID of the power station.
This returns raw data of metrics for this powerstation as collected by each device.
Timestamps in the response refer to the time at which the data was sampled.
No guarantees can be made about aligned data. e.g. meterPower may be collected at slightly different times per phases, and meterPower might be collected at a different time than meterVoltage.
The metrics to retreive as a comma separated list of any combination of the following:
- meterVoltage - The average voltage (V) across all phases as measured at the meter/grid
- meterFrequence - The average frequency (Hz) across all phases as measured at the meter/grid
- meterPower - The total (sum) real power (kW) across all phases as measured at the meter/grid
- meterReactivePower - The total (sum) reactive power (var) across all phases as measure at the meter/grid
- solarPower - The total (sum) real power (kW) across all solar phases being generated by the PV array
- solarReactivePower - The total (sum) reactive power (var) across all solar phases being generated by the PV array
- remainingCharge - The total (sum) remaining charge (W) of the all batteries attached to this system
- batteryPower - The total (sum) real power (kW) measured at the battery of all batteries attached to this system
- inverterReactivePower - The total (sum) reactive power (var) measured at the inverter
- inverterApparentPower - The total (sum) apparent power (kW) measured at the inverter
- meterCurrent - The total (sum) current (Amp) measured at the meter/grid
All real power measurements follow a sink convention, while all reactive power measurements follow a source convention. Apparent power is always positive.
If ?format=nodes is specified then you may also request the data to be split by phases by adding a phase letter after the metric name, for example meterVoltage{a}. These can be combined to request multiple phases, for example meterVoltage{a|b}. Or you can request all phases with an asterix, for example meterVoltage{*}. Note that meterVoltage{*} is equivalent to meterVoltage{a|b|c}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
Phase suffixes may be used on the following metrics: meterVoltage, meterFrequency, meterPower, meterReactivePower, solarPower, solarReactivePower.
Please note that phases are currently arbitrary - we cannot determine which phase is red/white/blue. For all single phase installations the data will be available on phase a.
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
The format you which to retreive the results, either powerstation or nodes
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
By powerstation
{
"data": [
{
"meterPower{a}": {
"1505108933": 0.3857383972607584,
"1505108937": 0.3806250010513597
}
},
{
"meterPower{b}": {
"1505108944": 0.3849693243306107
}
},
{
"meterVoltage": {
"1505108933": 243.3849693243306,
"1505108937": 244.3849693243306,
"1505108941": 245.38573839726075
}
}
],
"status": "OK"
}
By nodes
{
"data": [
{
"meterPower{a}": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505108933": 0.3857383972607584,
"1505108937": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505108934": 0.3849693243306107,
"1505108938": 0.3580208346247673
}
}
},
{
"meterPower{b}": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505108933": 0.3857383972607584,
"1505108937": 0.3806250010513597,
"1505108941": 0.3806250010513597,
"1505108943": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505108934": 0.3849693243306107,
"1505108936": 0.3580208346247673,
"1505108939": 0.3580208346247673
}
}
},
{
"meterVoltage": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505108937": 244.38573839726075,
"1505108940": 244.38062500105136
},
"e720e221204149ec9fa172583bcf4258": {
"1505108937": 245.3849693243306
}
}
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Latest
Returns the latest value of the metrics for the powerstation or nodes up to a maximum age of data.
The ID of the power station.
This returns the single, most recent (up to a given max age) data point we have for each metric.
No timestamps are given for this data but you can be sure that no data point will be older than the maxAge query parameter. If you require specific timestamps please consider using the /data or /data/raw end points.
The metrics to retreive as a comma separated list of any combination of the following:
- meterVoltage - The average voltage (V) across all phases as measured at the meter/grid
- meterFrequence - The average frequency (Hz) across all phases as measured at the meter/grid
- meterPower - The total (sum) real power (kW) across all phases as measured at the meter/grid
- meterReactivePower - The total (sum) reactive power (var) across all phases as measure at the meter/grid
- solarPower - The total (sum) real power (kW) across all solar phases being generated by the PV array
- solarReactivePower - The total (sum) reactive power (var) across all solar phases being generated by the PV array
- remainingCharge - The total (sum) remaining charge (W) of the all batteries attached to this system
- batteryPower - The total (sum) real power (kW) measured at the battery of all batteries attached to this system
- inverterReactivePower - The total (sum) reactive power (var) measured at the inverter
- inverterApparentPower - The total (sum) apparent power (kW) measured at the inverter
- meterCurrent - The total (sum) current (Amp) measured at the meter/grid
All real power measurements follow a sink convention, while all reactive power measurements follow a source convention. Apparent power is always positive.
If ?format=nodes is specified then you may also request the data to be split by phases by adding a phase letter after the metric name, for example meterVoltage{a}. These can be combined to request multiple phases, for example meterVoltage{a|b}. Or you can request all phases with an asterix, for example meterVoltage{*}. Note that meterVoltage{*} is equivalent to meterVoltage{a|b|c}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
Phase suffixes may be used on the following metrics: meterVoltage, meterFrequency, meterPower, meterReactivePower, solarPower, solarReactivePower.
Please note that phases are currently arbitrary - we cannot determine which phase is red/white/blue. For all single phase installations the data will be available on phase a.
The maximum age of the data that should be considered "latest" in seconds
The format you which to retreive the results, either powerstation or nodes
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
By powerstation
{
"data": [
{
"meterPower{a}": 0.3806250010513597
},
{
"meterPower{b}": 0.3849693243306107
},
{
"meterVoltage": 245.38573839726075
}
],
"status": "OK"
}
By nodes
{
"data": [
{
"meterPower{a}": {
"d4c58e243e694bba9e57cbdf42970faf": 0.3857383972607584,
"e720e221204149ec9fa172583bcf4258": 0.3580208346247673
}
},
{
"meterPower{b}": {
"d4c58e243e694bba9e57cbdf42970faf": 0.3806250010513597,
"e720e221204149ec9fa172583bcf4258": 0.3580208346247673
}
},
{
"meterVoltage": {
"d4c58e243e694bba9e57cbdf42970faf": 244.38062500105136,
"e720e221204149ec9fa172583bcf4258": 245.3849693243306
}
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Fleet Data - Downsampled
Return stored metrics for the entire fleet by downsampling.
This returns downsampled data of metrics for this powerstation.
Timestamps in the response refer to the start of the period.
The metrics to retreive as a comma separated list of any combination of the following:
- meterVoltage - The average voltage (V) across all phases as measured at the meter/grid
- meterFrequence - The average frequency (Hz) across all phases as measured at the meter/grid
- meterPower - The total (sum) real power (kW) across all phases as measured at the meter/grid
- meterReactivePower - The total (sum) reactive power (var) across all phases as measure at the meter/grid
- solarPower - The total (sum) real power (kW) across all solar phases being generated by the PV array
- solarReactivePower - The total (sum) reactive power (var) across all solar phases being generated by the PV array
- remainingCharge - The total (sum) remaining charge (W) of the all batteries attached to this system
- batteryPower - The total (sum) real power (kW) measured at the battery of all batteries attached to this system
- inverterReactivePower - The total (sum) reactive power (var) measured at the inverter
- inverterApparentPower - The total (sum) apparent power (kW) measured at the inverter
- meterCurrent - The total (sum) current (Amp) measured at the meter/grid
All real power measurements follow a sink convention, while all reactive power measurements follow a source convention. Apparent power is always positive.
Phase suffixes may be used on the following metrics: meterVoltage, meterFrequency, meterPower, meterReactivePower, solarPower, solarReactivePower.
Please note that phases are currently arbitrary - we cannot determine which phase is red/white/blue. For all single phase installations the data will be available on phase a.
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
The downsampling interval in seconds
The fill policy to use for empty values. By default any empty values for a deployment (i.e. a missing chuck of data) are ommitted. Specify fill=null to return all times with null values if the data is missing. Only null is supported.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
data
[
{
"meterPower": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3580208346247673
}
}
},
{
"meterVoltage": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 244.38573839726075,
"1505111400": 244.38062500105136
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 245.3849693243306,
"1505111400": 245.35802083462477
}
}
}
]
status
"OK"
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
All Assets
Returns a list of assets associated with the currently authenticated user's organisation.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"id": "599ce96fceba40bba8afc36f177c1e98",
"name": "First Asset Example"
},
{
"id": "0796a71c54524c05b7af503196994c34",
"name": "Second Asset Example"
}
]
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Get Single Asset
Returns the details of the asset with the supplied UID.
The ID of the asset.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"id": "599ce96fceba40bba8afc36f177c1e98",
"name": "First Asset Example"
}
]
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Downsampled
Return stored metrics for this asset by downsampling.
The ID of the asset.
This returns downsampled data of metrics for this asset.
Timestamps in the response refer to the start of the period.
The metrics to retreive as a comma separated list of any combination of the following:
- current
- incomingVoltage
- upstreamVoltage
- downstreamVoltage
- tapPosition
- apparentPower
- activePower
- mainsVoltage
- counter
You may also request the data to be split by phases by adding the phase letter after the metric name, for example current{r} (for phase=red). These can be combined to request multiple phases, for example current{r|w} (both red and white). Phase pairs can also be specified, for example mainsVoltage{br} or mainsVoltage{br|wb}. Or you can request all phases with an asterix, for example current{*}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
The counter metric has two types - counter{increment} and counter{decrement}. These values represent the change increment or decrement respectively to the overall count, but when this type is omitted it will return the net change for the time period. For instance, if at timestamp 1512080248 the value was 4, and at 1512080276 the value was -2 then the data returned over this period will be the sum - in this case, 2.
Phase suffixes may be used on the following metrics: current, incomingVoltage, mainsVoltage
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
The downsampling interval in seconds
The fill policy to use for empty values. By default any empty values for an asset (i.e. a missing chuck of data) are ommitted. Specify fill=null to return all times with null values if the data is missing. Only null is supported.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
data
[
{
"current{r}": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
}
},
{
"current{w}": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3857383972607584
}
},
{
"current{b}": {
"1505109600": 244.3849693243306,
"1505111400": 245.38573839726075
}
},
{
"mainsVoltage{br|rw}": {
"1505109600": 244.3849693243306,
"1505111400": 245.38573839726075
}
}
]
status
"OK"
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Raw
Return stored metrics for this asset without applying any downsampling.
The ID of the asset.
This returns raw data of metrics for this asset as collected by each device.
Timestamps in the response refer to the time at which the data was sampled.
No guarantees can be made about aligned data. e.g. current may be collected at slightly different times per phases, and upstreamVoltage might be collected at a different time than downstreamVoltage.
The metrics to retreive as a comma separated list of any combination of the following:
- current
- incomingVoltage
- upstreamVoltage
- downstreamVoltage
- tapPosition
- apparentPower
- activePower
- mainsVoltage
- counter
You may also request the data to be split by phases by adding the phase letter after the metric name, for example current{r} (for phase=red). These can be combined to request multiple phases, for example current{r|w} (both red and white). Phase pairs can also be specified, for example mainsVoltage{br} or mainsVoltage{br|wb}. Or you can request all phases with an asterix, for example current{*}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
The counter metric has two types - counter{increment} and counter{decrement}. These values represent the change increment or decrement respectively to the overall count, but when this type is omitted it will return the net change for the time period. For instance, if at timestamp 1512080248 the value was 4, and at 1512080276 the value was -2 then the data returned over this period will be the sum - in this case, 2.
Phase suffixes may be used on the following metrics: current, incomingVoltage, mainsVoltage
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
data
[
{
"current{r}": {
"1505108933": 0.3857383972607584,
"1505108937": 0.3806250010513597
}
},
{
"current{b}": {
"1505108944": 0.3849693243306107
}
},
{
"apparentPower": {
"1505108933": 243.3849693243306,
"1505108937": 244.3849693243306,
"1505108941": 245.38573839726075
}
}
]
status
"OK"
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Create Asset Data
Provide data pertaining to a particular asset.
The data to provide. If existing timestamps are specified then the data will be
overwritten. if data is posted for the counter{decrement} metric then this value will be saved as a negative number, regardless of sign provided.
- data: object
-
The data to be provided for an asset, including metric name, timestamp and value.
The ID of the asset.
Request Example
{
"data": [
{
"current": {
"1511752328": 200,
"1511752335": 205,
"1511752360": 203
}
},
{
"mainsVoltage": {
"1511752328": 240,
"1511752330": 241
}
}
]
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
data
[
{
"current": {
"1511752328": 200,
"1511752335": 205,
"1511752360": 203
}
},
{
"mainsVoltage": {
"1511752328": 240,
"1511752330": 241
}
}
]
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Latest
Returns the latest value of the metrics for the asset up to a maximum age of data.
The ID of the asset.
This returns the single, most recent (up to a given max age) data point we have for each metric.
No timestamps are given for this data but you can be sure that no data point will be older than the maxAge query parameter. If you require specific timestamps please consider using the /data or /data/raw end points.
The metrics to retreive as a comma separated list of any combination of the following:
- current
- incomingVoltage
- upstreamVoltage
- downstreamVoltage
- tapPosition
- apparentPower
- activePower
- mainsVoltage
- counter
You may also request the data to be split by phases by adding the phase letter after the metric name, for example current{r} (for phase=red). These can be combined to request multiple phases, for example current{r|w} (both red and white). Phase pairs can also be specified, for example mainsVoltage{br} or mainsVoltage{br|wb}. Or you can request all phases with an asterix, for example current{*}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
Phase suffixes may be used on the following metrics: current, incomingVoltage, mainsVoltage
The maximum age of the data that should be considered "latest" in seconds
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
data
[
{
"current{r}": 0.3806250010513597
},
{
"current{b}": 0.3849693243306107
},
{
"upstreamVolts": 245.38573839726075
}
]
status
"OK"
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Get curtailment constraints
Return the constraints of a Virtual Power Plant given a set of query parameters. The parameters correspond to fields to specify when creating a curtailment. This route should be used before executing a curtailment in order to determine the capabilities of that particular Virtual Power Plant.
The ID of the power station being curtailed.
The duration of the curtailment in seconds.
OK
Response Example (200 OK)
{
"data": {
"realPowerP": 55
}
}
All Curtailments
Returns a list of export curtailments. Use of this route without limit/offset parameters is deprecated.
A filter to apply to the returned export curtailments. One of UPCOMING, COMPLETED, INPROGRESS, CANCELLED. Leave empty to view all.
An integer to offset the results by - to use for paging through the total results. If limit is specified, this is 0 by default.
An integer to limit the results by - to use for paging through the total results. By default this is 100.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"component": "solar",
"id": "8380ecf0-e8b9-42c7-8bb5-2e75d13bf484",
"powerstation": "05bf160741c343ce869d0e9ec7b2ad88",
"request": {
"duration": 1800,
"realPowerP": -1.4,
"startTime": 1503026870
},
"state": "COMPLETED"
},
{
"component": "solar",
"id": "b2588e2c-5675-48aa-a835-9c887b52b16a",
"powerstation": null,
"request": {
"duration": 600,
"realPowerP": -1.4,
"startTime": 1503452085
},
"state": "COMPLETED"
}
]
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Create Curtailment
Create an export curtailment request.
The curtailment to create.
- component: string , x ∈ { grid , solar }
-
The component that is being curtailed.
- powerstation: string
-
The ID of the power station being curtailed.
- realPowerP: number
-
The real power limit to which the aggregated components are being curtailed (kW). This value must always be negative.
- startTime: number
-
A unix timestamp of the start time of the curtailment.
- duration: number
-
The duration of the curtailment in seconds.
Request Example
{
"component": "grid",
"powerstation": "cd0412cbc2e444d7a170520ba284091a",
"realPowerP": -1,
"startTime": 1504549112,
"duration": 21600
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"component": "grid",
"powerstation": "cd0412cbc2e444d7a170520ba284091a",
"realPowerP": -1,
"startTime": 1504549112,
"duration": 1505549112
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Get Single Curtailment
Returns detailed data about the export curtailment with the supplied curtailment ID.
The ID of the export curtailment.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"component": "grid",
"createdAt": 1504140351,
"currentResponse": {
"deploymentsAccepted": 1
},
"id": "aa2df12e-d628-45d6-8a90-2d9b6d6137aa",
"powerstation": "05bf160741c343ce869d0e9ec7b2ad88",
"request": {
"deploymentsRequested": 1,
"duration": 21600,
"realPowerP": -1,
"startTime": 1504549112
},
"nodes": [
"d4c58e243e694bba9e57cbdf42970faf",
"e720e221204149ec9fa172583bcf4258"
],
"state": "UPCOMING"
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Cancel Curtailment
Cancels a scheduled curtailment
The ID of the export curtailment.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"status": "OK"
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Get Curtailment Setpoint
Get the current setpoint for default curtailment behaviour.
The ID of the powerstation to query.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
A curtailment setpoint for the requested powerstation cannot be found. Either the powerstation has not been created or it is has not yet received a valid setpoint.
Response Example (200 OK)
{
"data": {
"powerstation": "eb014defdded417e8b6a9d7ed078cedf",
"meterRealPowerP": 0,
"inverterRealPowerP": -24
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Response Example (404 Not Found)
{
"message": "No setpoint for powerstation '6442adf69e004405808542b687bcf494' found.",
"status": "NOT FOUND"
}
Change Curtailment Setpoint
Change the setpoint for default curtailment behaviour.
The updated curtailment setpoint.
- powerstation: string
-
The ID of the power station being updated.
- meterRealPowerP: number
-
The real power limit to which the aggregated grid output is being curtailed by default (kW). A null entry removes any constraint from the component. Other values must always be negative.
- inverterRealPowerP: number
-
The real power limit to which the aggregated inverter output is being curtailed by default (kW). A null entry removes any constraint from the component. Other values must always be negative.
Request Example
{
"powerstation": "cd0412cbc2e444d7a170520ba284091a",
"meterRealPowerP": 0,
"inverterRealPowerP": -1.3
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"status": "OK"
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Curtailment Heartbeat
Send a curtailment heartbeat to a powerstation. Nodes receiving a heartbeat will return to their default curtailment behaviour if the heartbeat is lost.
The updated curtailment setpoint.
- powerstation: string
-
The ID of the power station being heartbeated.
Request Example
{
"powerstation": "cd0412cbc2e444d7a170520ba284091a"
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"status": "OK"
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
All Dispatches
Return all dispatches/support requests with their basic details. Use of this route without offset/limit parameters is deprecated.
A filter to apply to the returned dispatches/support requests. One of UPCOMING, COMPLETED, INPROGRESS or left empty to view all.
An integer to offset the results by - to use for paging through the total results. By default this is 0
An integer to limit the results by - to use for paging through the total results. By default this is 100.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"component": "battery",
"id": "bf6e5c09-9e25-4ff0-a2af-d81185e4abc4",
"powerstation": "05bf160741c343ce869d0e9ec7b2ad88",
"request": {
"duration": 3600,
"powerFactor": 0.7,
"powerFactorLeadLag": "LEADING",
"realPowerP": 38.2,
"startTime": 1497336240
},
"state": "COMPLETED"
}
]
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Create Dispatch
Creates a new dispatch with the specified details
The dispatch to create.
- powerstation: string
-
The id of the powerstation to dispatch
- startTime: integer
-
The unix timestamp at which this dispatch should start.
- duration: integer
-
The duration of the request in seconds.
- realPowerP: number
-
The amount of real power to be dispatched in kW
- powerFactor: number
-
The requested power factor for this dispatch/support request. This is only accepted if your account has been enabled for power factor/voltage control.
- powerFactorLeadLag: string , x ∈ { LEADING , LAGGING }
-
Used only when power_factor is also present and indicates if the specified power factor is LEADING or LAGGING. This is only accepted if your account has been enabled for power factor/voltage control.
Request Example
{
"powerstation": "57dfc43d3b9a4c99b05c7794f5d6abb3",
"startTime": 1505214000,
"duration": 28800,
"realPowerP": 2.6,
"powerFactor": 0.7,
"powerFactorLeadLag": "LAGGING"
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"id": "0c127211-bc31-4d11-8f32-19008c75cf80",
"status": "OK"
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Get Single Dispatch
Return detailed data about a specific dispatch/support request as specified by the dispatchId in the URL.
The ID of the dispatch/support request for which to fetch details.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"component": "battery",
"createdAt": 1497336240,
"currentResponse": {
"deploymentsAccepted": 0,
"deploymentsResponded": 0,
"powerFactor": 0.7,
"powerFactorLeadLag": "LEADING",
"realPowerP": 38.2,
"rejectedRealPowerP": 0.21
},
"id": "bf6e5c09-9e25-4ff0-a2af-d81185e4abc4",
"powerstation": "05bf160741c343ce869d0e9ec7b2ad88",
"prediction": {
"data": [
-5.960000001858923e-8,
-5.960000001858923e-8,
-5.960000001858923e-8,
-5.960000001858923e-8,
-2.97999999121501e-8,
-8.94000000695172e-8,
-1.49000000115862e-7,
-2.98000000231724e-8,
-1.489999998938174e-7,
-2.98000000231724e-8,
-8.93999999584949e-8,
-2.9700000014898364e-8,
-8.940000001400605e-8
],
"deltaSeconds": 1800,
"startTime": 1505181600
},
"request": {
"deploymentsRequested": 6,
"duration": 3600,
"powerFactor": 0.7,
"powerFactorLeadLag": "LEADING",
"realPowerP": 38.2,
"startTime": 1497336240
},
"nodes": [
"f7b05c5632334403ac0895959f8d00e7",
"4f0cf230c728478da0822aa7f2d1f9ef",
"56af6a12ae9049298aaa38cde5781145",
"3b904d6c1a8549f3adc0b0dd4a7e9fc6",
"50cafb993f54499cb03396f236dfee6d",
"f93c98b6df01472283bc9fbb5d7a6d8d",
"4858794e8ab3410cb523fcf03e4cc573"
],
"state": "COMPLETED"
}
]
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Assign customers to a capability
Takes a list of customers and assigns them to a capability. Returns a list of changes that have been applied and/or a list or errors.
Request Example
[
{
"customers": [
{
"nmi": "11000000001",
"capabilities": [
{
"name": "Hoodwink Network Support",
"startDate": "2018-01-01"
}
],
"tariff": [
{
"code": "HOODWINK_PLAN",
"startDate": "2018-01-01",
"discount": 0
}
]
},
{
"nmi": "10000000001",
"capabilities": [
{
"name": "Jensen Network Support",
"startDate": "2017-01-01"
}
]
}
]
}
]
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"errors": [
{
"message": "Effective start date must be on or after the starting date of the capability - 2018-01-01",
"errorCode": "invalid_capability",
"customers": [
"12345123451",
"110000012",
"1000000001"
]
},
{
"message": "Customer already assigned to another retailer",
"customers": [
"12345123451"
]
},
{
"message": "Must have a capability code",
"customers": [
"12345123451"
]
}
]
},
{
"warnings": [
{
"message": "Customer is not yet commissioned",
"errorCode": "not_commissioned_customer",
"customers": [
"1100000006"
]
}
],
"success": [
"1100000001",
"1100000002",
"1100000003",
"1100000004",
"1100000005",
"1100000006"
]
}
]
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Retailer
Indicates this API end-point is available to retailer organisations.
All Nodes
Return basic information and URLs on how to obtain more information about nodes. Each URL can also be expanded in place using the expand URL parameter
Any property that contains a URL path rather than data can be expanded in place using the expand query string parameter. This is a CSV list of each property name which should be expanded. e.g. ?expand=network,address
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
Default response
{
"data": [
{
"address": "/api/nodes/bdeea25eb01b460da11e9208007ec2e5/address",
"id": "bdeea25eb01b460da11e9208007ec2e5",
"network": "/api/nodes/bdeea25eb01b460da11e9208007ec2e5/network",
"status": "/api/nodes/bdeea25eb01b460da11e9208007ec2e5/status",
"namePlate": "/api/nodes/bdeea25eb01b460da11e9208007ec2e5/namePlate"
},
{
"address\"": "/api/nodes/521444180bee43bda8e51ffe8a64c9bc/address",
"id": "521444180bee43bda8e51ffe8a64c9bc",
"network": "/api/nodes/521444180bee43bda8e51ffe8a64c9bc/network",
"status": "/api/nodes/521444180bee43bda8e51ffe8a64c9bc/status",
"namePlate": "/api/nodes/521444180bee43bda8e51ffe8a64c9bc/namePlate"
}
],
"status": "OK"
}
Fully Expanded Response (?expand=address,network,status,system)
{
"data": [
{
"address": {
"city": "Canberra",
"country": "Australia",
"lat": -35.333502,
"lng": 149.170508,
"postcode": "2609",
"state": "ACT",
"street": "Yallourn Street",
"street_number": "17/2"
},
"id": "bdeea25eb01b460da11e9208007ec2e5",
"network": {
"nmi": "10000200030"
},
"status": {
"operationalStatus": {
"lastTimestamp": 1505695466,
"lastValue": 0
},
"ping": {
"lastTimestamp": 1505695468
}
},
"namePlate": {
"batteryCapacity": 6.4,
"inverterPower": 3,
"batteryPower": 2
}
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Address/Location Info
Return full address and lat/long information of a node.
The ID of the node.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"city": "Turner",
"country": "Australia",
"lat": -35.26671,
"lng": 149.12879,
"postcode": "2612",
"state": "ACT",
"street": "Macleay St",
"street_number": "52"
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Network Info
Returns the NMI for this node.
The ID of the node.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"nmi": 4102000000
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Operational Status
Returns the latest operational status information for this node.
The ID of the node.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"operationalStatus": {
"lastTimestamp": 1505189841,
"lastValue": 0
},
"ping": {
"lastTimestamp": 1505189845
}
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Name Plate
Returns information about the energy system attached to this node.
The ID of the node.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"batteryCapacity": 6.4,
"inverterPower": 3,
"batteryPower": 2
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Name Plate
Returns events and changes in state to this node sorted by time descending. This will only return the first 100 results by default, as the number of results can be quite large. Therefore you must use the limit and offset parameters as specified below to retrieve either all results, or a page at a time. This endpoint only returns basic information; more details can be retrieved from the endpoint specific to that event type, e.g. from /api/dispatches
The ID of the node.
An integer to offset the results by - to use for paging through the total results. If limit is specified, this is set to 0 by default.
An integer to limit the results by - to use for paging through the total results. By default this is 100, or the maximum number of results (whichever is lower).
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"description": "Network Support",
"duration": 3600,
"eventType": "DISPATCH",
"id": "b02067ae-d274-4d75-a00b-81a78184e987",
"ts": 1523430000
},
{
"description": "Network Support",
"duration": 3600,
"eventType": "DISPATCH",
"id": "64948b88-7af5-49a7-9b04-e0055419eaf8",
"ts": 1517547600
},
{
"description": "The Reposit System was commissioned.",
"eventType": "COMMISSIONED",
"ts": 1511204358
}
],
"meta": {
"count": 6,
"next": null,
"previous": "https://marketapi.repositpower.com/api/nodes/5b0a63855f2f4f819ccda226ca9d14e8/events?limit=3&offset=0"
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
All Power Stations
Returns a list of power stations associated with the currently authenticated user's organisation.
Optional. Set to true to include powerstation predictions in the response.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"description": null,
"id": "e7430ccb21644d7b9e0a443933f25c7f",
"name": "New Powerstation on dmarket",
"namePlate": {
"capacity": 17.1,
"power": 13
},
"nodes": [
"d4c58e243e694bba9e57cbdf42970faf",
"5320123eac5e4fd5baaea0bf442659bb"
]
},
{
"description": "A sample powerstation for dispatches",
"id": "3561817084be49c0b77d7d65903792ff",
"name": "Sample One",
"namePlate": {
"batteryCapacity": 29,
"batteryPower": 16.3,
"inverterPower": 18.5
},
"nodes": [
"5320123eac5e4fd5baaea0bf442659bb",
"e720e221204149ec9fa172583bcf4258",
"d4c58e243e694bba9e57cbdf42970faf"
]
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Create Power Station
Creates a new powerstation and returns its details.
The powerstation to create.
- name: string
-
A recognisable name to give this powerstation.
- description: string
-
An option description of this powerstation
- type: string , x ∈ { STATIC (default) , DYNAMIC }
-
The type of powerstation, either STATIC for a specified list of node IDs or DYNAMIC to suply a filter. When using DYNAMIC ans supplying a filter the powerstation will automatically add any nodes that match the filter criteria.
- nodes: string[]
-
An array of node IDs that belong to this powerstation if the powerstation type is STATIC. Otherwise this must be null
- filters: object
-
When specifying a DYNAMIC powerstation type you must also supply the filters that this powerstation is built from.
- postcodes: string[]
-
An array of postcodes that a node can be in for it to be included in this powerstation.
- state: string , x ∈ { ACT , NSW , NT , QLD , SA , TAS , VIC , WA }
-
The state or territory that a node must be in for it to be included in this powerstation.
Request Example
{
"name": "My First Powerstation",
"nodes": [
"f7b05c5632334403ac0895959f8d00e7",
"4f0cf230c728478da0822aa7f2d1f9ef",
"56af6a12ae9049298aaa38cde5781145"
]
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"description": null,
"id": "e7430ccb21644d7b9e0a443933f25c7f",
"name": "My First Powerstation",
"namePlate": {
"batteryCapacity": 17.1,
"batteryPower": 11,
"inverterPower": 13
},
"nodes": [
"f7b05c5632334403ac0895959f8d00e7",
"4f0cf230c728478da0822aa7f2d1f9ef",
"56af6a12ae9049298aaa38cde5781145"
]
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Get Single Power Station
Returns the details of the power station with the supplied UID.
The ID of the power station.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Invalid powerstation UID specified.
Response Example (200 OK)
{
"data": {
"description": null,
"id": "e7430ccb21644d7b9e0a443933f25c7f",
"name": "New Powerstation on dmarket",
"namePlate": {
"capacity": 17.1,
"power": 13
},
"nodes": [
"d4c58e243e694bba9e57cbdf42970faf",
"5320123eac5e4fd5baaea0bf442659bb"
]
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Response Example (404 Not Found)
{
"error": "Powerstation e7430ccb21644d7b9e0a443933f25c7f not found",
"status": "ERROR"
}
Update Power Station
Updates an existing powerstation specified by its id and returns its details.
The powerstation to update.
- name: string
- description: string
-
An option description of this powerstation
- nodes: string[]
-
A list of nodes IDs that make up this powerstation.
The ID of the power station.
Request Example
{
"name": "My First Powerstation",
"nodes": [
"f7b05c5632334403ac0895959f8d00e7",
"4f0cf230c728478da0822aa7f2d1f9ef",
"56af6a12ae9049298aaa38cde5781145"
]
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Invalid powerstation ID specified.
Response Example (200 OK)
{
"data": {
"description": null,
"id": "e7430ccb21644d7b9e0a443933f25c7f",
"name": "My First Powerstation",
"namePlate": {
"capacity": 17.1,
"power": 13
},
"nodes": [
"f7b05c5632334403ac0895959f8d00e7",
"4f0cf230c728478da0822aa7f2d1f9ef",
"56af6a12ae9049298aaa38cde5781145"
]
},
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Response Example (404 Not Found)
{
"error": "Powerstation e7430ccb21644d7b9e0a443933f25c7f not found",
"status": "ERROR"
}
Delete Power Station
Deletes a powerstation with with the supplied ID.
The ID of the power station.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Invalid powerstation ID specified.
Response Example (200 OK)
{
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Response Example (404 Not Found)
{
"error": "Powerstation e7430ccb21644d7b9e0a443933f25c7f not found",
"status": "ERROR"
}
Data - Downsampled
Return stored metrics for this powerstation or its nodes by downsampling.
The ID of the power station.
This returns downsampled data of metrics for this powerstation.
Timestamps in the response refer to the start of the period.
The metrics to retreive as a comma separated list of any combination of the following:
- meterVoltage - The average voltage (V) across all phases as measured at the meter/grid
- meterFrequence - The average frequency (Hz) across all phases as measured at the meter/grid
- meterPower - The total (sum) real power (kW) across all phases as measured at the meter/grid
- meterReactivePower - The total (sum) reactive power (var) across all phases as measure at the meter/grid
- solarPower - The total (sum) real power (kW) across all solar phases being generated by the PV array
- solarReactivePower - The total (sum) reactive power (var) across all solar phases being generated by the PV array
- remainingCharge - The total (sum) remaining charge (W) of the all batteries attached to this system
- batteryPower - The total (sum) real power (kW) measured at the battery of all batteries attached to this system
- inverterReactivePower - The total (sum) reactive power (var) measured at the inverter
- inverterApparentPower - The total (sum) apparent power (kW) measured at the inverter
- meterCurrent - The total (sum) current (Amp) measured at the meter/grid
All real power measurements follow a sink convention, while all reactive power measurements follow a source convention. Apparent power is always positive.
If ?format=nodes is specified then you may also request the data to be split by phases by adding a phase letter after the metric name, for example meterVoltage{a}. These can be combined to request multiple phases, for example meterVoltage{a|b}. Or you can request all phases with an asterix, for example meterVoltage{*}. Note that meterVoltage{*} is equivalent to meterVoltage{a|b|c}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
Phase suffixes may be used on the following metrics: meterVoltage, meterFrequency, meterPower, meterReactivePower, solarPower, solarReactivePower.
Please note that phases are currently arbitrary - we cannot determine which phase is red/white/blue. For all single phase installations the data will be available on phase a.
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
The downsampling interval in seconds
The format you which to retreive the results, either powerstation or nodes
The fill policy to use for empty values. By default any empty values for a deployment (i.e. a missing chuck of data) are ommitted. Specify fill=null to return all times with null values if the data is missing. Only null is supported.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
By powerstation
{
"data": [
{
"meterPower{a}": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
}
},
{
"meterPower{b}": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3857383972607584
}
},
{
"meterVoltage": {
"1505109600": 244.3849693243306,
"1505111400": 245.38573839726075
}
}
],
"status": "OK"
}
By nodes
{
"data": [
{
"meterPower{a}": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3580208346247673
}
}
},
{
"meterPower{b}": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3580208346247673
}
}
},
{
"meterVoltage": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 244.38573839726075,
"1505111400": 244.38062500105136
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 245.3849693243306,
"1505111400": 245.35802083462477
}
}
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Raw
Return stored metrics for this powerstation or its nodes without applying any downsampling.
The ID of the power station.
This returns raw data of metrics for this powerstation as collected by each device.
Timestamps in the response refer to the time at which the data was sampled.
No guarantees can be made about aligned data. e.g. meterPower may be collected at slightly different times per phases, and meterPower might be collected at a different time than meterVoltage.
The metrics to retreive as a comma separated list of any combination of the following:
- meterVoltage - The average voltage (V) across all phases as measured at the meter/grid
- meterFrequence - The average frequency (Hz) across all phases as measured at the meter/grid
- meterPower - The total (sum) real power (kW) across all phases as measured at the meter/grid
- meterReactivePower - The total (sum) reactive power (var) across all phases as measure at the meter/grid
- solarPower - The total (sum) real power (kW) across all solar phases being generated by the PV array
- solarReactivePower - The total (sum) reactive power (var) across all solar phases being generated by the PV array
- remainingCharge - The total (sum) remaining charge (W) of the all batteries attached to this system
- batteryPower - The total (sum) real power (kW) measured at the battery of all batteries attached to this system
- inverterReactivePower - The total (sum) reactive power (var) measured at the inverter
- inverterApparentPower - The total (sum) apparent power (kW) measured at the inverter
- meterCurrent - The total (sum) current (Amp) measured at the meter/grid
All real power measurements follow a sink convention, while all reactive power measurements follow a source convention. Apparent power is always positive.
If ?format=nodes is specified then you may also request the data to be split by phases by adding a phase letter after the metric name, for example meterVoltage{a}. These can be combined to request multiple phases, for example meterVoltage{a|b}. Or you can request all phases with an asterix, for example meterVoltage{*}. Note that meterVoltage{*} is equivalent to meterVoltage{a|b|c}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
Phase suffixes may be used on the following metrics: meterVoltage, meterFrequency, meterPower, meterReactivePower, solarPower, solarReactivePower.
Please note that phases are currently arbitrary - we cannot determine which phase is red/white/blue. For all single phase installations the data will be available on phase a.
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
The format you which to retreive the results, either powerstation or nodes
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
By powerstation
{
"data": [
{
"meterPower{a}": {
"1505108933": 0.3857383972607584,
"1505108937": 0.3806250010513597
}
},
{
"meterPower{b}": {
"1505108944": 0.3849693243306107
}
},
{
"meterVoltage": {
"1505108933": 243.3849693243306,
"1505108937": 244.3849693243306,
"1505108941": 245.38573839726075
}
}
],
"status": "OK"
}
By nodes
{
"data": [
{
"meterPower{a}": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505108933": 0.3857383972607584,
"1505108937": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505108934": 0.3849693243306107,
"1505108938": 0.3580208346247673
}
}
},
{
"meterPower{b}": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505108933": 0.3857383972607584,
"1505108937": 0.3806250010513597,
"1505108941": 0.3806250010513597,
"1505108943": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505108934": 0.3849693243306107,
"1505108936": 0.3580208346247673,
"1505108939": 0.3580208346247673
}
}
},
{
"meterVoltage": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505108937": 244.38573839726075,
"1505108940": 244.38062500105136
},
"e720e221204149ec9fa172583bcf4258": {
"1505108937": 245.3849693243306
}
}
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Data - Latest
Returns the latest value of the metrics for the powerstation or nodes up to a maximum age of data.
The ID of the power station.
This returns the single, most recent (up to a given max age) data point we have for each metric.
No timestamps are given for this data but you can be sure that no data point will be older than the maxAge query parameter. If you require specific timestamps please consider using the /data or /data/raw end points.
The metrics to retreive as a comma separated list of any combination of the following:
- meterVoltage - The average voltage (V) across all phases as measured at the meter/grid
- meterFrequence - The average frequency (Hz) across all phases as measured at the meter/grid
- meterPower - The total (sum) real power (kW) across all phases as measured at the meter/grid
- meterReactivePower - The total (sum) reactive power (var) across all phases as measure at the meter/grid
- solarPower - The total (sum) real power (kW) across all solar phases being generated by the PV array
- solarReactivePower - The total (sum) reactive power (var) across all solar phases being generated by the PV array
- remainingCharge - The total (sum) remaining charge (W) of the all batteries attached to this system
- batteryPower - The total (sum) real power (kW) measured at the battery of all batteries attached to this system
- inverterReactivePower - The total (sum) reactive power (var) measured at the inverter
- inverterApparentPower - The total (sum) apparent power (kW) measured at the inverter
- meterCurrent - The total (sum) current (Amp) measured at the meter/grid
All real power measurements follow a sink convention, while all reactive power measurements follow a source convention. Apparent power is always positive.
If ?format=nodes is specified then you may also request the data to be split by phases by adding a phase letter after the metric name, for example meterVoltage{a}. These can be combined to request multiple phases, for example meterVoltage{a|b}. Or you can request all phases with an asterix, for example meterVoltage{*}. Note that meterVoltage{*} is equivalent to meterVoltage{a|b|c}. If a phase is specified the above average/sum aggregation will not be applied and instead you will get back the value for just the specified phase(s).
Phase suffixes may be used on the following metrics: meterVoltage, meterFrequency, meterPower, meterReactivePower, solarPower, solarReactivePower.
Please note that phases are currently arbitrary - we cannot determine which phase is red/white/blue. For all single phase installations the data will be available on phase a.
The maximum age of the data that should be considered "latest" in seconds
The format you which to retreive the results, either powerstation or nodes
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
By powerstation
{
"data": [
{
"meterPower{a}": 0.3806250010513597
},
{
"meterPower{b}": 0.3849693243306107
},
{
"meterVoltage": 245.38573839726075
}
],
"status": "OK"
}
By nodes
{
"data": [
{
"meterPower{a}": {
"d4c58e243e694bba9e57cbdf42970faf": 0.3857383972607584,
"e720e221204149ec9fa172583bcf4258": 0.3580208346247673
}
},
{
"meterPower{b}": {
"d4c58e243e694bba9e57cbdf42970faf": 0.3806250010513597,
"e720e221204149ec9fa172583bcf4258": 0.3580208346247673
}
},
{
"meterVoltage": {
"d4c58e243e694bba9e57cbdf42970faf": 244.38062500105136,
"e720e221204149ec9fa172583bcf4258": 245.3849693243306
}
}
],
"status": "OK"
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Fleet Data - Downsampled
Return stored metrics for the entire fleet by downsampling.
This returns downsampled data of metrics for this powerstation.
Timestamps in the response refer to the start of the period.
The metrics to retreive as a comma separated list of any combination of the following:
- meterVoltage - The average voltage (V) across all phases as measured at the meter/grid
- meterFrequence - The average frequency (Hz) across all phases as measured at the meter/grid
- meterPower - The total (sum) real power (kW) across all phases as measured at the meter/grid
- meterReactivePower - The total (sum) reactive power (var) across all phases as measure at the meter/grid
- solarPower - The total (sum) real power (kW) across all solar phases being generated by the PV array
- solarReactivePower - The total (sum) reactive power (var) across all solar phases being generated by the PV array
- remainingCharge - The total (sum) remaining charge (W) of the all batteries attached to this system
- batteryPower - The total (sum) real power (kW) measured at the battery of all batteries attached to this system
- inverterReactivePower - The total (sum) reactive power (var) measured at the inverter
- inverterApparentPower - The total (sum) apparent power (kW) measured at the inverter
- meterCurrent - The total (sum) current (Amp) measured at the meter/grid
All real power measurements follow a sink convention, while all reactive power measurements follow a source convention. Apparent power is always positive.
Phase suffixes may be used on the following metrics: meterVoltage, meterFrequency, meterPower, meterReactivePower, solarPower, solarReactivePower.
Please note that phases are currently arbitrary - we cannot determine which phase is red/white/blue. For all single phase installations the data will be available on phase a.
The start timestamp of the period of data you wish to retreive
The end timestamp of the period of data you wish to retreive
The downsampling interval in seconds
The fill policy to use for empty values. By default any empty values for a deployment (i.e. a missing chuck of data) are ommitted. Specify fill=null to return all times with null values if the data is missing. Only null is supported.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
data
[
{
"meterPower": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 0.3857383972607584,
"1505111400": 0.3806250010513597
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 0.3849693243306107,
"1505111400": 0.3580208346247673
}
}
},
{
"meterVoltage": {
"d4c58e243e694bba9e57cbdf42970faf": {
"1505109600": 244.38573839726075,
"1505111400": 244.38062500105136
},
"e720e221204149ec9fa172583bcf4258": {
"1505109600": 245.3849693243306,
"1505111400": 245.35802083462477
}
}
}
]
status
"OK"
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Get curtailment constraints
Return the constraints of a Virtual Power Plant given a set of query parameters. The parameters correspond to fields to specify when creating a curtailment. This route should be used before executing a curtailment in order to determine the capabilities of that particular Virtual Power Plant.
The ID of the power station being curtailed.
The duration of the curtailment in seconds.
OK
Response Example (200 OK)
{
"data": {
"realPowerP": 55
}
}
All Curtailments
Returns a list of export curtailments. Use of this route without limit/offset parameters is deprecated.
A filter to apply to the returned export curtailments. One of UPCOMING, COMPLETED, INPROGRESS, CANCELLED. Leave empty to view all.
An integer to offset the results by - to use for paging through the total results. If limit is specified, this is 0 by default.
An integer to limit the results by - to use for paging through the total results. By default this is 100.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"component": "solar",
"id": "8380ecf0-e8b9-42c7-8bb5-2e75d13bf484",
"powerstation": "05bf160741c343ce869d0e9ec7b2ad88",
"request": {
"duration": 1800,
"realPowerP": -1.4,
"startTime": 1503026870
},
"state": "COMPLETED"
},
{
"component": "solar",
"id": "b2588e2c-5675-48aa-a835-9c887b52b16a",
"powerstation": null,
"request": {
"duration": 600,
"realPowerP": -1.4,
"startTime": 1503452085
},
"state": "COMPLETED"
}
]
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Create Curtailment
Create an export curtailment request.
The curtailment to create.
- component: string , x ∈ { grid , solar }
-
The component that is being curtailed.
- powerstation: string
-
The ID of the power station being curtailed.
- realPowerP: number
-
The real power limit to which the aggregated components are being curtailed (kW). This value must always be negative.
- startTime: number
-
A unix timestamp of the start time of the curtailment.
- duration: number
-
The duration of the curtailment in seconds.
Request Example
{
"component": "grid",
"powerstation": "cd0412cbc2e444d7a170520ba284091a",
"realPowerP": -1,
"startTime": 1504549112,
"duration": 21600
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"component": "grid",
"powerstation": "cd0412cbc2e444d7a170520ba284091a",
"realPowerP": -1,
"startTime": 1504549112,
"duration": 1505549112
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Get Single Curtailment
Returns detailed data about the export curtailment with the supplied curtailment ID.
The ID of the export curtailment.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"component": "grid",
"createdAt": 1504140351,
"currentResponse": {
"deploymentsAccepted": 1
},
"id": "aa2df12e-d628-45d6-8a90-2d9b6d6137aa",
"powerstation": "05bf160741c343ce869d0e9ec7b2ad88",
"request": {
"deploymentsRequested": 1,
"duration": 21600,
"realPowerP": -1,
"startTime": 1504549112
},
"nodes": [
"d4c58e243e694bba9e57cbdf42970faf",
"e720e221204149ec9fa172583bcf4258"
],
"state": "UPCOMING"
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Cancel Curtailment
Cancels a scheduled curtailment
The ID of the export curtailment.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"status": "OK"
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Get Curtailment Setpoint
Get the current setpoint for default curtailment behaviour.
The ID of the powerstation to query.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
A curtailment setpoint for the requested powerstation cannot be found. Either the powerstation has not been created or it is has not yet received a valid setpoint.
Response Example (200 OK)
{
"data": {
"powerstation": "eb014defdded417e8b6a9d7ed078cedf",
"meterRealPowerP": 0,
"inverterRealPowerP": -24
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Response Example (404 Not Found)
{
"message": "No setpoint for powerstation '6442adf69e004405808542b687bcf494' found.",
"status": "NOT FOUND"
}
Change Curtailment Setpoint
Change the setpoint for default curtailment behaviour.
The updated curtailment setpoint.
- powerstation: string
-
The ID of the power station being updated.
- meterRealPowerP: number
-
The real power limit to which the aggregated grid output is being curtailed by default (kW). A null entry removes any constraint from the component. Other values must always be negative.
- inverterRealPowerP: number
-
The real power limit to which the aggregated inverter output is being curtailed by default (kW). A null entry removes any constraint from the component. Other values must always be negative.
Request Example
{
"powerstation": "cd0412cbc2e444d7a170520ba284091a",
"meterRealPowerP": 0,
"inverterRealPowerP": -1.3
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"status": "OK"
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Curtailment Heartbeat
Send a curtailment heartbeat to a powerstation. Nodes receiving a heartbeat will return to their default curtailment behaviour if the heartbeat is lost.
The updated curtailment setpoint.
- powerstation: string
-
The ID of the power station being heartbeated.
Request Example
{
"powerstation": "cd0412cbc2e444d7a170520ba284091a"
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"status": "OK"
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
All Dispatches
Return all dispatches/support requests with their basic details. Use of this route without offset/limit parameters is deprecated.
A filter to apply to the returned dispatches/support requests. One of UPCOMING, COMPLETED, INPROGRESS or left empty to view all.
An integer to offset the results by - to use for paging through the total results. By default this is 0
An integer to limit the results by - to use for paging through the total results. By default this is 100.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"component": "battery",
"id": "bf6e5c09-9e25-4ff0-a2af-d81185e4abc4",
"powerstation": "05bf160741c343ce869d0e9ec7b2ad88",
"request": {
"duration": 3600,
"powerFactor": 0.7,
"powerFactorLeadLag": "LEADING",
"realPowerP": 38.2,
"startTime": 1497336240
},
"state": "COMPLETED"
}
]
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Create Dispatch
Creates a new dispatch with the specified details
The dispatch to create.
- powerstation: string
-
The id of the powerstation to dispatch
- startTime: integer
-
The unix timestamp at which this dispatch should start.
- duration: integer
-
The duration of the request in seconds.
- realPowerP: number
-
The amount of real power to be dispatched in kW
- powerFactor: number
-
The requested power factor for this dispatch/support request. This is only accepted if your account has been enabled for power factor/voltage control.
- powerFactorLeadLag: string , x ∈ { LEADING , LAGGING }
-
Used only when power_factor is also present and indicates if the specified power factor is LEADING or LAGGING. This is only accepted if your account has been enabled for power factor/voltage control.
Request Example
{
"powerstation": "57dfc43d3b9a4c99b05c7794f5d6abb3",
"startTime": 1505214000,
"duration": 28800,
"realPowerP": 2.6,
"powerFactor": 0.7,
"powerFactorLeadLag": "LAGGING"
}
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": {
"id": "0c127211-bc31-4d11-8f32-19008c75cf80",
"status": "OK"
}
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Get Single Dispatch
Return detailed data about a specific dispatch/support request as specified by the dispatchId in the URL.
The ID of the dispatch/support request for which to fetch details.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
{
"data": [
{
"component": "battery",
"createdAt": 1497336240,
"currentResponse": {
"deploymentsAccepted": 0,
"deploymentsResponded": 0,
"powerFactor": 0.7,
"powerFactorLeadLag": "LEADING",
"realPowerP": 38.2,
"rejectedRealPowerP": 0.21
},
"id": "bf6e5c09-9e25-4ff0-a2af-d81185e4abc4",
"powerstation": "05bf160741c343ce869d0e9ec7b2ad88",
"prediction": {
"data": [
-5.960000001858923e-8,
-5.960000001858923e-8,
-5.960000001858923e-8,
-5.960000001858923e-8,
-2.97999999121501e-8,
-8.94000000695172e-8,
-1.49000000115862e-7,
-2.98000000231724e-8,
-1.489999998938174e-7,
-2.98000000231724e-8,
-8.93999999584949e-8,
-2.9700000014898364e-8,
-8.940000001400605e-8
],
"deltaSeconds": 1800,
"startTime": 1505181600
},
"request": {
"deploymentsRequested": 6,
"duration": 3600,
"powerFactor": 0.7,
"powerFactorLeadLag": "LEADING",
"realPowerP": 38.2,
"startTime": 1497336240
},
"nodes": [
"f7b05c5632334403ac0895959f8d00e7",
"4f0cf230c728478da0822aa7f2d1f9ef",
"56af6a12ae9049298aaa38cde5781145",
"3b904d6c1a8549f3adc0b0dd4a7e9fc6",
"50cafb993f54499cb03396f236dfee6d",
"f93c98b6df01472283bc9fbb5d7a6d8d",
"4858794e8ab3410cb523fcf03e4cc573"
],
"state": "COMPLETED"
}
]
}
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Management
End-points relating to the management of your Reposit Fleet and marketapi account.
View a list of all users assigned to your marketapi account
Returns a list of users that are associated with your marketapi account. This response may vary depending on the level of permissions you have. Users with the "fleet.my_reposit.users" permission will be able to see contact details for users. Other users will be able to see names and IDs only.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
[
{
"data": [
{
"id": "ed97b54ef14a427abe04bb01b25ffe2b",
"givenName": "Jane",
"surname": "Bloggs",
"email": "janeb@email.com"
},
{
"id": "fb0312c86cd04c1385f46044fee09e8d",
"givenName": "Joe",
"surname": "Bloggs",
"email": "j.bloggs@email.com"
}
]
}
]
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}
Users
End-points relating to the management of your Reposit Fleet and marketapi users.
View a list of all users assigned to your marketapi account
Returns a list of users that are associated with your marketapi account. This response may vary depending on the level of permissions you have. Users with the "fleet.my_reposit.users" permission will be able to see contact details for users. Other users will be able to see names and IDs only.
OK
Invalid access token. If the error code in the returned JSON is expired_token, it means you need to request a new access token through the /auth/login/ route using your username and password.
Response Example (200 OK)
[
{
"data": [
{
"id": "ed97b54ef14a427abe04bb01b25ffe2b",
"givenName": "Jane",
"surname": "Bloggs",
"email": "janeb@email.com"
},
{
"id": "fb0312c86cd04c1385f46044fee09e8d",
"givenName": "Joe",
"surname": "Bloggs",
"email": "j.bloggs@email.com"
}
]
}
]
Response Example (401 Unauthorized)
{
"error": "expired_token",
"message": "The token you provided has expired.",
"status": "error"
}