openapi: 3.0.3
info:
title: Xcel Energy Green Button Connect My Data API
summary: OAuth 2.0 authorized customer energy usage data based on the NAESB ESPI standard.
description: >
Xcel Energy Green Button Connect My Data API based on the ESPI (Energy
Services Provider Interface) standard developed by NAESB. Enables
authorized third-party applications to access customer electricity and
natural gas usage data captured by Xcel Energy smart meters. Resources
are exposed as Atom feeds and entries containing UsagePoint,
MeterReading, IntervalBlock, ReadingType, ElectricPowerUsageSummary,
ElectricPowerQualitySummary, LocalTimeParameters, and customer
information. Customer authorization is granted via OAuth 2.0 and
follows the Green Button Connect specification used by utilities
across North America.
version: 1.1.0
contact:
name: Xcel Energy Developer Portal
url: https://developer-apim.aws.xcelenergy.com/
license:
name: Proprietary
url: https://www.xcelenergy.com/privacy_policy
x-generated-from: documentation
x-last-validated: '2026-05-03'
x-standards:
- NAESB ESPI 1.1
- Green Button Connect My Data
servers:
- url: https://api.xcelenergy.com/DataCustodian/espi/1_1/resource
description: Xcel Energy Data Custodian (Production)
- url: https://developer-apim.aws.xcelenergy.com/DataCustodian/espi/1_1/resource
description: Xcel Energy Developer Sandbox
tags:
- name: Authorization
description: OAuth 2.0 authorizations granted by retail customers to third-party applications.
- name: ApplicationInformation
description: Third-party application registration metadata used by the Data Custodian.
- name: UsagePoint
description: Logical metered points that produce energy usage data for a service.
- name: MeterReading
description: Container for measured IntervalBlocks captured at a UsagePoint.
- name: IntervalBlock
description: Time-series interval-level energy usage data captured at a meter.
- name: ReadingType
description: Metadata describing the units, multiplier, accumulation, and flow direction of meter readings.
- name: ElectricPowerUsageSummary
description: Billing-period aggregate summaries of electric power usage.
- name: ElectricPowerQualitySummary
description: Aggregate power-quality measurements for a UsagePoint.
- name: LocalTimeParameters
description: Time zone and daylight-savings-time parameters used to interpret interval timestamps.
- name: RetailCustomer
description: Retail customer, account, agreement, service location, and meter information.
- name: Batch
description: Bulk Atom feeds aggregating multiple resources for a subscription.
- name: ServiceStatus
description: Operational status of the Green Button Connect My Data service.
paths:
/ApplicationInformation/{applicationInformationId}:
get:
operationId: getApplicationInformation
summary: Retrieve application registration details
description: >
Returns the ApplicationInformation entry registered for a third-party
application, including OAuth client metadata and scope strings.
tags: [ApplicationInformation]
security:
- registrationAccessToken: []
parameters:
- $ref: '#/components/parameters/ApplicationInformationId'
responses:
'200':
description: Atom entry containing the ApplicationInformation resource.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/ApplicationInformation'
'401': { $ref: '#/components/responses/Unauthorized' }
'403': { $ref: '#/components/responses/Forbidden' }
'404': { $ref: '#/components/responses/NotFound' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/Authorization:
get:
operationId: listAuthorizations
summary: List customer authorizations granted to the application
description: >
Returns an Atom feed of Authorization entries granted by retail
customers to the calling third-party application.
tags: [Authorization]
security:
- clientAccessToken: []
parameters:
- $ref: '#/components/parameters/PublishedMin'
- $ref: '#/components/parameters/PublishedMax'
- $ref: '#/components/parameters/UpdatedMin'
- $ref: '#/components/parameters/UpdatedMax'
- $ref: '#/components/parameters/MaxResults'
- $ref: '#/components/parameters/StartIndex'
responses:
'200':
description: Atom feed of Authorization entries.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/AuthorizationFeed'
'401': { $ref: '#/components/responses/Unauthorized' }
'403': { $ref: '#/components/responses/Forbidden' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/Authorization/{authorizationId}:
get:
operationId: getAuthorization
summary: Retrieve a single customer authorization
description: Returns the Authorization entry identified by authorizationId.
tags: [Authorization]
security:
- clientAccessToken: []
parameters:
- $ref: '#/components/parameters/AuthorizationId'
responses:
'200':
description: Atom entry containing the Authorization resource.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/Authorization'
'401': { $ref: '#/components/responses/Unauthorized' }
'404': { $ref: '#/components/responses/NotFound' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/Subscription/{subscriptionId}/UsagePoint:
get:
operationId: listUsagePoints
summary: List UsagePoints for a subscription
description: >
Returns an Atom feed of UsagePoint entries the customer has
authorized for the subscription.
tags: [UsagePoint]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/SubscriptionId'
- $ref: '#/components/parameters/PublishedMin'
- $ref: '#/components/parameters/PublishedMax'
- $ref: '#/components/parameters/UpdatedMin'
- $ref: '#/components/parameters/UpdatedMax'
responses:
'200':
description: Atom feed of UsagePoint entries.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/UsagePointFeed'
'401': { $ref: '#/components/responses/Unauthorized' }
'403': { $ref: '#/components/responses/Forbidden' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/Subscription/{subscriptionId}/UsagePoint/{usagePointId}:
get:
operationId: getUsagePoint
summary: Retrieve a single UsagePoint
description: Returns the UsagePoint entry identified by usagePointId.
tags: [UsagePoint]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/SubscriptionId'
- $ref: '#/components/parameters/UsagePointId'
responses:
'200':
description: Atom entry containing the UsagePoint resource.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/UsagePoint'
'401': { $ref: '#/components/responses/Unauthorized' }
'404': { $ref: '#/components/responses/NotFound' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/MeterReading:
get:
operationId: listMeterReadings
summary: List MeterReadings for a UsagePoint
description: >
Returns an Atom feed of MeterReading entries captured at the
specified UsagePoint.
tags: [MeterReading]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/SubscriptionId'
- $ref: '#/components/parameters/UsagePointId'
- $ref: '#/components/parameters/PublishedMin'
- $ref: '#/components/parameters/PublishedMax'
responses:
'200':
description: Atom feed of MeterReading entries.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/MeterReadingFeed'
'401': { $ref: '#/components/responses/Unauthorized' }
'403': { $ref: '#/components/responses/Forbidden' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/MeterReading/{meterReadingId}:
get:
operationId: getMeterReading
summary: Retrieve a single MeterReading
description: Returns the MeterReading entry identified by meterReadingId.
tags: [MeterReading]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/SubscriptionId'
- $ref: '#/components/parameters/UsagePointId'
- $ref: '#/components/parameters/MeterReadingId'
responses:
'200':
description: Atom entry containing the MeterReading resource.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/MeterReading'
'401': { $ref: '#/components/responses/Unauthorized' }
'404': { $ref: '#/components/responses/NotFound' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/MeterReading/{meterReadingId}/IntervalBlock:
get:
operationId: listIntervalBlocks
summary: List IntervalBlocks for a MeterReading
description: >
Returns an Atom feed of IntervalBlock entries containing the
time-series interval readings for the MeterReading.
tags: [IntervalBlock]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/SubscriptionId'
- $ref: '#/components/parameters/UsagePointId'
- $ref: '#/components/parameters/MeterReadingId'
- $ref: '#/components/parameters/PublishedMin'
- $ref: '#/components/parameters/PublishedMax'
responses:
'200':
description: Atom feed of IntervalBlock entries.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/IntervalBlockFeed'
'401': { $ref: '#/components/responses/Unauthorized' }
'403': { $ref: '#/components/responses/Forbidden' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/MeterReading/{meterReadingId}/IntervalBlock/{intervalBlockId}:
get:
operationId: getIntervalBlock
summary: Retrieve a single IntervalBlock
description: Returns the IntervalBlock entry identified by intervalBlockId.
tags: [IntervalBlock]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/SubscriptionId'
- $ref: '#/components/parameters/UsagePointId'
- $ref: '#/components/parameters/MeterReadingId'
- $ref: '#/components/parameters/IntervalBlockId'
responses:
'200':
description: Atom entry containing the IntervalBlock resource.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/IntervalBlock'
'401': { $ref: '#/components/responses/Unauthorized' }
'404': { $ref: '#/components/responses/NotFound' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/ReadingType/{readingTypeId}:
get:
operationId: getReadingType
summary: Retrieve a ReadingType
description: >
Returns the ReadingType entry that describes the units, multiplier,
accumulation behavior, and flow direction of an associated
MeterReading.
tags: [ReadingType]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/ReadingTypeId'
responses:
'200':
description: Atom entry containing the ReadingType resource.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/ReadingType'
'401': { $ref: '#/components/responses/Unauthorized' }
'404': { $ref: '#/components/responses/NotFound' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/UsageSummary:
get:
operationId: listElectricPowerUsageSummaries
summary: List ElectricPowerUsageSummaries for a UsagePoint
description: >
Returns an Atom feed of ElectricPowerUsageSummary entries containing
billing-period aggregate energy usage and demand information for the
UsagePoint.
tags: [ElectricPowerUsageSummary]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/SubscriptionId'
- $ref: '#/components/parameters/UsagePointId'
- $ref: '#/components/parameters/PublishedMin'
- $ref: '#/components/parameters/PublishedMax'
responses:
'200':
description: Atom feed of ElectricPowerUsageSummary entries.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/ElectricPowerUsageSummaryFeed'
'401': { $ref: '#/components/responses/Unauthorized' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/UsageSummary/{usageSummaryId}:
get:
operationId: getElectricPowerUsageSummary
summary: Retrieve a single ElectricPowerUsageSummary
description: Returns the ElectricPowerUsageSummary entry identified by usageSummaryId.
tags: [ElectricPowerUsageSummary]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/SubscriptionId'
- $ref: '#/components/parameters/UsagePointId'
- $ref: '#/components/parameters/UsageSummaryId'
responses:
'200':
description: Atom entry containing the ElectricPowerUsageSummary resource.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/ElectricPowerUsageSummary'
'401': { $ref: '#/components/responses/Unauthorized' }
'404': { $ref: '#/components/responses/NotFound' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/ElectricPowerQualitySummary:
get:
operationId: listElectricPowerQualitySummaries
summary: List ElectricPowerQualitySummaries for a UsagePoint
description: >
Returns an Atom feed of ElectricPowerQualitySummary entries
describing power-quality measurements for the UsagePoint.
tags: [ElectricPowerQualitySummary]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/SubscriptionId'
- $ref: '#/components/parameters/UsagePointId'
responses:
'200':
description: Atom feed of ElectricPowerQualitySummary entries.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/ElectricPowerQualitySummaryFeed'
'401': { $ref: '#/components/responses/Unauthorized' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/Subscription/{subscriptionId}/UsagePoint/{usagePointId}/ElectricPowerQualitySummary/{powerQualitySummaryId}:
get:
operationId: getElectricPowerQualitySummary
summary: Retrieve a single ElectricPowerQualitySummary
description: Returns the ElectricPowerQualitySummary entry identified by powerQualitySummaryId.
tags: [ElectricPowerQualitySummary]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/SubscriptionId'
- $ref: '#/components/parameters/UsagePointId'
- $ref: '#/components/parameters/PowerQualitySummaryId'
responses:
'200':
description: Atom entry containing the ElectricPowerQualitySummary resource.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/ElectricPowerQualitySummary'
'401': { $ref: '#/components/responses/Unauthorized' }
'404': { $ref: '#/components/responses/NotFound' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/LocalTimeParameters/{localTimeParametersId}:
get:
operationId: getLocalTimeParameters
summary: Retrieve LocalTimeParameters
description: >
Returns the LocalTimeParameters entry describing the time zone and
daylight-savings-time rules used to interpret meter timestamps.
tags: [LocalTimeParameters]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/LocalTimeParametersId'
responses:
'200':
description: Atom entry containing the LocalTimeParameters resource.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/LocalTimeParameters'
'401': { $ref: '#/components/responses/Unauthorized' }
'404': { $ref: '#/components/responses/NotFound' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/RetailCustomer/{authorizationId}/Customer:
get:
operationId: listCustomers
summary: List retail customers for an authorization
description: Returns an Atom feed of Customer entries authorized to share customer information.
tags: [RetailCustomer]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/AuthorizationId'
responses:
'200':
description: Atom feed of Customer entries.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/CustomerFeed'
'401': { $ref: '#/components/responses/Unauthorized' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/RetailCustomer/{authorizationId}/Customer/{customerId}/CustomerAccount:
get:
operationId: listCustomerAccounts
summary: List CustomerAccounts for a retail customer
description: Returns an Atom feed of CustomerAccount entries for the customer.
tags: [RetailCustomer]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/AuthorizationId'
- $ref: '#/components/parameters/CustomerId'
responses:
'200':
description: Atom feed of CustomerAccount entries.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/CustomerAccountFeed'
'401': { $ref: '#/components/responses/Unauthorized' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/RetailCustomer/{authorizationId}/Customer/{customerId}/CustomerAccount/{customerAccountId}/CustomerAgreement:
get:
operationId: listCustomerAgreements
summary: List CustomerAgreements for a CustomerAccount
description: Returns an Atom feed of CustomerAgreement entries for the account.
tags: [RetailCustomer]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/AuthorizationId'
- $ref: '#/components/parameters/CustomerId'
- $ref: '#/components/parameters/CustomerAccountId'
responses:
'200':
description: Atom feed of CustomerAgreement entries.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/CustomerAgreementFeed'
'401': { $ref: '#/components/responses/Unauthorized' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/Batch/Subscription/{subscriptionId}:
get:
operationId: getBatchForSubscription
summary: Bulk Atom feed for a subscription
description: >
Returns a Batch Atom feed containing all UsagePoint, MeterReading,
IntervalBlock, ReadingType, ElectricPowerUsageSummary, and
ElectricPowerQualitySummary entries authorized under the
subscription, optionally filtered by published or updated time.
tags: [Batch]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/SubscriptionId'
- $ref: '#/components/parameters/PublishedMin'
- $ref: '#/components/parameters/PublishedMax'
- $ref: '#/components/parameters/UpdatedMin'
- $ref: '#/components/parameters/UpdatedMax'
responses:
'200':
description: Atom feed containing the batch of resources.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/BatchFeed'
'202':
description: Request accepted; the batch is being processed asynchronously.
'401': { $ref: '#/components/responses/Unauthorized' }
'429': { $ref: '#/components/responses/RateLimited' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/Batch/Subscription/{subscriptionId}/UsagePoint/{usagePointId}:
get:
operationId: getBatchForUsagePoint
summary: Bulk Atom feed for a single UsagePoint
description: >
Returns a Batch Atom feed containing the resources associated with
a single UsagePoint authorized under the subscription.
tags: [Batch]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/SubscriptionId'
- $ref: '#/components/parameters/UsagePointId'
- $ref: '#/components/parameters/PublishedMin'
- $ref: '#/components/parameters/PublishedMax'
responses:
'200':
description: Atom feed containing the UsagePoint batch.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/BatchFeed'
'401': { $ref: '#/components/responses/Unauthorized' }
'429': { $ref: '#/components/responses/RateLimited' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/Batch/RetailCustomer/{authorizationId}:
get:
operationId: getBatchForRetailCustomer
summary: Bulk Atom feed for a retail customer
description: >
Returns a Batch Atom feed containing the customer information
resources for an authorized retail customer.
tags: [Batch]
security:
- accessToken: []
parameters:
- $ref: '#/components/parameters/AuthorizationId'
responses:
'200':
description: Atom feed containing the retail customer batch.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/BatchFeed'
'401': { $ref: '#/components/responses/Unauthorized' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/ReadServiceStatus:
get:
operationId: readServiceStatus
summary: Get current service status
description: Returns the operational status of the Green Button Connect My Data service.
tags: [ServiceStatus]
security:
- clientAccessToken: []
responses:
'200':
description: Service status payload.
content:
application/atom+xml:
schema:
$ref: '#/components/schemas/ServiceStatus'
'503': { $ref: '#/components/responses/ServiceUnavailable' }
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
parameters:
ApplicationInformationId:
name: applicationInformationId
in: path
required: true
description: Identifier of an ApplicationInformation entry registered with the Data Custodian.
schema: { type: string, example: '1' }
AuthorizationId:
name: authorizationId
in: path
required: true
description: Identifier of an Authorization granted by a retail customer.
schema: { type: string, example: 'auth-1234' }
SubscriptionId:
name: subscriptionId
in: path
required: true
description: Identifier of a Subscription created from an Authorization.
schema: { type: string, example: 'sub-5678' }
UsagePointId:
name: usagePointId
in: path
required: true
description: Identifier of a UsagePoint within a Subscription.
schema: { type: string, example: '1' }
MeterReadingId:
name: meterReadingId
in: path
required: true
description: Identifier of a MeterReading within a UsagePoint.
schema: { type: string, example: '1' }
IntervalBlockId:
name: intervalBlockId
in: path
required: true
description: Identifier of an IntervalBlock within a MeterReading.
schema: { type: string, example: '1' }
ReadingTypeId:
name: readingTypeId
in: path
required: true
description: Identifier of a ReadingType resource.
schema: { type: string, example: '1' }
UsageSummaryId:
name: usageSummaryId
in: path
required: true
description: Identifier of an ElectricPowerUsageSummary resource.
schema: { type: string, example: '1' }
PowerQualitySummaryId:
name: powerQualitySummaryId
in: path
required: true
description: Identifier of an ElectricPowerQualitySummary resource.
schema: { type: string, example: '1' }
LocalTimeParametersId:
name: localTimeParametersId
in: path
required: true
description: Identifier of a LocalTimeParameters resource.
schema: { type: string, example: '1' }
CustomerId:
name: customerId
in: path
required: true
description: Identifier of a retail Customer resource.
schema: { type: string, example: '1' }
CustomerAccountId:
name: customerAccountId
in: path
required: true
description: Identifier of a CustomerAccount resource.
schema: { type: string, example: '1' }
PublishedMin:
name: published-min
in: query
required: false
description: Lower bound (inclusive) for the Atom entry published timestamp, in epoch seconds or ISO 8601.
schema: { type: string, example: '2026-01-01T00:00:00Z' }
PublishedMax:
name: published-max
in: query
required: false
description: Upper bound (inclusive) for the Atom entry published timestamp, in epoch seconds or ISO 8601.
schema: { type: string, example: '2026-04-30T23:59:59Z' }
UpdatedMin:
name: updated-min
in: query
required: false
description: Lower bound (inclusive) for the Atom entry updated timestamp.
schema: { type: string, example: '2026-01-01T00:00:00Z' }
UpdatedMax:
name: updated-max
in: query
required: false
description: Upper bound (inclusive) for the Atom entry updated timestamp.
schema: { type: string, example: '2026-04-30T23:59:59Z' }
MaxResults:
name: max-results
in: query
required: false
description: Maximum number of entries to return in the feed.
schema: { type: integer, minimum: 1, maximum: 1000, example: 100 }
StartIndex:
name: start-index
in: query
required: false
description: 1-based index of the first entry to return for paginated feeds.
schema: { type: integer, minimum: 1, example: 1 }
responses:
Unauthorized:
description: Authentication failed or the access token is invalid or expired.
Forbidden:
description: The token type does not grant access to the requested endpoint or resource.
NotFound:
description: The requested resource was not found or is not authorized for this token.
RateLimited:
description: Too many requests; back off and retry after the indicated interval.
ServiceUnavailable:
description: The Data Custodian is temporarily unavailable, often for scheduled maintenance.
securitySchemes:
accessToken:
type: oauth2
description: Customer-scoped access token issued via the OAuth 2.0 authorization-code grant.
flows:
authorizationCode:
authorizationUrl: https://api.xcelenergy.com/DataCustodian/oauth/authorize
tokenUrl: https://api.xcelenergy.com/DataCustodian/oauth/token
refreshUrl: https://api.xcelenergy.com/DataCustodian/oauth/token
scopes:
FB=4_5_15;IntervalDuration=900;BlockDuration=monthly;HistoryLength=34128000: Standard ESPI scope string for 15-minute electric usage data with 13 months of history.
clientAccessToken:
type: oauth2
description: Application-scoped client access token used for management endpoints (Authorization list, Bulk, ServiceStatus).
flows:
clientCredentials:
tokenUrl: https://api.xcelenergy.com/DataCustodian/oauth/token
scopes:
DataCustodian_Admin_Access: Administrative scope used for application-level operations.
registrationAccessToken:
type: http
scheme: bearer
bearerFormat: Registration Access Token
description: Token issued at application registration; used to read or update ApplicationInformation.
schemas:
AtomEntry:
type: object
description: Atom entry envelope used to wrap ESPI resource payloads.
properties:
id: { type: string, description: Stable URI for the entry. }
title: { type: string, description: Human-readable title of the entry. }
published: { type: string, format: date-time, description: Time the entry was first published. }
updated: { type: string, format: date-time, description: Time the entry was last updated. }
link:
type: array
description: Atom link relations (self, up, related).
items:
type: object
properties:
rel: { type: string, example: self }
href: { type: string, example: 'UsagePoint/1' }
content: { type: object, description: ESPI XML payload content. }
AtomFeed:
type: object
description: Atom feed envelope used to wrap collections of ESPI resource entries.
properties:
id: { type: string }
title: { type: string }
updated: { type: string, format: date-time }
link:
type: array
items:
type: object
properties:
rel: { type: string }
href: { type: string }
entry:
type: array
items: { $ref: '#/components/schemas/AtomEntry' }
ApplicationInformation:
allOf:
- $ref: '#/components/schemas/AtomEntry'
- type: object
description: Registration metadata for a third-party application.
properties:
dataCustodianApplicationStatus: { type: integer, example: 1, description: '1 = active, 2 = on hold, 3 = revoked.' }
thirdPartyApplicationDescription: { type: string }
thirdPartyApplicationStatus: { type: integer, example: 1 }
thirdPartyApplicationType: { type: integer, example: 3 }
thirdPartyApplicationUse: { type: integer, example: 4 }
thirdPartyPhone: { type: string }
authorizationServerAuthorizationEndpoint: { type: string, format: uri }
authorizationServerRegistrationEndpoint: { type: string, format: uri }
authorizationServerTokenEndpoint: { type: string, format: uri }
client_id: { type: string }
client_secret: { type: string }
client_id_issued_at: { type: integer }
client_secret_expires_at: { type: integer }
redirect_uri: { type: string, format: uri }
scope:
type: array
items: { type: string, example: 'FB=4_5_15;IntervalDuration=900;BlockDuration=monthly;HistoryLength=34128000' }
tokenEndpointAuthMethod: { type: string, example: client_secret_basic }
Authorization:
allOf:
- $ref: '#/components/schemas/AtomEntry'
- type: object
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/xcel-energy/refs/heads/main/openapi/xcel-energy-green-button-api.yaml