Green Button Connect My Data

Green Button Connect My Data is the OAuth2-based ESPI service that lets Con Edison customers authorize a registered third party to receive their interval energy usage and account data on a recurring basis. Third parties register through Con Edison's onboarding process to obtain client credentials, then exchange them for access tokens that retrieve ESPI Atom/XML resources for usage points, meter readings, and electric power usage summaries.

Operations 37

GET /resource/ApplicationInformation/{applicationInformationId} #
GET /resource/Authorization #
GET /resource/Authorization/{authorizationId} #
GET /resource/ReadServiceStatus #
POST /oauth/Token #
GET /resource/Batch/Bulk/{bulkId} #
GET /resource/Batch/Subscription/{subscriptionId} #
GET /resource/Batch/Subscription/{subscriptionId}/UsagePoint/{usagePointId} #
GET /resource/Batch/RetailCustomer/{subscriptionId} #
GET /resource/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/MeterReading/{meterReadingId}/IntervalBlock #
GET /resource/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/MeterReading/{meterReadingId}/IntervalBlock/{intervalBlockId} #
GET /resource/LocalTimeParameters #
GET /resource/LocalTimeParameters/{localTimeParameterId} #
GET /resource/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/MeterReading #
GET /resource/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/MeterReading/{meterReadingId} #
GET /resource/ReadingType #
GET /resource/ReadingType/{readingTypeId} #
GET /resource/RealTime/Batch/Bulk/{bulkId} #
GET /resource/RealTime/Batch/Subscription/{subscriptionId} #
GET /resource/RealTime/Batch/Subscription/{subscriptionId}/UsagePoint/{usagePointId} #
GET /resource/RealTime/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/MeterReading/{meterReadingId}/IntervalBlock #
GET /resource/RealTime/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/MeterReading/{meterReadingId}/IntervalBlock/{intervalBlockId} #
GET /resource/RealTime/ReadingType #
GET /resource/RealTime/ReadingType/{readingTypeId} #
GET /resource/Customer/{subscriptionId} #
GET /resource/Customer/{subscriptionId}/CustomerAccount #
GET /resource/Customer/{subscriptionId}/CustomerAccount/{accountId} #
GET /resource/Customer/{subscriptionId}/CustomerAccount/{accountId}/CustomerAgreement #
GET /resource/Customer/{subscriptionId}/CustomerAccount/{accountId}/CustomerAgreement/{customerAgreementId} #
GET /resource/Customer/{subscriptionId}/CustomerAccount/{accountId}/CustomerAgreement/{customerAgreementId}/ServiceLocation #
GET /resource/Customer/{subscriptionId}/CustomerAccount/{accountId}/CustomerAgreement/{customerAgreementId}/ServiceLocation/{serviceLocationId} #
GET /resource/Customer/{subscriptionId}/CustomerAccount/{accountId}/CustomerAgreement/{customerAgreementId}/ServiceLocation/{serviceLocationId}/Meter #
GET /resource/Customer/{subscriptionId}/CustomerAccount/{accountId}/CustomerAgreement/{customerAgreementId}/ServiceLocation/{serviceLocationId}/Meter/{serialNumber} #
GET /resource/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/UsageSummary #
POST /resource/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/UsageSummary/{usageSummaryId} #
GET /resource/Subscription/{subscriptionId}/UsagePoint #
GET /resource/Subscription/{subscriptionId}/UsagePoint/{usagePointId} #

Documentation

Specifications

Other Resources

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/green-button-connect"
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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

consolidated-edison-green-button-connect-openapi.yml Raw ↑
swagger: '2.0'
info:
  version: v1
  title: DCX GBC API V2
  description: 'The Green Button Connect API provides an access to RESTful services provided by ConEdison
    and Third Party Applications. These APIs allow application developers full access, in Green Button
    Format, to Energy Usage Information for the purpose of developing new Green Button Applications.Access
    to Green Button APIs requires an OAuth2 Access Token. Insert Access Tokens in the field labelled ''Access
    Token: '' at the top of the page prior to selecting the ''Try It Out!'' button:'
