How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

OpenADR 3 API

OpenADR 3 is the RESTful third generation of the OpenADR protocol, defined in full by a single OpenAPI 3.0 document published by the OpenADR Alliance. It supports energy-retailer-to-energy-customer demand response programs through operations to create, update, delete, and search programs, events, reports, subscriptions, VENs (Virtual End Nodes), and VEN resources, plus an /auth/token endpoint. Version 3.1.0 adds MQTT notifier topics, VEN-scoped topics for object privacy, and VTN discovery. Security is OAuth 2.0 client credentials with JWT bearer tokens and role-scoped grants that separate what a Business Logic (BL/VTN) client may write from what a VEN may write. This is a protocol contract, not an Alliance-hosted service — every implementer (a utility, aggregator, or vendor VTN) stands up its own base URL, so no single baseURL exists. The specification documents themselves are distributed by the Alliance through a registration form; the OpenAPI files harvested here came from a public Apache-2.0 copy of the Alliance release.

OpenADR 3 API is published by OpenADR Alliance on the APIs.io network, described by a machine-readable OpenAPI specification and an AsyncAPI event-driven specification.

This API exposes 1 JSON Schema definition.

Tagged areas include Demand Response, OpenADR, Energy, and DER. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, an AsyncAPI specification, and 1 JSON Schema.

This API exposes 45 operations across 27 paths, organized into 9 resource areas, and defines 48 schemas. It is described by OpenAPI 3.0.0, at version 1.0.0.

Requests are made against a single base URL, https://virtserver.swaggerhub.com/OPENADR3_1/openADR3.1.0/1.0.0.

45 operations 27 paths 48 schemas 6 DELETE26 GET7 POST6 PUT

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.0.0
API Version
1.0.0
Server
https://virtserver.swaggerhub.com/OPENADR3_1/openADR3.1.0/1.0.0
Authentication
OAuth 2.0, HTTP Bearer
License
Resource Areas
9

Authentication & Security 2

OpenADR 3 API declares 2 security schemes for authenticating requests. It supports OAuth 2.0 (oAuth2ClientCredentials) using the clientCredentials flow, exposing 9 scopes. It accepts HTTP bearer tokens (JWT) (bearerAuth).

  • oAuth2ClientCredentials — Client credential flow.

Paths & Operations 45

Across 27 paths, the API surfaces 45 operations — 6 DELETE, 26 GET, 7 POST, 6 PUT. They span 9 resource areas: programs, reports, events, subscriptions, vens, resources, Auth, notifiers, MQTT_notifier. Each is listed below with its method, path, parameters, and response codes.

programs 5

Demand response programs

GET
/programs
searches all programs
searchAllPrograms 3 params → 200400401403500
POST
/programs
create a program
createProgram body → 201400401403409500
GET
/programs/{programID}
searches programs by program ID
searchProgramByProgramId 1 param → 200400401403404500
PUT
/programs/{programID}
update a program
updateProgram 1 param body → 200400403404409500
DELETE
/programs/{programID}
delete a program
deleteProgram 1 param → 200400401403404500
reports 5

Reports

GET
/reports
searches all reports
searchAllReports 5 params → 200400401403500
POST
/reports
add a report
createReport body → 201400401403409500
GET
/reports/{reportID}
searches reports by reportID
searchReportsByReportID 1 param → 200400401403404500
PUT
/reports/{reportID}
update a report
updateReport 1 param body → 200400401403404409500
DELETE
/reports/{reportID}
delete a report
deleteReport 1 param → 200400401403404500
events 5

Events

GET
/events
searches all events
searchAllEvents 5 params → 200400401403500
POST
/events
create an event
createEvent body → 201400401403409500
GET
/events/{eventID}
search events by ID
searchEventsByID 1 param → 200400401403404500
PUT
/events/{eventID}
update an event
updateEvent 1 param body → 200400401403404409500
DELETE
/events/{eventID}
delete an event
deleteEvent 1 param → 200400401403404500
subscriptions 5

Webhook subscriptions

GET
/subscriptions
search subscriptions
searchSubscriptions 5 params → 200400401403500
POST
/subscriptions
create subscription
createSubscription body → 201400401403409500
GET
/subscriptions/{subscriptionID}
search subscriptions by ID
searchSubscriptionByID 1 param → 200400401403404500
PUT
/subscriptions/{subscriptionID}
update subscription
updateSubscription 1 param body → 200400401403404409500
DELETE
/subscriptions/{subscriptionID}
delete subscription
deleteSubscription 1 param → 200400401403404500
vens 5

