Southwest Power Pool Seasonal API

Seasonal ratings are static ratings associated with extended durations, typically months. These are typically used in both planning and operations. Power system resources that are exempt from providing AARs generally operate at a seasonal rating. Even for resources using dynamic ratings, a seasonal rating is still necessary. This acts as a recourse when a dynamic rating is unavailable. For example, a dynamic rating might be unavailable during communication outages or for forecasts beyond the ten-day period required by FERC Order 881.

Operations 3

GET /seasonal-ratings/snapshot Get Seasonal Ratings #
GET /rating-proposals/seasonal Obtain seasonal rating proposal status #
PATCH /rating-proposals/seasonal Submit a Seasonal Ratings proposal #

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-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-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Transmission Ratings and Operating Limits Information Exchange (TROLIE) Seasonal 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
  description: 'Seasonal ratings are static ratings associated with extended durations,

    typically months. These are typically used in both planning and

    operations.


    Power system resources that are exempt from providing AARs generally

    operate at a seasonal rating. Even for resources using dynamic ratings, a

    seasonal rating is still necessary. This acts as a recourse when a dynamic

    rating is unavailable.  For example, a dynamic rating

    might be unavailable during communication outages or for forecasts beyond

    the ten-day period required by FERC Order 881.

    '
paths:
  /seasonal-ratings/snapshot:
    get:
      operationId: getSeasonalRatingsSnapshot
      description: Retrieve the nominal and seasonal ratings.
      summary: Get Seasonal Ratings
      tags:
      - Seasonal
      parameters:
      - $ref: '#/components/parameters/query-filter'
      - $ref: '#/components/parameters/resource-id-filter'
      responses:
        '200':
          description: OK
          content:
            application/vnd.trolie.seasonal-rating-snapshot.v1+json:
              schema:
                $ref: '#/components/schemas/seasonal-ratings-snapshot'
              example:
                snapshot-header:
                  source:
                    provider: X-AMPL
                    last-updated: '2023-07-12T16:00:00-07:00'
                    origin-id: //trolie.example.com/snapshots/2024-08-05T11%3a00%3a00-07%3a00
                  default-emergency-durations:
                  - name: LTE
                    duration-minutes: 240
                  - name: STE
                    duration-minutes: 30
                  - name: DAL
                    duration-minutes: 15
                  power-system-resources:
                  - resource-id: 8badf00d
                    alternate-identifiers:
                    - name: segmentX
                      authority: TO-NERC-ID
                    - name: LINE1 SEG-X
                      authority: RC-NERC-ID
                      mrid: 8badf00d
                ratings:
                - resource-id: segmentX
                  periods:
                  - period-start: '2024-04-01T01:00:00Z'
                    period-end: '2024-07-01T01:00:00Z'
                    season-name: spring
                    continuous-operating-limit:
                      mva: 160
                    emergency-operating-limits:
                    - duration-name: LTE
                      limit:
                        mva: 165
                    - duration-name: STE
                      limit:
                        mva: 170
                    - duration-name: DAL
                      limit:
                        mva: 180
            application/vnd.trolie.seasonal-rating-snapshot-detailed.v1+json:
              schema:
                $ref: '#/components/schemas/seasonal-ratings-snapshot-detailed'
              example:
                snapshot-header:
                  source:
                    provider: X-AMPL
                    last-updated: '2023-07-12T16:00:00-07:00'
                    origin-id: //trolie.example.com/snapshots/2024-08-05T11%3a00%3a00-07%3a00
                  default-emergency-durations:
                  - name: LTE
                    duration-minutes: 240
                  - name: STE
                    duration-minutes: 30
                  - name: DAL
                    duration-minutes: 15
                  power-system-resources:
                  - resource-id: 8badf00d
                    alternate-identifiers:
                    - name: segmentX
                      authority: TO-NERC-ID
                    - name: LINE1 SEG-X
                      authority: RC-NERC-ID
                      mrid: 8badf00d
                ratings:
                - resource-id: LINE1
                  periods:
                  - period-start: '2024-04-01T01:00:00Z'
                    period-end: '2024-07-01T01:00:00Z'
                    season-name: spring
                    continuous-operating-limit:
                      mva: 160
                    emergency-operating-limits:
                    - duration-name: LTE
                      limit:
                        mva: 165
                    - duration-name: STE
                      limit:
                        mva: 170
                    - duration-name: DAL
                      limit:
                        mva: 180
                    proposals-considered:
                    - resource-id: 8badf00d
                      period-start: '2024-04-01T01:00:00Z'
                      period-end: '2024-07-01T01:00:00Z'
                      source:
                        provider: X-AMPL
                        last-updated: '2023-07-12T16:00:00-07:00'
                        origin-id: //trolie.example.com/snapshots/2024-08-05T11%3a00%3a00-07%3a00
                      season-name: spring
                      continuous-operating-limit:
                        mva: 160
                      emergency-operating-limits:
                      - duration-name: LTE
                        limit:
                          mva: 165
                      - duration-name: STE
                        limit:
                          mva: 170
                      - duration-name: DAL
                        limit:
                          mva: 180
            application/vnd.trolie.seasonal-rating-snapshot-detailed.v1+json; include-psr-header=false:
              schema:
                $ref: '#/components/schemas/seasonal-ratings-snapshot-detailed-elide-psr'
              example:
                snapshot-header:
                  source:
                    provider: X-AMPL
                    last-updated: '2023-07-12T16:00:00-07:00'
                    origin-id: //trolie.example.com/snapshots/2024-08-05T11%3a00%3a00-07%3a00
                  default-emergency-durations:
                  - name: LTE
                    duration-minutes: 240
                  - name: STE
                    duration-minutes: 30
                  - name: DAL
                    duration-minutes: 15
                ratings:
                - resource-id: LINE1
                  periods:
                  - period-start: '2024-04-01T01:00:00Z'
                    period-end: '2024-07-01T01:00:00Z'
                    season-name: spring
                    continuous-operating-limit:
                      mva: 160
                    emergency-operating-limits:
                    - duration-name: LTE
                      limit:
                        mva: 165
                    - duration-name: STE
                      limit:
                        mva: 170
                    - duration-name: DAL
                      limit:
                        mva: 180
                    proposals-considered:
                    - resource-id: 8badf00d
                      period-start: '2024-04-01T01:00:00Z'
                      period-end: '2024-07-01T01:00:00Z'
                      source:
                        provider: X-AMPL
                        last-updated: '2023-07-12T16:00:00-07:00'
                        origin-id: //trolie.example.com/snapshots/2024-08-05T11%3a00%3a00-07%3a00
                      season-name: spring
                      continuous-operating-limit:
                        mva: 160
                      emergency-operating-limits:
                      - duration-name: LTE
                        limit:
                          mva: 165
                      - duration-name: STE
                        limit:
                          mva: 170
                      - duration-name: DAL
                        limit:
                          mva: 180
          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'
        '429':
          $ref: '#/components/responses/429-empty'
        '500':
          $ref: '#/components/responses/500-empty'
        default:
          $ref: '#/components/responses/500-empty'
      security:
      - oauth2-primary-flow:
        - read:operating-snapshot
  /rating-proposals/seasonal:
    get:
      operationId: getSeasonalRatingProposalStatus
      summary: Obtain seasonal rating proposal status
      description: '

        Used to obtain the status of the Seasonal Ratings proposal. The response is

        implicitly restricted to the requesting Ratings Provider''s obligation.

        Accordingly, the caller can use this endpoint to check the state of their

        proposal submission.


        Note that the same status object is returned for each

        `patchSeasonalRatingsProposal`, so this endpoint may seem redundant.

        However, an anticipated use case for this `GET` endpoint is to support

        supervisor processes that are setup by the client to independently ensure

        the provider''s process for rating submission if functioning properly. For

        example, the Rating Provider might have one program responsible for

        producing and submitting Seasonal Ratings via

        `patchSeasonalRatingsProposal`, while having a separate monitoring job that

        checks this endpoint regularly.


        Clients SHOULD perform Conditional `GET` using the `If-None-Match` header

        and the `ETag` of a previous `GET` response to poll this endpoint. Rate

        limiting is done on a per Ratings Provider basis, so requests from

        independent clients used by the same provider count against the same quota.

        '
      tags:
      - Seasonal
      responses:
        '200':
          description: OK
          content:
            application/vnd.trolie.seasonal-ratings-proposal-status.v1+json:
              schema:
                $ref: '#/components/schemas/seasonal-ratings-proposal-status'
              examples:
                complete:
                  summary: Status reflects no errors or outstanding obligations
                  value:
                    source:
                      provider: UTILITY-A
                      last-updated: '2023-07-12T15:05:43.044267100-07:00'
                      origin-id: 5aeacb25-9b65-4738-8a00-ac10afa63640
                    incomplete-obligation-count: 0
                    incomplete-obligations: []
                    invalid-proposal-count: 0
                    proposal-validation-errors: []
                incomplete:
                  summary: Status reflects outstanding obligations
                  value:
                    source:
                      provider: UTILITY-A
                      last-updated: '2023-07-12T15:05:43.044267100-07:00'
                      origin-id: 5aeacb25-9b65-4738-8a00-ac10afa63640
                    incomplete-obligation-count: 1
                    incomplete-obligations:
                    - resource-id: 8badf00d
                      obligation-period-begins: '2024-01-01T00:00:00-05:00'
                      obligation-period-ends: '2024-01-01T00:00:00-05:00'
                      periods:
                      - season-name: WINTER
                        begins: '2024-01-01T00:00:00-05:00'
                    invalid-proposal-count: 0
                    proposal-validation-errors: []
          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'
        '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-proposals
    patch:
      operationId: patchSeasonalRatingsProposal
      summary: Submit a Seasonal Ratings proposal
      description: '

        This operation allows the Ratings Provider to provide a partial or complete

        updates of their Seasonal Ratings that will be used by the Clearinghouse

        Provider to determine the Seasonal Ratings Schedule.

        '
      tags:
      - Seasonal
      responses:
        '202':
          description: 'The update was accepted for later processing. Updates to ratings may

            need to undergo additional validation and propagation to other systems.

            '
          content:
            application/vnd.trolie.seasonal-ratings-proposal-status.v1+json:
              schema:
                $ref: '#/components/schemas/seasonal-ratings-proposal-status'
              examples:
                complete:
                  summary: Status reflects no errors or outstanding obligations
                  value:
                    source:
                      provider: UTILITY-A
                      last-updated: '2023-07-12T15:05:43.044267100-07:00'
                      origin-id: 5aeacb25-9b65-4738-8a00-ac10afa63640
                    incomplete-obligation-count: 0
                    incomplete-obligations: []
                    invalid-proposal-count: 0
                    proposal-validation-errors: []
                incomplete:
                  summary: Status reflects outstanding obligations
                  value:
                    source:
                      provider: UTILITY-A
                      last-updated: '2023-07-12T15:05:43.044267100-07:00'
                      origin-id: 5aeacb25-9b65-4738-8a00-ac10afa63640
                    incomplete-obligation-count: 1
                    incomplete-obligations:
                    - resource-id: 8badf00d
                      obligation-period-begins: '2024-01-01T00:00:00-05:00'
                      obligation-period-ends: '2024-01-01T00:00:00-05:00'
                      periods:
                      - season-name: WINTER
                        begins: '2024-01-01T00:00:00-05:00'
                    invalid-proposal-count: 0
                    proposal-validation-errors: []
          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'
        '400':
          $ref: '#/components/responses/400-problem'
        '401':
          $ref: '#/components/responses/401-empty'
        '403':
          $ref: '#/components/responses/403-empty'
        '406':
          $ref: '#/components/responses/406-problem'
        '409':
          description: Conflict with Seasonal Ratings Schedule
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problem'
          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'
        '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-proposals
      requestBody:
        description: "\nThere are two supported media types for a Seasonal Ratings proposals.\n\n`application/vnd.trolie.seasonal-ratings-proposal.v1+json` allows the \nRatings Provider to combine different limit types, such as\n`apparent-power` (MVA) and `current` (MW), in a single proposal.\n\n`application/vnd.trolie.seasonal-ratings-proposal-slim.v1+json` for\nproposals that only require a single limit type, e.g., `apparent-power`.\nClients *MUST* specify that [limit-type](#tag/limit-type) as a media type\nparameter. For example,\n```http\nPATCH /rating-proposals/seasonal HTTP/1.1\nContent-Type: application/vnd.trolie.seasonal-ratings-proposal-slim.v1+json; limit-type=apparent-power\n```\nNote that this format is much more concise but requires significant care\nin serialization/deserialization.  For details, see the schema description\nfor the [seasonal ratings proposal of an individual\nresource](#schema/seasonal-proposals-slim) which is the description for\neach element of the `ratings` array.\n"
        required: true
        content:
          application/vnd.trolie.seasonal-ratings-proposal.v1+json:
            schema:
              $ref: '#/components/schemas/seasonal-ratings-proposal'
            example:
              proposal-header:
                source:
                  last-updated: '2025-10-31T15:05:43.044267100-07:00'
                  provider: UTILITY-A
                  origin-id: 5aeacb25-9b65-4738-8a00-ac10afa63640
                default-emergency-durations:
                - name: emergency
                  duration-minutes: 240
                power-system-resources:
                - resource-id: 8badf00d
                  alternate-identifiers:
                  - name: segmentX
                    authority: TO-NERC-ID
              ratings:
              - resource-id: 8badf00d
                periods:
                - season-name: WINTER
                  period-start: '2024-11-15T00:00:00-05:00'
                  period-end: '2025-03-01T00:00:00-05:00'
                  continuous-operating-limit:
                    mva: 160
                  emergency-operating-limits:
                  - duration-name: LTE
                    limit:
                      mva: 165
                - season-name: SPRING
                  period-start: '2025-03-01T00:00:00-05:00'
                  period-end: '2025-06-15T00:00:00-05:00'
                  continuous-operating-limit:
                    mva: 160
                  emergency-operating-limits:
                  - duration-name: LTE
                    limit:
                      mva: 165
                - season-name: SUMMER
                  period-start: '2025-06-15T00:00:00-05:00'
                  period-end: '2025-09-01T00:00:00-05:00'
                  continuous-operating-limit:
                    mva: 160
                  emergency-operating-limits:
                  - duration-name: LTE
                    limit:
                      mva: 165
                - season-name: FALL
                  period-start: '2025-09-01T00:00:00-05:00'
                  period-end: '2025-11-15T00:00:00-05:00'
                  continuous-operating-limit:
                    mva: 160
                  emergency-operating-limits:
                  - duration-name: LTE
                    limit:
                      mva: 165
          application/vnd.trolie.seasonal-ratings-proposal-slim.v1+json; limit-type=apparent-power:
            schema:
              $ref: '#/components/schemas/seasonal-ratings-proposal-slim'
            example:
              proposal-header:
                source:
                  last-updated: '2024-11-20T15:05:43.044267100-07:00'
                  provider: UTILITY-A
                  origin-id: 5aeacb25-9b65-4738-8a00-ac10afa63640
                default-emergency-durations:
                - name: emergency
                  duration-minutes: 240
                power-system-resources:
                - resource-id: 8badf00d
                  alternate-identifiers:
                  - name: segmentX
                    authority: TO-NERC-ID
                - resource-id: f34d3d
                  alternate-identifiers:
                  - name: segmentY
                    authority: TO-NERC-ID
                default-seasonal-schedule:
                  schedule:
                  - season-name: WINTER
                    begins: '2024-11-15T00:00:00-05:00'
                  - season-name: SPRING
                    begins: '2025-03-01T00:00:00-05:00'
                  - season-name: SUMMER
                    begins: '2025-06-15T00:00:00-05:00'
                  - season-name: FALL
                    begins: '2025-09-01T00:00:00-05:00'
                  ends: '2025-11-15T00:00:00-05:00'
              ratings:
              - - - 160
                  - 170
                - - 155
                  - 160
                - - 145
                  - 150
                - - 155
                  - 160
              - - - 161
                  - 171
                - - 156
                  - 161
                - - 146
                  - 151
                - - 156
                  - 161
