Leap Webhook Subscription API

Create, list, update, delete and test webhook subscriptions for Leap connect-session and meter/enrollment event types.

OpenAPI Specification

leap-webhooks-openapi-original.yml Raw ↑
openapi: 3.0.1
info:
  contact:
    email: apiteam@leap.energy
  description: "Create webhooks, list existing webhooks, update webhooks, and delete\
    \ webhooks."
  title: Webhook Subscription API
  version: "1.1"
servers:
- url: https://api.staging.leap.energy
- url: https://api.leap.energy
security:
- http: []
tags:
- name: webhooks
paths:
  /v1.1/webhooks:
    get:
      description: List existing webhooks.
      operationId: listWebhooks
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebhookListResponse"
          description: List of webhooks
        "401":
          content:
            application/json:
              examples:
                error:
                  summary: Unauthorized error
                  value:
                    error: Unauthorized
                    message: Auth token is invalid
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unauthorized - Auth token is invalid
        "403":
          content:
            application/json:
              examples:
                error:
                  summary: Forbidden error
                  value:
                    error: Forbidden
                    message: You do not have permission to perform this action
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Forbidden - You do not have permission to perform this action
        "500":
          content:
            application/json:
              examples:
                error:
                  summary: Internal Server Error
                  value:
                    error: Internal Server Error
                    message: An unexpected error occurred
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Internal Server Error
      summary: List webhooks
      tags:
      - webhooks
    post:
      description: Create a new webhook to receive event notifications.
      operationId: createWebhook
      requestBody:
        $ref: "#/components/requestBodies/WebhookRequestBody"
      responses:
        "200":
          content:
            application/json:
              examples:
                success:
                  summary: A successful response
                  value:
                    webhook_id: 364be407-1f08-48fa-afd2-ee1dd228b76b
              schema:
                $ref: "#/components/schemas/WebhookResponse"
          description: Webhook created successfully
        "401":
          content:
            application/json:
              examples:
                error:
                  summary: Unauthorized error
                  value:
                    error: Unauthorized
                    message: Auth token is invalid
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unauthorized - Auth token is invalid
        "403":
          content:
            application/json:
              examples:
                error:
                  summary: Forbidden error
                  value:
                    error: Forbidden
                    message: You do not have permission to perform this action
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Forbidden - You do not have permission to perform this action
      summary: Create a webhook
      tags:
      - webhooks
  /v1.1/webhooks/{webhook_id}:
    delete:
      description: Delete an existing webhook identified by webhook_id.
      operationId: deleteWebhook
      parameters:
      - description: The ID of the webhook.
        explode: false
        in: path
        name: webhook_id
        required: true
        schema:
          format: uuid
          type: string
        style: simple
      responses:
        "200":
          content:
            application/json:
              examples:
                success:
                  summary: A successful response
                  value:
                    message: Operation completed successfully
              schema:
                $ref: "#/components/schemas/SuccessResponse"
          description: Operation completed successfully
        "401":
          content:
            application/json:
              examples:
                error:
                  summary: Unauthorized error
                  value:
                    error: Unauthorized
                    message: Auth token is invalid
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unauthorized - Auth token is invalid
        "403":
          content:
            application/json:
              examples:
                error:
                  summary: Forbidden error
                  value:
                    error: Forbidden
                    message: You do not have permission to perform this action
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Forbidden - You do not have permission to perform this action
        "404":
          content:
            application/json:
              examples:
                error:
                  summary: Not Found error
                  value:
                    error: Not Found
                    message: The specified resource was not found
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Not Found - The specified resource was not found
      summary: Delete a webhook
      tags:
      - webhooks
    put:
      description: "Update an existing webhook identified by webhook_id. NOTE: using\
        \ this endpoint will overwrite all existing settings for the specified webhook_id."
      operationId: updateWebhook
      parameters:
      - description: The ID of the webhook.
        explode: false
        in: path
        name: webhook_id
        required: true
        schema:
          format: uuid
          type: string
        style: simple
      requestBody:
        $ref: "#/components/requestBodies/WebhookRequestBody"
      responses:
        "200":
          content:
            application/json:
              examples:
                success:
                  summary: A successful response
                  value:
                    webhook_id: 364be407-1f08-48fa-afd2-ee1dd228b76b
              schema:
                $ref: "#/components/schemas/WebhookResponse"
          description: Webhook created successfully
        "401":
          content:
            application/json:
              examples:
                error:
                  summary: Unauthorized error
                  value:
                    error: Unauthorized
                    message: Auth token is invalid
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unauthorized - Auth token is invalid
        "403":
          content:
            application/json:
              examples:
                error:
                  summary: Forbidden error
                  value:
                    error: Forbidden
                    message: You do not have permission to perform this action
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Forbidden - You do not have permission to perform this action
        "404":
          content:
            application/json:
              examples:
                error:
                  summary: Not Found error
                  value:
                    error: Not Found
                    message: The specified resource was not found
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Not Found - The specified resource was not found
      summary: Update a webhook
      tags:
      - webhooks
  /v1.1/webhooks/{webhook_id}/test:
    post:
      description: Send a test event to the configured receiver_url for the specified
        webhook_id.
      operationId: testWebhook
      parameters:
      - description: The ID of the webhook.
        explode: false
        in: path
        name: webhook_id
        required: true
        schema:
          format: uuid
          type: string
        style: simple
      requestBody:
        $ref: "#/components/requestBodies/TestWebhookRequestBody"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TestWebhookResponse"
          description: Object that returns the response from your server
        "401":
          content:
            application/json:
              examples:
                error:
                  summary: Unauthorized error
                  value:
                    error: Unauthorized
                    message: Auth token is invalid
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Unauthorized - Auth token is invalid
        "403":
          content:
            application/json:
              examples:
                error:
                  summary: Forbidden error
                  value:
                    error: Forbidden
                    message: You do not have permission to perform this action
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Forbidden - You do not have permission to perform this action
        "404":
          content:
            application/json:
              examples:
                error:
                  summary: Not Found error
                  value:
                    error: Not Found
                    message: The specified resource was not found
              schema:
                $ref: "#/components/schemas/ErrorResponse"
          description: Not Found - The specified resource was not found
      summary: Test a webhook
      tags:
      - webhooks
