Southwest Power Pool Seasonal Overrides API

A Seasonal Override instructs the system to use a temporary static rating instead of any concurrent Seasonal Rating for a resource. A typical use case is a so-called 'de-rate' due to a temporary clearance issue for a transmission facility that is exempt from providing AARs. Exempt facilities typically operate at a seasonal rating. However, instead of updating the seasonal rating schedule, a Ratings Provider can send a Seasonal Override. During the override period, the Clearinghouse uses the Seasonal Override rating instead of any scheduled seasonal ratings. For resources required to provide AARs, a Ratings Provider would issue a Temporary AAR Exception to address temporary conditions requiring a static rating.

Operations 5

GET /seasonal-overrides Get Seasonal Overrides #
POST /seasonal-overrides Create a new seasonal override #
GET /seasonal-overrides/{id} Obtain a specific temporary seasonal rating by Id. #
DELETE /seasonal-overrides/{id} Delete a specific seasonal override by its Id. #
PUT /seasonal-overrides/{id} Updates an existing Seasonal override #

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/spp-seasonal-overrides-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

spp-seasonal-overrides-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Transmission Ratings and Operating Limits Information Exchange (TROLIE) Seasonal Overrides API
  x-logo:
    altText: TROLIE logo
    url: images/TROLIE-horizontal-color.svg
  description: "\nThis specification defines a set of operations for the exchange of power\nsystem ratings and limits between entities that own and operate the electric\npower system in North America. In particular, it is designed to support the\nexchange of Ambient Adjusted Ratings (AARs), pursuant to FERC Order 881.  It\nis published as a community standard to facilitate interoperability\nin these exchanges.\n\nThe specification conceives of the exchange as being between two primary\nentities:\n\n* A [Ratings Provider](https://trolie.energy/concepts#ratings-provider) is\n an entity that is responsible for providing ratings on some set of power\n system resources, e.g., Transmission Facilities, typically a Transmission\n Owner or Transmission Operator.  The ratings are provided to a\n Clearinghouse Provider whose is responsible for determining the operating\n limits of the power system resources.\n\n* The [Clearinghouse Provider](https://trolie.energy/concepts#clearinghouse-provider) is\n  typically a Transmission Provider (FERC) and a Reliability Coordinator (NERC).\n\nAdjacent Clearinghouse Providers exchange ratings in order to establish\noperating limit values for the power system resources that are shared\nbetween them.\n\nA Ratings Provider is assumed by this specification to have pre-coordinated \nwith a Clearinghouse Provider to identify the former's Ratings Obligation,\ni.e., the set of power system resources for which they will provide ratings.\nAdditionally, the Ratings Provider will have similarly pre-coordinated the\ndefinition of their Monitoring Sets, i.e., their power system limits of\ninterest. The nature and method of pre-coordination is out-of-scope for this\nspecification.\n\nNote that this API makes a strict distinction between the terms rating and\nlimit.  Colloquially, these terms are often used interchangeably.  However,\nin the context of this specification, they have distinct meanings. At a\nhigh-level, the specification defines an exchange where ratings go in and\nlimits come out. A Clearinghouse is a function for determining the operating\nlimits from the ratings it has on-hand, including those that are proposed by\nRatings Providers and any applicable time-bound static ratings.\n\nThis interaction diagram highlights the primary requests and responses that\nare defined in this spec. Note that not all of the operations will be\nsupported by every implementation.\n\n<img src=\"images/interactions.excalidraw.png\" alt=\"Primary Interactions with Ratings Provider\" />\n"
  version: 1.1.0
  contact:
    name: TROLIE Maintainers
    email: maintainers@trolie.energy
    url: https://trolie.energy
  license:
    name: Community Specification License 1.0
    url: https://spdx.org/licenses/Community-Spec-1.0.html
