openapi: 3.2.0
info:
title: Reference System Details And Telemetry API
description: Integrate the VPP API into your application
version: 1.1.0
servers:
- url: https://vpp.enphaseenergy.com
tags:
- name: System Details And Telemetry
description: System Details And Telemetry API
paths:
/api/v1/systems/{site_id}/{serial_no}/evse_telemetry:
get:
tags:
- System Details And Telemetry
summary: Retrieves telemetry data of the EVSE charger at regular intervals
description: 'Retrieves telemetry data of the EVSE charger at regular intervals.
If no start_at is specified, defaults to midnight today, in the timezone of the system. If the start_at specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_at.
The end_at is calculated as the minimum of the time of the request and (start time + granularity).
The meaning of granularity is as follow:
If granularity is 15mins, maximum 1 intervals will appear in response. If granularity is day, maximum 96 intervals will appear in response where each interval is of 15 mins duration.
The requested start date must be within 2 years from current date.
'
operationId: getDeviceLevelEVSETelemetry
parameters:
- name: site_id
in: path
description: Unique Id of the site
required: true
schema:
type: string
- name: serial_no
in: path
description: Serial Number of the EV Charger
required: true
schema:
type: string
- name: start_at
in: query
description: 'Start time for fetching the telemetry data in Epoch time format. Defaults to midnight
'
required: false
schema:
type: integer
format: int64
- name: start_date
in: query
description: "Start date for fetching the telemetry data in yyyy-mm-dd format\n If no start_date is specified, defaults to midnight today, in the timezone of the system.\n"
required: false
schema:
type: string
- name: interval_duration
in: query
description: 'Size of the interval. Can be 5mins, or 15mins. Site must be configured to 5 min telemetry for this to be supported. Defaults to 15mins
'
required: false
schema:
type: string
default: 15mins
- name: granularity
in: query
description: 'The granularity of the telemetry data. Possible values are ''week'', ''day'', ''15mins'', ''5mins''. Default is ''day''
'
required: false
schema:
type: string
default: day
- name: end_date
in: query
description: 'End Date in YYYY-MM-DD format. If granularity is not provided, then defaults to current date
'
required: false
schema:
type: string
- name: end_at
in: query
description: 'End time for fetching the telemetry data in Epoch time format.
One can also use end_date in place of end_at for passing the end date as String date format YYYY-MM-DD.
Only one of granularity and end_at/end_date should be passed.
If granularity is not provided, then defaults to current time.
'
required: false
schema:
type: integer
format: int64
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Successfully retrieved device level EVSE telemetry data
content:
'*/*':
schema:
$ref: '#/components/schemas/DeviceLevelEVSETelemetryResponse'
examples:
EVSETelemetryExample:
summary: Response with 5-minute interval energy data
description: EVSETelemetryExample
value:
system_id: 698905955
granularity: day
interval_duration: 5mins
start_at: 1496526300
end_at: 1496527320
items: intervals
intervals:
- end_at: 1496527200
wh_consumed: 40.2
- end_at: 1496527260
wh_consumed: 30.8
- end_at: 1496527320
wh_consumed: 10.1
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Granularity value must be one of 'week', 'day', '15mins', '5mins'\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Interval duration must be one of '5mins', '15mins'\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/{serial_no}/evse_lifetime:
get:
tags:
- System Details And Telemetry
summary: Retrieves daily time-series telemetry data of the EVSE charger
description: 'Retrieves daily time-series telemetry data of the EVSE charger
The number of data points returned in the response corresponds to days spanned between the start_date and end_date parameter mentioned in the request.
Requested start_date of the time series data defaults to the system’s operational date. If the start_date is earlier than the system’s operational_date, then the response data begins with the system operational_date as start_date.
Pass as String date format YYYY-MM-DD.If end_date is not specified, then it defaults to today.
'
operationId: getDeviceLevelEVSELifeTimeTelemetry
parameters:
- name: site_id
in: path
description: Unique Id of the site
required: true
schema:
type: string
- name: serial_no
in: path
description: Serial Number of the EV Charger
required: true
schema:
type: string
- name: start_date
in: query
description: 'Start date for fetching the daily time-series data. Pass as String date format yyyy-mm-dd. Defaults to the system’s operational date
'
required: false
schema:
type: string
- name: end_date
in: query
description: 'End date for fetching the daily time-series data. Pass as String date format yyyy-mm-dd. Defaults to today.
'
required: false
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Retrieved daily time-series telemetry data of the EVSE charger
content:
'*/*':
schema:
$ref: '#/components/schemas/EVSELifeTimeTelemetryResponse'
examples:
EVSELifeTimeExample:
summary: Daily EVSE energy consumption data
description: EVSELifeTimeExample
value:
system_id: 698905955
start_date: '2024-11-22'
end_date: '2024-11-28'
consumption:
- 40.1
- 35.3
- 40.4
- 20.6
- 15.2
- 10.3
- 2.9
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/telemetry/production_micro:
get:
tags:
- System Details And Telemetry
summary: Get telemetry for all production micros for a site
description: 'Retrieves telemetry for all the production micros of a system.
If no start_at is specified, defaults to midnight today, in the timezone of the system. If the start_at specified is earlier than the system''s first reported date, then midnight of the system''s first reported date is considered as start_at.
The end_at is calculated as the minimum of the time of the request and (start time + granularity).
The meaning of granularity is as follow:
If granularity is 15mins, maximum 3 intervals will appear in response. If granularity is day, maximum 288 intervals will appear in response where each interval is of 5 mins duration.
Default interval duration is 5mins. 15mins interval duration is also supported.
The requested start date must be within 2 years from current date.
By default start_at will appear in response. If start_date parameter is passed in the url, then start_date field will appear in response.
By default end_at will appear in response. If end_date parameter is passed in the url then end_date field will appear in response.
'
operationId: getProductionMicroTelemetry
parameters:
- name: site_id
in: path
required: true
schema:
type: string
- name: start_date
in: query
required: false
schema:
type: string
- name: start_at
in: query
description: Start time for fetching the telemetry data in Epoch time format. Alternatively one can use start_date in place of start_at for passing the start date as String in YYYY-MM-DD format. By default start_at will appear in response. If start_date parameter is passed in the url, then start_date field will appear in response.
required: false
schema:
type: integer
format: int32
- name: end_at
in: query
required: false
schema:
type: integer
format: int32
- name: end_date
in: query
required: false
schema:
type: string
- name: granularity
in: query
description: 'The granularity of the telemetry data. Possible values are ''week'', ''day'', ''15mins''. Default is ''day''
Available values : 15mins, day, week
'
required: false
schema:
type: string
- name: interval_duration
in: query
description: 'Size of the interval. Possible values are ''5mins'', ''15mins''. Defaults to ''5mins''
'
required: false
schema:
type: string
default: 5mins
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Telemetry for all production micros
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsProductionMicroResponse'
examples:
UnixTimestampExample:
summary: Example using start_at and end_at timestamps
description: UnixTimestampExample
value:
system_id: 698905955
granularity: day
total_devices: 9
start_at: 1496526300
end_at: 1496528300
items: intervals
intervals:
- end_at: 1384122700
devices_reporting: 1
powr: 30
enwh: 40
- end_at: 1384122740
devices_reporting: 1
powr: 20
enwh: 40
meta:
status: normal
last_report_at: 1445619615
last_energy_at: 1445619033
operational_at: 1357023600
ISODateExample:
summary: Example using ISO date fields
description: ISODateExample
value:
system_id: 698905955
granularity: day
total_devices: 9
start_date: '2024-09-22T00:00:00-04:00'
end_date: '2024-09-23T00:00:00-04:00'
items: intervals
intervals:
- end_at: 1384122700
devices_reporting: 1
powr: 30
enwh: 40
- end_at: 1384122740
devices_reporting: 1
powr: 20
enwh: 40
meta:
status: normal
last_report_at: 1445619615
last_energy_at: 1445619033
operational_at: 1357023600
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one.\",\n \"additionalInfo\": null,\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/telemetry/production_meter_readings:
get:
tags:
- System Details And Telemetry
summary: To retrieve the last known reading of each production meter on the system as of the requested time
description: 'Returns the last known reading of each production meter on the system as of the requested time,
regardless of whether the meter is currently in service or retired. Read_at is the time at which the reading was taken,
and is always less than or equal to the requested end_at. Commonly, the reading will be within 30 minutes of the requested end_at.
However, larger deltas can occur and do not necessarily mean there is a problem with the meter or the system.
Systems that are configured to report infrequently can show large deltas on all meters, especially when end_at is close to the current time.
Meters that have been retired from a system will show an end_at that doesn’t change, and that eventually is far away from the current time.
'
operationId: getProductionMeterReadings
parameters:
- name: site_id
in: path
description: Unique Id of the site
required: true
schema:
type: string
- name: end_at
in: query
description: 'End of reporting period in Unix epoch time. If no end is specified, defaults to the time of the request.
If the end is later than the last reported interval the response data ends with the last reported interval
'
required: false
schema:
type: integer
format: int64
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Retrieved the last known reading of each production meter on the system as of the requested time.
content:
'*/*':
schema:
$ref: '#/components/schemas/ProductionMeterReadings'
examples:
ProductionMeterReadingsExample:
summary: List of last known reading of each production meter on the system as of the requested time.
description: ProductionMeterReadingsExample
value:
system_id: 66
meter_readings:
- serial_num: 123123123123EIM2
value: 6180635
read_at: 1473901200
meta:
status: normal
last_report_at: 1473902079
last_energy_at: 1473901200
operational_at: 1357023600
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Not Authorized\",\n \"additionalInfo\": \"System not found for {:id=>\"1\"}\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Failed to parse date 1613543106\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/telemetry/production_meter:
get:
tags:
- System Details And Telemetry
summary: Get telemetry for all production meters for a site
description: 'Retrieves telemetry for all the production meters of a system.
If no start_at is specified, defaults to midnight today, in the timezone of the system. If the start_at specified is earlier than the system''s first reported date, then midnight of the system''s first reported date is considered as start_at.
The end_at is calculated as the minimum of the time of the request and (start time + granularity).
The meaning of granularity is as follow:
If granularity is 15mins, maximum 1 intervals will appear in response. If granularity is day, maximum 96 intervals will appear in response where each interval is of 15 mins duration.
The requested start date must be within 2 years from current date.
By default start_at will appear in response. If start_date parameter is passed in the url, then start_date field will appear in response.
By default end_at will appear in response. If end_date parameter is passed in the url then end_date field will appear in response."
'
operationId: getProductionMeterTelemetry
parameters:
- name: site_id
in: path
required: true
schema:
type: string
- name: start_date
in: query
required: false
schema:
type: string
- name: start_at
in: query
description: Start time for fetching the telemetry data in Epoch time format. Alternatively one can use start_date in place of start_at for passing the start date as String date format YYYY-MM-DD. By default start_at will appear in response. If start_date parameter is passed in the url, then start_date field will appear in response.
required: false
schema:
type: integer
format: int32
- name: end_at
in: query
required: false
schema:
type: integer
format: int32
- name: end_date
in: query
required: false
schema:
type: string
- name: interval_duration
in: query
description: Possible values are 5mins & 15mins. 5 mins interval_duration is supported only for the sites that are configured for 5 mins telemetry
required: false
schema:
type: string
- name: granularity
in: query
description: 'The granularity of the telemetry data. Possible values are ''week'', ''day'', ''15mins''. Default is ''day''
Available values : 15mins, day, week
'
required: false
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Telemetry for all production meters
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsProductionMeterResponse'
examples:
UnixTimestampExample:
summary: Example using Unix timestamps
description: UnixTimestampExample
value:
system_id: 698905955
granularity: day
total_devices: 9
start_at: 1496526300
end_at: 1496529300
items: intervals
intervals:
- end_at: 1384122700
devices_reporting: 1
wh_del: 40
- end_at: 1384122740
devices_reporting: 1
wh_del: 40
ISODateExample:
summary: Example using ISO 8601 date fields
description: ISODateExample
value:
system_id: 698905955
granularity: day
total_devices: 9
start_date: '2024-09-22T00:00:00-04:00'
end_date: '2024-09-23T00:00:00-04:00'
items: intervals
intervals:
- end_at: 1384122700
devices_reporting: 1
wh_del: 40
- end_at: 1384122740
devices_reporting: 1
wh_del: 40
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one.\",\n \"additionalInfo\": null,\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/telemetry/import:
get:
tags:
- System Details And Telemetry
summary: Get the import telemetry data per interval for a given site
description: "Retrieves energy imported from grid in regular intervals.\n If no start_at is specified, defaults to midnight today, in the timezone of the system.\n If the start_at specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_at.\n The end_at is calculated as the minimum of the time of the request and (start time + granularity). The meaning of granularity is as follow: If granularity is 15mins, maximum 1 intervals will appear in response.\n If granularity is day, maximum 96 intervals will appear in response where each interval is of 15 mins duration.\n The requested start date must be within 2 years from current date. Empty list will be returned if the last interval < requested start time < current time."
operationId: getImportTelemetry
parameters:
- name: site_id
in: path
description: Unique id of the site or site_id
required: true
schema:
type: integer
format: int32
- name: start_at
in: query
description: Start time in epoch format
required: false
schema:
type: integer
format: int32
- name: start_date
in: query
description: Start date in yyyy-mm-dd format
required: false
schema:
type: string
- name: end_at
in: query
description: End time in epoch format
required: false
schema:
type: integer
format: int32
- name: end_date
in: query
description: End date in yyyy-mm-dd format
required: false
schema:
type: string
- name: granularity
in: query
description: Granularity - week, day, 15mins
required: false
schema:
type: string
default: day
- name: interval_duration
in: query
description: interval duration - 15mins, 5mins
required: false
schema:
type: string
default: 15mins
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Import telemetry data for site
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsTelemetryImportResponse'
examples:
ImportTelemetryEpochExample:
summary: Epoch timestamp-based telemetry
description: ImportTelemetryEpochExample
value:
site_id: 1
start_at: 1720190600
end_at: 1820190600
granularity: week
total_devices: 2
intervals:
- end_at: 1720190615
wh_imported: 2
- end_at: 1720190630
wh_imported: 4
ImportTelemetryDateExample:
summary: ISO 8601 date-based telemetry
description: ImportTelemetryDateExample
value:
site_id: 1
start_date: '2024-09-22T00:00:00-04:00'
end_date: '2024-09-23T00:00:00-04:00'
granularity: week
total_devices: 2
intervals:
- end_at: 1720190615
wh_imported: 2
- end_at: 1720190630
wh_imported: 4
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"message\": \"Forbidden\"\n}"
case-1:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/telemetry/export:
get:
tags:
- System Details And Telemetry
summary: Get the export telemetry data per interval for a given site
description: "Retrieves energy exported to grid in regular intervals.\n If no start_at is specified, defaults to midnight today, in the timezone of the system. If the start_at specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_at.\n The end_at is calculated as the minimum of the time of the request and (start time + granularity). The meaning of granularity is as follow: If granularity is 15mins, maximum 1 intervals will appear in response.\n If granularity is day, maximum 96 intervals will appear in response where each interval is of 15 mins duration. The requested start date must be within 2 years from current date. Empty list will be returned if the last interval < requested start time < current time."
operationId: getExportTelemetry
parameters:
- name: site_id
in: path
description: Unique id of the site or site_id
required: true
schema:
type: integer
format: int32
- name: start_at
in: query
description: Start time in epoch format
required: false
schema:
type: integer
format: int32
- name: start_date
in: query
description: Start date in yyyy-mm-dd format
required: false
schema:
type: string
- name: end_at
in: query
description: End time in epoch format
required: false
schema:
type: integer
format: int32
- name: end_date
in: query
description: End date in yyyy-mm-dd format
required: false
schema:
type: string
- name: granularity
in: query
description: Granularity - week, day, 15mins
required: false
schema:
type: string
default: day
- name: interval_duration
in: query
description: interval duration - 15mins, 5mins
required: false
schema:
type: string
default: 15mins
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Export telemetry data for site
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsTelemetryExportResponse'
examples:
ExportTelemetryEpochExample:
summary: Epoch timestamp-based export telemetry
description: ExportTelemetryEpochExample
value:
site_id: 1
start_at: 1720190600
end_at: 1820190600
granularity: week
total_devices: 2
intervals:
- end_at: 1720190615
wh_exported: 2
- end_at: 1720190630
wh_exported: 4
ExportTelemetryDateExample:
summary: ISO 8601 date-based export telemetry
description: ExportTelemetryDateExample
value:
site_id: 1
start_date: '2024-09-22T00:00:00-04:00'
end_date: '2024-09-23T00:00:00-04:00'
granularity: week
total_devices: 2
intervals:
- end_at: 1720190615
wh_exported: 2
- end_at: 1720190630
wh_exported: 4
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"message\": \"Forbidden\"\n}"
case-1:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/telemetry/consumption_meter_readings:
get:
tags:
- System Details And Telemetry
summary: To retrieve the last known reading of each consumption meter on the system as of the requested time
description: 'Returns the last known reading of each consumption meter on the system as of the requested time,
regardless of whether the meter is currently in service or retired. Read_at is the time at which the reading was taken,
and is always less than or equal to the requested end_at. Commonly, the reading will be within 30 minutes of the requested end_at.
However, larger deltas can occur and do not necessarily mean there is a problem with the meter or the system.
Systems that are configured to report infrequently can show large deltas on all meters, especially when end_at is close to the current time.
Meters that have been retired from a system will show an end_at that doesn’t change, and that eventually is far away from the current time.
'
operationId: getConsumptionMeterReadings
parameters:
- name: site_id
in: path
description: Unique Id of the site
required: true
schema:
type: string
- name: end_at
in: query
description: 'End of reporting period in Unix epoch time. If no end is specified, defaults to the time of the request.
If the end is later than the last reported interval the response data ends with the last reported interval
'
required: false
schema:
type: integer
format: int64
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Retrieved the last known reading of each consumption meter on the system as of the requested time.
content:
'*/*':
schema:
$ref: '#/components/schemas/ConsumptionMeterReadings'
examples:
ConsumptionMeterReadingsExample:
summary: List of last known reading of each consumption meter on the system as of the requested time.
description: ConsumptionMeterReadingsExample
value:
system_id: 66
meter_readings:
- serial_num: 123123123123EIM2
value: 6180635
read_at: 1473901200
meta:
status: normal
last_report_at: 1473902079
last_energy_at: 1473901200
operational_at: 1357023600
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Not Authorized\",\n \"additionalInfo\": \"System not found for {:id=>\"1\"}\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Failed to parse date 1613543106\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/telemetry/consumption_meter:
get:
tags:
- System Details And Telemetry
summary: Get telemetry for all consumption meters for a site
description: 'Retrieves telemetry for all the consumption meters of a system. If the start_at specified is earlier than the system''s first reported date, then midnight of the system''s first reported date is considered as start_at. The end_at is calculated as the minimum of the time of the request and (start time + granularity).
The meaning of granularity is as follow: If granularity is 15mins, maximum 1 interval will appear in response.
If granularity is day, maximum 96 intervals will appear in response where each interval is of 15 mins duration.
The requested start date must be within 2 years from current date. By default start_at will appear in response. If start_date parameter is passed in the url, then start_date field will appear in response. By default end_at will appear in response. If end_date parameter is passed in the url then end_date field will appear in response.
'
operationId: getConsumptionMeterTelemetry
parameters:
- name: site_id
in: path
required: true
schema:
type: string
- name: start_date
in: query
required: false
schema:
type: string
- name: start_at
in: query
description: Requested start time for telemetry data in Epoch time format. Alternatively one can use start_date in place of start_at for passing the start date as String in YYYY-MM-DD format. If no start_at is specified, defaults to midnight today, in the timezone of the system. If the start_at specified is earlier than the system's first reported date, then the system first reported date is considered as start_at. By default start_at will appear in response. If start_date parameter is passed in the url, then start_date field will appear in response.
required: false
schema:
type: integer
format: int32
- name: end_at
in: query
required: false
schema:
type: integer
format: int32
- name: end_date
in: query
required: false
schema:
type: string
- name: interval_duration
in: query
description: Possible values are 5mins & 15mins. 5 mins interval_duration is supported only for the sites that are configured for 5 mins telemetry
required: false
schema:
type: string
- name: granularity
in: query
description: 'The granularity of the telemetry data. Possible values are ''week'', ''day'', ''15mins''. Default is ''day''
Available values : 15mins, day, week
'
required: false
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Successfully retrieved consumption telemetry details
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsConsumptionMeterResponse'
examples:
UnixTimestampExample:
summary: Example with Unix timestamps
description: UnixTimestampExample
value:
system_id: 698905955
granularity: day
total_devices: 9
start_at: 1496526300
end_at: 1496529300
items: intervals
intervals:
- end_at: 1384122700
devices_reporting: 1
enwh: 40
- end_at: 1384122740
devices_reporting: 1
enwh: 40
meta:
status: normal
last_report_at: 1445619615
last_energy_at: 1445619033
operational_at: 1357023600
ISODateExample:
summary: Example with ISO 8601 date-time fields
description: ISODateExample
value:
system_id: 698905955
granularity: day
total_devices: 9
start_date: '2024-09-22T00:00:00-04:00'
end_date: '2024-09-23T00:00:00-04:00'
items: intervals
intervals:
- end_at: 1384122700
devices_reporting: 1
enwh: 40
- end_at: 1384122740
devices_reporting: 1
enwh: 40
meta:
status: normal
last_report_at: 1445619615
last_energy_at: 1445619033
operational_at: 1357023600
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one.\",\n \"additionalInfo\": null,\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/telemetry/battery:
get:
tags:
- System Details And Telemetry
summary: Get telemetry for all batteries for a site
description: 'Retrieves telemetry for all the batteries of a system.
If no start_at is specified, defaults to midnight today, in the timezone of the system. If the start_at specified is earlier than the system''s first reported date, then midnight of the system''s first reported date is considered as start_at.
The end_at is calculated as the minimum of the time of the request and (start time + granularity).
The meaning of granularity is as follow:
If granularity is 15mins, maximum 1 interval will appear in response. If granularity is day, maximum 96 intervals will appear in response where each interval is of 15 mins duration.
The requested start date must be within 2 years from current date.
By default start_at will appear in response. If start_date parameter is passed in the url, then start_date field will appear in response.
By default end_at will appear in response. If end_date parameter is passed in the url then end_date field will appear in response."
'
operationId: getBatteryTelemetry
parameters:
- name: site_id
in: path
required: true
schema:
type: string
- name: start_date
in: query
required: false
schema:
type: string
- name: start_at
in: query
description: Start time for fetching the telemetry data in Epoch time format. Alternatively one can use start_date in place of start_at for passing the start date as String date format YYYY-MM-DD. By default start_at will appear in response. If start_date parameter is passed in the url, then start_date field will appear in response.
required: false
schema:
type: integer
format: int32
- name: end_at
in: query
required: false
schema:
type: integer
format: int32
- name: end_date
in: query
required: false
schema:
type: string
- name: interval_duration
in: query
description: Possible values are 5mins & 15mins. 5 mins interval_duration is supported only for the sites that are configured for 5 mins telemetry
required: false
schema:
type: string
- name: granularity
in: query
description: 'The granularity of the telemetry data. Possible values are ''week'', ''day'', ''15mins''. Default is ''day''
Available values : 15mins, day, week
'
required: false
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Telemetry for batteries
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsBatteryTelemetryResponse'
examples:
UnixTimestampExample:
summary: Example using start_at and end_at timestamps
description: UnixTimestampExample
value:
system_id: 698905955
soc: 89.5
soh: 99.1
capacity_wh: 3720
last_report_at: 1496526300
granularity: day
total_devices: 9
start_at: 1496526300
end_at: 1496529300
items: intervals
intervals:
- end_at: 1384122700
charge:
enwh: 40
devices_reporting: 1
discharge:
enwh: 0
devices_reporting: 4
soc:
percent: 25.0
devices_reporting: 4
ISODateExample:
summary: Example using ISO start_date and end_date fields
description: ISODateExample
value:
system_id: 698905955
soc: 89.5
soh: 99.1
capacity_wh: 3720
last_report_at: 1496526300
granularity: day
total_devices: 9
start_date: '2024-09-22T00:00:00-04:00'
end_date: '2024-09-23T00:00:00-04:00'
items: intervals
intervals:
- end_at: 1384122700
charge:
enwh: 40
devices_reporting: 1
discharge:
enwh: 0
devices_reporting: 4
soc:
percent: 25.0
devices_reporting: 4
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one.\",\n \"additionalInfo\": null,\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/summary:
get:
tags:
- System Details And Telemetry
summary: Get a site summary
description: Retrieves site summary for a given system. Only site summary of active enrollments will be returned in the response.
operationId: getSiteSummary
parameters:
- name: site_id
in: path
required: true
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Successfully retrieved site summary
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemSummaryResponse'
examples:
Site Summary Example:
description: Site Summary Example
value:
system_id: 701045938
current_power: 0
energy_lifetime: 0
energy_today: 0
last_interval_end_at: 1699574281
last_report_at: 1699574290
modules: 10
operational_at: 1696851428
size_w: 3490
source: microinverters
status: normal
summary_date: '2023-11-21'
battery_charge_w: 1280
battery_discharge_w: 1280
battery_capacity_wh: 3360
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Invalid site id. Please enter correct site id.\",\n \"additionalInfo\": \"For input string: XXX\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/storm_guard_settings:
get:
tags:
- System Details And Telemetry
summary: Get the current storm guard settings of a site
description: 'Returns the current storm guard settings of a system
'
operationId: getStormGuardSettings
parameters:
- name: site_id
in: path
required: true
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Storm Guard settings for the site
content:
'*/*':
schema:
$ref: '#/components/schemas/StormGuardSettingsResponse'
examples:
StormGuardExample:
summary: Example Storm Guard settings response
description: StormGuardExample
value:
system_id: 1765
storm_guard_status: enabled
storm_alert: 'false'
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/storage_meter_readings:
get:
tags:
- System Details And Telemetry
summary: To retrieve the last known reading of each storage meter on the system as of the requested time
description: 'Returns the last known reading of each storage meter on the system as of the requested time,
regardless of whether the meter is currently in service or retired. Read_at is the time at which the reading was taken,
and is always less than or equal to the requested end_at. Commonly, the reading will be within 30 minutes of the
requested end_at. However, larger deltas can occur and do not necessarily mean there is a problem with the meter or the system.
Systems that are configured to report infrequently can show large deltas on all meters, especially when end_at is close to the current time.
Meters that have been retired from a system will show an end_at that doesn’t change, and that eventually is far away from the current time.
'
operationId: getStorageMeterReadings
parameters:
- name: site_id
in: path
description: Unique Id of the site
required: true
schema:
type: string
- name: end_at
in: query
description: 'End of reporting period in Unix epoch time. If no end is specified, defaults to the time of the request.
If the end is later than the last reported interval the response data ends with the last reported interval
'
required: false
schema:
type: integer
format: int64
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Retrieved the last known reading of each storage meter on the system as of the requested time.
content:
'*/*':
schema:
$ref: '#/components/schemas/StorageMeterReadings'
examples:
StorageMeterReadingsExample:
summary: List of last known reading of each storage meter on the system as of the requested time.
description: StorageMeterReadingsExample
value:
system_id: 66
meter_readings:
- serial_num: 123123123123EIM4
value_charged: 724234
value_discharged: 387700
read_at: 1473901200
meta:
status: normal
last_report_at: 1473902079
last_energy_at: 1473901200
operational_at: 1357023600
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Not Authorized\",\n \"additionalInfo\": \"System not found for {:id=>\"1\"}\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Failed to parse date 1613543106\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/site_open_events:
get:
tags:
- System Details And Telemetry
summary: To retrieve the list of open events for a site
description: 'This endpoint is used to retrieve all the open events of a site.
'
operationId: getSiteOpenEvents
parameters:
- name: site_id
in: path
description: Unique Id of the site
required: true
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Retrieved the list of open events for a site
content:
'*/*':
schema:
$ref: '#/components/schemas/SiteOpenEventsResponse'
examples:
SiteOpenEventsResponseExample:
summary: Example list of enlighten open events over a site
description: SiteOpenEventsResponseExample
value:
system_id: 2112736
events:
- event_type_id: 1234
status: open
event_start_time: 1707389440
event_end_time: null
serial_number: '4394829382398'
- event_type_id: 1234
status: open
event_start_time: 1707389440
event_end_time: null
serial_number: '4394829382398'
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"message\": \"Forbidden\"\n}"
case-1:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/site_events:
get:
tags:
- System Details And Telemetry
summary: To retrieve the list of events for a site
description: 'This endpoint is used to retrieve the events for a site. start_time is mandatory and cannot be older than 6 months from the current time.
Maximum 1 week of data can be retrieved in a single call.An Event is triggered when a site/device meets a pre-defined set of conditions.
Each of these pre-defined set of conditions is called an “Event type”. There are more than 1k+ event types in Enlighten.
These conditions are defined at both site and device level, therefore events can be triggered at both site and device level. Each event is associated with an event type.
Most Event types (not all) further have pre-defined configurations. Whenever an Event of a given Event type meets these pre-defined configurations,
then the Event triggers an Alarm. An example of pre-defined configuration for an event type is - Event status is “Open” beyond a certain time limit.
'
operationId: getSiteEvents
parameters:
- name: site_id
in: path
description: Unique Id of the site
required: true
schema:
type: string
- name: start_time
in: query
description: Requested start time of the events data in Epoch time format.
required: true
schema:
type: integer
format: int64
- name: end_time
in: query
description: 'Requested end time of the events data in Epoch time format. Defaults to minimum of (start time + 1 day, current time)
'
required: false
schema:
type: integer
format: int64
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Retrieved the list of events for a site
content:
'*/*':
schema:
$ref: '#/components/schemas/SiteEventsResponse'
examples:
SiteEventsResponseExample:
summary: List of enlighten events over a site
description: SiteEventsResponseExample
value:
system_id: 2112736
events:
- event_type_id: 1234
status: open
event_start_time: 1707389440
event_end_time: 1707475840
serial_number: '4394829382398'
- event_type_id: 1234
status: open
event_start_time: 1707389440
event_end_time: 1707475840
serial_number: '4394829382398'
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"message\": \"Forbidden\"\n}"
case-1:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"start_time is required\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/site_alarms:
get:
tags:
- System Details And Telemetry
summary: To retrieve the list of alarms for a site
description: 'This endpoint is used to retrieve the alarms for a site. start_time is mandatory and cannot be older than 6 months from the current time.
Maximum 1 week of data can be retrieved in a single call.An Alarm is always associated with an Event.
Alarm and events can have one to one or one to many mapping. For ex - If a site has one battery unit and the SOC of the battery falls below a pre-defined limit,
then an event will be created for that battery. If the battery SOC remains below this pre-defined SOC beyond a certain period of time (pre-defined for an alarm),
then an alarm will be created for that battery. Similarly, if the site has multiple batteries and the SOC of all the batteries is below the pre-defined level, then individual event will be created for each battery.
If all the batteries remain below this SOC beyond a certain period of time, then a single alarm will be created for all the batteries.
Therefore, an alarm may be associated with multiple events but the reverse is not true.
'
operationId: getSiteAlarms
parameters:
- name: site_id
in: path
description: Unique Id of the site
required: true
schema:
type: string
- name: start_time
in: query
description: Requested start time of the events data in Epoch time format.
required: true
schema:
type: integer
format: int64
- name: end_time
in: query
description: 'Requested end time of the events data in Epoch time format. Defaults to minimum of (start time + 1 day, current time)
'
required: false
schema:
type: integer
format: int64
- name: cleared
in: query
description: Filters alarms based on their status. Set to true to return cleared alarms. Defaults to false to return active alarms.
required: false
schema:
type: boolean
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Retrieved the list of alarms for a site
content:
'*/*':
schema:
$ref: '#/components/schemas/SiteAlarmsResponse'
examples:
SiteAlarmsResponseExample:
summary: List of alarms over a site
description: SiteAlarmsResponseExample
value:
system_id: 2112736
alarms:
- id: '112957209'
event_type_id: 1234
cleared: true
alarm_start_time: 1707389440
alarm_end_time: 1707475840
severity: 5
events:
- start_date: 1707389440
end_date: 1707389440
serial_number: '4394829382398'
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"message\": \"Forbidden\"\n}"
case-1:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"start_time is required\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/production_lifetime:
get:
tags:
- System Details And Telemetry
summary: production_lifetime
description: 'Returns a daily time series of energy produced by the system over its lifetime. All measurements are in Watt hours.
The time series includes one entry for each day from the start_date to the end_date with no gaps in the time series.
If the response includes trailing zeroes, such as [909, 4970, 0, 0, 0], then no energy has been reported for the last days in the series.
If the system has a meter, the time series includes data as measured by the micro inverters until the first full day after the meter has been installed.
Later, it switches to using the data as measured by the meter.
This is called the "merged time series".
The attribute "meter_start_date" indicates the time when the meter measurements begin to be used.
You can retrieve the complete time series from the meter and from the micro inverters by adding the parameter production=all to the request.'
operationId: getProductionLifeTime
parameters:
- name: site_id
in: path
description: Unique ID of the site
required: true
schema:
type: string
- name: start_date
in: query
description: "Start date of the time series data. Defaults to the system's operational date.\n If the start_date is earlier than the system's operational_date, then the response data begins with the system operational_date as start_date.\n Pass as String date format YYYY-MM-DD.\n"
required: false
schema:
type: string
- name: end_date
in: query
description: "End date of the time series data. Defaults to yesterday.\n Pass as String date format YYYY-MM-DD\n"
required: false
schema:
type: string
- name: production
in: query
description: "When \"all\", returns the merged time series plus the time series as reported by the micro inverters and the meter on the system.\n Other values are ignored.\n"
required: false
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Successfully retrieved lifetime production values
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsProductionLifeTimeResponse'
examples:
ProductionLifetimeExample:
summary: Example of lifetime production values
description: ProductionLifetimeExample
value:
system_id: 66
start_date: '2013-01-01'
meter_start_date: '2013-01-04'
production:
- 15422
- 15421
- 17118
- 18505
- 18511
- 18487
micro_production:
- 15422
- 15421
- 17118
- 18513
- 18520
- 18494
meter_production:
- 0
- 0
- 11388
- 18505
- 18511
- 18487
meta:
status: normal
last_report_at: 1445619615
last_energy_at: 1445619033
operational_at: 1357023600
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/pel_pcs_settings:
get:
tags:
- System Details And Telemetry
summary: API to show the export limit, import limit, and PCS limit of a site
description: 'Retrieves PEL PCS & Main fuse Rating values for the site.
Shows data only if site is enrolled. PEL/PCS & Main Fuse Rating values are only available if they are enabled on the site. PEL is in watts and PCS & Main fuse rating are in amperes.
'
operationId: getPELPCSSettings
parameters:
- name: site_id
in: path
required: true
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: PEL/PCS values for the site
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsPELPCSResponse'
examples:
PELPCSExample:
summary: Sample response for PEL/PCS settings
description: PELPCSExample
value:
pel_enabled: true
pel: 1000.0
pcs_limit_enabled: true
pcs_limt: 10.0
main_fuse_rating_amp: 7.0
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/latest_telemetry:
get:
tags:
- System Details And Telemetry
summary: Returns a system's last reported PV Power, Consumption Power and Battery Power in Watts. Returns the operational mode for Battery, HP, and EVSE.
description: 'Returns a system''s last reported PV Power, Consumption Power and Battery Power in Watts. Returns the operational mode for Battery, HP, and EVSE.
HP Modes:
Mode_1 - Blocked Operation
Mode_2 - Normal Operation
Mode_3 - Power Consumption Recommended
Mode_4 - Power Consumption Enforced
EVSE Modes:
PLUGGED_OUT - EVSE is not plugged in
IDLE - EVSE is plugged in but, EV is not charging
CHARGING - EVSE is plugged in and EV is charging
FAULTED - The EVSE connector is faulted
If the last_report_at is older than 7 days, "last_report_at", "power" and "operational_mode" parameters will be returned in the response with the value as null.
'
operationId: getLatestTelemetry
parameters:
- name: site_id
in: path
required: true
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Successfully retrieved all devices
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsLatestTelemetryResponse'
examples:
DevicesTelemetryExample:
summary: Example latest telemetry of all devices in the system
description: DevicesTelemetryExample
value: "{\n \"system_id\": 698910067,\n \"items\": \"devices\",\n \"devices\": {\n \"meters\": [\n {\n \"id\": 1059640322,\n \"name\": \"production\",\n \"channel\": 1,\n \"last_report_at\": 1508174262,\n \"power\": 10\n },\n {\n \"id\": 1059640322,\n \"name\": \"production\",\n \"channel\": 2,\n \"last_report_at\": 1508174262,\n \"power\": 10\n },\n {\n \"id\": 1059640322,\n \"name\": \"production\",\n \"channel\": 3,\n \"last_report_at\": 1508174262,\n \"power\": 10\n },\n {\n \"id\": 1059640323,\n \"name\": \"consumption\",\n \"channel\": 1,\n \"last_report_at\": 1508174262,\n \"power\": 20\n },\n {\n \"id\": 1059640323,\n \"name\": \"consumption\",\n \"channel\": 2,\n \"last_report_at\": 1508174262,\n \"power\": 20\n },\n {\n \"id\": 1059640324,\n \"name\": \"storage\",\n \"channel\": 1,\n \"last_report_at\": 1508174262,\n \"power\": 20\n },\n {\n \"id\": 1059640324,\n \"name\": \"storage\",\n \"channel\": 2,\n \"last_report_at\": 1508174262,\n \"power\": 20\n }\n ],\n \"encharges\": [\n {\n \"id\": 1059640295,\n \"name\": \"Encharge 121593621979\",\n \"channel\": 1,\n \"last_report_at\": 1508174262,\n \"power\": 20,\n \"operational_mode\": \"Charging\"\n },\n {\n \"id\": 1059640296,\n \"name\": \"Encharge 121593621980\",\n \"channel\": 1,\n \"last_report_at\": 1508174262,\n \"power\": -10,\n \"operational_mode\": \"Discharging\"\n }\n ],\n \"heat-pump\": [\n {\n \"serial_number\": \"\",\n \"name\": \"Viessmann VitoCal 300G\",\n \"last_report_at\": 1508174262,\n \"operational_mode\": \"Mode_2\" //supported value are \"Mode_1\", \"Mode_2\", \"Mode_3\", and \"Mode_4\"\n }\n ],\n \"evse\": [\n {\n \"serial_number\": \"25901946\",\n \"name\": \"EV Charger_1\",\n \"last_report_at\": 1508174262,\n \"operational_mode\": \"CHARGING\" //supported values are \"PLUGGED_OUT\",\"IDLE\",\"CHARGING\",\"FAULTED\"\n }\n ]\n }\n}\n"
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/import_lifetime:
get:
tags:
- System Details And Telemetry
summary: import_lifetime
description: "Returns a daily time series of energy imported to the grid by the system over its lifetime. All measurements are in Watt hours.\n The time series includes one entry for each day from the start_date to the end_date with no gaps in the time series.\n If the response contains trailing zeroes, such as [909, 4970, 0, 0, 0], then no energy has been imported for the last days in the series.\n"
operationId: getLifeTimeImport
parameters:
- name: site_id
in: path
description: Unique ID of the site
required: true
schema:
type: string
- name: start_date
in: query
description: "Start date of the time series data. Defaults to the system's operational date.\n If the start_date is earlier than the system's operational_date, then the response data begins with the system operational_date as start_date.\n Pass as String date format YYYY-MM-DD.\n"
required: false
schema:
type: string
- name: end_date
in: query
description: "End date of the time series data. Defaults to yesterday.\n Pass as String date format YYYY-MM-DD\n"
required: false
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Successfully retrieved lifetime import values
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsImportLifeTimeResponse'
examples:
ImportLifetimeExample:
summary: Example of import lifetime values
description: ImportLifetimeExample
value:
system_id: 66
start_date: '2016-08-01'
import:
- 15422
- 15421
- 17118
- 18505
- 18511
- 18487
meta:
status: normal
last_report_at: 1470087000
last_energy_at: 1470086106
operational_at: 1357023600
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/hp_telemetry:
get:
tags:
- System Details And Telemetry
summary: Retrieves energy consumed by HP in regular intervals.
description: 'Retrieves energy consumed by HP in regular intervals.
If no start_at is specified, defaults to midnight today, in the timezone of the system. If the start_at specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_at.
The end_at is calculated as the minimum of the time of the request and (start time + granularity).The meaning of granularity is as follow:
If granularity is 15mins, maximum 1 intervals will appear in response. If granularity is day, maximum 96 intervals will appear in response where each interval is of 15 mins duration.
The requested start date must be within 2 years from current date.
'
operationId: getDeviceLevelHPTelemetry
parameters:
- name: site_id
in: path
description: Unique Id of the site
required: true
schema:
type: string
- name: start_at
in: query
description: 'Start time for fetching the telemetry data in Epoch time format. Defaults to midnight
'
required: false
schema:
type: integer
format: int64
- name: start_date
in: query
description: "Start date for fetching the telemetry data in yyyy-mm-dd format\n If no start_date is specified, defaults to midnight today, in the timezone of the system.\n"
required: false
schema:
type: string
- name: interval_duration
in: query
description: 'Size of the interval. Can be 5mins, or 15mins. Site must be configured to 5 min telemetry for this to be supported. Defaults to 15mins
'
required: false
schema:
type: string
default: 15mins
- name: granularity
in: query
description: 'The granularity of the telemetry data. Possible values are ''week'', ''day'', ''15mins'', ''5mins''. Default is ''day''
'
required: false
schema:
type: string
default: day
- name: end_date
in: query
description: 'End Date in YYYY-MM-DD format. If granularity is not provided, then defaults to current date
'
required: false
schema:
type: string
- name: end_at
in: query
description: 'End time for fetching the telemetry data in Epoch time format.
One can also use end_date in place of end_at for passing the end date as String date format YYYY-MM-DD.
Only one of granularity and end_at/end_date should be passed.
If granularity is not provided, then defaults to current time.
'
required: false
schema:
type: integer
format: int64
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Retrieved energy consumed by HP in regular intervals.
content:
'*/*':
schema:
$ref: '#/components/schemas/DeviceLevelHPTelemetryResponse'
examples:
HPTelemetryExample:
summary: Heat Pump energy consumption intervals
description: HPTelemetryExample
value:
system_id: 698905955
granularity: day
intervals:
- end_at: 1496526600
wh_consumed: 40.1
- end_at: 1496526900
wh_consumed: 40.2
- end_at: 1496527200
wh_consumed: 40.3
start_at: 1496526300
end_at: 1496528100
items: intervals
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Granularity value must be one of 'week', 'day', '15mins', '5mins'\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Interval duration must be one of '5mins', '15mins'\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/hp_lifetime:
get:
tags:
- System Details And Telemetry
summary: Retrieves daily time-series telemetry data of the HP
description: 'Retrieves daily time-series telemetry data of the HP
The number of data points returned in the response corresponds to days spanned between the start_date and end_date
parameter mentioned in the request.Requested start_date of the time series data defaults to the system’s operational date.
If the start_date is earlier than the system’s operational_date, then the response data begins with the system operational_date as start_date.
Pass as String date format YYYY-MM-DD.If end_date is not specified, then it defaults to today.
'
operationId: getDeviceLevelHPLifeTimeTelemetry
parameters:
- name: site_id
in: path
description: Unique Id of the site
required: true
schema:
type: string
- name: start_date
in: query
description: 'Start date for fetching the daily time-series data. Pass as String date format yyyy-mm-dd. Defaults to the system’s operational date.
'
required: false
schema:
type: string
- name: end_date
in: query
description: 'End date for fetching the daily time-series data. Pass as String date format yyyy-mm-dd. Defaults to today.
'
required: false
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Retrieved daily time-series telemetry data of the HP
content:
'*/*':
schema:
$ref: '#/components/schemas/HPLifeTimeTelemetryResponse'
examples:
HPLifeTimeTelemetryExample:
summary: Heat Pump daily consumption
description: HPLifeTimeTelemetryExample
value:
system_id: 698905955
start_date: '2024-11-22'
end_date: '2024-11-28'
consumption:
- 40.1
- 35.2
- 40.3
- 20.4
- 15.5
- 0.6
- 5.7
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/grid_status_settings:
get:
tags:
- System Details And Telemetry
summary: Get the current grid status settings of a site
description: 'Returns the current grid status settings of a system
'
operationId: getGridStatusSettings
parameters:
- name: site_id
in: path
required: true
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Grid Status settings for the site
content:
'*/*':
schema:
$ref: '#/components/schemas/GridStatusSettingsResponse'
examples:
GridStatusExample:
summary: Example grid status response
description: GridStatusExample
value:
system_id: 1765
grid_state: On Grid
last_report_date: 1676029267
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/export_lifetime:
get:
tags:
- System Details And Telemetry
summary: export_lifetime
description: "Returns a daily time series of energy exported to the grid by the system over its lifetime. All measurements are in Watt-hours.\n The time series includes one entry for each day from the start_date to the end_date with no gaps in the time series.\n If the response contains trailing zeroes, such as [909, 4970, 0, 0, 0], then no energy has been exported for the last days in the series.\n"
operationId: getLifeTimeExport
parameters:
- name: site_id
in: path
description: Unique ID of the site
required: true
schema:
type: string
- name: start_date
in: query
description: "Start date of the time series data. Defaults to the system's operational date.\n If the start_date is earlier than the system's operational_date, then the response data begins with the system operational_date as start_date.\n Pass as String date format YYYY-MM-DD.\n"
required: false
schema:
type: string
- name: end_date
in: query
description: "End date of the time series data. Defaults to yesterday.\n Pass as String date format YYYY-MM-DD\n"
required: false
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Successfully retrieved export lifetime values
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsExportLifeTimeResponse'
examples:
ExportLifetimeExample:
summary: Example of export lifetime values
description: ExportLifetimeExample
value:
system_id: 66
start_date: '2016-08-01'
export:
- 15422
- 15421
- 17118
- 18505
- 18511
- 18487
meta:
status: normal
last_report_at: 1470087000
last_energy_at: 1470086106
operational_at: 1357023600
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/devices:
get:
tags:
- System Details And Telemetry
summary: Get all devices for a system
description: Retrieves devices for a given system. Only devices that are active will be returned in the response.
operationId: getDevices
parameters:
- name: site_id
in: path
required: true
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Succesfully retrieved all devices
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsDevicesResponse'
example:
system_id: 698910067
total_devices: 11
items: devices
devices:
micros:
- id: 1023273222
last_report_at: 1508174262
name: Microinverter 902167438951
serial_number: '902167438951'
part_number: 800-01333-r01
sku: IQ8A-72-2-US
model: M250
status: normal
active: true
product_name: M250
- id: 1023273243
last_report_at: 1508174262
name: Microinverter 902372021616
serial_number: '902372021616'
part_number: 800-01333-r01
sku: IQ8A-72-2-US
model: M250
status: normal
active: true
product_name: M250
meters:
- id: 1059640322
last_report_at: 1508174262
name: production
serial_number: 901553005272EIM1
part_number: 800-00655-r08
sku: null
model: Envoy S
status: normal
active: true
state: enabled
config_type: Net
product_name: RGM
- id: 1059640322
last_report_at: 1508174262
name: production
serial_number: 901553005272EIM2
part_number: 800-00655-r08
sku: null
model: Envoy S
status: normal
active: true
state: enabled
config_type: Production
product_name: RGM
gateways:
- id: 1059563029
last_report_at: 1508174262
name: Envoy 901553005272
serial_number: '901553005272'
part_number: 800-00655-r08
sku: ENV-IQ-AM1-240
model: Envoy-S-Standard-NA
status: normal
active: true
cellular_modem:
imei: '352009112238477'
part_num: 860-00157-r01
sku: CELLMODEM-M1
plan_start_date: 1614796200
plan_end_date: 1772562600
product_name: Envoy-S-Metered-EU
q_relays:
- id: 1059640316
last_report_at: 1508174262
name: Q Relay 912158973973
serial_number: '912158973973'
part_number: 800-00595-r01
sku: Q-RELAY-1P-INT
model: ''
status: normal
active: true
product_name: IQ Relay
- id: 1059640326
last_report_at: 1508174262
name: Q Relay 912163603334
serial_number: '912163603334'
part_number: 800-00595-r01
sku: Q-RELAY-1P-INT
model: ''
status: normal
active: true
product_name: IQ Relay
acbs:
- id: 1059640321
last_report_at: 1508174262
name: AC Battery 911364446952
serial_number: '911364446952'
part_number: 800-00560-r03
sku: IQ7-B1200-LN-I-INT01-RV0
model: ''
status: normal
active: true
product_name: ACB
- id: 1059640321
last_report_at: 1508174262
name: AC Battery 911499228280
serial_number: '911499228280'
part_number: 800-00560-r03
sku: IQ7-B1200-LN-I-INT01-RV0
model: ''
status: normal
active: true
product_name: ACB
encharges:
- id: 1059640295
last_report_at: 1508174262
name: Encharge 121593621979
serial_number: '121593621979'
part_number: 800-00562-r01
sku: B03-A01-US00-1-3
model: ''
status: normal
active: true
product_name: IQ Battery R3 - 5P
enpowers:
- id: 1059640294
last_report_at: 1508174262
name: Enpower 121245173988
serial_number: '121245173988'
part_number: 800-01135-r02
sku: EP200G101-M240US00
model: ''
status: normal
active: true
product_name: IQ System Controller
ev_chargers:
- id: ''
sku: ''
status: normal
serial_number: '25901946'
name: EV Charger_1
model: Keba_P30
part_number: ''
last_report_at: 1700074065
firmware: ''
active: true
heat_pump:
- id: ''
SKU: ''
status: normal
serial_number: ''
name: Viessmann VitoCal 300G
model: Expert Net Control 2302
part_number: ''
last_report_at: 1700074065
firmware: ''
sg_ready_relay: Expert net control 2302
iq_er: Nano hub 2
active: true
iq_collars:
- id: 1085310043
last_report_at: 1757523711
name: IQ Meter Collar 482443008618
serial_number: '482443008618'
part_number: 865-00401-r01
sku: MC-200-011-V01
model: ''
status: normal
active: true
product_name: IQ Meter Collar
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Invalid site id. Please enter correct site id.\",\n \"additionalInfo\": null,\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/devices/micros/{serial_no}/telemetry:
get:
tags:
- System Details And Telemetry
summary: Retrieves telemetry for single micro/pcu.
description: 'Retrieves telemetry for single micro/pcu.
If no start_at is specified, defaults to midnight today, in the timezone of the system. If the start_at specified is earlier than the system''s first reported date, then midnight of the system''s first reported date is considered as start_at.
The end_at is calculated as the minimum of the time of the request and (start time + granularity).
The meaning of granularity is as follow:
If granularity is 15 mins, maximum 3 intervals will appear in response. If granularity is day, maximum 288 intervals will appear in response where each interval is of 5 mins duration.
The requested start date must be within 2 years from current date.
By default start_at will appear in response. If start_date parameter is passed in the url, then start_date field will appear in response.
By default end_at will appear in response. If end_date parameter is passed in the url then end_date field will appear in response. Empty list will be returned if the last interval < requested start time < current time.
'
operationId: getDeviceLevelPVProductionTelemetry
parameters:
- name: site_id
in: path
description: Unique ID of the site
required: true
schema:
type: string
- name: serial_no
in: path
description: The device serial number
required: true
schema:
type: string
- name: start_at
in: query
description: "Start time for fetching the telemetry data in Epoch time format.\n If no start_at is specified, defaults to midnight today, in the timezone of the system.\n If the start_at specified is earlier than the system's first reported date, then midnight of the system's first reported date is considered as start_at.\n"
required: false
schema:
type: integer
format: int64
- name: end_at
in: query
description: 'The end_at is calculated as the minimum of the time of the request and (start time + granularity)
'
required: false
schema:
type: integer
format: int64
- name: start_date
in: query
description: "Start date for fetching the telemetry data in yyyy-mm-dd format\n If no start_date is specified, defaults to midnight today, in the timezone of the system.\n If the start_date specified is earlier than the system's first reported date, then midnight of the system's first reported date is considered as start_date\n"
required: false
schema:
type: string
- name: end_date
in: query
description: 'The end_at is calculated as the minimum of the time of the request and (start time + granularity)
'
required: false
schema:
type: string
- name: granularity
in: query
description: "The granularity of the telemetry data.\n Possible values are 'week', 'day', '15mins', '5mins'. Default is 'day'\n"
required: false
schema:
type: string
default: day
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Successfully retrieved device level PV production telemetry data
content:
'*/*':
schema:
$ref: '#/components/schemas/DeviceLevelPVProductionResponse'
examples:
EpochTimestampExample:
summary: Response with epoch timestamps
description: EpochTimestampExample
value:
system_id: 1765
serial_number: '12345'
granularity: day
total_devices: 1
start_at: 1496526300
end_at: 1496529300
items: intervals
intervals:
- end_at: 1496526300
powr: 30
enwh: 40
- end_at: 1496526600
powr: 20
enwh: 40
ISODateExample:
summary: Response with ISO 8601 date format
description: ISODateExample
value:
system_id: 1765
serial_number: '12345'
granularity: day
total_devices: 1
start_date: '2024-09-22T00:00:00-04:00'
end_date: '2024-09-23T00:00:00-04:00'
items: intervals
intervals:
- end_at: 1496526300
powr: 30
enwh: 40
- end_at: 1496526600
powr: 20
enwh: 40
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"start_date can't be before 2 years of current date\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"start_at can't be before 2 years of current date\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Granularity value must be one of 'week', 'day', '15mins', '5mins'\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/devices/encharges/{serial_no}/telemetry:
get:
tags:
- System Details And Telemetry
summary: Device level encharge telemetry data
description: 'Retrieves telemetry for single encharge.
If no start_at is specified, defaults to midnight today, in the timezone of the system. If the start_at specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_at.
The end_at is calculated as the minimum of the time of the request and (start time + granularity).
The meaning of granularity is as follow:
If granularity is 15mins, maximum 3 intervals will appear in response. If granularity is day, maximum 288 intervals will appear in response where each interval is of 5 mins duration.
The requested start date must be within 2 years from current date.
By default start_at will appear in response. If start_date parameter is passed in the url, then start_date field will appear in response.
By default end_at will appear in response. If end_date parameter is passed in the url then end_date field will appear in response. Empty list will be returned if the last interval < requested start time < current time.
'
operationId: getDeviceLevelEnchargeTelemetry
parameters:
- name: site_id
in: path
description: Unique ID of the site
required: true
schema:
type: string
- name: serial_no
in: path
description: The device serial number
required: true
schema:
type: string
- name: start_at
in: query
description: "Start time for fetching the telemetry data in Epoch time format. If no start_at is specified, defaults to midnight today, in the timezone of the system.\n If the start_at specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_at.\n"
required: false
schema:
type: integer
format: int64
- name: end_at
in: query
description: 'The end_at is calculated as the minimum of the time of the request and (start time + granularity)
'
required: false
schema:
type: integer
format: int64
- name: start_date
in: query
description: "Start date for fetching the telemetry data in yyyy-mm-dd format\nIf no start_date is specified, defaults to midnight today, in the timezone of the system.\n If the start_date specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_date\n"
required: false
schema:
type: string
- name: end_date
in: query
description: 'The end_date is calculated as the minimum of the time of the request and (start date + granularity)
'
required: false
schema:
type: string
- name: granularity
in: query
description: 'The granularity of the telemetry data. Possible values are ''week'', ''day'', ''15mins'', ''5mins''. Default is ''day''
'
required: false
schema:
type: string
default: day
- name: interval_duration
in: query
description: 'Duration of each interval. Possible values are ''5mins'' and ''15mins''. Default is ''15mins''
'
required: false
schema:
type: string
default: 15mins
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Successfully retrieved device level encharge telemetry data
content:
'*/*':
schema:
$ref: '#/components/schemas/DeviceLevelEnchargeTelemetryResponse'
examples:
EpochTimestampExample:
summary: Response with epoch timestamps
description: EpochTimestampExample
value:
system_id: 701648236
serial_number: '492213004816'
granularity: day
total_devices: 1
start_at: 1725260400
end_at: 1725346799
items: intervals
intervals:
- end_at: 1725261300
charge:
enwh: 0
discharge:
enwh: 0
soc:
percent: 0.0
- end_at: 1725262200
charge:
enwh: 0
discharge:
enwh: 0
soc:
percent: 0.0
last_reported_time: 1725264584
last_reported_soc: null
ISODateExample:
summary: Response with ISO 8601 date format
description: ISODateExample
value:
system_id: 701648236
serial_number: '492213004816'
granularity: day
total_devices: 1
start_date: '2024-09-22T00:00:00-04:00'
end_date: '2024-09-23T00:00:00-04:00'
items: intervals
intervals:
- end_at: 1725261300
charge:
enwh: 0
discharge:
enwh: 0
soc:
percent: 0.0
- end_at: 1725262200
charge:
enwh: 0
discharge:
enwh: 0
soc:
percent: 0.0
last_reported_time: 1725264584
last_reported_soc: null
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"start_date can't be before 2 years of current date\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"start_at can't be before 2 years of current date\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Granularity value must be one of 'week', 'day', '15mins', '5mins'\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Interval Duration must be one of '5min', '15mins'\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/consumption_lifetime:
get:
tags:
- System Details And Telemetry
summary: consumption_lifetime
description: "Returns a daily time series of energy consumption as measured by the consumption meter installed on the specified system. All measurements are in Watt hours.\nThe time series includes one entry for each day from the start_date to the end_date.\n There are no gaps in the time series. If the response includes trailing zeroes, such as [909, 4970, 0, 0, 0], then no data has been reported for the last three days.\n"
operationId: getConsumptionLifeTime
parameters:
- name: site_id
in: path
description: Unique ID of the site
required: true
schema:
type: string
- name: start_date
in: query
description: "Start date of the time series data. Defaults to the system's operational date.\n If the start_date is earlier than the system's operational_date, then the response data begins with the system operational_date as start_date.\n Pass as String date format YYYY-MM-DD.\n"
required: false
schema:
type: string
- name: end_date
in: query
description: "End date of the time series data. Defaults to yesterday.\n Pass as String date format YYYY-MM-DD.\n"
required: false
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Successfully retrieved consumption lifetime values
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsConsumptionLifeTimeResponse'
examples:
ConsumptionLifetimeExample:
summary: Example of lifetime consumption values
description: ConsumptionLifetimeExample
value:
system_id: 66
start_date: '2016-08-01'
consumption:
- 15422
- 15421
- 17118
- 18505
- 18511
- 18487
meta:
status: normal
last_report_at: 1470087000
last_energy_at: 1470086106
operational_at: 1357023600
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/battery_settings:
get:
tags:
- System Details And Telemetry
summary: 'Returns the current battery settings of a system
'
description: Get the current battery settings of a site
operationId: getBatterySettings
parameters:
- name: site_id
in: path
required: true
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Battery settings for the site
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsBatterySettingsResponse'
examples:
BatterySettingsExample:
summary: Example battery settings for a system
description: BatterySettingsExample
value:
system_id: 1765
battery_mode: Self - Consumption
reserve_soc: 95
energy_independence: enabled
charge_from_grid: disabled
battery_shutdown_level: 13
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/battery_lifetime:
get:
tags:
- System Details And Telemetry
summary: battery_lifetime
description: "Returns a daily time series of energy charged into the batteries and energy discharged from the batteries for a system over its lifetime.\n All measurements are in Watt hours. The time series includes one entry for each day from the start_date to the end_date with no gaps in the time series.\n If the response includes trailing zeroes, such as [909, 4970, 0, 0, 0], then no energy has been charged/discharged for the last days in the series.\n\n"
operationId: getBatteryLifeTime
parameters:
- name: site_id
in: path
description: Unique ID of the site
required: true
schema:
type: string
- name: start_date
in: query
description: "Start date of the time series data. Defaults to the system's operational date.\n If the start_date is earlier than the system's operational_date, then the response data begins with the system operational_date as start_date.\n Pass as String date format YYYY-MM-DD.\n"
required: false
schema:
type: string
- name: end_date
in: query
description: "End date of the time series data.\n Defaults to yesterday. Pass as String date format YYYY-MM-DD\n"
required: false
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Successfully retrieved battery lifetime values
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsBatteryLifeTimeResponse'
examples:
BatteryLifetimeExample:
summary: Example of battery lifetime charge/discharge data
description: BatteryLifetimeExample
value:
system_id: 66
start_date: '2016-08-01'
discharge:
- 15422
- 15421
- 17118
- 18505
- 18511
- 18487
charge:
- 15422
- 15421
- 17118
- 18505
- 18511
- 18487
meta:
status: normal
last_report_at: 1470087000
last_energy_at: 1470086106
operational_at: 1357023600
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/search/{program_id}:
get:
tags:
- System Details And Telemetry
summary: Get all systems enrolled into the program with details
description: Returns a list of systems for which the user can make API requests. By default, systems are returned in batches of 10. The maximum size is 100.
operationId: getSystems
parameters:
- name: page
in: query
description: The page to be returned. Default=1, Min=1. For example, if page is set to 2, 2nd page is returned
required: false
schema:
type: integer
format: int32
- name: size
in: query
description: Maximum number of records shown per page. Default=10, Min=1, Max=100. For example, if max is set to 5, 5 records are shown per page
required: false
schema:
type: integer
format: int32
- name: sort_by
in: query
description: 'Returns list of systems sorted by field. To get ASC order sorted list, use sort_by = . To get DESC order sorted list, use sort_by = (-).
The currently supported sort key is "id". By default the list is sorted by decreasing system ID.
Available values : id, -id
'
required: false
schema:
type: string
- name: program_id
in: path
required: true
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Successfully retrieved systems in the program
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsDetailsResponse'
examples:
SystemsDetailsExample:
summary: Sample response for list of systems in a program
description: SystemsDetailsExample
value:
total: 28
current_page: 1
size: 2
count: 2
items: systems
systems:
- system_id: 698910067
name: Enphase System
public_name: Residential System
timezone: Australia/Sydney
address:
state: NSW
country: AU
postal_code: '2127'
connection_type: ethernet
status: micro
last_report_at: 1508174262
last_energy_at: 1508174172
operational_at: 1497445200
attachment_type: null
interconnect_date: null
- system_id: 698906018
name: Enphase Public System
public_name: Residential System
timezone: US/Pacific
address:
state: CA
country: US
postal_code: '94954'
connection_type: ethernet
status: normal
last_report_at: 1508174262
last_energy_at: 1508174172
operational_at: 1497445200
attachment_type: null
interconnect_date: null
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"message\": \"Forbidden\"\n}"
case-1:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"No sites were found to be enrolled in the program: XYZ\",\n \"additionalInfo\": null,\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/event_types:
get:
tags:
- System Details And Telemetry
summary: To retrieve the list of event_type_id along with event_description and recommended_action
description: 'This endpoint is used to retrieve the list of all available event_types. The endpoint will return list of event_type_id along with the
event_description and recommended_action. If an event_type_id is passed, this endpoint will return the detail of specific event_type
'
operationId: getEventTypes
parameters:
- name: event_type_id
in: query
description: The unique numeric ID of the event type.
required: false
schema:
type: integer
format: int32
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Retrieved the list of event_type_id along with event_description and recommended_action
content:
'*/*':
schema:
$ref: '#/components/schemas/EventTypesResponse'
examples:
EventTypesResponseExample:
summary: List of event_type_id along with event_description and recommended_action
description: EventTypesResponseExample
value:
event_types:
- event_type_id: 1234
event_type_key: env_rpt_issue
stateful: true
event_name: Envoy issue
event_description: Envoy not reporting
recommended_action: Restart envoy
- event_type_id: 4781
event_type_key: acb_sleeping
stateful: false
event_name: AC Battery Sleeping
event_description: AC Battery has entered the target state of charge band. Cleared when the battery exits the state of charge target, or sleep mode is removed.
recommended_action: No action is required.
- event_type_id: 28
event_type_key: envoy_no_report
stateful: true
event_name: Gateway not reporting
event_description: The broadband Internet connection that the Enphase gateway uses to communicate to the Enphase servers is experiencing a problem.
recommended_action: Check that your gateway and Internet router are plugged in and that the site's Internet service is not experiencing an outage.
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"message\": \"Forbidden\"\n}"
case-1:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Not Found\",\n \"additionalInfo\": \"Event type not found for {:id=>\"12345\"}\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
components:
schemas:
SystemsAddress:
type: object
properties:
state:
type: string
country:
type: string
postal_code:
type: string
SystemSummaryResponse:
type: object
properties:
system_id:
type: integer
description: The unique numeric ID of the system
format: int32
current_power:
type: integer
description: Current power production of the system in Watts
format: int32
energy_lifetime:
type: integer
description: Energy generated by the system during its lifetime in Wh
format: int32
energy_today:
type: integer
description: Energy generated by the system today in Wh
format: int32
last_interval_end_at:
type: string
description: The last known time that the system produced energy. When a system has not been communicating for a length of time, the last_report_at can be recent, whereas the last_interval_end_at may be further back.
last_report_at:
type: integer
description: Timestamp (in epoch format) at which the system's Envoy last submitted a report
format: int32
modules:
type: integer
description: Total number of modules in the system
format: int32
operational_at:
type: integer
description: Timestamp (in epoch format) at which this system became operational. Corresponds to the system’s interconnect time, if one is specified. Otherwise, it is the system’s first reported interval end time.
format: int32
size_w:
type: integer
description: System size in watts
format: int32
source:
type: string
description: Source of energy measurement
status:
type: string
description: Current status of the system
summary_date:
type: string
description: Summary date
battery_charge_w:
type: integer
description: Maximum charge power of all the batteries of the system
format: int32
battery_discharge_w:
type: integer
description: Maximum discharge power of all the batteries of the system
format: int32
battery_capacity_wh:
type: integer
description: Total capacity of all the batteries of the system
format: int32
StorageMeter:
type: object
properties:
serial_num:
type: string
description: The serial number of the meter
value_charged:
type: integer
description: The meter reading for energy charged, in Wh
format: int32
value_discharged:
type: integer
description: The meter reading for energy discharged, in Wh
format: int32
read_at:
type: integer
description: The time when the reading was taken, always prior or equal to the requested 'end_at'
format: int32
Charge:
type: object
properties:
enwh:
type: integer
format: int32
devices_reporting:
type: integer
format: int32
MeterReadingsMeta:
type: object
properties:
status:
type: string
description: System's status. Corresponding Enlighten values can be found in table added at the end of page.
last_report_at:
type: integer
description: Timestamp (in epoch format) at which the system's Envoy last submitted a report
format: int64
last_energy_at:
type: integer
description: Timestamp (in epoch format) at which the systems's production energy was last reported. Even if the last production energy is 0, its timestamp will be returned.
format: int64
operational_at:
type: integer
description: Corresponds to the system’s interconnect time, if one is specified. Otherwise, it is the system’s first reported interval end time.
format: int64
SystemsProductionLifeTimeResponse:
type: object
properties:
meta:
$ref: '#/components/schemas/Meta'
system_id:
type: string
description: Unique ID of the site
start_date:
type: string
description: "When no start_date parameter is specified on the request, this is the operational_date of the system.\n May be null if system has never produced.\n When a start_date parameter is included in the request, it is included here in the response."
meter_start_date:
type: string
description: "The first day in the time series when measurements are taken from a meter instead of from micro inverters.\n This field is not present unless the system has a meter"
production:
type: array
description: "An array of production measurements, one for each day since the system started producing, or one for each day of the requested period.\n If the system has never produced energy, the array may be empty."
items:
type: integer
description: "An array of production measurements, one for each day since the system started producing, or one for each day of the requested period.\n If the system has never produced energy, the array may be empty."
format: int32
micro_production:
type: array
items:
type: integer
format: int32
meter_production:
type: array
items:
type: integer
format: int32
EVSELifeTimeTelemetryResponse:
type: object
properties:
system_id:
type: string
description: Unique ID of the site
start_date:
type: string
description: Start Date of the daily time-series data series.
end_date:
type: string
description: End Date of the daily time-series data series.
consumption:
type: array
description: Energy units consumed per day (positive will correspond to EV charge, negative will correspond to EV discharge). The time series includes one entry for each day from the start_date to the end_date with no gaps in the time series. If the response contains trailing zeroes, such as [909, 4970, 0, 0, 0], then there is not charge/discharge of the EV during those days.
items:
type: number
description: Energy units consumed per day (positive will correspond to EV charge, negative will correspond to EV discharge). The time series includes one entry for each day from the start_date to the end_date with no gaps in the time series. If the response contains trailing zeroes, such as [909, 4970, 0, 0, 0], then there is not charge/discharge of the EV during those days.
format: double
SiteOpenEventsResponse:
type: object
properties:
system_id:
type: string
description: The unique numeric ID of the system
events:
type: array
description: List of events over the system
items:
$ref: '#/components/schemas/SiteEvent'
SystemsConsumptionLifeTimeResponse:
type: object
properties:
consumption:
type: array
description: An array of consumption measurements in Wh, one for each day since consumption metering began, or one for each day of the requested period
items:
type: integer
description: An array of consumption measurements in Wh, one for each day since consumption metering began, or one for each day of the requested period
format: int32
meta:
$ref: '#/components/schemas/Meta'
system_id:
type: string
description: Unique ID of the site
start_date:
type: string
description: "When no start_date parameter is specified on the request, this is the operational_date of the system.\n May be null if system has never produced.\n When a start_date parameter is included in the request, it is included here in the response."
meter_start_date:
type: string
description: "The first day in the time series when measurements are taken from a meter instead of from micro inverters.\n This field is not present unless the system has a meter"
DeviceLatestTelemetry:
type: object
properties:
id:
type: integer
description: Device ID
format: int64
name:
type: string
description: Device Name
serial_number:
type: string
description: Serial Number
channel:
type: integer
description: The reporting channel ID (applicable only in case of meters)
format: int32
last_report_at:
type: integer
description: Timestamp at which the device last reported
format: int64
power:
type: integer
description: power reading at the last reported time
format: int32
operational_mode:
type: string
description: Battery mode. Possible values are Idle, Charging, Discharging
EVSE mode. Possible values are PLUGGED_OUT,IDLE,CHARGING,FAULTED
HP mode. Possible values are Mode_1,Mode_2,Mode_3,Mode_4.
SystemsDetails:
type: object
properties:
system_id:
type: integer
description: The unique numeric ID of the system
format: int32
name:
type: string
description: Name of the system
public_name:
type: string
description: Name displayed on the public system page. Available values are All, Residential System, Commercial etc. Default='Residential System'. Only for systems that allow public access
timezone:
type: string
description: Timezone to which the system belongs
connection_type:
type: string
description: connection Type of the system. Available values are ethernet, Wi-Fi, Cellular
status:
type: string
description: System's status. Corresponding Enlighten values can be found in table added at the end of page
attachment_type:
type: string
description: Micro inverter attachment type. Available values are rack_mount, zep, acm, bipv, frame_mount, railless_mount
interconnect_date:
type: string
description: Date on which the system was approved to connect to the grid
last_energy_at:
type: integer
description: Timestamp (in epoch format) at which the systems's produced energy was last reported. Even if the last produced energy is 0, its timestamp will be returned
format: int64
last_report_at:
type: integer
description: Timestamp (in epoch format) at which the system's Envoy last submitted a report
format: int64
operational_at:
type: integer
description: Timestamp (in epoch format) at which this system became operational. Corresponds to the system’s interconnect time, if one is specified. Otherwise, it is the system’s first reported interval end time
format: int64
address:
$ref: '#/components/schemas/SystemsAddress'
StorageMeterReadings:
type: object
properties:
system_id:
type: integer
description: The unique numeric ID of the system
format: int32
meter_readings:
type: array
items:
$ref: '#/components/schemas/StorageMeter'
meta:
$ref: '#/components/schemas/MeterReadingsMeta'
ConsumptionMeterReadings:
type: object
properties:
system_id:
type: integer
description: The unique numeric ID of the system
format: int32
meter_readings:
type: array
items:
$ref: '#/components/schemas/MeterReadings'
meta:
$ref: '#/components/schemas/MeterReadingsMeta'
HPTelemetryInterval:
type: object
properties:
end_at:
type: integer
description: End time of the telemetry interval.
format: int64
wh_consumed:
type: number
description: Units consumed per interval. This value can only be zero or positive
format: double
SystemsBatterySettingsResponse:
type: object
properties:
system_id:
type: integer
description: Unique ID of the site
format: int32
battery_mode:
type: string
description: Current battery mode of the system. Possible values are Savings Mode, Full Backup, and Self - Consumption
reserve_soc:
type: integer
description: Reserve soc for the current mode
format: int32
energy_independence:
type: string
description: 'Energy independence after peak hours enabled/disabled . Enabled: Battery will discharge to save money during peak hours when electricity rates are high. Once that is done, energy independence is prioritized. This will increase the energy self-sufficiency until the reserve soc is hit. Battery will charge from solar in the morning to get ready for the next period Disabled: Battery will discharge only during peak hours when electricity rates are high. During other times, battery will be idle or will charge from solar in the morning to get ready for the next period'
charge_from_grid:
type: string
description: 'Charge battery from grid enabled/disabled. Enabled: Battery may also charge from the grid when in full backup mode or when battery charge is below the reserve capacity in savings or self-consumption mode'
battery_shutdown_level:
type: integer
description: Level at which battery shutdowns to conserve energy. Battery restarts by using the conserved energy when the utility grid restores power or solar panels start producing energy
format: int32
SystemsDevicesResponse:
type: object
properties:
system_id:
type: integer
format: int32
total_devices:
type: integer
format: int32
items:
type: string
devices:
type: object
additionalProperties:
type: array
description: 'Hash keys include all the possible device types: micros, meters, gateways,
q_relays, ACBs, Encharges, Enpowers, ev_chargers, heat_pump, iq_collars, iq_air,
generators (if the devices of this type are present). For all the device types,
the object will contain the serial_number and model with some additional information pertaining to the device type.'
items:
$ref: '#/components/schemas/DeviceStatus'
description: 'Hash keys include all the possible device types: micros, meters, gateways,
q_relays, ACBs, Encharges, Enpowers, ev_chargers, heat_pump, iq_collars, iq_air,
generators (if the devices of this type are present). For all the device types,
the object will contain the serial_number and model with some additional information pertaining to the device type.'
SystemsBatteryTelemetryResponse:
type: object
properties:
system_id:
type: integer
format: int32
total_devices:
type: integer
format: int32
start_at:
type: integer
format: int64
end_at:
type: integer
format: int64
items:
type: string
granularity:
type: string
soc:
type: number
format: double
soh:
type: number
format: double
last_report_at:
type: integer
format: int64
capacity_wh:
type: integer
format: int32
intervals:
type: array
items:
$ref: '#/components/schemas/BatteryTelemetryInterval'
DeviceLevelEnchargeTelemetryResponse:
type: object
properties:
system_id:
type: string
description: Unique ID of the site
serial_number:
type: string
description: The device serial number
start_at:
type: integer
description: Start time for fetching the telemetry data in Epoch time format. If no start_at is specified, defaults to midnight today, in the timezone of the system. If the start_at specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_at.
format: int64
start_date:
type: string
description: 'Start date for fetching the telemetry data in yyyy-mm-dd format
If no start_date is specified, defaults to midnight today, in the timezone of the system. If the start_date specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_date'
end_at:
type: integer
description: End Time of the data series
format: int64
end_date:
type: string
description: End Date of the data series
granularity:
type: string
description: The granularity of the telemetry data. Default is 'day'
total_devices:
type: integer
description: Number of Production meters in the site
format: int32
items:
type: string
intervals:
type: array
items:
$ref: '#/components/schemas/EnchargeInterval'
last_reported_time:
type: integer
description: Last reported timestamp
format: int64
last_reported_soc:
type: string
description: Last reported soc percentage
SystemsProductionMicroResponse:
type: object
properties:
system_id:
type: integer
format: int32
total_devices:
type: integer
format: int32
start_at:
type: integer
format: int64
end_at:
type: integer
format: int64
items:
type: string
granularity:
type: string
intervals:
type: array
items:
$ref: '#/components/schemas/ProductionMicroInterval'
meta:
$ref: '#/components/schemas/Meta'
GridStatusSettingsResponse:
type: object
properties:
system_id:
type: integer
description: Unique ID of the site
format: int32
grid_status:
type: string
description: Indicates whether the site is On Grid, Off Grid or grid status of site is Unknown
last_report_date:
type: integer
description: Timestamp (in epoch format) at which the system's Envoy last submitted a report
format: int32
BatteryTelemetryInterval:
type: object
properties:
end_at:
type: integer
format: int64
charge:
$ref: '#/components/schemas/Charge'
discharge:
$ref: '#/components/schemas/DisCharge'
soc:
$ref: '#/components/schemas/SOC'
Alarm:
type: object
description: List of alarms over the system
ImportInterval:
type: object
properties:
end_at:
type: integer
description: End time of the telemetry interval
format: int32
wh_imported:
type: integer
description: Energy imported per interval
format: int32
EventTypesResponse:
type: object
properties:
event_types:
type: array
description: List of event_type_id along with event_description and recommended_action
items:
$ref: '#/components/schemas/EnlightenEventType'
DeviceStatus:
type: object
properties:
id:
type: integer
format: int32
last_report_at:
type: integer
format: int64
name:
type: string
serial_number:
type: string
part_number:
type: string
sku:
type: string
model:
type: string
status:
type: string
active:
type: boolean
state:
type: string
product_name:
type: string
description: 'Hash keys include all the possible device types: micros, meters, gateways,
q_relays, ACBs, Encharges, Enpowers, ev_chargers, heat_pump, iq_collars, iq_air,
generators (if the devices of this type are present). For all the device types,
the object will contain the serial_number and model with some additional information pertaining to the device type.'
ProductionMeterReadings:
type: object
properties:
system_id:
type: integer
description: The unique numeric ID of the system
format: int32
meter_readings:
type: array
items:
$ref: '#/components/schemas/MeterReadings'
meta:
$ref: '#/components/schemas/MeterReadingsMeta'
EVSETelemetryInterval:
type: object
properties:
end_at:
type: integer
description: End time of the telemetry interval.
format: int64
wh_consumed:
type: number
description: Energy units consumed per interval (positive will correspond to EV charge, negative will correspond to EV discharge)
format: double
Meta:
type: object
properties:
status:
type: string
description: System's status
last_report_at:
type: integer
description: Timestamp (in epoch format) at which the system's Envoy last submitted a report
format: int64
last_energy_at:
type: integer
description: "Timestamp (in epoch format) at which the system's produced energy was last reported.\n Even if the last produced energy is 0, its timestamp will be returned."
format: int64
operational_at:
type: integer
description: "Timestamp (in epoch format) at which this system became operational.\n Corresponds to the system’s interconnect time, if one is specified. Otherwise, it is the system’s first reported interval end time."
format: int64
description: Information about the system such as its status, when it became operational and last reported to Envoy.
SiteEventsResponse:
type: object
properties:
system_id:
type: string
description: The unique numeric ID of the system
events:
type: array
description: List of events over the system
items:
$ref: '#/components/schemas/SiteEvent'
PVProductionInterval:
type: object
properties:
end_at:
type: integer
description: End time of the telemetry interval
format: int64
enwh:
type: integer
description: Energy produced (in Watt-Hours) from all the micro inverters combined during that period
format: int32
pwr:
type: integer
description: Average power (in Watt) produced by all the micro inverters during this interval, measured in Watts.
format: int32
SiteEvent:
type: object
properties:
status:
type: string
event_type_id:
type: integer
format: int32
event_start_time:
type: integer
format: int64
event_end_time:
type: integer
format: int64
serial_number:
type: string
description: List of events over the system
MeterReadings:
type: object
properties:
serial_num:
type: string
description: The serial number of the meter
value:
type: integer
description: The meter reading, in Wh
format: int32
read_at:
type: integer
description: The time when the reading was taken, always prior or equal to the requested 'end_at'
format: int32
HPLifeTimeTelemetryResponse:
type: object
properties:
system_id:
type: string
description: Unique ID of the site
start_date:
type: string
description: Start Date of the daily time-series data series.
end_date:
type: string
description: End Date of the daily time-series data series.
consumption:
type: array
description: Energy units consumed per day (positive will correspond to energy consumption, negative will correspond to zero consumption). The time series includes one entry for each day from the start_date to the end_date with no gaps in the time series. If the response contains trailing zeroes, such as [909, 4970, 0, 0, 0], then there is no consumption by the HP
items:
type: number
description: Energy units consumed per day (positive will correspond to energy consumption, negative will correspond to zero consumption). The time series includes one entry for each day from the start_date to the end_date with no gaps in the time series. If the response contains trailing zeroes, such as [909, 4970, 0, 0, 0], then there is no consumption by the HP
format: double
SystemsTelemetryImportResponse:
type: object
properties:
granularity:
type: string
description: The granularity of the telemetry data. Default is 'day'
enum:
- week
- day
- 15mins
intervals:
type: array
items:
$ref: '#/components/schemas/ImportInterval'
site_id:
type: integer
description: Unique ID of the site
format: int32
start_at:
type: integer
description: Start time for fetching the telemetry data in Epoch time format. If no start_at is specified, defaults to midnight today, in the timezone of the system. If the start_at specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_at.
format: int32
start_date:
type: string
description: 'Start date for fetching the telemetry data in yyyy-mm-dd format.
If no start_date is specified, defaults to midnight today, in the timezone of the system. If the start_date specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_date'
format: date-time
end_at:
type: integer
description: End Time of the data series
format: int32
end_date:
type: string
description: End Date of the data series
format: date-time
total_devices:
type: integer
description: Number of Production meters in the site
format: int32
StormGuardSettingsResponse:
type: object
properties:
system_id:
type: integer
description: Unique ID of the site
format: int32
storm_guard_status:
type: string
description: Current storm guard status of the system. Possible values are Enabled, Disabled. Overrides your battery profile to full backup mode when a severe weather condition alert is issued in the locality.
storm_alert:
type: string
description: Storm alert of the system. Possible values are true, false. True if severe weather condition alert is issued in the locality
EnlightenEventType:
type: object
properties:
event_type_id:
type: integer
description: The unique numeric ID of the event type.
format: int32
event_type_key:
type: string
stateful:
type: boolean
event_name:
type: string
event_description:
type: string
recommended_action:
type: string
description: List of event_type_id along with event_description and recommended_action
ExportInterval:
type: object
properties:
end_at:
type: integer
description: End time of the telemetry interval
format: int32
wh_exported:
type: integer
description: Energy exported per interval
format: int32
ChargeDischargeValue:
type: object
properties:
enwh:
type: integer
format: int32
EnchargeInterval:
type: object
properties:
end_at:
type: integer
description: End time of the telemetry interval.
format: int64
charge:
$ref: '#/components/schemas/ChargeDischargeValue'
discharge:
$ref: '#/components/schemas/ChargeDischargeValue'
soc:
$ref: '#/components/schemas/SocPercent'
DisCharge:
type: object
properties:
enwh:
type: integer
format: int32
devices_reporting:
type: integer
format: int32
SystemsProductionMeterResponse:
type: object
properties:
system_id:
type: integer
format: int32
total_devices:
type: integer
format: int32
start_at:
type: integer
format: int64
end_at:
type: integer
format: int64
items:
type: string
granularity:
type: string
intervals:
type: array
items:
$ref: '#/components/schemas/ProductionMeterInterval'
SystemsTelemetryExportResponse:
type: object
properties:
granularity:
type: string
description: The granularity of the telemetry data. Default is 'day'
enum:
- week
- day
- 15mins
intervals:
type: array
items:
$ref: '#/components/schemas/ExportInterval'
site_id:
type: integer
description: Unique ID of the site
format: int32
start_at:
type: integer
description: Start time for fetching the telemetry data in Epoch time format. If no start_at is specified, defaults to midnight today, in the timezone of the system. If the start_at specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_at.
format: int32
start_date:
type: string
description: 'Start date for fetching the telemetry data in yyyy-mm-dd format.
If no start_date is specified, defaults to midnight today, in the timezone of the system. If the start_date specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_date'
format: date-time
end_at:
type: integer
description: End Time of the data series
format: int32
end_date:
type: string
description: End Date of the data series
format: date-time
total_devices:
type: integer
description: Number of Production meters in the site
format: int32
SystemsLatestTelemetryResponse:
type: object
properties:
system_id:
type: integer
description: The unique numeric ID of the system
format: int32
items:
type: string
description: Named key of the list data. In this endpoint, it is devices
devices:
type: object
additionalProperties:
type: array
items:
$ref: '#/components/schemas/DeviceLatestTelemetry'
SiteAlarmsResponse:
type: object
properties:
systems_id:
type: string
description: The unique numeric ID of the system
alarms:
type: array
description: List of alarms over the system
items:
$ref: '#/components/schemas/Alarm'
SOC:
type: object
properties:
percent:
type: number
format: double
devices_reporting:
type: integer
format: int32
SystemsBatteryLifeTimeResponse:
type: object
properties:
charge:
type: array
description: "An array of charge measurements, one for each day since the system started producing, or one for each day of the requested period.\n If the system has never produced energy, the array may be empty"
items:
type: integer
description: "An array of charge measurements, one for each day since the system started producing, or one for each day of the requested period.\n If the system has never produced energy, the array may be empty"
format: int32
discharge:
type: array
description: "An array of discharge measurements, one for each day since the system started producing, or one for each day of the requested period.\n If the system has never produced energy, the array may be empty"
items:
type: integer
description: "An array of discharge measurements, one for each day since the system started producing, or one for each day of the requested period.\n If the system has never produced energy, the array may be empty"
format: int32
meta:
$ref: '#/components/schemas/Meta'
system_id:
type: string
description: Unique ID of the site
start_date:
type: string
description: "When no start_date parameter is specified on the request, this is the operational_date of the system.\n May be null if system has never produced. When a start_date parameter is included in the request, it is included here in the response."
ProductionMicroInterval:
type: object
properties:
end_at:
type: integer
format: int64
devices_reporting:
type: integer
format: int32
enwh:
type: integer
format: int32
powr:
type: integer
format: int32
ProductionMeterInterval:
type: object
properties:
end_at:
type: integer
format: int64
devices_reporting:
type: integer
format: int32
wh_del:
type: integer
format: int32
SystemsExportLifeTimeResponse:
type: object
properties:
export:
type: array
description: "An array of export measurements, one for each day since the system started producing, or one for each day of the requested period.\n If the system has never produced energy, the array may be empty\n"
items:
type: integer
description: "An array of export measurements, one for each day since the system started producing, or one for each day of the requested period.\n If the system has never produced energy, the array may be empty\n"
format: int32
meta:
$ref: '#/components/schemas/Meta'
system_id:
type: integer
description: Unique ID of the site
format: int32
start_date:
type: string
description: "When no start_date parameter is specified on the request, this is the operational_date of the system.\n May be null if system has never produced. When a start_date parameter is included in the request, it is included here in the response.\n"
meter_start_date:
type: string
description: "The first day in the time series when measurements are taken from a meter instead of from micro inverters.\n This field is not present unless the system has a meter.\n"
SystemsDetailsResponse:
type: object
properties:
total:
type: integer
description: Total number of systems
format: int32
current_page:
type: integer
description: page number of the current page fetched
format: int32
size:
type: integer
description: Maximum number of records shown per page. Default=10, Min=1, Max=100.
format: int32
count:
type: integer
description: Total number of systems returned for the current page
format: int32
items:
type: string
description: Named key of the list data. In this endpoint, it is systems
systems:
type: array
items:
$ref: '#/components/schemas/SystemsDetails'
SystemsConsumptionMeterResponse:
type: object
properties:
system_id:
type: integer
format: int32
total_devices:
type: integer
format: int32
start_at:
type: integer
format: int64
end_at:
type: integer
format: int64
items:
type: string
granularity:
type: string
intervals:
type: array
items:
$ref: '#/components/schemas/ConsumptionMeterInterval'
meta:
$ref: '#/components/schemas/Meta'
DeviceLevelHPTelemetryResponse:
type: object
properties:
system_id:
type: string
description: Unique ID of the site
granularity:
type: string
description: The granularity of the telemetry data. Possible values are 'week', 'day', '15mins', '5mins'. Default is 'day'
interval_duration:
type: string
description: Size of the interval. Can be 5mins, or 15mins. Site must be configured to 5 min telemetry for this to be supported
start_at:
type: integer
description: Start Time of the data series.
format: int64
end_at:
type: integer
description: End Time of the telemetry data.
format: int64
items:
type: string
description: The list key 'intervals'
intervals:
type: array
items:
$ref: '#/components/schemas/HPTelemetryInterval'
DeviceLevelPVProductionResponse:
type: object
properties:
system_id:
type: string
description: Unique ID of the site
serial_number:
type: string
description: The device serial number
start_at:
type: integer
description: Start time for fetching the telemetry data in Epoch time format. If no start_at is specified, defaults to midnight today, in the timezone of the system. If the start_at specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_at.
format: int64
start_date:
type: string
description: 'Start date for fetching the telemetry data in yyyy-mm-dd format
If no start_date is specified, defaults to midnight today, in the timezone of the system. If the start_date specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_date'
end_at:
type: integer
description: End Time of the data series
format: int64
end_date:
type: string
description: End Date of the data series
granularity:
type: string
description: The granularity of the telemetry data. Default is 'day'
total_devices:
type: integer
description: Number of Production meters in the site
format: int32
items:
type: string
intervals:
type: array
items:
$ref: '#/components/schemas/PVProductionInterval'
SystemsPELPCSResponse:
type: object
properties:
pcs_limit_enabled:
type: boolean
pcs_limt:
type: number
format: double
pel_enabled:
type: boolean
pel:
type: number
format: double
SystemsImportLifeTimeResponse:
type: object
properties:
meta:
$ref: '#/components/schemas/Meta'
system_id:
type: integer
description: Unique ID of the site
format: int32
start_date:
type: string
description: "When no start_date parameter is specified on the request, this is the operational_date of the system. May be null if system has never produced.\n When a start_date parameter is included in the request, it is included here in the response.\n"
meter_start_date:
type: string
description: "The first day in the time series when measurements are taken from a meter instead of from micro inverters.\n This field is not present unless the system has a meter\n"
import:
type: array
description: "An array of import measurements, one for each day since the system started producing, or one for each day of the requested period.\n If the system has never produced energy, the array may be empty\n"
items:
type: integer
description: "An array of import measurements, one for each day since the system started producing, or one for each day of the requested period.\n If the system has never produced energy, the array may be empty\n"
format: int32
ConsumptionMeterInterval:
type: object
properties:
end_at:
type: integer
format: int64
devices_reporting:
type: integer
format: int32
enwh:
type: integer
format: int32
SocPercent:
type: object
properties:
percent:
type: integer
description: Battery soc percentage
format: int32
DeviceLevelEVSETelemetryResponse:
type: object
properties:
system_id:
type: string
description: Unique ID of the site
granularity:
type: string
description: The granularity of the telemetry data. Possible values are 'week', 'day', '15mins', '5mins'. Default is 'day'
interval_duration:
type: string
description: Size of the interval. Can be 5mins, or 15mins. Site must be configured to 5 min telemetry for this to be supported
start_at:
type: integer
description: Start Time of the data series.
format: int64
end_at:
type: integer
description: End Time of the telemetry data.
format: int64
items:
type: string
description: The list key 'intervals'
intervals:
type: array
items:
$ref: '#/components/schemas/EVSETelemetryInterval'