host: api.coned.com
basePath: /gbc/espi/1_1
schemes:
- https
paths:
  /resource/ApplicationInformation/{applicationInformationId}:
    get:
      tags:
      - ApplicationInformation
      operationId: getThirdPartyApplicationById
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: applicationInformationId
        in: path
        required: true
        type: string
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Authorization:
    get:
      tags:
      - Authorization
      operationId: Get all Third Party Authorizations
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: publishedMax
        in: query
        required: false
        type: string
        format: date-time
      - name: publishedMin
        in: query
        required: false
        type: string
        format: date-time
      - name: updatedMax
        in: query
        required: false
        type: string
        format: date-time
      - name: updatedMin
        in: query
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Authorization/{authorizationId}:
    get:
      tags:
      - Authorization
      operationId: Get Third Party Authorization by ID
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: authorizationId
        in: path
        required: true
        type: string
      - name: publishedMax
        in: query
        required: false
        type: string
        format: date-time
      - name: publishedMin
        in: query
        required: false
        type: string
        format: date-time
      - name: updatedMax
        in: query
        required: false
        type: string
        format: date-time
      - name: updatedMin
        in: query
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/ReadServiceStatus:
    get:
      tags:
      - ServiceStatus
      operationId: readServiceStatus
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /oauth/Token:
    post:
      tags:
      - Authorization
      operationId: Token
      consumes:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/x-www-form-urlencoded
      - application/atom+xml
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: tokenRequest
        in: body
        required: true
        schema:
          $ref: '#/definitions/TokenRequest'
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
      schemes:
      - https
  /resource/Batch/Bulk/{bulkId}:
    get:
      tags:
      - Batch
      operationId: getAllUsageDataInBatch
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: bulkId
        in: path
        required: true
        type: string
      - name: published-min
        in: query
        required: false
        type: string
        format: date-time
      - name: published-max
        in: query
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Batch/Subscription/{subscriptionId}:
    get:
      tags:
      - Batch
      operationId: getAllUsageDataForSubscriptionInBatch
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: published-min
        in: query
        required: false
        type: string
        format: date-time
      - name: published-max
        in: query
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Batch/Subscription/{subscriptionId}/UsagePoint/{usagePointId}:
    get:
      tags:
      - Batch
      operationId: getUsagePointBySubscriptionInBatch
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: usagePointId
        in: path
        required: true
        type: string
      - name: published-min
        in: query
        required: false
        type: string
        format: date-time
      - name: published-max
        in: query
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Batch/RetailCustomer/{subscriptionId}:
    get:
      tags:
      - Batch
      operationId: getCustomerInformationInBatch
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/MeterReading/{meterReadingId}/IntervalBlock:
    get:
      tags:
      - IntervalBlock
      operationId: getAllIntervalBlocksForUsagePointMeterReadingInSubscription
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: usagePointId
        in: path
        required: true
        type: string
      - name: meterReadingId
        in: path
        required: true
        type: string
      - name: published-min
        in: query
        required: false
        type: string
        format: date-time
      - name: published-max
        in: query
        required: false
        type: string
        format: date-time
      - name: startIndex
        in: query
        required: false
        type: integer
        format: int32
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  ? /resource/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/MeterReading/{meterReadingId}/IntervalBlock/{intervalBlockId}
  : get:
      tags:
      - IntervalBlock
      operationId: getIntervalBlocksForUsagePointMeterReadingInSubscription
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: usagePointId
        in: path
        required: true
        type: string
      - name: meterReadingId
        in: path
        required: true
        type: string
      - name: intervalBlockId
        in: path
        required: true
        type: string
      - name: published-min
        in: query
        required: false
        type: string
        format: date-time
      - name: published-max
        in: query
        required: false
        type: string
        format: date-time
      - name: startIndex
        in: query
        required: false
        type: integer
        format: int32
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/LocalTimeParameters:
    get:
      tags:
      - LocalTimeParameters
      operationId: getLocalTimeParameters
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: startIndex
        in: query
        required: false
        type: integer
        format: int32
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/LocalTimeParameters/{localTimeParameterId}:
    get:
      tags:
      - LocalTimeParameters
      operationId: getLocalTimeParametersById
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: localTimeParameterId
        in: path
        required: true
        type: string
      - name: startIndex
        in: query
        required: false
        type: integer
        format: int32
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/MeterReading:
    get:
      tags:
      - MeterReading
      operationId: getAllMeterReadingsForUsagePointInSubscription
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: usagePointId
        in: path
        required: true
        type: string
      - name: startIndex
        in: query
        required: false
        type: integer
        format: int32
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/MeterReading/{meterReadingId}:
    get:
      tags:
      - MeterReading
      operationId: getMeterReadingForUsagePointInSubscription
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: usagePointId
        in: path
        required: true
        type: string
      - name: meterReadingId
        in: path
        required: true
        type: string
      - name: startIndex
        in: query
        required: false
        type: integer
        format: int32
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/ReadingType:
    get:
      tags:
      - ReadingType
      operationId: getAllReadingTypes
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: startIndex
        in: query
        required: false
        type: integer
        format: int32
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/ReadingType/{readingTypeId}:
    get:
      tags:
      - ReadingType
      operationId: getReadingTypesById
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: readingTypeId
        in: path
        required: true
        type: string
      - name: startIndex
        in: query
        required: false
        type: integer
        format: int32
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/RealTime/Batch/Bulk/{bulkId}:
    get:
      tags:
      - RealTimeBatch
      operationId: getAllRealTimeUsageDataInBatch
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: bulkId
        in: path
        required: true
        type: string
      - name: published-min
        in: query
        required: false
        type: string
        format: date-time
      - name: published-max
        in: query
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/RealTime/Batch/Subscription/{subscriptionId}:
    get:
      tags:
      - RealTimeBatch
      operationId: getAllRealTimeUsageDataForSubscriptionInBatch
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: published-min
        in: query
        required: false
        type: string
        format: date-time
      - name: published-max
        in: query
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/RealTime/Batch/Subscription/{subscriptionId}/UsagePoint/{usagePointId}:
    get:
      tags:
      - RealTimeBatch
      operationId: getRealTimeUsagePointBySubscriptionInBatch
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: usagePointId
        in: path
        required: true
        type: string
      - name: published-min
        in: query
        required: false
        type: string
        format: date-time
      - name: published-max
        in: query
        required: false
        type: string
        format: date-time
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/RealTime/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/MeterReading/{meterReadingId}/IntervalBlock:
    get:
      tags:
      - RealTimeIntervalBlock
      operationId: getAllRealTimeIntervalBlocksForUsagePointMeterReadingInSubscription
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: usagePointId
        in: path
        required: true
        type: string
      - name: meterReadingId
        in: path
        required: true
        type: string
      - name: startIndex
        in: query
        required: false
        type: integer
        format: int32
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  ? /resource/RealTime/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/MeterReading/{meterReadingId}/IntervalBlock/{intervalBlockId}
  : get:
      tags:
      - RealTimeIntervalBlock
      operationId: getRealTimeIntervalBlockForUsagePointMeterReadingInSubscription
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: usagePointId
        in: path
        required: true
        type: string
      - name: meterReadingId
        in: path
        required: true
        type: string
      - name: intervalBlockId
        in: path
        required: true
        type: string
      - name: startIndex
        in: query
        required: false
        type: integer
        format: int32
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/RealTime/ReadingType:
    get:
      tags:
      - RealTimeReadingType
      operationId: getAllRealTimeReadingTypes
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: startIndex
        in: query
        required: false
        type: integer
        format: int32
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/RealTime/ReadingType/{readingTypeId}:
    get:
      tags:
      - RealTimeReadingType
      operationId: getRealTimeReadingTypeById
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: readingTypeId
        in: path
        required: true
        type: string
      - name: startIndex
        in: query
        required: false
        type: integer
        format: int32
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Customer/{subscriptionId}:
    get:
      tags:
      - RetailCustomer
      operationId: getCustomerInformationBySubscription
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Customer/{subscriptionId}/CustomerAccount:
    get:
      tags:
      - RetailCustomer
      operationId: getCustomerAccountInSubscription
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Customer/{subscriptionId}/CustomerAccount/{accountId}:
    get:
      tags:
      - RetailCustomer
      operationId: getCustomerAccountByAccountIdInSubscription
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: accountId
        in: path
        required: true
        type: string
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Customer/{subscriptionId}/CustomerAccount/{accountId}/CustomerAgreement:
    get:
      tags:
      - RetailCustomer
      operationId: getCustomerAgreementByAccountIdInSubscription
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: accountId
        in: path
        required: true
        type: string
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Customer/{subscriptionId}/CustomerAccount/{accountId}/CustomerAgreement/{customerAgreementId}:
    get:
      tags:
      - RetailCustomer
      operationId: getCustomerAgreementByCustomerAgreementId
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: accountId
        in: path
        required: true
        type: string
      - name: customerAgreementId
        in: path
        required: true
        type: string
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Customer/{subscriptionId}/CustomerAccount/{accountId}/CustomerAgreement/{customerAgreementId}/ServiceLocation:
    get:
      tags:
      - RetailCustomer
      operationId: getAllServiceLocationByCustomerAgreementIdAndAccountIdInSubscription
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: accountId
        in: path
        required: true
        type: string
      - name: customerAgreementId
        in: path
        required: true
        type: string
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  ? /resource/Customer/{subscriptionId}/CustomerAccount/{accountId}/CustomerAgreement/{customerAgreementId}/ServiceLocation/{serviceLocationId}
  : get:
      tags:
      - RetailCustomer
      operationId: getServiceLocationByServiceLocationId
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: accountId
        in: path
        required: true
        type: string
      - name: customerAgreementId
        in: path
        required: true
        type: string
      - name: serviceLocationId
        in: path
        required: true
        type: string
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  ? /resource/Customer/{subscriptionId}/CustomerAccount/{accountId}/CustomerAgreement/{customerAgreementId}/ServiceLocation/{serviceLocationId}/Meter
  : get:
      tags:
      - RetailCustomer
      operationId: getAllMetersForServiceLocationInSubscription
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: accountId
        in: path
        required: true
        type: string
      - name: customerAgreementId
        in: path
        required: true
        type: string
      - name: serviceLocationId
        in: path
        required: true
        type: string
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  ? /resource/Customer/{subscriptionId}/CustomerAccount/{accountId}/CustomerAgreement/{customerAgreementId}/ServiceLocation/{serviceLocationId}/Meter/{serialNumber}
  : get:
      tags:
      - RetailCustomer
      operationId: getMeterBySerialNumberId
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: accountId
        in: path
        required: true
        type: string
      - name: customerAgreementId
        in: path
        required: true
        type: string
      - name: serviceLocationId
        in: path
        required: true
        type: string
      - name: serialNumber
        in: path
        required: true
        type: string
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/UsageSummary:
    get:
      tags:
      - ElectricPowerUsageSummary
      operationId: getAllElectricPowerUsageSummaries
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: usagePointId
        in: path
        required: true
        type: string
      - name: published-min
        in: query
        required: true
        type: string
        format: date-time
      - name: published-max
        in: query
        required: true
        type: string
        format: date-time
      - name: startIndex
        in: query
        required: false
        type: integer
        format: int32
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/UsageSummary/{usageSummaryId}:
    post:
      tags:
      - ElectricPowerUsageSummary
      operationId: getAllElectricPowerUsageSummariesById
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: usagePointId
        in: path
        required: true
        type: string
      - name: usageSummaryId
        in: path
        required: true
        type: string
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Subscription/{subscriptionId}/UsagePoint:
    get:
      tags:
      - UsagePoint
      operationId: getAllUsagePointsBySubscription
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: startIndex
        in: query
        required: false
        type: integer
        format: int32
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
  /resource/Subscription/{subscriptionId}/UsagePoint/{usagePointId}:
    get:
      tags:
      - UsagePoint
      operationId: getUsagePointsForSubscription
      consumes: []
      produces:
      - application/json
      - text/json
      - application/xml
      - text/xml
      - application/atom+xml
      parameters:
      - name: subscriptionId
        in: path
        required: true
        type: string
      - name: usagePointId
        in: path
        required: true
        type: string
      - name: startIndex
        in: query
        required: false
        type: integer
        format: int32
      responses:
        '200':
          description: OK
        '400':
          description: BadRequest
        '401':
          description: Unauthorized
      schemes:
      - https
