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'