components:
  parameters:
    WebhookId:
      description: The ID of the webhook.
      explode: false
      in: path
      name: webhook_id
      required: true
      schema:
        format: uuid
        type: string
      style: simple
  requestBodies:
    WebhookRequestBody:
      content:
        application/json:
          examples:
            webhook:
              summary: A sample webhook request
              value:
                headers:
                - name: x-api-key
                  value: your-test-key
                event_types:
                - meter.created
                receiver_url: https://company.com/leap-webhooks
          schema:
            $ref: "#/components/schemas/WebhookRequest"
      required: true
    TestWebhookRequestBody:
      content:
        application/json:
          examples:
            meter.created:
              summary: A sample meter created event
              value:
                webhook_event_type: meter.created
                meter_id: 364be407-1f08-48fa-afd2-ee1dd228b76b
                partner_reference: sample-ref-123
          schema:
            $ref: "#/components/schemas/WebhookEventTypeDiscriminator"
      required: true
  responses:
    WebhookList:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/WebhookListResponse"
      description: List of webhooks
    Unauthorized:
      content:
        application/json:
          examples:
            error:
              summary: Unauthorized error
              value:
                error: Unauthorized
                message: Auth token is invalid
          schema:
            $ref: "#/components/schemas/ErrorResponse"
      description: Unauthorized - Auth token is invalid
    Forbidden:
      content:
        application/json:
          examples:
            error:
              summary: Forbidden error
              value:
                error: Forbidden
                message: You do not have permission to perform this action
          schema:
            $ref: "#/components/schemas/ErrorResponse"
      description: Forbidden - You do not have permission to perform this action
    InternalServerError:
      content:
        application/json:
          examples:
            error:
              summary: Internal Server Error
              value:
                error: Internal Server Error
                message: An unexpected error occurred
          schema:
            $ref: "#/components/schemas/ErrorResponse"
      description: Internal Server Error
    WebhookCreated:
      content:
        application/json:
          examples:
            success:
              summary: A successful response
              value:
                webhook_id: 364be407-1f08-48fa-afd2-ee1dd228b76b
          schema:
            $ref: "#/components/schemas/WebhookResponse"
      description: Webhook created successfully
    NotFound:
      content:
        application/json:
          examples:
            error:
              summary: Not Found error
              value:
                error: Not Found
                message: The specified resource was not found
          schema:
            $ref: "#/components/schemas/ErrorResponse"
      description: Not Found - The specified resource was not found
    Success:
      content:
        application/json:
          examples:
            success:
              summary: A successful response
              value:
                message: Operation completed successfully
          schema:
            $ref: "#/components/schemas/SuccessResponse"
      description: Operation completed successfully
    TestWebhookResponse:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/TestWebhookResponse"
      description: Object that returns the response from your server
  schemas:
    WebhookRequest:
      example:
        headers:
        - name: x-api-key
          value: your-test-key
        event_types:
        - meter.created
        receiver_url: https://company.com/leap-webhooks
      properties:
        headers:
          description: List of custom headers used in requests back to the origin.
          example:
          - name: x-api-key
            value: your-test-key
          items:
            $ref: "#/components/schemas/Header"
          type: array
        event_types:
          description: A list of unique event keys to subscribe to.
          example:
          - meter.created
          items:
            $ref: "#/components/schemas/WebhookEventType"
          type: array
        receiver_url:
          description: The callback URL for this webhook.
          example: https://company.com/leap-webhooks
          type: string
      required:
      - event_types
      - receiver_url
      type: object
    Webhook:
      example:
        webhook_id: 364be407-1f08-48fa-afd2-ee1dd228b76b
        event_types:
        - meter.created
        - meter.created
        headers:
        - name: name
          value: value
        - name: name
          value: value
        receiver_url: https://company.com/leap-webhooks
      properties:
        webhook_id:
          description: The unique identifier for your webhook subscription.
          example: 364be407-1f08-48fa-afd2-ee1dd228b76b
          format: uuid
          type: string
        event_types:
          items:
            $ref: "#/components/schemas/WebhookEventType"
          type: array
        headers:
          items:
            $ref: "#/components/schemas/Header"
          type: array
        receiver_url:
          example: https://company.com/leap-webhooks
          type: string
      required:
      - event_types
      - headers
      - receiver_url
      - webhook_id
      type: object
    WebhookListResponse:
      example:
        webhooks:
        - webhook_id: 364be407-1f08-48fa-afd2-ee1dd228b76b
          event_types:
          - meter.created
          - meter.created
          headers:
          - name: name
            value: value
          - name: name
            value: value
          receiver_url: https://company.com/leap-webhooks
        - webhook_id: 364be407-1f08-48fa-afd2-ee1dd228b76b
          event_types:
          - meter.created
          - meter.created
          headers:
          - name: name
            value: value
          - name: name
            value: value
          receiver_url: https://company.com/leap-webhooks
      properties:
        webhooks:
          items:
            $ref: "#/components/schemas/Webhook"
          type: array
      required:
      - webhooks
      type: object
    WebhookEventId:
      description: The unique identifier for a webhook event with payload.
      example: 31f6b61a-712e-42e7-83af-ea441777a32f
      format: uuid
      type: string
    WebhookPayload:
      description: A webhook payload that you receive from Leap.
      properties:
        webhook_event_id:
          description: The unique identifier for a webhook event with payload.
          example: 31f6b61a-712e-42e7-83af-ea441777a32f
          format: uuid
          type: string
        payload:
          $ref: "#/components/schemas/WebhookEventTypeDiscriminator"
      required:
      - payload
      - webhook_event_id
      type: object
    ErrorResponse:
      example:
        error: error
        message: message
      properties:
        error:
          description: Error type.
          type: string
        message:
          description: Detailed error message.
          type: string
      type: object
    WebhookResponse:
      example:
        webhook_id: 364be407-1f08-48fa-afd2-ee1dd228b76b
      properties:
        webhook_id:
          description: The unique identifier for your webhook subscription.
          example: 364be407-1f08-48fa-afd2-ee1dd228b76b
          format: uuid
          type: string
      required:
      - webhook_id
      type: object
    SuccessResponse:
      example:
        message: Operation completed successfully
      properties:
        message:
          description: Success message.
          example: Operation completed successfully
          type: string
      required:
      - message
      type: object
    TestWebhookResponse:
      description: This object returns the response that Leap got from your server
      example:
        is_successful: true
        error: error
        status_code: 0
        response_time_ms: 6
      properties:
        is_successful:
          description: True if Leap was able to connect to your server and receive
            a 2xx response.
          type: boolean
        error:
          description: "If Leap wasn't able to get any response from your server,\
            \ e.g. due to connection issues, this field will be populated."
          type: string
        status_code:
          description: HTTP response status code that Leap received from your server.
            This field will only be populated if Leap was able to reach your server.
          type: integer
        response_time_ms:
          description: Your server's response time in milliseconds. This field will
            only be populated if Leap was able to reach your server.
          type: integer
      required:
      - is_successful
      type: object
    WebhookEventTypeDiscriminator:
      discriminator:
        mapping:
          meter.created: "#/components/schemas/MeterCreatedEventV1Wrapped"
          meter.enrollment.global-status.updated: "#/components/schemas/MeterEnrollmentGlobalStatusUpdatedEventV1Wrapped"
          meter.enrollment.participation-status.updated: "#/components/schemas/MeterEnrollmentParticipationStatusUpdatedEventV1Wrapped"
          meter.enrollment.required-actions.updated: "#/components/schemas/MeterEnrollmentPartnerRequiredActionsUpdatedV1Wrapped"
          meter.enrollment.group.updated: "#/components/schemas/MeterEnrollmentGroupUpdatedEventV1Wrapped"
          connect_session.updated: "#/components/schemas/ConnectSessionUpdatedEventV1Wrapped"
          connect_session.authorization_updated: "#/components/schemas/ConnectSessionAuthorizationUpdatedEventV1Wrapped"
        propertyName: webhook_event_type
      example:
        webhook_event_type: meter.created
      oneOf:
      - $ref: "#/components/schemas/MeterCreatedEventV1Wrapped"
      - $ref: "#/components/schemas/MeterEnrollmentGlobalStatusUpdatedEventV1Wrapped"
      - $ref: "#/components/schemas/MeterEnrollmentParticipationStatusUpdatedEventV1Wrapped"
      - $ref: "#/components/schemas/MeterEnrollmentPartnerRequiredActionsUpdatedV1Wrapped"
      - $ref: "#/components/schemas/MeterEnrollmentGroupUpdatedEventV1Wrapped"
      - $ref: "#/components/schemas/ConnectSessionUpdatedEventV1Wrapped"
      - $ref: "#/components/schemas/ConnectSessionAuthorizationUpdatedEventV1Wrapped"
      properties:
        webhook_event_type:
          $ref: "#/components/schemas/WebhookEventType"
      required:
      - webhook_event_type
      type: object
    WebhookEventType:
      enum:
      - meter.created
      - connect_session.updated
      - connect_session.authorization_updated
      - meter.enrollment.global-status.updated
      - meter.enrollment.participation-status.updated
      - meter.enrollment.required-actions.updated
      - meter.enrollment.group.updated
      type: string
    Header:
      example:
        name: name
        value: value
      properties:
        name:
          description: The name of the header.
          type: string
        value:
          description: The value of the header.
          type: string
      required:
      - name
      - value
      type: object
    WebhookId:
      description: The unique identifier for your webhook subscription.
      example: 364be407-1f08-48fa-afd2-ee1dd228b76b
      format: uuid
      type: string
    MeterCreatedEventV1Wrapped:
      allOf:
      - $ref: "#/components/schemas/BaseEvent"
      - $ref: "#/components/schemas/MeterCreatedEventV1"
    MeterCreatedEventV1:
      properties:
        meter_id:
          description: The unique identifier for the meter.
          example: 11111111-1111-1111-1111-111111111111
          format: uuid
          type: string
        partner_reference:
          description: The partner-supplied reference ID to help identify the customer
            or site that a Leap meter correlates to a partner?s internal systems.
          example: partner-reference-1
          maxLength: 256
          minLength: 3
          pattern: "^[^\\/\\\\?\\]\\[{}!#$%^&*()<>|]{3,256}$"
          type: string
        transmission_region:
          $ref: "#/components/schemas/transmission_region"
        meter_type:
          $ref: "#/components/schemas/MeterType"
      required:
      - meter_id
      - transmission_region
      type: object
    MeterEnrollmentGlobalStatusUpdatedEventV1Wrapped:
      allOf:
      - $ref: "#/components/schemas/BaseEvent"
      - $ref: "#/components/schemas/MeterEnrollmentGlobalStatusUpdatedV1"
    MeterEnrollmentGlobalStatusUpdatedV1:
      properties:
        meter_id:
          description: The unique identifier for the meter.
          example: 11111111-1111-1111-1111-111111111111
          format: uuid
          type: string
        partner_reference:
          description: The partner-supplied reference ID to help identify the customer
            or site that a Leap meter correlates to a partner?s internal systems.
          example: partner-reference-1
          maxLength: 256
          minLength: 3
          pattern: "^[^\\/\\\\?\\]\\[{}!#$%^&*()<>|]{3,256}$"
          type: string
        transmission_region:
          $ref: "#/components/schemas/transmission_region"
        meter_type:
          $ref: "#/components/schemas/MeterType"
        global_enrollment_status:
          $ref: "#/components/schemas/EnrollmentStatus"
      required:
      - global_enrollment_status
      - meter_id
      - transmission_region
      type: object
    MeterEnrollmentParticipationStatusUpdatedEventV1Wrapped:
      allOf:
      - $ref: "#/components/schemas/BaseEvent"
      - $ref: "#/components/schemas/MeterEnrollmentParticipationStatusUpdatedV1"
    MeterEnrollmentParticipationStatusUpdatedV1:
      properties:
        meter_id:
          description: The unique identifier for the meter.
          example: 11111111-1111-1111-1111-111111111111
          format: uuid
          type: string
        partner_reference:
          description: The partner-supplied reference ID to help identify the customer
            or site that a Leap meter correlates to a partner?s internal systems.
          example: partner-reference-1
          maxLength: 256
          minLength: 3
          pattern: "^[^\\/\\\\?\\]\\[{}!#$%^&*()<>|]{3,256}$"
          type: string
        transmission_region:
          $ref: "#/components/schemas/transmission_region"
        meter_type:
          $ref: "#/components/schemas/MeterType"
        participation_preference:
          $ref: "#/components/schemas/ParticipationPreference"
        start_time:
          format: date-time
          type: string
        end_time:
          format: date-time
          type: string
      required:
      - meter_id
      - participation_preference
      - start_time
      - transmission_region
      type: object
    MeterEnrollmentPartnerRequiredActionsUpdatedV1Wrapped:
      allOf:
      - $ref: "#/components/schemas/BaseEvent"
      - $ref: "#/components/schemas/MeterEnrollmentPartnerRequiredActionsUpdatedV1"
    MeterEnrollmentPartnerRequiredActionsUpdatedV1:
      properties:
        meter_id:
          description: The unique identifier for the meter.
          example: 11111111-1111-1111-1111-111111111111
          format: uuid
          type: string
        partner_reference:
          description: The partner-supplied reference ID to help identify the customer
            or site that a Leap meter correlates to a partner?s internal systems.
          example: partner-reference-1
          maxLength: 256
          minLength: 3
          pattern: "^[^\\/\\\\?\\]\\[{}!#$%^&*()<>|]{3,256}$"
          type: string
        transmission_region:
          $ref: "#/components/schemas/transmission_region"
        meter_type:
          $ref: "#/components/schemas/MeterType"
        required_actions:
          $ref: "#/components/schemas/PartnerRequiredActions"
        global_enrollment_status:
          $ref: "#/components/schemas/EnrollmentStatus"
      required:
      - global_enrollment_status
      - meter_id
      - required_actions
      - transmission_region
      type: object
    MeterEnrollmentGroupUpdatedEventV1Wrapped:
      allOf:
      - $ref: "#/components/schemas/BaseEvent"
      - $ref: "#/components/schemas/MeterEnrollmentGroupUpdatedV1"
    MeterEnrollmentGroupUpdatedV1:
      properties:
        market_group_id:
          description: Identifier for the market group
          format: uuid
          type: string
        market_group_name:
          description: Name for the market group
          example: GRP1_NAME
          type: string
        start_date_time:
          description: The date when this market group will become active
          example: 2024-05-01T04:00:00Z
          format: date-time
          type: string
        end_date_time:
          description: The date when this market group will become inactive
          example: 2024-06-01T04:00:00Z
          format: date-time
          type: string
        meter_ids:
          items:
            $ref: "#/components/schemas/meter_id"
          type: array
      required:
      - end_date_time
      - market_group_id
      - market_group_name
      - meter_ids
      - start_date_time
      type: object
    ConnectSessionUpdatedEventV1Wrapped:
      allOf:
      - $ref: "#/components/schemas/BaseEvent"
      - $ref: "#/components/schemas/ConnectSessionUpdatedEventV1"
    ConnectSessionUpdatedEventV1:
      properties:
        partner_reference:
          description: The partner-supplied reference ID to help identify the customer
            or site that a Leap meter correlates to a partner?s internal systems.
          example: partner-reference-1
          maxLength: 256
          minLength: 3
          pattern: "^[^\\/\\\\?\\]\\[{}!#$%^&*()<>|]{3,256}$"
          type: string
        status:
          description: The status of the connect session.
          enum:
          - CREATED
          - UPDATED
          - CLOSED
          - COMPLETED
          type: string
      required:
      - partner_reference
      - status
      type: object
    ConnectSessionAuthorizationUpdatedEventV1Wrapped:
      allOf:
      - $ref: "#/components/schemas/BaseEvent"
      - $ref: "#/components/schemas/ConnectSessionAuthorizationUpdatedEventV1"
    ConnectSessionAuthorizationUpdatedEventV1:
      properties:
        partner_reference:
          description: The partner-supplied reference ID to help identify the customer
            or site that a Leap meter correlates to a partner?s internal systems.
          example: partner-reference-1
          maxLength: 256
          minLength: 3
          pattern: "^[^\\/\\\\?\\]\\[{}!#$%^&*()<>|]{3,256}$"
          type: string
        utility_name:
          $ref: "#/components/schemas/utility"
        status:
          description: The status of the authorization.
          enum:
          - INITIATED
          - COMPLETED
          - FAILED
          type: string
      required:
      - partner_reference
      - status
      - utility_name
      type: object
    BaseEvent:
      properties:
        webhook_event_type:
          $ref: "#/components/schemas/WebhookEventType"
      required:
      - webhook_event_type
      type: object
    meter_id:
      description: The unique identifier for the meter.
      example: 11111111-1111-1111-1111-111111111111
      format: uuid
      type: string
    PartnerReference:
      description: The partner-supplied reference ID to help identify the customer
        or site that a Leap meter correlates to a partner?s internal systems.
      example: partner-reference-1
      maxLength: 256
      minLength: 3
      pattern: "^[^\\/\\\\?\\]\\[{}!#$%^&*()<>|]{3,256}$"
      type: string
    transmission_region:
      description: Defines the transmission region of the meter
      enum:
      - CAISO
      - ERCOT
      - NYISO
      - ISONE
      - PJM
      - SERC
      - WECC_SW
      - WECC_PC
      example: CAISO
      type: string
    MeterType:
      description: The type of asset.
      enum:
      - UTILITY_METER
      - SUBMETER
      - DEVICE
      type: string
    EnrollmentStatus:
      description: The enrollment status of the meter.
      enum:
      - ACTIVE
      - ELIGIBLE
      - INELIGIBLE
      - NOT_PARTICIPATING
      - PENDING
      type: string
    ParticipationPreference:
      enum:
      - PARTICIPATE
      - IDLE
      - DISENROLL
      type: string
    PartnerRequiredActions:
      properties:
        partner:
          description: Required actions for the partner
          example:
          - program_identifier: CEC-DSGS
            delivery_period: CEC-DSGS_2025_AUG_OCT
            enrollment_deadline_date_time: 2024-07-29T00:00:00.000Z
            action_type: IS_AUTHORIZED
            action_description: "There are missing fields: fieldname"
            action_code: AUTH_0001
          items:
            $ref: "#/components/schemas/RequiredAction"
          type: array
      type: object
    RequiredAction:
      allOf:
      - $ref: "#/components/schemas/PublicProgram"
      - $ref: "#/components/schemas/DeliveryPeriod"
      - properties:
          enrollment_deadline_date_time:
            description: The deadline date and time for the required action in UTC.
            example: 2024-07-29T00:00:00Z
            format: date-time
            type: string
          action_type:
            $ref: "#/components/schemas/action_type"
          action_description:
            description: Description of the required action.
            example: "There are missing fields: fieldname"
            type: string
          action_code:
            description: The action code.
            example: SERV_0002
            type: string
        required:
        - action_code
        - action_description
        - action_type
        - enrollment_deadline_date_time
        type: object
        example: null
      type: object
      example: null
    utility:
      description: The name of the Investor Owned Utility or Publicly Owned Utility
        whose territory the customer is in.
      enum:
      - PGE
      - S

# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/leap/refs/heads/main/openapi/leap-webhooks-openapi-original.yml