Virtual Peaker Devices API

Device specific endpoints

Business capability
Distributed Energy Resource Management BC-3840

Operations 4

GET /device/{DEVICE_UID} Read device details #
PUT /device/{DEVICE_UID}/{SIGNAL_OR_SETTING}/{DATA_KEY} Update signal/setting #
GET /device/{DEVICE_UID}/{SIGNAL_OR_SETTING}/{DATA_KEY} Read signal/setting #
POST /subscription Manage device publishing #

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/virtual-peaker-devices-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 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

virtual-peaker-devices-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: '# Introduction

    Welcome to the Gravity Connect API documentation for Device Partners (typically Device OEMs).'
  x-logo:
    url: ./assets/vp_logo.png
    backgroundColor: '#FFFFFF'
    altText: Virtual Peaker Logo
  version: 2.0.6
  title: Gravity Connect API (Device Partner) Devices API
  license:
    name: BSD
servers:
- url: https://example.com
security:
- device_partner_api_auth:
  - device_partner_basic_auth
- device_partner_user_auth:
  - user_read
tags:
- name: Devices
  description: Device specific endpoints
paths:
  /device/{DEVICE_UID}:
    get:
      summary: Read device details
      operationId: readDeviceDetails
      security:
      - device_partner_api_auth:
        - basic_partner_read_write
      tags:
      - Devices
      parameters:
      - $ref: '#/components/parameters/deviceUID'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceDetails'
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/unauthorized'
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Details'
  /device/{DEVICE_UID}/{SIGNAL_OR_SETTING}/{DATA_KEY}:
    put:
      summary: Update signal/setting
      description: There may be cases where a particular signal or setting can be modified by Virtual Peaker. If this is supported, this endpoint is to be used.
      operationId: updateSignalSetting
      tags:
      - Devices
      security:
      - device_partner_api_auth:
        - basic_partner_read_write
      parameters:
      - $ref: '#/components/parameters/deviceUID'
      - $ref: '#/components/parameters/signalSetting'
      - $ref: '#/components/parameters/dataKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignalSetting'
      responses:
        '200':
          description: Success
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/unauthorized'
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Details'
    get:
      summary: Read signal/setting
      operationId: readSignalSetting
      tags:
      - Devices
      security:
      - device_partner_api_auth:
        - basic_partner_read_write
      parameters:
      - $ref: '#/components/parameters/deviceUID'
      - $ref: '#/components/parameters/signalSetting'
      - $ref: '#/components/parameters/dataKey'
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignalSetting'
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/unauthorized'
        '404':
          $ref: '#/components/responses/notFound'
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Details'
  /subscription:
    post:
      summary: Manage device publishing
      description: This endpoint is used to enable or disable the publishing of device data (signals and settings) to Virtual Peaker.
      operationId: modifySubscription
      tags:
      - Devices
      security:
      - device_partner_api_auth:
        - basic_partner_read_write
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - state
              - uid
              properties:
                state:
                  type: string
                  enum:
                  - register
                  - unregister
                uid:
                  type: string
                  description: The unique identifier for the target device within the partner's platform
                secret:
                  type: string
                  description: DEVICE_PUBLISH_SECRET; Passed when a device is subscribed to data, used to create an HMAC when the Device Partner publishes device data to Virtual Peaker
            examples:
              register:
                summary: Registering/subscribing a device and sharing secret
                value:
                  state: register
                  uid: some-device-uid
                  secret: some-device-secret
              unregister:
                summary: Stopping publishing for a device
                value:
                  state: unregister
                  uid: some-device-uid
      responses:
        '200':
          description: successful operation
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/unauthorized'
        default:
          description: unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Details'
components:
  parameters:
    dataKey:
      name: DATA_KEY
      in: path
      required: true
      description: The signal/setting type being read, varies based on device type, see documentation
      schema:
        type: string
    deviceUID:
      name: DEVICE_UID
      in: path
      required: true
      description: The unique identifier for the target device within the partner's platform
      schema:
        type: string
    signalSetting:
      name: SIGNAL_OR_SETTING
      in: path
      required: true
      description: Whether the data type is a signal or a setting
      schema:
        type: string
        enum:
        - signal
        - setting
  schemas:
    SignalSetting:
      type: object
      required:
      - key
      - value
      - time
      properties:
        key:
          type: string
        value:
          oneOf:
          - type: string
          - type: number
        time:
          type: string
          format: date-time
          description: For more see, [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6). As an example, '2017-07-21T17:32:28Z'. The timezone is always zero UTC offset.
    DeviceKindEnum:
      type: string
      enum:
      - HWH
      - TSTAT
      - BATTERY
      - EVSE
      - V2G
      - STORAGE-HVAC
    Details:
      type: object
      required:
      - message
      properties:
        message:
          type: string
          description: A human readable response. Because there's no standard for what is included or how information should be formatted, this should not be parsed and utilized programmatically.
    DeviceDetails:
      type: object
      required:
      - uid
      - kind
      - type
      - isSubscribed
      properties:
        uid:
          type: string
          description: DEVICE_UID, unique within the partner
        kind:
          $ref: '#/components/schemas/DeviceKindEnum'
        name:
          type: string
        type:
          type: string
          description: model name/number
        serialNumber:
          type: string
        isSubscribed:
          type: boolean
          description: If true, Virtual Peaker has enabled publishing of device data
  responses:
    unauthorized:
      description: The request was not properly authorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Details'
    badRequest:
      description: Request was not properly formatted
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Details'
    notFound:
      description: The data could not be found. Potentially the device hasn't reported this datapoint yet or the device is offline and the device partner does not store the most recent value
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Details'
  securitySchemes:
    device_partner_api_auth:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://example.com/oauth/token
          scopes:
            basic_partner_read_write: conducts all actions on the partners behalf
    device_partner_user_auth:
      type: oauth2
      description: If using the OAuth onboarding method, this authentication method is used for the respective endpoints. Please the the FAQ for more details.
      flows:
        authorizationCode:
          authorizationUrl: https://example.com/oauth/authorize
          tokenUrl: https://example.com/oauth/token
          scopes:
            user_read: read details about new user
x-tagGroups:
- name: Base Implementation
  tags:
  - Devices
  - Commands
  - Energy Interval Endpoint
- name: Device Onboarding
  tags:
  - OAuth Device Discovery (Preferred)
  - Pairing Code Device Discovery - End User App
  - Pairing Code Device Discovery - Utility Commissioned Installation
  - Device Partner Driven Enrollment
- name: Group Management
  tags:
  - Group Management