Enphase Energy System and Device Configuration API

System and Device Configuration API

Operations 10

PUT /api/v1/systems/{site_id}/stop_live_stream Stop the live stream for an enrolled site #
PUT /api/v1/systems/{site_id}/start_live_stream Start the live stream for an enrolled site #
GET /api/v1/systems/{site_id}/settings Fetch site settings for an enrolled site #
PUT /api/v1/systems/{site_id}/settings Update site settings for an enrolled site #
POST /api/v1/systems/{site_id}/register_live_stream Register Site for live stream #
POST /api/v1/systems/{site_id}/devices/gateway/{serial_no}/local_api_token Generate access token for IQ gateway local api. This token will be valid for 12 hours and can be generated any number of times once the site is enrolled. #
POST /api/v1/systems/{site_id}/devices/evse/{serial_no}/ocpp_reset API to reset the communication between the charger and partner’s CSMS #
POST /api/v1/systems/{site_id}/devices/evse/{serial_no}/ocpp_configuration API to initiate the establishment of communication between the charger and partner’s CSMS #
GET /api/v1/systems/{site_id}/register_live_stream_status Get Live Stream Registration status for a site #
GET /api/v1/systems/{site_id}/devices/evse/{serial_no}/ocpp_configuration/status API to fetch the current enrollment configuration of a charger that has been onboarded #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/enphase-system-and-device-configuration-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

enphase-system-and-device-configuration-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Reference System and Device Configuration API
  description: Integrate the VPP API into your application
  version: 1.1.0
servers:
- url: https://vpp.enphaseenergy.com
tags:
- name: System and Device Configuration
  description: System and Device Configuration API
paths:
  /api/v1/systems/{site_id}/stop_live_stream:
    put:
      tags:
      - System and Device Configuration
      summary: Stop the live stream for an enrolled site
      operationId: stopStream
      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: Stopped stream for the site
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/StopStreamResponse'
              example:
              - serial_number: '122116009243'
                status: DEREGISTRATION_INITIATION_SUCCESSFUL
              - serial_number: '122116009245'
                status: DEREGISTRATION_INITIATION_SUCCESSFUL
        '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\": \"Site eSW version does not support live telemetry data\",\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}/start_live_stream:
    put:
      tags:
      - System and Device Configuration
      summary: Start the live stream for an enrolled site
      operationId: startStream
      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: Started stream for the site
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/StartStreamResponse'
              example:
              - serial_number: '122116009243'
                status: REGISTRATION_INITIATION_SUCCESSFUL
              - serial_number: '122116009245'
                status: REGISTRATION_INITIATION_SUCCESSFUL
        '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\": \"Live telemetry data is not enabled for this program\",\n  \"additionalInfo\": \"xxxx\",\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
                case-1:
                  value: "{\n  \"code\": \"422\",\n  \"displayMessage\": \"Site eSW version does not support live telemetry data\",\n  \"additionalInfo\": \"xxxx\",\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
                case-2:
                  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}/settings:
    get:
      tags:
      - System and Device Configuration
      summary: Fetch site settings for an enrolled site
      operationId: getSiteSettings
      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: Fetched site settings for an enrolled site
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/SiteSettingsResponseDTO'
              example:
                vpp_event_reserve_soc: 20
        '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}"
    put:
      tags:
      - System and Device Configuration
      summary: Update site settings for an enrolled site
      operationId: updateSiteSettings
      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
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReservedSOCUpdateRequest'
        required: true
      responses:
        '200':
          description: Update site settings for an enrolled site
          content:
            '*/*':
              example: 'Enrolled site''s settings updated successfully

                '
        '400':
          description: Bad Request
          content:
            '*/*':
              examples:
                case-0:
                  value: "{\n  \"code\": \"400\",\n  \"displayMessage\": \"Bad Request\",\n  \"additionalInfo\": \"reserved_soc: must be less than or equal to 100\",\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
                case-1:
                  value: "{\n  \"code\": \"400\",\n  \"displayMessage\": \"Bad Request\",\n  \"additionalInfo\": \"reserved_soc: must be greater than or equal to 0\",\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
                case-2:
                  value: "{\n  \"code\": \"400\",\n  \"displayMessage\": \"Bad Request\",\n  \"additionalInfo\": \"Site is enrolled in a program in which settings update is not allowed.\",\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
                case-3:
                  value: "{\n  \"code\": \"400\",\n  \"displayMessage\": \"Type Mismatch\",\n  \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
                case-4:
                  value: "{\n  \"code\": \"400\",\n  \"displayMessage\": \"Missing Parameter\",\n  \"additionalInfo\": \"Required xxx parameter abc is not present\",\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
                case-5:
                  value: "{\n  \"code\": \"400\",\n  \"displayMessage\": \"Constraint Violation\",\n  \"additionalInfo\": \"xxxx\",\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
                case-6:
                  value: "{\n  \"code\": \"400\",\n  \"displayMessage\": \"Content-Type invalid\",\n  \"additionalInfo\": \"Content type xxx not supported\",\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
                case-7:
                  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}/register_live_stream:
    post:
      tags:
      - System and Device Configuration
      summary: Register Site for live stream
      operationId: registerSiteForLiveStream
      parameters:
      - name: site_id
        in: path
        description: Unique Id of the site
        required: true
        schema:
          type: string
      - name: serial_number
        in: query
        description: Envoy Serial Number if registering for particular envoy
        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: List of Status of Registration for each Envoy of Site
          content:
            '*/*':
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RegisterLiveStreamStatusResponse'
              example:
              - serial_number: '122116009243'
                status: IN_PROGRESS
              - serial_number: '122116009245'
                status: COMPLETED
        '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 Found\",\n  \"additionalInfo\": \"Envoy not found with serial number: \"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}"
  /api/v1/systems/{site_id}/devices/gateway/{serial_no}/local_api_token:
    post:
      tags:
      - System and Device Configuration
      summary: Generate access token for IQ gateway local api. This token will be valid for 12 hours and can be generated any number of times once the site is enrolled.
      operationId: generateLocalApiToken
      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 Envoy
        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: Generated access token for IQ gateway.
          content:
            '*/*':
              example:
                access_token: eyJraWQiOiJjNzFmYjdmMy04OTVkLTRlYTktYjQ2MC00MmM4M2Y5ZmE0YTMiLCJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NiJ9.eyJhdWQiOiIxMjIxMTYwMDkyNDMiLCJpc3MiOiJFbnRyZXoiLCJlbnBoYXNlVXNlciI6ImVucGhhc2UiLCJleHAiOjE3NTA4MTAxNzYsImlhdCI6MTc1MDc2Njk3NiwianRpIjoiZTQyNzAyOGItNDVkZi00YmYwLWI3OGMtY2VkZDM4NjRjZDFjIiwidXNlcm5hbWUiOiJnc19lbmxpZ2h0ZW5AZW5waGFzZWVuZXJneS5jb20ifQ.mOXDHDHK7OaKrW0uckNeca91hMsgUZgApRfKVNYyQfQ0W1Bqy8-suGCjpGG-k4OWfEhGTKJnoN_K0XpbSL9jQg
        '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:
          

# --- truncated at 32 KB (61 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/enphase/refs/heads/main/openapi/enphase-system-and-device-configuration-api-openapi.yml