MISO IMM API

The IMM API from MISO — 1 operation(s) for imm.

OpenAPI Specification

miso-imm-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: MISO Public Specification to support Market System Enhancement (MSE) new Market User Interface (MUI 2.0).
  title: MUI - Public Specification IMM API
  contact:
    name: MUI 2.0 Questions
    url: https://www.misoenergy.org/markets-and-operations/MSE/market-user-interface/
    email: MSEQuestions@misoenergy.org
  license:
    name: For use by MISO member companies and thier vendors
  version: 3.3.0
servers:
- url: https://cce.midwestiso.org/dart2/
- url: https://markets.midwestiso.org/dart2/
tags:
- name: IMM
paths:
  /markets/{market}/{day}/imm/resource-assignment/participants/{participantName}:
    get:
      tags:
      - IMM
      description: Returns the collection of Independant Market Monitor (IMM) resource assignments by pnode location for the day for a particular participant's resources. Message format differs by offerType property which can be one of the following values; - genImmOffer - dirImmOffer - drr1ImmOffer - drr2ImmOffer - earImmOffer - serImmOffer - esrImmOffer
      operationId: getParticipantImmOffer
      parameters:
      - $ref: '#/components/parameters/MarketTypeIncBoth'
      - $ref: '#/components/parameters/MarketOperatingDay'
      - $ref: '#/components/parameters/Participant'
      - $ref: '#/components/parameters/PnodeRequired'
      - name: scheduleId
        description: List of integers used to specify one or more scheduleId to be queried.
        in: query
        required: false
        schema:
          type: integer
      - name: scheduleType
        description: Specifies the assignment type to be queried or all if no query parameter is provided. Valid values are CostSchedule, ReferencePrice, or RSG.
        in: query
        required: false
        schema:
          type: string
          enum:
          - CostSchedule
          - ReferencePrice
          - RSG
      responses:
        '200':
          description: Successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MultiVariantImmResourceAssignment'
          headers:
            http-x-request-id:
              $ref: '#/components/headers/http-x-request-id'
        '400':
          $ref: '#/components/responses/BadRequestApiResponse'
        '403':
          $ref: '#/components/responses/UnauthorizedApiResponse'
        '404':
          $ref: '#/components/responses/NotFoundApiResponse'
        '500':
          $ref: '#/components/responses/InternalErrorApiResponse'