components:
  schemas:
    missing-seasonal-obligation:
      type: object
      additionalProperties: false
      properties:
        resource-id:
          $ref: '#/components/schemas/resource-id'
        obligation-period-begins:
          $ref: '#/components/schemas/period-start'
        obligation-period-ends:
          $ref: '#/components/schemas/period-start'
        periods:
          description: "\nDefines the seasonal ratings schedule adopted in this proposal. Each season\nis given a `season-name` with the beginning of the season starting on\n`begins` and ending on the `begins` of the next season chronologically. \n\nIt is required that the seasons are listed chronologically.\n"
          type: array
          minItems: 1
          maxItems: 240
          items:
            $ref: '#/components/schemas/season'
    base-header:
      type: object
      properties:
        source:
          $ref: '#/components/schemas/data-provenance'
        default-emergency-durations:
          $ref: '#/components/schemas/emergency-durations'
        default-limiting-analysis:
          $ref: '#/components/schemas/limiting-analysis'
      additionalProperties: false
      required:
      - source
      - default-emergency-durations
    seasonal-rating-snapshot-item-detailed:
      type: object
      additionalProperties: false
      properties:
        resource-id:
          $ref: '#/components/schemas/resource-id'
        periods:
          description: "\nDefines the seasonal ratings schedule adopted in this proposal. Each season\nis given a `season-name` with the beginning of the season starting on\n`begins` and ending on the `begins` of the next season chronologically. \n\nIt is required that the seasons are listed chronologically.\n"
          type: array
          minItems: 1
          maxItems: 240
          items:
            $ref: '#/components/schemas/seasonal-snapshot-detailed'
    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
    input:
      type: object
      properties:
        name:
          type: string
          format: free-text
          maxLength: 50
        value:
          description: 'The value of the input used in the ratings determination.

            The type of this value is not specified, but implementors

            are encouraged to use CIM types where appropriate.

            '
        unit:
          type: string
          description: 'If the `value` is dimensionless, this property should not be

            provided. Since we are not specifying which inputs shall be

            provided, we cannot specify a definitive list of units, but

            implementors are encouraged to use UnitSymbol from CIM when

            appropriate: The CIM may not include appropriate units for

            all inputs, e.g., wind speed, degrees Fahrenheit, etc.

            '
          format: unit
          maxLength: 50
      required:
      - name
      - value
    named-power-system-resources:
      type: array
      minItems: 1
      maxItems: 50000
      description: Collection of power system resource names
      items:
        $ref: '#/components/schemas/names'
    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
    seasonal-proposal-slim:
      type: array
      title: Seasonal Period Proposal slim
      maxItems: 20
      minItems: 1
      items:
        type: number
        title: Continuous and Emergency Ratings values
        description: '

          Each number in this array corresponds to a value of the continuous and

          emergency ratings for a particular period.  The first values correspond to

          the continuous (normal) rating and the subsequent values correspond to the

          emergency ratings in order of decreasing duration.  The durations are

          defined in the `proposal-header.default-emergency-durations` field.


          The exact number of values in this array is further determined by the

          `limit-type` parameter of the media type.

          ```http

          Content-Type: application/vnd.trolie.seasonal-ratings-proposal-slim.v1+json; limit-type=apparent-power

          ```

          If the [limit-type](#tag/limit-type) is single valued, like

          `apparent-power`, then the array will have a single value for each rating.

          For example, if there was only one emergency duration defined, then the

          array would have two values, e.g. `[50, 55]`, corresponding to a 50MVA

          continuous rating and 55MVA emergency rating, respectively. A

          single-valued limit type is anticipated to be the most common case in

          practice.


          However, if the [limit-type](#tag/limit-type) is `active-power` and the

          Clearinghouse Provider has required both MW and power factor, e.g.,

          `{"mw":1, "pf":1}`, then the array will have two values for each rating.

          If we continue with the example of having only one emergency duration

          defined, then the array would have four values.  Thus, instead of

          `[normal_MVA, emergency_MVA]`, we would have `[normal_MW, normal_pf,

          emergency_MW, emergency_pf]`, e.g., `[300, 1.0, 350, 1.0]`.

          '
    seasonal-rating-snapshot-item:
      type: object
      additionalProperties: false
      properties:
        resource-id:
          $ref: '#/components/schemas/resource-id'
        periods:
          description: "\nDefines the seasonal ratings schedule adopted in this proposal. Each season\nis given a `season-name` with the beginning of the season starting on\n`begins` and ending on the `begins` of the next season chronologically. \n\nIt is required that the seasons are listed chronologically.\n"
          type: array
          minItems: 1
          maxItems: 240
          items:
            $ref: '#/components/schemas/seasonal-snapshot'
    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 ori

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