Virtual end nodes

GET
/vens
search vens
searchVens 4 params → 200400401403500
POST
/vens
create ven
createVen body → 201400401403500
GET
/vens/{venID}
search vens by ID
searchVenByID 1 param → 200400401403404500
PUT
/vens/{venID}
update ven
updateVen 1 param body → 200400401403404409500
DELETE
/vens/{venID}
delete ven
deleteVen 1 param → 200400401403404500
resources 5

VEN resources

GET
/resources
search ven resources
searchVenResources 5 params → 200400401403404500
POST
/resources
create resource
createResource body → 201400401403404409500
GET
/resources/{resourceID}
search ven resources by ID
searchVenResourceByID 1 param → 200400401403404500
PUT
/resources/{resourceID}
update ven resource
updateVenResource 1 param body → 200400401403404409500
DELETE
/resources/{resourceID}
delete ven resource
deleteVenResource 1 param → 200400401403404500
Auth 2

Authorization server and token endpoints

GET
/auth/server
fetch server info
getAuthServerInfo → 200400500
POST
/auth/token
fetch a token
fetchToken body → 200400401500501
notifiers 1

Notification bindings (e.g. webhooks, MQTT)

GET
/notifiers
List all notifier bindings
listAllNotifiers → 200400401403
MQTT_notifier 12

MQTT notifier topic listings

GET
/notifiers/mqtt/topics/programs
List all MQTT notifier topic names for operations on programs
listAllMqttNotifierTopicsPrograms → 200400401404500
GET
/notifiers/mqtt/topics/programs/{programID}
List all MQTT binding topic names for operations on a program
listAllMqttNotifierTopicsProgram 1 param → 200400401404500
GET
/notifiers/mqtt/topics/events
List all MQTT binding topic names for operations on all events
listAllMqttNotifierTopicsEvents → 200400401403404500
GET
/notifiers/mqtt/topics/programs/{programID}/events
List all MQTT binding topic names for operations on events for a program
listAllMqttNotifierTopicsProgramEvents 1 param → 200400401404500
GET
/notifiers/mqtt/topics/reports
List all MQTT binding topic names for operations on all reports
listAllMqttNotifierTopicsReports → 200400401403404500
GET
/notifiers/mqtt/topics/subscriptions
List all MQTT binding topic names for operations on all subscriptions
listAllMqttNotifierTopicsSubscriptions → 200400401403404500
GET
/notifiers/mqtt/topics/vens
List all MQTT binding topic names for operations on vens
listAllMqttNotifierTopicsVens → 200400401403404500
GET
/notifiers/mqtt/topics/vens/{venID}
List all MQTT binding topic names for operations on a ven
listAllMqttNotifierTopicsVen 1 param → 200400401403404500
GET
/notifiers/mqtt/topics/resources
List all MQTT binding topic names for operations on resources
listAllMqttNotifierTopicsResources → 200400401403404500
GET
/notifiers/mqtt/topics/vens/{venID}/events
List all MQTT binding topic names for operations on events targeted for a ven
listAllMqttNotifierTopicsVenEvents 1 param → 200400401403404500
GET
/notifiers/mqtt/topics/vens/{venID}/programs
List all MQTT binding topic names for operations on programs targeted for a ven
listAllMqttNotifierTopicsVenPrograms 1 param → 200400401403404500
GET
/notifiers/mqtt/topics/vens/{venID}/resources
List all MQTT binding topic names for operations on resources for a ven
listAllMqttNotifierTopicsVenResources 1 param → 200400401403404500

Schemas 48

The contract defines 48 schemas that model the data the API accepts and returns. The most detailed are reportDescriptor (11 properties), eventRequest (9 properties), reportPayloadDescriptor (6 properties), programRequest (6 properties). Each schema is shown below with its type and property counts.

