Leap Dispatch API

Receive and search grid dispatch instructions at meter and group level through Leap Dispatch API V2, including webhook URL management for meter and group dispatches. OpenAPI 3.0.3, served from the /v2 path.

OpenAPI Specification

leapfrog-power-dispatch-openapi.yml Raw ↑
openapi: 3.0.3
info:
  contact:
    email: apiteam@leap.energy
  description: Receive dispatches through Leap Dispatch API V2
  termsOfService: https://leap.energy/terms/terms-of-service
  title: Dispatch
  version: "2"
externalDocs:
  description: Find out more about Leap API
  url: https://developer.leap.energy/
servers:
- url: https://api.staging.leap.energy/v2
- url: https://api.leap.energy/v2
security:
- http: []
tags:
- description: Endpoints for meter dispatches
  name: meter-dispatches
- description: Endpoints for group dispatches
  name: group-dispatches
paths:
  /dispatch/meter/search:
    post:
      description: Search meter dispatches that match the input filters
      operationId: searchMeterDispatches
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SearchMeterDispatchEventRequest"
        description: Search meter dispatch request input
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchMeterDispatchEventResponse"
          description: A list of meter dispatches that match the search input
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Request could not be parsed or is invalid
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No access to this resource
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Resource not found
        "5XX":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unexpected error
      summary: Search meter dispatches
      tags:
      - meter-dispatches
  /dispatch/group/search:
    post:
      description: Search group dispatches that match the input filters
      operationId: searchGroupDispatches
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SearchGroupDispatchEventRequest"
        description: Search group dispatch request input
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchGroupDispatchEventResponse"
          description: The group dispatches that match the search input
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Request could not be parsed or is invalid
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No access to this resource
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Resource not found
        "5XX":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unexpected error
      summary: Search group dispatches
      tags:
      - group-dispatches
  /dispatch/meter/communication_test:
    post:
      description: Create communication test that will trigger a webhook call with
        the corresponding dispatch notification data
      operationId: triggerCommunicationTestMeterDispatch
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CommunicationTestMeterDispatchRequest"
        description: Meter dispatch communication test
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CommunicationTestMeterDispatchResponse"
          description: Successfully triggered a communication test meter notification
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Request could not be parsed or is invalid
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No access to this resource
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Resource not found
        "5XX":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unexpected error
      summary: Trigger meter communication test
      tags:
      - meter-dispatches
  /dispatch/meter/webhook:
    delete:
      description: Remove an existing webhook URL for meter dispatches
      operationId: deleteMeterDispatchWebhook
      responses:
        "204":
          description: Webhook URL has been removed
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No access to this resource
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Resource not found
        "5XX":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unexpected error
      summary: Delete meter dispatch webhook URL
      tags:
      - meter-dispatches
    get:
      description: Retrieve the registered webhook URL for meter dispatches
      operationId: getMeterDispatchWebhook
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Webhook"
          description: Success
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No access to this resource
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Resource not found
        "5XX":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unexpected error
      summary: Get meter webhook URL
      tags:
      - meter-dispatches
    put:
      description: Create or update an existing webhook URL for meter dispatches
      operationId: createOrUpdateMeterDispatchWebhook
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Webhook"
        description: Webhook object that needs to be registered for this partner
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Webhook"
          description: Webhook URL updated
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Request could not be parsed or is invalid
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No access to this resource
        "5XX":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unexpected error
      summary: Set meter webhook URL
      tags:
      - meter-dispatches
      x-codegen-request-body-name: apiWebhook
  /dispatch/meter/webhook/integration_test:
    post:
      description: Create test notification that will trigger a webhook call with
        the corresponding dispatch notification data
      operationId: triggerTestMeterDispatchNotification
      requestBody:
        content:
          application/json:
            examples:
              CAISO - CCA Capacity Test:
                value:
                  meter_dispatches:
                  - meter_id: dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - meter_event_id: 1acfced0-16f4-4fb7-b72e-5ff939ae541e
                      start_time: 2023-07-21T00:00:00.000Z
                      end_time: 2023-07-21T01:00:00.000Z
                      energy_kw: 10
                      nomination_kw: 10
                      cancelled: false
                      programs:
                      - CCA
                      priority: 1
                      is_voluntary: false
                      performance_compensation_cap: up-to-nomination
                      dispatch_event_types:
                      - capacity-test
                    - meter_event_id: 2ad4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T01:00:00.000Z
                      end_time: 2023-07-21T02:00:00.000Z
                      energy_kw: 10
                      nomination_kw: 10
                      cancelled: false
                      programs:
                      - CCA
                      priority: 1
                      is_voluntary: false
                      performance_compensation_cap: up-to-nomination
                      dispatch_event_types:
                      - capacity-test
              CAISO - CCA Market Award:
                value:
                  meter_dispatches:
                  - meter_id: dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - meter_event_id: 3acfced0-16f4-4fb7-b72e-5ff939ae541e
                      start_time: 2023-07-21T00:00:00.000Z
                      end_time: 2023-07-21T01:00:00.000Z
                      energy_kw: 8
                      nomination_kw: 10
                      cancelled: false
                      programs:
                      - CCA
                      priority: 2
                      is_voluntary: false
                      performance_compensation_cap: up-to-site-load
                      dispatch_event_types:
                      - day-ahead
                    - meter_event_id: 4ad4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T01:00:00.000Z
                      end_time: 2023-07-21T02:00:00.000Z
                      energy_kw: 8
                      nomination_kw: 10
                      cancelled: false
                      programs:
                      - CCA
                      priority: 2
                      is_voluntary: false
                      performance_compensation_cap: up-to-site-load
                      dispatch_event_types:
                      - day-ahead
              CAISO - ELRP:
                value:
                  meter_dispatches:
                  - meter_id: dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - meter_event_id: 5ad4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T00:00:00.000Z
                      end_time: 2023-07-21T04:00:00.000Z
                      energy_kw: null
                      nomination_kw: 10
                      cancelled: false
                      programs:
                      - ELRP
                      priority: 3
                      is_voluntary: true
                      performance_compensation_cap: grid-exports-allowed
                      dispatch_event_types:
                      - standard
              CAISO - DSGS Option 3:
                value:
                  meter_dispatches:
                  - meter_id: dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - meter_event_id: 6ad4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T00:00:00.000Z
                      end_time: 2023-07-21T02:00:00.000Z
                      energy_kw: 10
                      nomination_kw: 10
                      cancelled: false
                      programs:
                      - CEC-DSGS
                      priority: 4
                      is_voluntary: true
                      performance_compensation_cap: grid-exports-allowed
                      dispatch_event_types:
                      - standard
              CAISO - DSGS Option 4:
                value:
                  meter_dispatches:
                  - meter_id: dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - meter_event_id: 6ad4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T00:00:00.000Z
                      end_time: 2023-07-21T02:00:00.000Z
                      energy_kw: 1
                      nomination_kw: 1
                      cancelled: false
                      programs:
                      - CEC-DSGS-OPTION4
                      priority: 4
                      is_voluntary: false
                      performance_compensation_cap: grid-exports-allowed
                      dispatch_event_types:
                      - standard
              ERCOT - ERS:
                value:
                  meter_dispatches:
                  - meter_id: dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - meter_event_id: 7ad4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T18:00:00.000Z
                      end_time: 2023-07-21T22:00:00.000Z
                      energy_kw: 10
                      nomination_kw: 10
                      cancelled: false
                      programs:
                      - ERCOT-ERS
                      priority: 1
                      is_voluntary: false
                      performance_compensation_cap: up-to-nomination
                      dispatch_event_types:
                      - standard
              NYISO - SCR:
                value:
                  meter_dispatches:
                  - meter_id: dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - meter_event_id: 8ad4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T19:00:00.000Z
                      end_time: 2023-07-21T20:00:00.000Z
                      energy_kw: 10
                      nomination_kw: 10
                      cancelled: false
                      programs:
                      - NYISO-SCR
                      priority: 1
                      is_voluntary: false
                      performance_compensation_cap: up-to-nomination
                      dispatch_event_types:
                      - standard
              NYISO - CSRP:
                value:
                  meter_dispatches:
                  - meter_id: dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - meter_event_id: 9ad4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T16:00:00.000Z
                      end_time: 2023-07-21T20:00:00.000Z
                      energy_kw: 10
                      nomination_kw: 10
                      cancelled: false
                      programs:
                      - CONED-CSRP
                      priority: 3
                      is_voluntary: false
                      performance_compensation_cap: up-to-nomination
                      dispatch_event_types:
                      - standard
              NYISO - DLRP:
                value:
                  meter_dispatches:
                  - meter_id: dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - meter_event_id: 10d4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T14:00:00.000Z
                      end_time: 2023-07-21T18:00:00.000Z
                      energy_kw: 10
                      nomination_kw: 10
                      cancelled: false
                      programs:
                      - CONED-DLRP
                      priority: 5
                      is_voluntary: false
                      performance_compensation_cap: up-to-nomination
                      dispatch_event_types:
                      - standard
              ISO-NE - Clean Peak Standard:
                value:
                  meter_dispatches:
                  - meter_id: dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - meter_event_id: 11d4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T14:00:00.000Z
                      end_time: 2023-07-21T18:00:00.000Z
                      energy_kw: 10
                      nomination_kw: 10
                      cancelled: false
                      programs:
                      - MA_DOER-CPS
                      priority: 2
                      is_voluntary: true
                      performance_compensation_cap: grid-exports-allowed
                      dispatch_event_types:
                      - standard
              ISO-NE - Connected Solutions:
                value:
                  meter_dispatches:
                  - meter_id: dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - meter_event_id: 12d4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T15:00:00.000Z
                      end_time: 2023-07-21T18:00:00.000Z
                      energy_kw: 10
                      nomination_kw: 10
                      cancelled: false
                      programs:
                      - NATGRID-CS
                      priority: 1
                      is_voluntary: true
                      performance_compensation_cap: grid-exports-allowed
                      dispatch_event_types:
                      - standard
              PJM - Capacity:
                value:
                  meter_dispatches:
                  - meter_id: dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - meter_event_id: 12d4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T15:00:00.000Z
                      end_time: 2023-07-21T18:00:00.000Z
                      energy_kw: 10
                      nomination_kw: 10
                      cancelled: false
                      programs:
                      - PJM-CAPACITY
                      priority: 1
                      is_voluntary: false
                      performance_compensation_cap: up-to-nomination
                      dispatch_event_types:
                      - standard
            schema:
              $ref: "#/components/schemas/WebhookMeterDispatchIntegrationTestRequest"
        description: Test meter dispatch notification
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebhookIntegrationTestResponse"
          description: |
            Successfully triggered a test meter notification to be sent to the registered meter webhook url
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Request could not be parsed or is invalid
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No access to this resource
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Resource not found
        "5XX":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unexpected error
      summary: Trigger test meter notification
      tags:
      - meter-dispatches
  /dispatch/group/webhook:
    delete:
      description: Remove an existing webhook URL for group dispatches
      operationId: deleteGroupDispatchWebhook
      responses:
        "204":
          description: Webhook URL has been removed
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No access to this resource
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Resource not found
        "5XX":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unexpected error
      summary: Delete group webhook URL
      tags:
      - group-dispatches
    get:
      description: Retrieve the registered webhook URL for group dispatches
      operationId: getGroupDispatchWebhook
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Webhook"
          description: Success
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No access to this resource
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Resource not found
        "5XX":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unexpected error
      summary: Get group webhook URL
      tags:
      - group-dispatches
    put:
      description: Create or update an existing webhook URL for group dispatches
      operationId: createOrUpdateGroupDispatchWebhook
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Webhook"
        description: Webhook object that needs to be registered for this account
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Webhook"
          description: Webhook URL updated
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Request could not be parsed or is invalid
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unauthorized
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: No access to this resource
        "5XX":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unexpected error
      summary: Set group webhook URL
      tags:
      - group-dispatches
      x-codegen-request-body-name: apiWebhook
  /dispatch/group/webhook/integration_test:
    post:
      description: Create test notification that will trigger a webhook call with
        the corresponding group dispatch notification data
      operationId: triggerTestGroupDispatchNotification
      requestBody:
        content:
          application/json:
            examples:
              CAISO - CCA Capacity Test:
                value:
                  group_dispatches:
                  - market_group_id: 9d1a7aae-24e5-455f-91e9-e0f5f145f2ae
                    meter_ids:
                    - beae2779-e392-4f00-b0cf-32e716204f78
                    - dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - market_group_event_id: 1acfced0-16f4-4fb7-b72e-5ff939ae541e
                      start_time: 2023-07-21T00:00:00.000Z
                      end_time: 2023-07-21T01:00:00.000Z
                      energy_kw: 100
                      nomination_kw: 100
                      cancelled: false
                      programs:
                      - CCA
                      priority: 1
                      is_voluntary: false
                      performance_compensation_cap: up-to-nomination
                      dispatch_event_types:
                      - capacity-test
                    - market_group_event_id: 2ad4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T01:00:00.000Z
                      end_time: 2023-07-21T02:00:00.000Z
                      energy_kw: 100
                      nomination_kw: 100
                      cancelled: false
                      programs:
                      - CCA
                      priority: 1
                      is_voluntary: false
                      performance_compensation_cap: up-to-nomination
                      dispatch_event_types:
                      - capacity-test
              CAISO - CCA Market Award:
                value:
                  group_dispatches:
                  - market_group_id: 9d1a7aae-24e5-455f-91e9-e0f5f145f2ae
                    meter_ids:
                    - beae2779-e392-4f00-b0cf-32e716204f78
                    - dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - market_group_event_id: 3acfced0-16f4-4fb7-b72e-5ff939ae541e
                      start_time: 2023-07-21T00:00:00.000Z
                      end_time: 2023-07-21T01:00:00.000Z
                      energy_kw: 80
                      nomination_kw: 100
                      cancelled: false
                      programs:
                      - CCA
                      priority: 2
                      is_voluntary: false
                      performance_compensation_cap: up-to-site-load
                      dispatch_event_types:
                      - day-ahead
                    - market_group_event_id: 4ad4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T01:00:00.000Z
                      end_time: 2023-07-21T02:00:00.000Z
                      energy_kw: 80
                      nomination_kw: 100
                      cancelled: false
                      programs:
                      - CCA
                      priority: 2
                      is_voluntary: false
                      performance_compensation_cap: up-to-site-load
                      dispatch_event_types:
                      - day-ahead
              CAISO - ELRP:
                value:
                  group_dispatches:
                  - market_group_id: 9d1a7aae-24e5-455f-91e9-e0f5f145f2ae
                    meter_ids:
                    - beae2779-e392-4f00-b0cf-32e716204f78
                    - dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - market_group_event_id: 5ad4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T00:00:00.000Z
                      end_time: 2023-07-21T04:00:00.000Z
                      energy_kw: null
                      nomination_kw: 100
                      cancelled: false
                      programs:
                      - ELRP
                      priority: 3
                      is_voluntary: true
                      performance_compensation_cap: grid-exports-allowed
                      dispatch_event_types:
                      - standard
              CAISO - DSGS Option 3:
                value:
                  group_dispatches:
                  - market_group_id: 9d1a7aae-24e5-455f-91e9-e0f5f145f2ae
                    meter_ids:
                    - beae2779-e392-4f00-b0cf-32e716204f78
                    - dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - market_group_event_id: 6ad4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T00:00:00.000Z
                      end_time: 2023-07-21T02:00:00.000Z
                      energy_kw: 100
                      nomination_kw: 100
                      cancelled: false
                      programs:
                      - CEC-DSGS
                      priority: 4
                      is_voluntary: true
                      performance_compensation_cap: grid-exports-allowed
                      dispatch_event_types:
                      - standard
              CAISO - DSGS Option 4:
                value:
                  group_dispatches:
                  - market_group_id: 9d1a7aae-24e5-455f-91e9-e0f5f145f2ae
                    meter_ids:
                    - beae2779-e392-4f00-b0cf-32e716204f78
                    - dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - market_group_event_id: 6ad4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T00:00:00.000Z
                      end_time: 2023-07-21T02:00:00.000Z
                      energy_kw: 10
                      nomination_kw: 10
                      cancelled: false
                      programs:
                      - CEC-DSGS-OPTION4
                      priority: 4
                      is_voluntary: false
                      performance_compensation_cap: grid-exports-allowed
                      dispatch_event_types:
                      - standard
              ERCOT - ERS:
                value:
                  group_dispatches:
                  - market_group_id: 9d1a7aae-24e5-455f-91e9-e0f5f145f2ae
                    meter_ids:
                    - beae2779-e392-4f00-b0cf-32e716204f78
                    - dd21c76c-7126-4ef7-b0a6-f190fad300b2
                    timeslots:
                    - market_group_event_id: 7ad4bbde-36ee-401f-92b8-c58aa17aa71d
                      start_time: 2023-07-21T18:00:00.000Z
                      end_time: 2023-07-21T22:00:00.000Z
                      energy_kw: 100
                      nomination_kw: 100
                      cancelled: false
                      programs:
                      - ERCOT-ERS
                      priority: 1
                      is_voluntary: false
                      performance_compensation_cap: up-to-nomination
                      

# --- truncated at 32 KB (68 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/leapfrog-power/refs/heads/main/openapi/leapfrog-power-dispatch-openapi.yml