servers:
- url: https://trolie.example.com
security:
- oauth2-primary-flow: []
tags:
- name: Seasonal Overrides
  description: 'A Seasonal Override instructs the system to use a temporary static rating

    instead of any concurrent Seasonal Rating for a resource.


    A typical use case is a so-called ''de-rate'' due to a temporary clearance

    issue for a transmission facility that is exempt from providing AARs.


    Exempt facilities typically operate at a seasonal rating. However, instead

    of updating the seasonal rating schedule, a Ratings Provider can send a

    Seasonal Override.


    During the override period, the Clearinghouse uses the Seasonal

    Override rating instead of any scheduled seasonal ratings.


    For resources required to provide AARs, a Ratings Provider would issue a

    Temporary AAR Exception to address temporary conditions requiring a static

    rating.

    '
paths:
  /seasonal-overrides:
    get:
      operationId: getSeasonalOverrides
      description: "\nSearch for Seasonal Overrides.  Will return any Seasonal Overrides that overlap with the start/end period.  \n\nClients SHOULD perform Conditional `GET` using the `If-None-Match` header\nand the `ETag` of a previous `GET` response.\n"
      summary: Get Seasonal Overrides
      tags:
      - Seasonal Overrides
      parameters:
      - $ref: '#/components/parameters/period-start-query'
      - $ref: '#/components/parameters/period-end'
      - $ref: '#/components/parameters/query-filter'
      - $ref: '#/components/parameters/segment-filter'
      responses:
        '200':
          description: The requested seasonal ratings are returned.
          content:
            application/vnd.trolie.seasonal-override-set.v1+json:
              schema:
                $ref: '#/components/schemas/seasonal-override-set'
              example:
              - source:
                  provider: X-AMPL
                  last-updated: '2023-07-12T15:05:43.044267100-07:00'
                  origin-id: //trolie.example.com/seasonal-overrides/513a7cb3-5d3c-4b7e-849c-e4015846db53
                id: 513a7cb3-5d3c-4b7e-849c-e4015846db53
                resource:
                  resource-id: 8badf00d
                  alternate-identifiers:
                  - name: segmentX
                    authority: TO-NERC-ID
                  - name: LINE1 SEG-X
                    authority: RC-NERC-ID
                    mrid: 8badf00d
                start-time: '2025-07-12T16:00:00-07:00'
                end-time: '2025-08-01T00:00:00-07:00'
                continuous-operating-limit:
                  mva: 160
                emergency-operating-limits:
                - duration-name: emergency
                  limit:
                    mva: 165
                - duration-name: load-shed
                  limit:
                    mva: 170
                reason: Increased vegetation proximity
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
            ETag:
              $ref: '#/components/headers/ETag'
        '304':
          $ref: '#/components/responses/304'
        '400':
          $ref: '#/components/responses/400-problem'
        '401':
          $ref: '#/components/responses/401-empty'
        '403':
          $ref: '#/components/responses/403-empty'
        '404':
          $ref: '#/components/responses/404-empty'
        '406':
          $ref: '#/components/responses/406-problem'
        '429':
          $ref: '#/components/responses/429-empty'
        '500':
          $ref: '#/components/responses/500-empty'
        default:
          $ref: '#/components/responses/500-empty'
      security:
      - oauth2-primary-flow:
        - read:seasonal-overrides
    post:
      operationId: createSeasonalOverride
      description: 'Create a new seasonal override

        '
      summary: 'Create a new seasonal override

        '
      tags:
      - Seasonal Overrides
      requestBody:
        required: true
        content:
          application/vnd.trolie.seasonal-override.v1+json:
            schema:
              $ref: '#/components/schemas/seasonal-override-request'
            example:
              source:
                provider: X-AMPL
                last-updated: '2023-07-12T15:05:43.044267100-07:00'
                origin-id: 513a7cb3-5d3c-4b7e-849c-e4015846db53
              resource:
                resource-id: 8badf00d
                alternate-identifiers:
                - name: segmentX
                  authority: TO-NERC-ID
                - name: LINE1 SEG-X
                  authority: RC-NERC-ID
                  mrid: 8badf00d
              start-time: '2025-07-12T16:00:00-07:00'
              end-time: '2025-08-01T00:00:00-07:00'
              continuous-operating-limit:
                mva: 160
              emergency-operating-limits:
              - duration-name: emergency
                limit:
                  mva: 165
              - duration-name: load-shed
                limit:
                  mva: 170
              reason: Increased vegetation proximity
      responses:
        '201':
          description: The seasonal override was created
          content:
            application/vnd.trolie.seasonal-override.v1+json:
              schema:
                $ref: '#/components/schemas/seasonal-override'
              example:
                source:
                  provider: X-AMPL
                  last-updated: '2023-07-12T15:05:43.044267100-07:00'
                  origin-id: //trolie.example.com/seasonal-overrides/513a7cb3-5d3c-4b7e-849c-e4015846db53
                id: 513a7cb3-5d3c-4b7e-849c-e4015846db53
                resource:
                  resource-id: 8badf00d
                  alternate-identifiers:
                  - name: segmentX
                    authority: TO-NERC-ID
                  - name: LINE1 SEG-X
                    authority: RC-NERC-ID
                    mrid: 8badf00d
                start-time: '2025-07-12T16:00:00-07:00'
                end-time: '2025-08-01T00:00:00-07:00'
                continuous-operating-limit:
                  mva: 160
                emergency-operating-limits:
                - duration-name: emergency
                  limit:
                    mva: 165
                - duration-name: load-shed
                  limit:
                    mva: 170
                reason: Increased vegetation proximity
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
            ETag:
              $ref: '#/components/headers/ETag'
            Location:
              $ref: '#/components/headers/Location'
        '400':
          $ref: '#/components/responses/400-problem'
        '401':
          $ref: '#/components/responses/401-empty'
        '403':
          $ref: '#/components/responses/403-empty'
        '404':
          $ref: '#/components/responses/404-empty'
        '406':
          $ref: '#/components/responses/406-problem'
        '413':
          $ref: '#/components/responses/413-empty'
        '415':
          $ref: '#/components/responses/415-problem'
        '422':
          $ref: '#/components/responses/422-problem'
        '429':
          $ref: '#/components/responses/429-empty'
        '500':
          $ref: '#/components/responses/500-empty'
        default:
          $ref: '#/components/responses/500-empty'
      security:
      - oauth2-primary-flow:
        - write:seasonal-overrides
  /seasonal-overrides/{id}:
    get:
      operationId: getSeasonalOverride
      description: Obtain a specific temporary seasonal rating by Id.
      summary: Obtain a specific temporary seasonal rating by Id.
      tags:
      - Seasonal Overrides
      parameters:
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: OK
          content:
            application/vnd.trolie.seasonal-override.v1+json:
              schema:
                $ref: '#/components/schemas/seasonal-override'
              example:
                source:
                  provider: X-AMPL
                  last-updated: '2023-07-12T15:05:43.044267100-07:00'
                  origin-id: //trolie.example.com/seasonal-overrides/513a7cb3-5d3c-4b7e-849c-e4015846db53
                id: 513a7cb3-5d3c-4b7e-849c-e4015846db53
                resource:
                  resource-id: 8badf00d
                  alternate-identifiers:
                  - name: segmentX
                    authority: TO-NERC-ID
                  - name: LINE1 SEG-X
                    authority: RC-NERC-ID
                    mrid: 8badf00d
                start-time: '2025-07-12T16:00:00-07:00'
                end-time: '2025-08-01T00:00:00-07:00'
                continuous-operating-limit:
                  mva: 160
                emergency-operating-limits:
                - duration-name: emergency
                  limit:
                    mva: 165
                - duration-name: load-shed
                  limit:
                    mva: 170
                reason: Increased vegetation proximity
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
            ETag:
              $ref: '#/components/headers/ETag'
        '304':
          $ref: '#/components/responses/304'
        '400':
          $ref: '#/components/responses/400-problem'
        '401':
          $ref: '#/components/responses/401-empty'
        '403':
          $ref: '#/components/responses/403-empty'
        '404':
          $ref: '#/components/responses/404-empty'
        '406':
          $ref: '#/components/responses/406-problem'
        '410':
          $ref: '#/components/responses/410-problem'
        '429':
          $ref: '#/components/responses/429-empty'
        '500':
          $ref: '#/components/responses/500-empty'
        default:
          $ref: '#/components/responses/500-empty'
      security:
      - oauth2-primary-flow:
        - read:seasonal-overrides
    delete:
      operationId: deleteSeasonalOverride
      description: Delete a specific seasonal override by its Id.
      summary: Delete a specific seasonal override by its Id.
      tags:
      - Seasonal Overrides
      parameters:
      - $ref: '#/components/parameters/id'
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400-problem'
        '401':
          $ref: '#/components/responses/401-empty'
        '403':
          $ref: '#/components/responses/403-empty'
        '404':
          $ref: '#/components/responses/404-empty'
        '409':
          description: Seasonal overrides already employed in Operations cannot be deleted.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problem'
              example:
                type: //trolie.example.com/spec/client-errors/409/seasonal-override-in-use
                title: 'Conflict: Seasonal Override in Use'
                status: 409
                detail: Seasonal Override with id 'fb06e551-37a8-4a98-8c97-fded702530d6' may not be deleted, as it has been used in operations and is now part of the record.
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
        '429':
          $ref: '#/components/responses/429-empty'
        '500':
          $ref: '#/components/responses/500-empty'
        default:
          $ref: '#/components/responses/500-empty'
      security:
      - oauth2-primary-flow:
        - write:seasonal-overrides
    put:
      operationId: updateSeasonalOverride
      description: Updates an existing Seasonal override
      summary: Updates an existing Seasonal override
      tags:
      - Seasonal Overrides
      parameters:
      - $ref: '#/components/parameters/id'
      requestBody:
        required: true
        content:
          application/vnd.trolie.seasonal-override.v1+json:
            schema:
              $ref: '#/components/schemas/seasonal-override'
            example:
              source:
                provider: X-AMPL
                last-updated: '2023-07-12T15:05:43.044267100-07:00'
                origin-id: //trolie.example.com/seasonal-overrides/513a7cb3-5d3c-4b7e-849c-e4015846db53
              id: 513a7cb3-5d3c-4b7e-849c-e4015846db53
              resource:
                resource-id: 8badf00d
                alternate-identifiers:
                - name: segmentX
                  authority: TO-NERC-ID
                - name: LINE1 SEG-X
                  authority: RC-NERC-ID
                  mrid: 8badf00d
              start-time: '2025-07-12T16:00:00-07:00'
              end-time: '2025-08-01T00:00:00-07:00'
              continuous-operating-limit:
                mva: 160
              emergency-operating-limits:
              - duration-name: emergency
                limit:
                  mva: 165
              - duration-name: load-shed
                limit:
                  mva: 170
              reason: Increased vegetation proximity
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400-problem'
        '401':
          $ref: '#/components/responses/401-empty'
        '403':
          $ref: '#/components/responses/403-empty'
        '404':
          $ref: '#/components/responses/404-empty'
        '406':
          $ref: '#/components/responses/406-problem'
        '413':
          $ref: '#/components/responses/413-empty'
        '415':
          $ref: '#/components/responses/415-problem'
        '422':
          $ref: '#/components/responses/422-problem'
        '429':
          $ref: '#/components/responses/429-empty'
        '500':
          $ref: '#/components/responses/500-empty'
        default:
          $ref: '#/components/responses/500-empty'
      security:
      - oauth2-primary-flow:
        - write:seasonal-overrides