program
object
Server provided representation of program
programRequest
object
Client provided description of program
6 properties 1 required
report
object
Server provided representation of report
reportRequest
object
report object.
5 properties 3 required
event
object
Server provided representation of event
eventRequest
object
Event object to communicate a Demand Response request to VEN. If intervalPeriod is present, sets default start time and duration of intervals.
9 properties 1 required
subscription
object
Server provided representation of subscription
subscriptionRequest
object
An object created by a client to receive notification of operations on objects. Clients may subscribe to be notified when a type of object is created, updated,…
4 properties 2 required
ven
object
Server provided representation of ven
venRequest
BlVenRequest
object
Business Logic provided representation of ven.
5 properties 3 required
VenVenRequest
object
VEN provided representation of ven.
3 properties 2 required
resource
object
Server provided representation of resource
resourceRequest
BlResourceRequest
object
Business Logic provided representation of ven resource.
5 properties 3 required
VenResourceRequest
object
Business Logic provided representation of ven resource.
3 properties 2 required
objectMetadata
object
metadata common to all addressable objects. Values provided by VTN on object creation.
4 properties 4 required
interval
object
An object defining a temporal window and a list of valuesMaps. if intervalPeriod present may set temporal aspects of interval or override event.intervalPeriod.
3 properties 2 required
intervalPeriod
object
Defines temporal aspects of intervals. A start of "0001-01-01" or "0001-01-01T00:00:00" may indicate 'now'. See User Guide. A duration of "P9999Y" may indicate…
3 properties
valuesMap
object
Represents one or more values associated with a type. See enumerations in Definitions for defined string values, or use privately defined strings
2 properties 2 required
point
object
A pair of floats typically used as a point on a 2 dimensional grid.
2 properties 2 required
eventPayloadDescriptor
object
Contextual information used to interpret event valuesMap values. E.g. a PRICE payload simply contains a price value, an associated descriptor provides necessar…
4 properties 2 required
reportPayloadDescriptor
object
Contextual information used to interpret report payload values. E.g. a USAGE payload simply contains a usage value, an associated descriptor provides necessary…
6 properties 2 required
reportDescriptor
object
An object that may be used to request a report from a VEN.
11 properties 1 required
objectID
string
URL safe VTN assigned object ID.
clientID
string
ClientID as provisioned by Auhtentication Service and associated with client's bearer token
venName
string
User generated identifier, may be VEN identifier provisioned out-of-band. venName is expected to be unique within the scope of a VTN
clientName
string
User generated identifier, may be VEN identifier provisioned out-of-band.
target
string
User generated target string.
resourceName
string
User generated identifier. A value of AGGREGATEDREPORT indicates an aggregation of more that one resource's data
units
string
Units of measure.
readingType
string
Represents the type of reading. See enumerations in Definitions for defined string values, or use privately defined strings
notification
object
VTN generated object included in request to subscription callbackUrl.
4 properties 3 required
objectTypes
string
Types of objects addressable through API.
dateTime
string
datetime in RFC 3339 format
duration
string
duration in ISO 8601 format
clientCredentialRequest
object
Body of POST request to /auth/token. Note snake case per https://www.rfc-editor.org/rfc/rfc6749
4 properties 3 required
clientCredentialResponse
object
Body response from /auth/token. Note snake case per https://www.rfc-editor.org/rfc/rfc6749
5 properties 2 required
authError
object
error response on HTTP 400 from auth/token per https://www.rfc-editor.org/rfc/rfc6749
3 properties 1 required
authServerInfo
object
1 property 1 required
problem
object
reusable error response. From https://opensource.zalando.com/problem/schema.yaml.
5 properties
notifiersResponse
object
Provides details of each notifier binding supported
2 properties 1 required
mqttNotifierBindingObject
object
Details of MQTT binding for messaging protocol support
3 properties 3 required
mqttNotifierAuthenticationAnonymous
object
MQTT broker anonymous authentication details
1 property 1 required
mqttNotifierAuthenticationOauth2BearerToken
object
MQTT broker OAuth2 Bearer Token authentication details
2 properties 2 required
mqttNotifierAuthenticationCertificate
object
MQTT broker mTLS client certificate authentication details
4 properties 4 required
notifierOperationsTopics
object
MQTT notifier topic names for notifications of subscribable-object operations
4 properties 2 required
notifierTopicsResponse
object
1 property 1 required

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

openadr-3-1-1-openapi.yaml Raw ↑
Where this information came from

This is an independent, third-party profile of OpenADR 3 API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.