openapi: 3.0.0 info: title: The Enlighten Systems API description: |- The Enlighten Systems API is a JSON-based API that provides access to performance data for a PV system. By using the Enlighten Systems API, you agree to the Enphase Energy API License Agreement. Please note that the Enlighten Systems API does not provide performance data at a panel or microinverter level. version: '2.0' termsOfService: https://developer.enphase.com/docs#Display-Requirements license: name: Enphase API License Agreement url: https://www.enphase.com/en-us/legal/api-license-agreement servers: - url: 'https://api.enphaseenergy.com/api/v2' paths: '/systems/{system_id}/energy_lifetime': get: description: |- Returns a time series of energy produced on 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`. There are 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. You can check the system's status in the `meta` attribute of the response to determine when the system last reported and whether it has communication or production problems. If the system has a meter, the time series includes data as measured by the microinverters until the first full day after the meter has been installed, when it switches to using the data as measured by the meter. This is called the "merged time series". In addition, the response includes the attribute `meter_start_date`, to indicate where in the time series the meter measurements begin to be used. You can retrieve the complete time series from the meter and from the microinverters by adding the parameter `production=all` to the request. operationId: EnergyLifetime parameters: - $ref: '#/components/parameters/UserId' - $ref: '#/components/parameters/SystemId' - name: start_date description: The date on which to start the time series. Defaults to the system's operational date. in: query schema: type: string format: date example: '2013-01-01' - name: end_date description: The last date to include in the time series. Defaults to yesterday or the last day the system reported, whichever is earlier. in: query schema: type: string format: date example: '2013-01-06' - name: production description: When `all`, returns the merged time series plus the time series as reported by the microinverters and the meter on the system. Other values are ignored. in: query schema: type: string enum: - all example: all responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EnergyLifetimeResponse' '204': description: No Content '401': $ref: '#/components/responses/ClientError' '409': $ref: '#/components/responses/ConflictError' '422': $ref: '#/components/responses/UnprocessableEntityError' '500': $ref: '#/components/responses/ServerError' '503': $ref: '#/components/responses/ServerError' '/systems/{system_id}/envoys': get: description: Returns a listing of all active Envoys currently deployed on the system. operationId: Envoys parameters: - $ref: '#/components/parameters/UserId' - $ref: '#/components/parameters/SystemId' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/EnvoysResponse' '401': $ref: '#/components/responses/ClientError' '409': $ref: '#/components/responses/ConflictError' '422': $ref: '#/components/responses/UnprocessableEntityError' '500': $ref: '#/components/responses/ServerError' '503': $ref: '#/components/responses/ServerError' '/systems': get: description: |- Returns a list of systems for which the user can make API requests. There is a limit to the number of systems that can be returned at one time. If the first request does not return a full list, use the `next` attribute in the response body to request the next page of systems. By default, systems are returned in batches of 100. The maximum page size is 1000. operationId: Systems parameters: - $ref: '#/components/parameters/UserId' - name: next in: query schema: type: string example: 4d5467784d5445770a - name: limit in: query schema: type: integer default: 100 maximum: 1000 example: 100 - name: system_id in: query schema: type: integer example: 67 - name: 'system_id[]' in: query schema: type: array items: type: integer example: - 67 - name: system_name in: query schema: type: string example: Green - name: 'system_name[]' in: query schema: type: array items: type: string example: - Green - name: status in: query schema: $ref: '#/components/schemas/Status' example: power - name: 'status[]' in: query schema: type: array items: $ref: '#/components/schemas/Status' example: - comm - micro - name: reference in: query schema: type: string - name: 'reference[]' in: query schema: type: array items: type: string - name: installer in: query schema: type: string - name: 'installer[]' in: query schema: type: array items: type: string - name: connection_type in: query schema: $ref: '#/components/schemas/ConnectionType' - name: 'connection_type[]' in: query schema: type: array items: $ref: '#/components/schemas/ConnectionType' example: - ethernet responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SystemsResponse' '401': $ref: '#/components/responses/ClientError' '409': $ref: '#/components/responses/ConflictError' '422': $ref: '#/components/responses/UnprocessableEntityError' '500': $ref: '#/components/responses/ServerError' '503': $ref: '#/components/responses/ServerError' '/systems/{system_id}/inventory': get: description: |- Returns a listing of active devices on the given system. A device is considered active if it has not been retired in Enlighten. "Active" does not imply that the device is currently reporting, producing, or measuring energy. operationId: Inventory parameters: - $ref: '#/components/parameters/UserId' - $ref: '#/components/parameters/SystemId' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/InventoryResponse' '401': $ref: '#/components/responses/ClientError' '409': $ref: '#/components/responses/ConflictError' '422': $ref: '#/components/responses/UnprocessableEntityError' '500': $ref: '#/components/responses/ServerError' '503': $ref: '#/components/responses/ServerError' '/systems/inverters_summary_by_envoy_or_site': get: description: Returns the summary along with the energy produced on the system over its lifetime. operationId: InvertersSummaryByEnvoyOrSite parameters: - $ref: '#/components/parameters/UserId' - name: site_id description: The identifier of the system. in: query required: true schema: type: integer example: 66 responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/InvertersSummaryByEnvoyOrSiteResponse' '401': $ref: '#/components/responses/ClientError' '409': $ref: '#/components/responses/ConflictError' '422': $ref: '#/components/responses/UnprocessableEntityError' '500': $ref: '#/components/responses/ServerError' '503': $ref: '#/components/responses/ServerError' '/systems/{system_id}/monthly_production': get: deprecated: true description: |- This endpoint is deprecated and will be removed in a future release. Use `production_meter_readings` or `energy_lifetime` instead. Returns the energy production of the system for the month starting on the given date. The start date must be at least one month ago. If a meter or meters are installed on the system, measurements come from the meter; otherwise, measurements come from the microinverters. This endpoint can return a response of Data Temporarily Unavailable. operationId: MonthlyProduction parameters: - $ref: '#/components/parameters/UserId' - $ref: '#/components/parameters/SystemId' - name: start_date description: |- Start date for reporting period. The reporting period ends on the previous day of the next month; for example, a `start_date` of 2011-07-20 returns data through 2011-06-19. When the start date is the first of a calendar month, the end date is the last day of that month. in: query required: true schema: type: string format: date example: '2011-07-01' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MonthlyProductionResponse' '401': $ref: '#/components/responses/ClientError' '409': $ref: '#/components/responses/ConflictError' '422': $ref: '#/components/responses/UnprocessableEntityError' '500': $ref: '#/components/responses/ServerError' '503': $ref: '#/components/responses/ServerError' '/systems/{system_id}/production_meter_readings': get: description: |- Returns the last known "odometer" reading of each revenue-grade production meter on the system as of the requested time. This endpoint includes entries for every production meter on the requested system, 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 it is on. 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: ProductionMeterReadings parameters: - $ref: '#/components/parameters/UserId' - $ref: '#/components/parameters/SystemId' - name: end_at in: query schema: type: integer format: int64 example: 1473901755 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ProductionMeterReadingsResponse' '401': $ref: '#/components/responses/ClientError' '409': $ref: '#/components/responses/ConflictError' '422': $ref: '#/components/responses/UnprocessableEntityError' '500': $ref: '#/components/responses/ServerError' '503': $ref: '#/components/responses/ServerError' '/systems/{system_id}/rgm_stats': get: description: |- Returns performance statistics as measured by the revenue-grade meters installed on the specified system. If the total duration requested is more than one month, returns one month of intervals. Intervals are 15 minutes in length and start at the top of the hour. Requests for times that do not fall on the 15-minute marks are rounded down. For example, a request for 08:01, 08:08, 08:11, or 08:14 is treated as a request for 08:00. Intervals are listed by their end dates; therefore, the first interval returned is 15 minutes after the requested start date. If the system doesn't have any revenue-grade meters installed, the response includes an empty intervals array. Under some conditions, data for a given period may be temporarily unavailable. operationId: RgmStats parameters: - $ref: '#/components/parameters/UserId' - $ref: '#/components/parameters/SystemId' - name: start_at description: |- Start of period to report on in Unix epoch time. If no start is specified, the assumed start is midnight today, in the timezone of the system. If the start is earlier than one year ago, the response includes an empty intervals list. If the start is earlier than the system's `operational_date`, the response data begins with the first interval of the `operational_date`. in: query schema: type: integer format: int64 example: 1381474800 - name: end_at 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. in: query schema: type: integer format: int64 example: 1381561200 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RgmStatsResponse' '401': $ref: '#/components/responses/ClientError' '409': $ref: '#/components/responses/ConflictError' '422': $ref: '#/components/responses/UnprocessableEntityError' '500': $ref: '#/components/responses/ServerError' '503': $ref: '#/components/responses/ServerError' '/systems/{system_id}/stats': get: description: |- Returns performance statistics for the specified system as reported by microinverters installed on the system. If the total duration requested is more than one day, returns one day of intervals. Intervals are 5 minutes in length and start at the top of the hour. Requests for times that do not fall on the 5-minute marks are rounded down. For example, a request for 08:01, 08:02, 08:03, or 08:04 is treated as a request for 08:00. Intervals are listed by their end dates; therefore, the first interval returned is 5 minutes after the requested start date. The response includes intervals that have been reported for the requested period. Gaps in reporting are not filled with 0-value intervals. The dark hours on a system are an example of such a gap, because the microinverters do not produce at night. Sometimes a request cannot be processed because the requested dates are invalid for the system in question. Examples include asking for stats starting at a time that is later than the system's last reported interval, or asking for stats before a system has started production. In cases such as these, the response code is `422` and the response body includes an error reason as well as the parameters used to process the request. If the system doesn't have any microinverters installed, the response includes an empty intervals array. Under some conditions, data for a given period may be temporarily unavailable. operationId: Stats parameters: - $ref: '#/components/parameters/UserId' - $ref: '#/components/parameters/SystemId' - name: start_at description: |- Start of reporting period in Unix epoch time. If no start is specified, defaults to midnight today, in the timezone of the system. If the start date is earlier than one year ago today, the response includes an empty intervals list. If the start is earlier than the system's `operational_date`, the response data begins with the `operational_date`. in: query schema: type: integer format: int64 example: 1381496100 - name: end_at description: |- End of reporting period in Unix epoch time. If no end is specified, the assumed end is now. If the end is later than the last reporting interval the response data ends with the last reported interval. in: query schema: type: integer format: int64 example: 1381497600 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/StatsResponse' '401': $ref: '#/components/responses/ClientError' '409': $ref: '#/components/responses/ConflictError' '422': $ref: '#/components/responses/UnprocessableEntityError' '500': $ref: '#/components/responses/ServerError' '503': $ref: '#/components/responses/ServerError' '/systems/{system_id}/consumption_lifetime': get: description: |- Returns a time series of energy consumption as measured by the consumption meter installed on the specified system. All measurements are in Watt-hours. If the system does not have a meter, returns `204` - No Content. If you don't have permission to view consumption data, the response code is `401`. The time series includes one entry for each day from the `start_date` to the `end_date`. 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 days in the series. You can check the system's status in the `meta` attribute of the response to determine when the system last reported and whether it has communication or metering problems. operationId: ConsumptionLifetime parameters: - $ref: '#/components/parameters/UserId' - $ref: '#/components/parameters/SystemId' - name: start_date description: The date on which to start the time series. Defaults to the system's operational date. in: query schema: type: string format: date example: '2016-07-01' - name: end_date description: The last date to include in the time series. Defaults to yesterday or the last day the system reported, whichever is earlier. in: query schema: type: string format: date example: '2016-07-31' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ConsumptionLifetimeResponse' '401': $ref: '#/components/responses/ClientError' '409': $ref: '#/components/responses/ConflictError' '422': $ref: '#/components/responses/UnprocessableEntityError' '500': $ref: '#/components/responses/ServerError' '503': $ref: '#/components/responses/ServerError' '/systems/{system_id}/consumption_stats': get: description: |- Returns consumption as measured by the consumption meter installed on the specified system. If the total duration requested is more than one month, returns one month of intervals. Intervals are 15 minutes in length and start at the top of the hour. Requests for times that do not fall on the 15-minute marks are rounded down. For example, a request for 08:01, 08:08, 08:11, or 08:14 is treated as a request for 08:00. Intervals are listed by their end dates; therefore, the first interval returned is 15 minutes after the requested start date. If the system doesn't have any consumption meters installed, the response includes an empty intervals array. If you don't have permission to view consumption data, the response code is `401`. Under some conditions, data for a given period may be temporarily unavailable. operationId: ConsumptionStats parameters: - $ref: '#/components/parameters/UserId' - $ref: '#/components/parameters/SystemId' - name: start_at description: |- Start of period to report on in Unix epoch time. If no start is specified, the assumed start is midnight today, in the timezone of the system. If the start is earlier than one year ago, the response includes an empty intervals list. If the start is earlier than the system's `operational_date`, the response data begins with the first interval of the `operational_date`. in: query schema: type: integer format: int64 example: 1448946000 - name: end_at 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. in: query schema: type: integer format: int64 example: 1449011615 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ConsumptionStatsResponse' '401': $ref: '#/components/responses/ClientError' '409': $ref: '#/components/responses/ConflictError' '422': $ref: '#/components/responses/UnprocessableEntityError' '500': $ref: '#/components/responses/ServerError' '503': $ref: '#/components/responses/ServerError' '/systems/{system_id}/summary': get: description: Returns summary information for the specified system. operationId: Summary parameters: - $ref: '#/components/parameters/UserId' - $ref: '#/components/parameters/SystemId' - name: summary_date description: |- Start of reporting period. If no `summary_date` is provided, the start is the current day at midnight site-local time. Otherwise, the start is midnight site-local time of the requested day. If the requested date cannot be parsed or is in the future, the response includes an informative error message and `422` status. in: query schema: type: string format: date example: '2010-09-17' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SummaryResponse' '401': $ref: '#/components/responses/ClientError' '409': $ref: '#/components/responses/ConflictError' '422': $ref: '#/components/responses/UnprocessableEntityError' '500': $ref: '#/components/responses/ServerError' '503': $ref: '#/components/responses/ServerError' '/systems/search_system_id': get: description: Get system ID by envoy serial number. operationId: SearchSystemId parameters: - $ref: '#/components/parameters/UserId' - name: serial_num description: Serial number of the envoy. in: query required: true schema: type: string example: '23435345345' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SearchSystemIdResponse' '401': $ref: '#/components/responses/ClientError' '404': $ref: '#/components/responses/NotFoundError' '409': $ref: '#/components/responses/ConflictError' '422': $ref: '#/components/responses/UnprocessableEntityError' '500': $ref: '#/components/responses/ServerError' '503': $ref: '#/components/responses/ServerError' components: schemas: EnergyLifetimeResponse: type: object properties: start_date: 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. When a `start_date` parameter is included in the request, it is included here in the response. type: string format: date system_id: description: The identifier of the system. type: integer production: description: |- An array of production measurements, one for each day since the system started producing, or one for each day of the requested period. If the system has never produced energy, the array may be empty. type: array items: type: integer micro_production: type: array items: type: integer meter_production: type: array items: type: integer meter_start_date: description: The first day in the time series when measurements are taken from a meter instead of from microinverters. This field is not present unless the system has a meter. type: string format: date meta: $ref: '#/components/schemas/Meta' required: - start_date - system_id - production - meta example: start_date: '2013-01-01' system_id: 66 production: - 15422 - 15421 - 17118 - 18505 - 18511 - 18487 meter_start_date: '2013-02-15' meta: status: normal last_report_at: 1445619615 last_energy_at: 1445619033 operational_at: 1357023600 EnvoysResponse: type: object properties: system_id: description: The identifier of the system. type: integer envoys: description: A list of active Envoys on this system. type: array items: type: object properties: envoy_id: description: The Enlighten ID of the Envoy. type: integer last_report_at: description: |- The last time this Envoy submitted a report, by default expressed in Unix epoch time. When the `datetime_format` query parameter is `iso8601`, `last_report_at` is in ISO 8601 format. If Enlighten has no record of a report from this Envoy, returns null. type: integer format: int64 name: description: The human-friendly name of this Envoy. type: string part_number: description: The Enphase part number of this Envoy. type: string serial_number: description: The serial number of this Envoy. type: string status: description: |- The current status of this Envoy. * `normal` - The Envoy is operating normally. * `comm` - The Envoy is not communicating to Enlighten. type: string enum: - normal - comm required: - envoy_id - last_report_at - name - part_number - serial_number - status required: - system_id - envoys example: system_id: 67 envoys: - envoy_id: 512 last_report_at: 1308008107 name: Envoy 010731000003 part_number: 800-00002-r00 serial_number: '010731000003' status: normal - envoy_id: 841 last_report_at: null name: Envoy 010814000001 part_number: 910-10000-r01 serial_number: '010814000001' status: normal SystemsResponse: type: object properties: systems: type: array items: type: object properties: system_id: description: The Enlighten ID of the system. type: integer system_name: description: |- The name of the system. Even if the system owner has indicated their site is anonymous for public lists, the actual system name is returned here for identification purposes. type: string system_public_name: description: The display name of the system. Use this when displaying the system name on a public list or view. type: string reference: description: |- If the calling user belongs to a company and that company has provided its own identifiers for a system, that ID is included here. Otherwise, this attribute is not returned. type: string other_references: description: If any other companies have provided their own identifiers for a system, those identifiers are included here. Otherwise, this attribute is not returned. type: array items: type: string country: description: The two-letter code for the country where the system is located. See [ISO_3166-1_alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) for reference. type: string minLength: 2 maxLength: 2 state: description: The two-letter code for the state where the system is located. See [ISO_3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) for reference. type: string minLength: 2 city: description: The name of the city where the system is located. type: string postal_code: description: The postal code where the system is located. type: string timezone: description: The timezone of the system. type: string connection_type: $ref: '#/components/schemas/ConnectionType' status: deprecated: true description: The current status of the system. You can find this and more in the `meta` property. type: string enum: - comm - power - meter - meter_issue - micro - battery - storage_idle - normal meta: $ref: '#/components/schemas/Meta' required: - system_id - system_name - system_public_name - status - timezone - country - state - city - postal_code - connection_type - meta next: type: string required: - systems example: systems: - system_id: 67 system_name: Sample Residence 1 system_public_name: Sample Residence 1 status: normal timezone: America/Los_Angeles country: US state: CA city: Sebastopol postal_code: '95472' connection_type: ethernet meta: status: normal last_report_at: 1445619615 last_energy_at: 1445619033 operational_at: 1357023600 - system_id: 72 system_name: Sample Residence 2 system_public_name: Sample Residence 2 status: normal timezone: America/Los_Angeles country: US state: CA city: Placerville postal_code: '95667' connection_type: ethernet meta: status: comm last_report_at: 1449959488 last_energy_at: 1449945104 operational_at: 1418912581 next: 4e7a453d0a InventoryResponse: type: object properties: system_id: description: Enlighten ID for this system. type: integer envoys: description: A list of Envoys on this system, including serial number. type: array items: type: object properties: sn: type: string model: type: string sku: type: string required: - sn - model - sku inverters: description: A list of inverters on this system, including serial and model numbers. type: array items: type: object properties: sn: type: string model: type: string sku: type: string required: - sn - model - sku meters: description: A list of meters on this system, including serial number, manufacturer, and model number. type: array items: type: object properties: sn: type: string manufacturer: type: string model: type: string status: type: string state: type: string required: - sn - manufacturer - model meta: $ref: '#/components/schemas/Meta' required: - system_id - inverters - meters - meta example: system_id: 1765 inverters: - sn: '123456789123' model: M215 - sn: '123455589199' model: M215 meters: - sn: '999111222333' manufacturer: GE model: I-210+ InvertersSummaryByEnvoyOrSiteResponse: type: object properties: signal_strength: type: integer micro_inverters: description: A list of active inverters on this system, including serial and model numbers. type: array items: type: object properties: id: type: integer model: description: Model number of this Microinverter. type: string part_number: description: The Enphase part number of this Microinverter. type: string serial_number: description: The serial number of this Microinverter. type: string sku: type: string status: description: |- The current status of this Microinverter. * `normal` - The microinverter is operating normally. * `power` - There is a production issue. * `micro` - The microinverter is not reporting. * `retired` - The microinverter is retired. type: string enum: - normal - power - micro - retired power_produced: type: object properties: value: type: integer units: type: string enum: - W precision: type: integer required: - value - units - precision proc_load: type: string param_table: type: string envoy_serial_number: type: string energy: description: Returns the lifetime energy of the Microinverter. If the system has never produced energy, the energy value would be 0. type: object properties: value: type: integer units: type: string enum: - Wh - kJ precision: type: integer required: - value - units - precision grid_profile: type: string last_report_date: description: The last time this device submitted a report, by default expressed in Unix epoch time. If Enlighten has no record of a report from this Envoy, returns null. type: string format: date required: - id - model - part_number - serial_number - sku - status - power_produced - proc_load - param_table - envoy_serial_number - energy - grid_profile - last_report_date required: - signal_strength - micro_inverters example: signal_strength: 5 micro_inverters: - id: 1059689835 serial_number: '688346865858' model: M215 part_number: 800-00107-r01 sku: M215-60-2LL-S22-NA status: normal power_produced: value: 34 units: W precision: 0 proc_load: undetermined-v param_table: undetermined-v envoy_serial_number: '121842012242' energy: value: 232 units: Wh precision: 0 grid_profile: 57227c50e4d7973ae602c4e6 last_report_date: 1600427843 - id: 1059689836 serial_number: '686868727227' model: M215 part_number: 800-00107-r01 sku: M215-60-2LL-S22-NA status: normal power_produced: value: 20 units: W precision: 0 proc_load: undetermined-v param_table: undetermined-v envoy_serial_number: '121842012242' energy: value: 120 units: Wh precision: 0 grid_profile: 57227c50e4d7973ae602c4e6 last_report_date: 1600427843 MonthlyProductionResponse: type: object properties: system_id: description: Enlighten ID for this system. type: integer start_date: description: |- First day included in the reporting period. The format is `YYYY-mm-dd` unless you pass a `datetime_format` parameter as described [here](https://developer.enphase.com/docs#Datetimes). type: string format: date end_date: description: Last day included in the reporting period. type: string format: date production_wh: description: Total production for the requested period in Watt-hours. type: integer meter_readings: description: |- If the system has any revenue-grade meters installed, the meter readings at the beginning and end of the reporting period are included here. Otherwise, the array is empty. type: array items: type: object properties: serial_number: type: string start: type: integer end: type: integer required: - serial_number - start - end meta: $ref: '#/components/schemas/Meta' required: - system_id - start_date - end_date - production_wh - meter_readings - meta example: system_id: 66 start_date: '2011-07-01' end_date: '2011-07-31' production_wh: 208435 meter_readings: - serial_number: '123123123123' start: 196077 end: 404512 meta: status: normal last_report_at: 1445619615 last_energy_at: 1445619033 operational_at: 1357023600 ProductionMeterReadingsResponse: type: object properties: system_id: type: integer meter_readings: type: array items: type: object properties: serial_number: description: The serial number of the meter. type: string value: description: The odometer reading, in Watt-hours. type: integer read_at: description: The time when the reading was taken, always prior or equal to the requested `end_at`. type: integer format: int64 required: - serial_number - value - read_at meta: $ref: '#/components/schemas/Meta' required: - system_id - meter_readings - meta example: system_id: 66 meter_readings: - serial_number: '123123123123EIM1' value: 6180635 read_at: 1473901200 meta: status: normal last_report_at: 1473902079 last_energy_at: 1473901200 operational_at: 1357023600 RgmStatsResponse: type: object properties: system_id: description: Enlighten ID for this system. type: integer total_devices: description: Number of active revenue-grade meters for this system. type: integer meta: $ref: '#/components/schemas/Meta' intervals: description: A list of intervals between the requested start and end times. type: array items: type: object properties: end_at: description: End of interval. The format is Unix epoch time unless you pass a `datetime_format` parameter as described [here](https://developer.enphase.com/docs#Datetimes). type: integer format: int64 wh_del: description: Energy delivered during this interval, in Watt-hours. type: integer devices_reporting: description: Number of revenue-grade meters that reported data for this interval at the time of the request. type: integer required: - end_at - wh_del - devices_reporting meter_intervals: description: A list of intervals of a meter between the requested start and end times. type: array items: type: object properties: meter_serial_number: description: Serial number of the revenue grade meter. type: string envoy_serial_number: description: Serial number of the reporting envoy. type: string intervals: description: Individual meter level interval. type: array items: type: object properties: channel: description: The reporting channel identifier. type: integer end_at: description: |- End of interval. The format is Unix epoch time unless you pass a `datetime_format` parameter as described [here](https://developer.enphase.com/docs#Datetimes). type: integer format: int64 wh_del: description: Energy delivered during this interval, in Watt-hours. type: number format: float nullable: true curr_w: description: Energy delivered during this interval, in Watts. type: integer nullable: true required: - channel - end_at - wh_del - curr_w required: - meter_serial_number - envoy_serial_number - intervals required: - system_id - total_devices - meta - intervals - meter_intervals example: system_id: 1765 total_devices: 2 meta: status: normal last_report_at: 1445619615 last_energy_at: 1445619033 operational_at: 1357023600 intervals: - end_at: 1384122700 wh_del: 50 devices_reporting: 2 - end_at: 1384123600 wh_del: 100 devices_reporting: 2 - end_at: 1384124500 wh_del: 15 devices_reporting: 2 - end_at: 1384125400 wh_del: 21 devices_reporting: 2 - end_at: 1384126300 wh_del: 34 devices_reporting: 2 meter_intervals: - meter_serial_number: '1218676784' envoy_serial_number: '1218347675' intervals: - channel: 1 end_at: 1384122700 wh_del: 30 curr_w: 120 - channel: 1 end_at: 1384123600 wh_del: 50 curr_w: 200 - channel: 1 end_at: 1384124500 wh_del: 10 curr_w: 40 - channel: 1 end_at: 1384125400 wh_del: 10 curr_w: 40 - channel: 1 end_at: 1384126300 wh_del: 20 curr_w: 80 - meter_serial_number: '1218676791' envoy_serial_number: '1218347675' intervals: - channel: 1 end_at: 1384122700 wh_del: 20 curr_w: 80 - channel: 1 end_at: 1384123600 wh_del: 50 curr_w: 200 - channel: 1 end_at: 1384124500 wh_del: 5 curr_w: 20 - channel: 1 end_at: 1384125400 wh_del: 11 curr_w: 44 - channel: 1 end_at: 1384126300 wh_del: 14 curr_w: 56 StatsResponse: type: object properties: system_id: description: Enlighten ID for this system. type: integer total_devices: description: Number of active microinverters for this system. type: integer meta: $ref: '#/components/schemas/Meta' intervals: description: A list of intervals between the requested start and end times. type: array items: type: object properties: end_at: description: |- End date for interval. The format is Unix epoch time unless you pass a `datetime_format` parameter as described [here](https://developer.enphase.com/docs#Datetimes). type: integer format: int64 powr: description: Average power produced by microinverters during this interval, in Watts. type: integer enwh: description: Energy produced by microinverters during this interval, in Watt-hours. type: integer devices_reporting: description: Number of microinverters that reported data for this interval at the time of the request. type: integer required: - end_at - powr - enwh - devices_reporting required: - system_id - total_devices - meta - intervals example: system_id: 1765 total_devices: 31 meta: status: normal last_report_at: 1445619615 last_energy_at: 1445619033 operational_at: 1357023600 intervals: - end_at: 1381496400 powr: 173 enwh: 14 devices_reporting: 27 - end_at: 1381496700 powr: 258 enwh: 22 devices_reporting: 31 - end_at: 1381497000 powr: 308 enwh: 26 devices_reporting: 31 - end_at: 1381497300 powr: 386 enwh: 32 devices_reporting: 31 - end_at: 1381497600 powr: 476 enwh: 40 devices_reporting: 31 ConsumptionLifetimeResponse: type: object properties: start_date: 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. When a `start_date` parameter is included in the request, it is included here in the response. type: string format: date system_id: description: The identifier of the system. type: integer consumption: description: An array of consumption measurements, one for each day since consumption metering began, or one for each day of the requested period. type: array items: type: integer meta: $ref: '#/components/schemas/Meta' required: - start_date - consumption - meta example: 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 ConsumptionStatsResponse: type: object properties: system_id: description: Enlighten ID for this system. type: integer total_devices: description: Number of active consumption meters for this system. type: integer meta: $ref: '#/components/schemas/Meta' intervals: description: A list of intervals between the requested start and end times. type: array items: type: object properties: end_at: description: End of interval. The format is Unix epoch time unless you pass a `datetime_format` parameter as described [here](https://developer.enphase.com/docs#Datetimes). type: integer format: int64 enwh: description: Energy consumed during this interval, in Watt-hours. type: integer devices_reporting: description: Number of consumption meters that reported data for this interval at the time of the request. type: integer required: - end_at - enwh - devices_reporting required: - system_id - total_devices - meta - intervals example: system_id: 1765 total_devices: 1 meta: status: normal last_report_at: 1449011615 last_energy_at: 1449011015 operational_at: 1357023600 intervals: - end_at: 1448946900 enwh: 0 devices_reporting: 1 - end_at: 1448947800 enwh: 0 devices_reporting: 1 - end_at: 1448948700 enwh: 2 devices_reporting: 1 - end_at: 1448949600 enwh: 2 devices_reporting: 1 - end_at: 1448950500 enwh: 3 devices_reporting: 1 SummaryResponse: type: object properties: current_power: description: Current power production, in Watts. For historical requests, returns 0. type: integer energy_lifetime: description: Energy produced in the lifetime of the system, excluding the requested day, in Watt-hours. type: integer energy_today: description: Energy produced on the requested day, in Watt-hours. type: integer last_interval_end_at: 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. type: integer format: int64 last_report_at: description: |- The last time an Envoy on this system reported. The format is Unix epoch time unless you pass a `datetime_format` parameter as described [here](https://developer.enphase.com/docs#Datetimes). type: integer format: int64 modules: description: Number of active (not retired) modules. For historical requests, returns 0. type: integer operational_at: description: |- The time at which this system became operational. Corresponds to the system's interconnect time, if one is specified. Otherwise, it is the system's first interval end time. The format is Unix epoch time unless you pass a `datetime_format` parameter as described [here](https://developer.enphase.com/docs#Datetimes). type: integer format: int64 size_w: description: The size of the system, in Watts. For historical requests, returns 0. type: integer source: description: Indicates whether the production of this system is measured by its microinverters (`microinverters`) or by revenue-grade meters (`meter`) installed on the system. type: string enum: - microinverters - meter status: $ref: '#/components/schemas/Status' summary_date: description: |- Effective date of the response. For historical requests, returns the date requested. For current requests, returns the current date. The format is `YYYY-mm-dd` unless you pass a `datetime_format` parameter as described [here](https://developer.enphase.com/docs#Datetimes). type: string format: date system_id: description: The Enlighten ID of the system. type: integer required: - current_power - energy_lifetime - energy_today - last_interval_end_at - last_report_at - modules - operational_at - size_w - source - status - summary_date - system_id example: current_power: 3322 energy_lifetime: 19050353 energy_today: 25639 last_interval_end_at: 1380632400 last_report_at: 1380632791 modules: 31 operational_at: 1201362300 size_w: 5250 source: microinverters status: normal summary_date: '2014-01-06' system_id: 123 SearchSystemIdResponse: type: object properties: system_id: description: The Enlighten ID of the system. type: integer required: - system_id example: system_id: 123 ConnectionType: description: How the system is connected to the Internet. type: string enum: - ethernet - cellular - wifi example: ethernet Status: description: |- The current status of the system. * `comm` - One or more Envoys on the system are not communicating to Enlighten. * `power` - There is a production issue on the system. * `meter` - There is a communication problem between an Envoy and a revenue-grade meter on the system. * `meter_issue` - One or more meters on the system are reporting unusual measurements. * `micro` - There is a communication problem between an Envoy and microinverters that it monitors. * `battery` - There is a communication problem between an Envoy and an AC battery on the system. * `storage_idle` - An AC battery on the system has not changed its state of charge for more than 72 hours. * `normal` - The system is operating normally. type: string enum: - comm - power - meter - meter_issue - micro - battery - storage_idle - normal example: normal Meta: description: Information about the system that you can use to ascertain the timeliness of the production data included in the response. type: object properties: status: $ref: '#/components/schemas/Status' last_report_at: type: integer format: int64 last_energy_at: type: integer format: int64 operational_at: type: integer format: int64 required: - status - last_report_at - last_energy_at - operational_at example: status: normal last_report_at: 1445619615 last_energy_at: 1445619033 operational_at: 1357023600 ClientError: type: object properties: reason: type: string message: type: array items: type: string required: - reason - message example: reason: 401 message: - Not authorized to access requested resource. NotFoundError: type: object properties: reason: type: string message: type: array items: type: string errorMessages: type: array items: type: string required: - reason example: reason: 404 errorMessages: - Envoy not found with this serial number ConflictError: type: object properties: reason: type: string message: type: array items: type: string period: type: string enum: - hour - minute - second period_start: type: integer period_end: type: integer limit: type: integer required: - reason - message - period - period_start - period_end - limit example: reason: '409' message: ['Usage limit exceeded for plan Watt'] period: 'minute' period_start: 1401742440 period_end: 1401742500 limit: 10 UnprocessableEntityError: type: object properties: reason: type: string message: type: string errorMessages: type: array items: type: string start: type: string format: date end: type: string format: date start_at: type: integer end_at: type: integer first_interval: type: integer last_interval: type: integer ServerError: type: object properties: errorCode: type: integer errorMessages: type: array items: type: string required: - errorCode - errorMessages example: errorCode: 7 errorMessages: - Data temporarily unavailable. parameters: UserId: name: user_id in: query required: true schema: type: string example: 4d6a51330a SystemId: name: system_id in: path required: true schema: type: integer example: 66 responses: ClientError: description: Client error content: application/json: schema: $ref: '#/components/schemas/ClientError' NotFoundError: description: Not Found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' ConflictError: description: Conflict content: application/json: schema: $ref: '#/components/schemas/ConflictError' UnprocessableEntityError: description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/UnprocessableEntityError' ServerError: description: Server error content: application/json: schema: $ref: '#/components/schemas/ServerError' securitySchemes: ApiKey: type: apiKey name: key in: query security: - ApiKey: []