definitions:
  Feed:
    type: object
    properties:
      Title:
        $ref: '#/definitions/Title'
      Id:
        type: string
      Updated:
        type: string
      Link:
        $ref: '#/definitions/Link'
      Entry:
        $ref: '#/definitions/Entry'
      Espi:
        type: string
      Xmlns:
        type: string
  Title:
    type: object
    properties:
      Type:
        type: string
      Text:
        type: string
  Link:
    type: object
    properties:
      Href:
        type: string
      Rel:
        type: string
  Entry:
    type: object
    properties:
      Id:
        type: string
      Title:
        $ref: '#/definitions/Title'
      Updated:
        type: string
      Link:
        type: array
        items:
          $ref: '#/definitions/Link'
      Content:
        $ref: '#/definitions/Content'
      Espi:
        type: string
      Xsi:
        type: string
  Content:
    type: object
    properties:
      ApplicationInformation:
        $ref: '#/definitions/ApplicationInformationModel'
      Authorization:
        $ref: '#/definitions/AuthorizationModel'
      Type:
        type: string
  ApplicationInformationModel:
    type: object
    properties:
      DataCustodianId:
        type: string
      DataCustodianApplicationStatus:
        type: string
      ThirdPartyApplicationDescription:
        type: string
      ThirdPartyApplicationStatus:
        type: string
      ThirdPartyApplicationType:
        type: string
      ThirdPartyApplicationUse:
        type: string
      ThirdPartyPhone:
        type: string
      AuthorizationServerUri:
        type: string
      ThirdPartyNotifyUri:
        type: string
      AuthorizationServerAuthorizationEndpoint:
        type: string
      AuthorizationServerRegistrationEndpoint:
        type: string


# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/consolidated-edison/refs/heads/main/openapi/consolidated-edison-green-button-connect-openapi.yml