Virtual Peaker · Authentication Profile
Virtual Peaker Authentication
Authentication
Virtual Peaker secures its APIs with oauth2 and hmac across 3 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the authorizationCode and clientCredentials flow(s).
EnergyUnited StatesUtilitiesElectricityGridDemand ResponseDERDERMSVirtual Power PlantEV ChargingSmart ThermostatsEnergy Storage
Methods: oauth2, hmac
Schemes: 3
OAuth flows: authorizationCode, clientCredentials
API key in:
Security Schemes
device_partner_api_auth oauth2
· flows: clientCredentials
device_partner_user_auth oauth2
· flows: authorizationCode
publish_hmac hmac
Source
Authentication Profile
generated: '2026-07-27'
method: searched
source: openapi/virtual-peaker-gravity-connect-device-partner-api-openapi.yml
docs:
- https://assets.virtualpeaker.io/gravity-connect/vp-api.html#section/Authentication
- https://assets.virtualpeaker.io/gravity-connect/device-partner-api.html#section/Authentication
note: >-
Derived mechanically from the OpenAPI securitySchemes, then upgraded from the published
Authentication sections of both Gravity Connect guides. The upgrade matters: the VPP publishing
document declares an EMPTY components.securitySchemes and no security requirement, yet all five
of its operations are authenticated with an HMAC-SHA256 signature. A tool reading only the spec
would conclude that half of Gravity Connect is unauthenticated.
summary:
types:
- oauth2
- hmac
oauth2_flows:
- authorizationCode
- clientCredentials
directions:
- direction: VPP -> Device Partner
model: oauth2
- direction: Device Partner -> VPP
model: hmac-sha256 body signature
credential_issuance:
model: partner-only, per utility program
request: gravity-connect@virtual-peaker.com
self_serve: false
schemes:
- name: device_partner_api_auth
type: oauth2
direction: VPP -> Device Partner
flows:
- flow: clientCredentials
tokenUrl: https://example.com/oauth/token
tokenUrl_note: >-
Placeholder. The Device Partner (OEM) hosts the authorization server; the real token endpoint
is exchanged during onboarding.
scopes: 1
scope_names: [basic_partner_read_write]
client_authentication: Send as Basic header (per Virtual Peaker's published Postman setup)
credentials: [clientId, clientSecret]
credentials_note: program-specific, provided by the Device Partner
applies_to_operations: 16 of the 18 device-partner operations
sources:
- openapi/virtual-peaker-gravity-connect-device-partner-api-openapi.yml
- name: device_partner_user_auth
type: oauth2
direction: VPP -> Device Partner (homeowner-consented)
flows:
- flow: authorizationCode
authorizationUrl: https://example.com/oauth/authorize
tokenUrl: https://example.com/oauth/token
scopes: 1
scope_names: [user_read]
description: >-
If using the OAuth onboarding method, this authentication method is used for the respective
endpoints (published description). Used by the OAuth Device Discovery enrollment flow, where
the homeowner logs in to the device partner and grants the VPP access to their devices. May
reuse the client-credentials application or use separate credentials.
applies_to_operations: [readCurrentUser, readCurrentUserDevices]
pkce: not specified in the specification
sources:
- openapi/virtual-peaker-gravity-connect-device-partner-api-openapi.yml
- name: publish_hmac
type: hmac
algorithm: HMAC-SHA256
direction: Device Partner -> VPP
declared_in_spec: false
header: Authorization
value_format: 'Publish <hex-hmac>'
signed_material: the raw JSON request body
key_material:
- name: PROGRAM_PUBLISH_SECRET
issued: when the utility program is set up
used_by: [publishCommand, publishDeviceEnrollment, publishDevicePartnerDrivenEnrollment]
- name: DEVICE_PUBLISH_SECRET
issued: per device, delivered when the VPP calls modifySubscription at enrollment
used_by: [publishSignalSetting, publishDeviceCommand]
path_identifier: PROGRAM_PUBLISH_KEY (path parameter on every publishing endpoint)
reference_implementation: |
const crypto = require('crypto');
const computedHMAC = crypto.createHmac('sha256', secret).update(body).digest('hex');
// Authorization: Publish ${computedHMAC}
history: spec 1.2.0 clarified the header is `Authorization`, not `Authentication`
sources:
- https://assets.virtualpeaker.io/gravity-connect/vp-api.html#section/Authentication
- openapi/virtual-peaker-gravity-connect-vpp-api-openapi.yml
gaps:
- the VPP publishing document declares no securityScheme at all — see
overlays/virtual-peaker-gravity-connect-vpp-api-overlay.yaml for the recommended declaration
- the root security requirement of the device-partner document references a scope
(device_partner_basic_auth) that no flow declares
- no OIDC discovery, no RFC 8414 metadata, no PKCE requirement, no mTLS
- no token lifetime, refresh or rotation policy is published
Work with this as data
Every security artifact 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 security posture
4 MCP tools reach this
find_securityBrowse and filter every security artifact in the catalog.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.
Call it yourself
curl for this page
This security artifact
curl "https://apis.io/api/v1/security/virtual-peaker-authentication"
All security posture
curl "https://apis.io/api/v1/security?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.