components:
  parameters:
    period-start-query:
      name: period-start
      description: "Defines the start of an applicable operating period.  \n"
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/period-start'
    period-end:
      name: period-end
      description: Specifies the end of a period for which a filter specifies.  Periods will only be returned that start prior to this time.
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/period-start'
    id:
      name: id
      description: 'Opaque identifier for the object. Format of this identifier may

        very depending on the implementation.

        '
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/local'
      examples:
        uuid:
          value: urn:uuid:123e4567-e89b-12d3-a456-426614174000
          description: Example of a UUIDv4 identifier for an object.
        eic:
          value: urn:eic:10X1001A1001A515
          description: Example of an ENTSO-E Energy Identification Code for an object.
        qualified-entity-code:
          value: org:naesb:weq:eir:MISO
          description: 'A fully-qualified representation of an entity code from the NAESB WEQ-022

            Electric Industry Registry, currently implemented by the OATI webRegistry.

            Note that this representation is not an industry standard identifier

            format but is presented as an example of a structured identifier for such

            entity codes. In this example, the identifier is for Midcontinent

            Independent System Operator (MISO).

            '
        entity-code:
          value: MISO
          description: 'A unqualified entity code from the NAESB WEQ-022 Electric Industry

            Registry, currently implemented by the OATI webRegistry.  In this

            example, the identifier is for Midcontinent Independent System Operator

            (MISO).

            '
        ncr-id:
          value: NCR00826
          description: An example of a NERC Compliance Registry code for MISO.
    query-filter:
      name: monitoring-set
      description: '

        Only return ratings or limits for facilities of the associated

        `monitoring-set`. The identifier for a `monitoring-set` is pre-coordinated,

        but using the NERC id of the associated Ratings Provider for the default

        monitoring set is recommended.

        '
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/local'
      examples:
        name:
          summary: A pre-coordinated name that nominates a `monitoring-set` for a specific entity or purpose.
          value: X-AMPL
        mrid:
          summary: A pre-coordinated id that nominates a `monitoring-set`.
          value: urn:uuid:12345678-1234-5678-1234-123456789012
    segment-filter:
      name: segment
      description: "Only return limits for this segment.  \n"
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/local'
      examples:
        mrid:
          summary: A CIM mrid
          value: urn:uuid:12345678-1234-5678-1234-123456789012
        circuit-id:
          summary: A typical AC line identifier
          value: '86753_1'
  responses:
    403-empty:
      description: Access denied
      headers:
        X-Rate-Limit-Limit:
          $ref: '#/components/headers/X-Rate-Limit-Limit'
        X-Rate-Limit-Remaining:
          $ref: '#/components/headers/X-Rate-Limit-Remaining'
        X-Rate-Limit-Reset:
          $ref: '#/components/headers/X-Rate-Limit-Reset'
      content:
        application/*:
          schema:
            $ref: '#/components/schemas/empty'
    400-problem:
      description: Malformed request
      headers:
        X-Rate-Limit-Limit:
          $ref: '#/components/headers/X-Rate-Limit-Limit'
        X-Rate-Limit-Remaining:
          $ref: '#/components/headers/X-Rate-Limit-Remaining'
        X-Rate-Limit-Reset:
          $ref: '#/components/headers/X-Rate-Limit-Reset'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problem'
    '304':
      description: Not Modified.
      headers:
        X-Rate-Limit-Limit:
          $ref: '#/components/headers/X-Rate-Limit-Limit'
        X-Rate-Limit-Remaining:
          $ref: '#/components/headers/X-Rate-Limit-Remaining'
        X-Rate-Limit-Reset:
          $ref: '#/components/headers/X-Rate-Limit-Reset'
    429-empty:
      description: Too many requests (rate limiting)
      headers:
        X-Rate-Limit-Limit:
          $ref: '#/components/headers/X-Rate-Limit-Limit'
        X-Rate-Limit-Remaining:
          $ref: '#/components/headers/X-Rate-Limit-Remaining'
        X-Rate-Limit-Reset:
          $ref: '#/components/headers/X-Rate-Limit-Reset'
        Retry-After:
          $ref: '#/components/headers/Retry-After'
      content:
        application/*:
          schema:
            $ref: '#/components/schemas/empty'
    415-problem:
      description: Unsupported media type
      headers:
        X-Rate-Limit-Limit:
          $ref: '#/components/headers/X-Rate-Limit-Limit'
        X-Rate-Limit-Remaining:
          $ref: '#/components/headers/X-Rate-Limit-Remaining'
        X-Rate-Limit-Reset:
          $ref: '#/components/headers/X-Rate-Limit-Reset'
        Accept:
          schema:
            type: string
            pattern: ^((application\/vnd\.trolie\.(?:[a-z-]+)\.v\d+\+json(;q=(0\.\d+|1\.0))?))(\,\s*(application\/vnd\.trolie\.(?:[a-z-]+)\.v\d+\+json(;q=(0\.\d+|1\.0))?))*$
            maxLength: 500
          examples:
            Forecast Proposal:
              summary: Used to update the area-wide forecast
              value: application/vnd.trolie.rating-forecast-proposal.v1+json
            Real-Time Proposal:
              summary: Used to update the area-wide nowcast
              value: application/vnd.trolie.rating-realtime-proposal.v1+json
        Accept-Encoding:
          description: 'The server must support and prefer Brotli yet must accept gzip for

            compatibility.

            '
          schema:
            type: string
            enum:
            - br,gzip
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problem'
    500-empty:
      description: An unexpected error occurred
      headers:
        X-Rate-Limit-Limit:
          $ref: '#/components/headers/X-Rate-Limit-Limit'
        X-Rate-Limit-Remaining:
          $ref: '#/components/headers/X-Rate-Limit-Remaining'
        X-Rate-Limit-Reset:
          $ref: '#/components/headers/X-Rate-Limit-Reset'
      content:
        application/*:
          schema:
            $ref: '#/components/schemas/empty'
    404-empty:
      description: Not Found
      headers:
        X-Rate-Limit-Limit:
          $ref: '#/components/headers/X-Rate-Limit-Limit'
        X-Rate-Limit-Remaining:
          $ref: '#/components/headers/X-Rate-Limit-Remaining'
        X-Rate-Limit-Reset:
          $ref: '#/components/headers/X-Rate-Limit-Reset'
      content:
        application/*:
          schema:
            $ref: '#/components/schemas/empty'
    410-problem:
      description: 'Gone. The requested resource is no longer available.  TROLIE

        implementations MAY return this status code when a resource is known to

        have been deleted or archived, if the authenticated client would

        otherwise have had authorized access to the resource.

        '
      headers:
        X-Rate-Limit-Limit:
          $ref: '#/components/headers/X-Rate-Limit-Limit'
        X-Rate-Limit-Remaining:
          $ref: '#/components/headers/X-Rate-Limit-Remaining'
        X-Rate-Limit-Reset:
          $ref: '#/components/headers/X-Rate-Limit-Reset'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problem'
    406-problem:
      description: Not Acceptable (Content negotiation failed)
      headers:
        X-Rate-Limit-Limit:
          $ref: '#/components/headers/X-Rate-Limit-Limit'
        X-Rate-Limit-Remaining:
          $ref: '#/components/headers/X-Rate-Limit-Remaining'
        X-Rate-Limit-Reset:
          $ref: '#/components/headers/X-Rate-Limit-Reset'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problem'
    '204':
      description: Operation successful. No Content.
      headers:
        X-Rate-Limit-Limit:
          $ref: '#/components/headers/X-Rate-Limit-Limit'
        X-Rate-Limit-Remaining:
          $ref: '#/components/headers/X-Rate-Limit-Remaining'
        X-Rate-Limit-Reset:
          $ref: '#/components/headers/X-Rate-Limit-Reset'
        ETag:
          $ref: '#/components/headers/ETag'
    401-empty:
      description: Unauthorized
      headers:
        X-Rate-Limit-Limit:
          $ref: '#/components/headers/X-Rate-Limit-Limit'
        X-Rate-Limit-Remaining:
          $ref: '#/components/headers/X-Rate-Limit-Remaining'
        X-Rate-Limit-Reset:
          $ref: '#/components/headers/X-Rate-Limit-Reset'
      content:
        application/*:
          schema:
            $ref: '#/components/schemas/empty'
    413-empty:
      description: Payload too large
      headers:
        X-Rate-Limit-Limit:
          $ref: '#/components/headers/X-Rate-Limit-Limit'
        X-Rate-Limit-Remaining:
          $ref: '#/components/headers/X-Rate-Limit-Remaining'
        X-Rate-Limit-Reset:
          $ref: '#/components/headers/X-Rate-Limit-Reset'
      content:
        application/*:
          schema:
            $ref: '#/components/schemas/empty'
    422-problem:
      description: Unprocessable content
      headers:
        X-Rate-Limit-Limit:
          $ref: '#/components/headers/X-Rate-Limit-Limit'
        X-Rate-Limit-Remaining:
          $ref: '#/components/headers/X-Rate-Limit-Remaining'
        X-Rate-Limit-Reset:
          $ref: '#/components/headers/X-Rate-Limit-Reset'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problem'
  schemas:
    undervoltage-threshold:
      type: object
      title: Undervoltage Threshold
      description: A lower limit to voltage for a transmission facility in kilovolts.
      additionalProperties: false
      properties:
        kV-min:
          description: The voltage in kilovolts.
          type: number
          format: int32
          minimum: 0
          maximum: 1100
      required:
      - kV-min
    active-power-with-power-factor:
      type: object
      title: Active Power and Power Factor
      additionalProperties: false
      properties:
        mw:
          type: number
          description: Active Power in megawatts
          format: float
          minimum: 1
          maximum: 10000
        kV:
          description: The voltage in kilovolts.
          type: number
          format: int32
          minimum: 0
          maximum: 1100
        pf:
          type: number
          description: Assumed power factor.
          format: float
          minimum: 0
          maximum: 1
      required:
      - mw
      - pf
    problem:
      description: See [RFC9457](https://www.rfc-editor.org/rfc/rfc9457#appendix-A).
      type: object
      properties:
        type:
          type: string
          format: uri-reference
          maxLength: 2048
          description: 'A URI reference that identifies the problem type.

            See [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457#name-type)

            '
          example: https://iana.org/assignments/http-problem-types#date
        title:
          type: string
          format: free-text
          maxLength: 500
          description: 'A short, human-readable summary of the problem type.

            See [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457#name-title)

            '
        status:
          type: number
          minimum: 100
          maximum: 599
          description: 'The HTTP status code generated by the origin server for this occurrence of the problem.

            '
        detail:
          type: string
          format: free-text
          maxLength: 500
          description: A human-readable explanation specific to this occurrence of the problem. See [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457#name-detail)
        instance:
          type: string
          format: uri-reference
          maxLength: 2048
          description: 'A URI reference that identifies the specific occurrence of the problem.

            It may or may not yield further information if dereferenced.

            See [RFC 9457](https://www.rfc-editor.org/rfc/rfc9457#name-status)

            '
          example: https://iana.org/assignments/http-problem-types#date
      required:
      - type
    seasonal-override-request:
      type: object
      description: 'Data structure for a seasonal override against a resource.

        Must also include a set of values.

        '
      properties:
        source:
          $ref: '#/components/schemas/data-provenance'
        resource:
          $ref: '#/components/schemas/names'
        start-time:
          $ref: '#/components/schemas/period-start'
        end-time:
          $ref: '#/components/schemas/period-start'
        continuous-operating-limit:
          $ref: '#/components/schemas/limit'
        emergency-operating-limits:
          $ref: '#/components/schemas/limit-value-set'
        reason:
          description: 'Free-form text indicating the reason for the exception.

            '
          type: string
          format: free-form
          maxLength: 4000
        day-night:
          $ref: '#/components/schemas/day-night'
      additionalProperties: false
      required:
      - resource
      - start-time
      - continuous-operating-limit
      - emergency-operating-limits
    data-provenance:
      type: object
      description: "\nProvides information about where the associated representation came from. *No\nfunctional aspects of the exchange are contingent upon this data.* However,\nthis information is meant to support debugging and application support use\ncases, so implementors are encouraged to provide\nmeaningful values.\n\n* `provider` identifies that entity, e.g., a Ratings Provider or Clearinghouse\n  Provider, that created the object. The `provider`'s NERC id is recommended.\n* `last-updated` indicates the wall-clock time at the `provider` when the\n  object was last modified. N.b. this is not when the message\n  describing the object was sent or received, i.e., implementors should not\n  simply insert the current timestamp here when preparing the object serialization.\n* `origin-id` is the identifier used by the `provider` to uniquely nominate\n  the object. It is recom

# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/spp/refs/heads/main/openapi/spp-seasonal-overrides-api-openapi.yml