components:
  schemas:
    MarketPrice:
      description: General type for all market prices.
      format: money
      type: number
      multipleOf: 0.01
      minimum: -9999.99
      maximum: 9999.99
      example: 34.91
    MarketOperatingDay:
      description: Effective Market operating day of data. RFC 3339. 'YYYY-MM-DD'.
      type: string
      format: date
      example: '2019-03-14'
    PNodeName:
      description: Commercial Pricing Node (PNode) name.
      type: string
      minLength: 1
      maxLength: 30
      example: PNODE1
    DRR1ImmResourceAssignmentItem:
      type: object
      properties:
        offerType:
          type: string
          enum:
          - drr1ImmOffer
          example: drr1ImmOffer
        market:
          $ref: '#/components/schemas/MarketType'
        assignmentType:
          $ref: '#/components/schemas/IMMScheduleType'
        costScheduleId:
          type: integer
        shutdownCost:
          $ref: '#/components/schemas/OpCostNullable'
        drr1CommitStatusHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              status:
                $ref: '#/components/schemas/DRR1CommitStatusNullable'
            required:
            - hour
            additionalProperties: false
        drr1RuntimesDaily:
          type:
          - object
          - 'null'
          properties:
            minInterruptDuration:
              $ref: '#/components/schemas/DurationNullable'
            maxInterruptDuration:
              $ref: '#/components/schemas/DurationNullable'
            minNonInterruptInterval:
              $ref: '#/components/schemas/DurationNullable'
          additionalProperties: false
        drr1RuntimesHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              drr1RuntimesHourlyDetail:
                type:
                - object
                - 'null'
                properties:
                  shutdownTime:
                    $ref: '#/components/schemas/DownTimeNullable'
                  shutdownNotificationTime:
                    $ref: '#/components/schemas/NotificationTimeNullable'
                additionalProperties: false
            required:
            - hour
            additionalProperties: false
        drr1EnergyOfferHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              drr1EnergyOfferHourlyDetail:
                type:
                - object
                - 'null'
                properties:
                  curtailmentOfferPrice:
                    $ref: '#/components/schemas/MarketPriceNullable'
                  energyOfferPrice:
                    $ref: '#/components/schemas/MarketPriceNullable'
                additionalProperties: false
            required:
            - hour
            additionalProperties: false
        drr1SpinningOfferHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              spinningOfferHourlyDetail:
                type:
                - object
                - 'null'
                properties:
                  offerPriceCurve:
                    type:
                    - object
                    - 'null'
                    description: The scheduled price curve for a given hour ending.
                    properties:
                      slope:
                        type: boolean
                        description: If slope is true then curve is interpreted as a piece-wise linear curve otherwise it is treated as a block curve. A curve with no segments is given the default slope value of false.
                      priceCurveSegments:
                        type: array
                        items:
                          type: object
                          properties:
                            mw:
                              $ref: '#/components/schemas/RealEnergy'
                            price:
                              $ref: '#/components/schemas/MarketPrice'
                          required:
                          - mw
                          - price
                          additionalProperties: false
                        maxItems: 3
                    required:
                    - slope
                    - priceCurveSegments
                    additionalProperties: false
                  offerPrice:
                    $ref: '#/components/schemas/MarketPrice'
                additionalProperties: false
            required:
            - hour
            additionalProperties: false
        drr1SuppOfferHourly:
          type: array
          items:
            type:
            - object
            - 'null'
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              suppOfferHourlyDetail:
                type:
                - object
                - 'null'
                properties:
                  offerPriceCurve:
                    type:
                    - object
                    - 'null'
                    description: The scheduled price curve for a given hour ending.
                    properties:
                      slope:
                        type: boolean
                        description: If slope is true then curve is interpreted as a piece-wise linear curve otherwise it is treated as a block curve. A curve with no segments is given the default slope value of false.
                      priceCurveSegments:
                        type: array
                        items:
                          type: object
                          properties:
                            mw:
                              $ref: '#/components/schemas/RealEnergy'
                            price:
                              $ref: '#/components/schemas/MarketPrice'
                          required:
                          - mw
                          - price
                          additionalProperties: false
                        maxItems: 3
                    required:
                    - slope
                    - priceCurveSegments
                    additionalProperties: false
                additionalProperties: false
            required:
            - hour
            additionalProperties: false
        drr1ShortTermReserveOfferHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              shortTermReserveOfferHourlyDetail:
                type:
                - object
                - 'null'
                properties:
                  offerPriceCurve:
                    type:
                    - object
                    - 'null'
                    description: The scheduled price curve for a given hour ending.
                    properties:
                      slope:
                        type: boolean
                        description: If slope is true then curve is interpreted as a piece-wise linear curve otherwise it is treated as a block curve. A curve with no segments is given the default slope value of false.
                      priceCurveSegments:
                        type: array
                        items:
                          type: object
                          properties:
                            mw:
                              $ref: '#/components/schemas/RealEnergy'
                            price:
                              $ref: '#/components/schemas/MarketPrice'
                          required:
                          - mw
                          - price
                          additionalProperties: false
                        maxItems: 3
                    required:
                    - slope
                    - priceCurveSegments
                    additionalProperties: false
                additionalProperties: false
            required:
            - hour
            additionalProperties: false
      required:
      - offerType
      - market
      - assignmentType
      additionalProperties: false
    ParticipantName:
      description: Market participant name.
      type: string
      minLength: 1
      maxLength: 40
      example: MP
    MaxRunTimeNullable:
      description: Type used to represent run time for the resource.
      type:
      - string
      - 'null'
      pattern: ^[0-9]{1,5}[:][0-5][0-9]$
      example: '999:00'
    EARImmResourceAssignmentItem:
      type: object
      properties:
        offerType:
          type: string
          enum:
          - earImmOffer
          example: earImmOffer
        market:
          $ref: '#/components/schemas/MarketType'
        assignmentType:
          $ref: '#/components/schemas/IMMScheduleType'
        costScheduleId:
          type: integer
        startupCostsDaily:
          type:
          - object
          - 'null'
          properties:
            coldStartupCost:
              $ref: '#/components/schemas/OpCostNullable'
            intermediateStartupCost:
              $ref: '#/components/schemas/OpCostNullable'
            hotStartupCost:
              $ref: '#/components/schemas/OpCostNullable'
          additionalProperties: false
        noLoadCostsHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              cost:
                $ref: '#/components/schemas/OpCostNullable'
            required:
            - hour
            additionalProperties: false
        commitStatusHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              status:
                $ref: '#/components/schemas/EARCommitStatusNullable'
            required:
            - hour
            additionalProperties: false
        runtimesDaily:
          type:
          - object
          - 'null'
          properties:
            minimumRuntime:
              $ref: '#/components/schemas/RunTimeNullable'
            maximumRuntime:
              $ref: '#/components/schemas/MaxRunTimeNullable'
            minimumDowntime:
              $ref: '#/components/schemas/DownTimeNullable'
            hotToColdTime:
              $ref: '#/components/schemas/NotificationTimeNullable'
            hotToIntermediateTime:
              $ref: '#/components/schemas/NotificationTimeNullable'
            maximumDailyStarts:
              type:
              - integer
              - 'null'
            maximumDailyEnergy:
              $ref: '#/components/schemas/RealEnergyResultsSignedNullable'
            maximumWeeklyStarts:
              type:
              - integer
              - 'null'
            maximumWeeklyEnergy:
              $ref: '#/components/schemas/RealEnergyResultsSignedNullable'
          additionalProperties: false
        runtimesHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              runtimesHourlyDetail:
                type:
                - object
                - 'null'
                properties:
                  coldStartTime:
                    $ref: '#/components/schemas/StartupTimeNullable'
                  intermediateStartTime:
                    $ref: '#/components/schemas/StartupTimeNullable'
                  hotStartTime:
                    $ref: '#/components/schemas/StartupTimeNullable'
                  coldNotificationTime:
                    $ref: '#/components/schemas/NotificationTimeNullable'
                  intermediateNotificationTime:
                    $ref: '#/components/schemas/NotificationTimeNullable'
                  hotNotificationTime:
                    $ref: '#/components/schemas/NotificationTimeNullable'
                additionalProperties: false
            required:
            - hour
            additionalProperties: false
        unitLimitsHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              unitLimitsHourlyDetail:
                type:
                - object
                - 'null'
                properties:
                  emergencyLimits:
                    type:
                    - object
                    - 'null'
                    description: Either one or both the MW limit properties can be submitted to update the unit limit pair with a MW value or with a null. Submitting mixed null and MW values when both are submitted is not allowed.
                    properties:
                      minMW:
                        $ref: '#/components/schemas/RealEnergyNullable'
                      maxMW:
                        $ref: '#/components/schemas/RealEnergyNullable'
                    additionalProperties: false
                  economicLimits:
                    type:
                    - object
                    - 'null'
                    description: Either one or both the MW limit properties can be submitted to update the unit limit pair with a MW value or with a null. Submitting mixed null and MW values when both are submitted is not allowed.
                    properties:
                      minMW:
                        $ref: '#/components/schemas/RealEnergyNullable'
                      maxMW:
                        $ref: '#/components/schemas/RealEnergyNullable'
                    additionalProperties: false
                  regulationLimits:
                    type:
                    - object
                    - 'null'
                    description: Either one or both the MW limit properties can be submitted to update the unit limit pair with a MW value or with a null. Submitting mixed null and MW values when both are submitted is not allowed.
                    properties:
                      minMW:
                        $ref: '#/components/schemas/RealEnergyNullable'
                      maxMW:
                        $ref: '#/components/schemas/RealEnergyNullable'
                    additionalProperties: false
                additionalProperties: false
            required:
            - hour
            additionalProperties: false
        rampRatesHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              rampRatesHourlyDetail:
                type:
                - object
                - 'null'
                properties:
                  enableRampRateCurvesHourly:
                    type: boolean
                    example: true
                  rampRate:
                    $ref: '#/components/schemas/MWRampRateNullable'
                  rampRateBidirectional:
                    $ref: '#/components/schemas/MWRampRateNullable'
                  rampRateUp:
                    $ref: '#/components/schemas/MWRampRateNullable'
                  rampRateDown:
                    $ref: '#/components/schemas/MWRampRateNullable'
                additionalProperties: false
            required:
            - hour
            additionalProperties: false
        rampRateCurves:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              rampRateCurve:
                type:
                - array
                - 'null'
                items:
                  type: object
                  properties:
                    mw:
                      $ref: '#/components/schemas/MWRampRateNullable'
                    rampRateUp:
                      $ref: '#/components/schemas/MWRampRateNullable'
                    rampRateDown:
                      $ref: '#/components/schemas/MWRampRateNullable'
                    rampRateBidirectional:
                      $ref: '#/components/schemas/MWRampRateNullable'
                  required:
                  - mw
                  additionalProperties: false
                maxItems: 10
            required:
            - hour
            additionalProperties: false
        energyOfferHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              energyOfferHourlyDetail:
                type:
                - object
                - 'null'
                properties:
                  offerPriceCurve:
                    type:
                    - object
                    - 'null'
                    description: The scheduled price curve for a given hour ending.
                    properties:
                      slope:
                        type: boolean
                        description: If slope is true then curve is interpreted as a piece-wise linear curve otherwise it is treated as a block curve. A curve with no segments is given the default slope value of false.
                      priceCurveSegments:
                        type: array
                        items:
                          type: object
                          properties:
                            mw:
                              $ref: '#/components/schemas/RealEnergy'
                            price:
                              $ref: '#/components/schemas/MarketPrice'
                          required:
                          - mw
                          - price
                          additionalProperties: false
                        maxItems: 10
                    required:
                    - slope
                    - priceCurveSegments
                    additionalProperties: false
                additionalProperties: false
            required:
            - hour
            additionalProperties: false
        regulationOfferHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              regulationOfferHourlyDetail:
                type:
                - object
                - 'null'
                properties:
                  offerPrice:
                    $ref: '#/components/schemas/MarketPriceNullable'
                  totalRegCost:
                    $ref: '#/components/schemas/MarketPriceNullable'
                  mileageOfferPrice:
                    $ref: '#/components/schemas/MarketPriceNullable'
                additionalProperties: false
            required:
            - hour
            additionalProperties: false
        spinningOfferHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              spinningOfferHourlyDetail:
                type:
                - object
                - 'null'
                properties:
                  offerPrice:
                    $ref: '#/components/schemas/MarketPriceNullable'
                additionalProperties: false
            required:
            - hour
            additionalProperties: false
        onlineSuppOfferHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              suppOfferHourlyDetail:
                type:
                - object
                - 'null'
                properties:
                  offerPrice:
                    $ref: '#/components/schemas/MarketPriceNullable'
                additionalProperties: false
            required:
            - hour
            additionalProperties: false
      required:
      - offerType
      - market
      - assignmentType
      additionalProperties: false
    TransitionTimeNullable:
      description: Type used to represent time required for transitioning from Hot To Cold state/Hot to Intermediate state for the resource.
      type:
      - string
      - 'null'
      pattern: ^[0-9]{1,3}[:][0-5][0-9]$
      example: 008:00
    APIResponse:
      description: General container for API response.
      type: object
      properties:
        action:
          description: A general action code summary of the result. HTTP status codes will be applied that match. These indicate the type of operation that was done (or not). Note, some APIs use REST verbiage like created/updated/deleted while others use submit/query.
          enum:
          - CREATED
          - UPDATED
          - DELETED
          - CREATE_FAILED
          - UPDATE_FAILED
          - DELETE_FAILED
          - GET_FAILED
          - SUBMITTED
          - SUBMIT_FAILED
          - QUERY
          - QUERY_FAILED
        responses:
          description: List of responses in case multiple resources are modified, or general errors that are not resource specific.
          type: array
          minItems: 0
          items:
            description: A single response which may contain multiple messages, both error and warning, per response.
            type: object
            properties:
              messages:
                description: List of warnings and errors resulting from the command.
                type: array
                minItems: 0
                items:
                  description: An individual warning or error message.  Designed to be either localized or categorized as an event.
                  type: object
                  properties:
                    level:
                      description: An indication of severity of the message.
                      type: string
                      enum:
                      - ERROR
                      - WARNING
                      - INFO
                    msgId:
                      description: A categorized ID for this message, identifying it as a particular type of event. Useful for checking for specific errors, or localization.
                      type: string
                    params:
                      description: Ordered list of parameter values for the message.
                      type: array
                      items:
                        type: string
                    userMsg:
                      description: The message, fully rendered in the default locale on the service side.
                      type: string
        transactionId:
          description: Unique identifier for the transaction which can be queried at a later date. Identifier is a GUID represented without hyphens. Only returned for submissions and errors though all calls generate a transaction ID that is returned in the http-x-request-id response header.
          type: string
          format: guid
        transactionTime:
          description: The time at which the transaction was received by the system.
          type: string
          format: date-time
    MarketType:
      description: Energy Market types.
      type: string
      enum:
      - day-ahead
      - real-time
    RealEnergyResultsSignedNullable:
      description: Used to represent real energy values in market outcomes. Historically simliar to 'MWType'.
      type:
      - number
      - 'null'
      format: realenergy
      multipleOf: 0.1
      minimum: 0.0
      maximum: 9.99999999E7
      example: 120001.7
    GenImmResourceAssignmentItem:
      type: object
      properties:
        offerType:
          type: string
          enum:
          - genImmOffer
          example: genImmOffer
        market:
          $ref: '#/components/schemas/MarketType'
        assignmentType:
          $ref: '#/components/schemas/IMMScheduleType'
        costScheduleId:
          type: integer
        startupCostsDaily:
          type:
          - object
          - 'null'
          properties:
            coldStartupCost:
              $ref: '#/components/schemas/OpCostNullable'
            intermediateStartupCost:
              $ref: '#/components/schemas/OpCostNullable'
            hotStartupCost:
              $ref: '#/components/schemas/OpCostNullable'
          additionalProperties: false
        noLoadCostsHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              cost:
                $ref: '#/components/schemas/OpCostNullable'
            required:
            - hour
            additionalProperties: false
        commitStatusHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              status:
                $ref: '#/components/schemas/GenCommitStatusNullable'
            required:
            - hour
            additionalProperties: false
        runtimesDaily:
          type:
          - object
          - 'null'
          properties:
            minimumRuntime:
              $ref: '#/components/schemas/RunTimeNullable'
            maximumRuntime:
              $ref: '#/components/schemas/MaxRunTimeNullable'
            minimumDowntime:
              $ref: '#/components/schemas/DownTimeNullable'
            hotToColdTime:
              $ref: '#/components/schemas/TransitionTimeNullable'
            hotToIntermediateTime:
              $ref: '#/components/schemas/TransitionTimeNullable'
            maximumDailyStarts:
              type:
              - integer
              - 'null'
            maximumDailyEnergy:
              $ref: '#/components/schemas/RealEnergyResultsSignedNullable'
            maximumWeeklyStarts:
              type:
              - integer
              - 'null'
            maximumWeeklyEnergy:
              $ref: '#/components/schemas/RealEnergyResultsSignedNullable'
          additionalProperties: false
        runtimesHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              runtimesHourlyDetail:
                type:
                - object
                - 'null'
                properties:
                  coldStartTime:
                    $ref: '#/components/schemas/StartupTimeNullable'
                  intermediateStartTime:
                    $ref: '#/components/schemas/StartupTimeNullable'
                  hotStartTime:
                    $ref: '#/components/schemas/StartupTimeNullable'
                  coldNotificationTime:
                    $ref: '#/components/schemas/NotificationTimeNullable'
                  intermediateNotificationTime:
                    $ref: '#/components/schemas/NotificationTimeNullable'
                  hotNotificationTime:
                    $ref: '#/components/schemas/NotificationTimeNullable'
                additionalProperties: false
            required:
            - hour
            additionalProperties: false
        unitLimitsHourly:
          type: array
          items:
            type: object
            properties:
              hour:
                $ref: '#/components/schemas/HourLabel'
              unitLimitsHourlyDetail:
                type:
                - object
                - 'null'
                properties:
                  emergencyLimits:
                    type:
                    - object
                    - 'null'
                    description: Either one or both the MW limit properties can be submitted to update the unit limit pair with a MW value or with a null. Submitting mixed null and MW values when both are submitted is not allowed.
                    properties:
                      minMW:
                        $ref: '#/components/schemas/RealEnergyNullable'
                      maxMW:
                        $ref: '#/components/schemas/RealEnergyNullable'
                    additionalProperties: false
                  economicLimits:
                    type:
                    - object
                    - 'null'
                    description: Either one or both the MW limit properties can be submitted to update the unit limit pair with a MW value or with a null. Submitting mixed null and MW values when both are submitted is not allowed.
                    properties:
                      minMW:
                        $ref: '#/components/schemas/RealEnergyNullable'
                      maxMW:
                        $ref: '#/components/schemas/RealEnergyNullable'
                    additionalProperties: false
                  regulationLimits:
                    type:
                    - object
                    - 'null'
                    description: Either one or both the MW limit properties can be submitted to update the unit limit pair with a MW value or with a null. Submitting mixed null and MW values when both are submitted is not allowed.
                    properties:
                      minMW:
                        $ref: '#/components/schemas/RealEnergyNullable'
                      maxMW:
                        $ref: '#/components/schemas/RealEnergyNullable'
                    additionalProperties: false
                  offlineResourceLimit:
                    $ref: '#/components/schemas/RealEnergyNullable'
                  offlineShortTermReserveLimit:
                    $ref: '#/components/schemas/RealEnergyNullable'
                additionalProperties: false
            required:
            - hour
            additionalProperties: false
        rampRatesHourly:
     

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