MISO Market User Interface (MUI) 2.0 API

The closed counterpart to everything else in this profile — MISO's programmatic JSON web API for registered market participants to submit energy supply offers and demand bids, query submissions, and query day-ahead and real-time market results as they clear. MISO documents it publicly in the MUI 2.0 API User Guide, which states verbatim that "All market participants using the JSON programmatic interface must be registered with MISO" and gives the base URL as https://markets.midwestiso.org/dart2 for production and https://cce.midwestiso.org/dart2 for the customer-facing test environment. Access is gated by a client digital certificate issued through the MISO Market Portal: an anonymous TLS connection to markets.midwestiso.org on 2026-07-27 failed at the handshake with an SSL alert rather than returning any HTTP status, which is direct evidence of mutual-TLS client-certificate enforcement. No OpenAPI is published and none could be harvested; the guide PDF is the only contract.

OpenAPI Specification

miso-mui-20-api-openapi.yaml Raw ↑
openapi: 3.0.3
info:
  description: MISO Public Specification to support Market System Enhancement (MSE)
    new Market User Interface (MUI 2.0).
  title: MUI - Public Specification
  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/'}
paths:
  /markets/day-ahead/{day}/reports/lmp-exante:
    description: LMP Ex-Ante report for the Day-Ahead market on a specific day.
    parameters:
    - {$ref: '#/components/parameters/x-acting-participant'}
    get:
      tags: [Reports]
      description: Returns the LMP Ex-Ante report for the Day-Ahead market on a specific
        day. If neither pnode or portfolio query parameters are provided then all
        public pnodes from the report for all hours of the day are returned.
      operationId: getDayAheadLmpExAnte
      parameters:
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Pnode'}
      - {$ref: '#/components/parameters/Portfolio'}
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/DayAheadLmpExAnte'}
          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'}
  /markets/day-ahead/{day}/reports/lmp-expost:
    description: LMP Ex-Post report for the Day-Ahead market on a specific day.
    parameters:
    - {$ref: '#/components/parameters/x-acting-participant'}
    get:
      tags: [Reports]
      description: Returns the LMP Ex-Post report for the Day-Ahead market on a specific
        day. If neither pnode or portfolio query parameters are provided then all
        public pnodes from the report for all hours of the day are returned.
      operationId: getDayAheadLmpExPost
      parameters:
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Pnode'}
      - {$ref: '#/components/parameters/Portfolio'}
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/DayAheadLmpExPost'}
          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'}
  /markets/day-ahead/{day}/reports/lf-hourly:
    description: The hourly load forecast report for the total MISO area or an individual
      control area.
    parameters:
    - {$ref: '#/components/parameters/x-acting-participant'}
    get:
      tags: [Reports]
      description: Return the load forecast report for total the MISO area or an individual
        control area. If the controlAreaName query parameter filter is not provided
        the MISO total is returned. If the hour query parameter filter is not provided
        all hours of the day are returned.
      operationId: getLFHourly
      parameters:
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Hour'}
      - name: controlAreaName
        description: Optional parameter to specify the name of the control area load
          forecast to return, otherwise system-wide is returned.
        in: query
        required: false
        schema: {type: string}
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/LFHourly'}
          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'}
  /markets/day-ahead/{day}/demand/participants/{participantName}:
    description: Submit and return demand bids for use in the Day-Ahead market. A
      collection of either fixed or price sensitive demand bids for one or more pnode
      locations.
    parameters:
    - {$ref: '#/components/parameters/x-acting-participant'}
    get:
      tags: [Bidding]
      description: Returns the collection of Price Sensitive and Fixed Demand Bids
        by pnode location for the day. Pnode or portfolio query parameters may be
        provided, otherwise all valid demand bid locations for the participant will
        be returned for which bids exist.
      operationId: getDemandBid
      parameters:
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Participant'}
      - {$ref: '#/components/parameters/Pnode'}
      - {$ref: '#/components/parameters/Portfolio'}
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/DemandBids'}
          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'}
    post:
      tags: [Bidding]
      description: Post the collection of Fixed and Price Sensitve Demand Bids. Fixed
        and Price Sensitive Demand bids can be updated individually for one or more
        pnode locations. Data driven delete behaviour is supported via the incusion
        of null elements.
      operationId: postDemandBids
      parameters:
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Participant'}
      responses:
        '200': {$ref: '#/components/responses/OkApiResponse'}
        '400': {$ref: '#/components/responses/BadRequestApiResponse'}
        '403': {$ref: '#/components/responses/UnauthorizedApiResponse'}
        '404': {$ref: '#/components/responses/NotFoundApiResponse'}
        '500': {$ref: '#/components/responses/InternalErrorApiResponse'}
      requestBody:
        required: true
        content:
          application/json:
            schema: {$ref: '#/components/schemas/DemandBids'}
  /markets/day-ahead/{day}/virtual/participants/{participantName}:
    description: Submit and return virtual demand bids and virtual generations offers
      for use in the Day-Ahead market. A collection of either virtual generation offers
      or virtual demand bids per pnode location. Submission for one or more pnode
      locations is supported.
    parameters:
    - {$ref: '#/components/parameters/x-acting-participant'}
    get:
      tags: [Bidding]
      description: Returns the collection of virtual dids and offers by pnode location
        for the day. Pnode or portfolio query parameters may be provided, otherwise
        all valid virtual locations will be returned for which participant bids/offers
        exist.
      operationId: getVirtualBidsAndOffers
      parameters:
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Participant'}
      - {$ref: '#/components/parameters/Pnode'}
      - {$ref: '#/components/parameters/Portfolio'}
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/VirtualBidsAndOffers'}
          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'}
    post:
      tags: [Bidding]
      description: Post the collection of virtual demand bids and virtual generation
        offers. Submittal for a single or multiple pnode locations is supported. Data
        driven delete behaviour is supported via the incusion of null elements.
      operationId: postVirtualBidsAndOffers
      parameters:
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Participant'}
      responses:
        '200': {$ref: '#/components/responses/OkApiResponse'}
        '400': {$ref: '#/components/responses/BadRequestApiResponse'}
        '403': {$ref: '#/components/responses/UnauthorizedApiResponse'}
        '404': {$ref: '#/components/responses/NotFoundApiResponse'}
        '500': {$ref: '#/components/responses/InternalErrorApiResponse'}
      requestBody:
        required: true
        content:
          application/json:
            schema: {$ref: '#/components/schemas/VirtualBidsAndOffers'}
  /markets/real-time/{day}/offer/ramp-curves/participants/{participantName}:
    description: Submit and return the ramp rate curves portion of the Real-Time schedules
      offer. Data can be submitted at any time per the market rules. The Ramp Rate
      Curves are used in market clearing only if they are effective for the operating
      date and hour of the market, and if the 'Enable Ramp Rate Curves' flag is set
      to true for that hour in the Schedule Offer ramp rate values.  To be effective
      for a given market date and hour, submittal must have completed by market closing.
      Submission for one or more pnode locations is supported.
    parameters:
    - {$ref: '#/components/parameters/x-acting-participant'}
    get:
      tags: [Offer]
      description: Returns the collection of Real-Time ramp rate curves by pnode location
        for the day. Pnode or portfolio query parameter may be provided, otherwise
        all valid resources supporting ramp rate curves for participant are returned.
        Message format differs by offerType property which can be one of the following
        values; -  rampCurve -  esrRampCurve
      operationId: getOfferRampRateCurves
      parameters:
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Participant'}
      - {$ref: '#/components/parameters/Pnode'}
      - {$ref: '#/components/parameters/Portfolio'}
      - {$ref: '#/components/parameters/Hour'}
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/MultiVariantRampRateCurves'}
          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'}
    post:
      tags: [Offer]
      description: Post the collection hourly ramp rate curves for one or more pnode
        locations. Message format differs by offerType property which can be one of
        the following values; -  rampCurve -  esrRampCurve
      operationId: postOfferRampRateCurves
      parameters:
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Participant'}
      responses:
        '200': {$ref: '#/components/responses/OkApiResponse'}
        '400': {$ref: '#/components/responses/BadRequestApiResponse'}
        '403': {$ref: '#/components/responses/UnauthorizedApiResponse'}
        '404': {$ref: '#/components/responses/NotFoundApiResponse'}
        '500': {$ref: '#/components/responses/InternalErrorApiResponse'}
      requestBody:
        required: true
        content:
          application/json:
            schema: {$ref: '#/components/schemas/MultiVariantRampRateCurves'}
  /markets/common/{day}/offer/cc-status/participants/{participantName}:
    description: Manage Combined Cycle Status. Submission for one or more pnode locations
      is supported.
    parameters:
    - {$ref: '#/components/parameters/x-acting-participant'}
    get:
      tags: [Offer]
      description: Returns the collection of Combined Cycle status by pnode location
        for the day. Pnode or portfolio query parameters may be provided, otherwise
        all Combined Cycle aggregate resources for participant are returned.
      operationId: getCombinedCycleResourceDay
      parameters:
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Participant'}
      - {$ref: '#/components/parameters/Pnode'}
      - {$ref: '#/components/parameters/Portfolio'}
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/CombinedCycleStatus'}
          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'}
    post:
      tags: [Offer]
      description: Submit Combined Cycle status for one or more pnode locations.
      operationId: postCombinedCycleResourceDay
      parameters:
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Participant'}
      responses:
        '200': {$ref: '#/components/responses/OkApiResponse'}
        '400': {$ref: '#/components/responses/BadRequestApiResponse'}
        '403': {$ref: '#/components/responses/UnauthorizedApiResponse'}
        '404': {$ref: '#/components/responses/NotFoundApiResponse'}
        '500': {$ref: '#/components/responses/InternalErrorApiResponse'}
      requestBody:
        required: true
        content:
          application/json:
            schema: {$ref: '#/components/schemas/CombinedCycleStatus'}
  /markets/{market}/{day}/offer/auto-overrides/participants/{participantName}:
    description: Returns regulation offer overrides.
    parameters:
    - {$ref: '#/components/parameters/x-acting-participant'}
    get:
      tags: [Offer]
      description: |
        Returns the collection of regulation offer overrides by pnode location for the day. Pnode or portfolio query parameters may be provided, otherwise all applicable resources for participant which have been overriden are returned. Regulation Offers are overridden under the following circumstances.
        1. The Participant’s combined Regulation Capacity and Mileage Offers exceed the allowable Total Regulation Offer range (this can occur if a Deployment Rate change occurs).
        2. The Participant’s Resource is awarded regulation capacity in the Day Ahead Market, and Participant’s Real-Time regulation offer differs from its Day Ahead regulation offer for the operating day.
      operationId: getScheduleOfferOverrides
      parameters:
      - {$ref: '#/components/parameters/MarketType'}
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Participant'}
      - {$ref: '#/components/parameters/Pnode'}
      - {$ref: '#/components/parameters/Portfolio'}
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/RegulationOfferOverrides'}
          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'}
  /markets/{market}/{day}/offer/qualification-status/participants/{participantName}:
    description: Returns Qualification Status flags for a resource or Portfolio of
      resources.
    parameters:
    - {$ref: '#/components/parameters/x-acting-participant'}
    get:
      tags: [Offer]
      description: Returns the collection of qualification status flags by pnode location
        for the day. Pnode or portfolio query parameters may be provided, otherwise
        all applicable resources for participant are returned. parameter must be supplied.
      operationId: getQualificationStatus
      parameters:
      - {$ref: '#/components/parameters/MarketType'}
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Participant'}
      - {$ref: '#/components/parameters/Pnode'}
      - {$ref: '#/components/parameters/Portfolio'}
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/QualificationStatus'}
          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'}
  /markets/{market}/{day}/offer/schedule/participants/{participantName}:
    description: Manage Schedule Offer. Submission for one or more pnode locations
      is supported.
    parameters:
    - {$ref: '#/components/parameters/x-acting-participant'}
    get:
      tags: [Offer]
      description: Returns the collection of daily/hourly schedule offers by pnode
        location for the day. Pnode or portfolio query parameters may be provided,
        otherwise all applicable resources for participant are returned. Message format
        differs by offerType property which can be one of the following values; -
        genOffer - dirOffer - drr1Offer - drr2Offer - earOffer - serOffer - esrOffer
      operationId: getScheduleOffer
      parameters:
      - {$ref: '#/components/parameters/MarketTypeIncBoth'}
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Participant'}
      - {$ref: '#/components/parameters/Pnode'}
      - {$ref: '#/components/parameters/Portfolio'}
      - {$ref: '#/components/parameters/LocationType'}
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/MultiVariantScheduleOffer'}
          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'}
    post:
      tags: [Offer]
      description: Submit the daily/hourly schedule offers for one or more pnode locations
        for the day. Message format differs by offerType property which can be one
        of the following values; - genOffer - dirOffer - drr1Offer - drr2Offer - earOffer
        - serOffer - esrOffer
      operationId: postScheduleOffer
      parameters:
      - {$ref: '#/components/parameters/MarketTypeIncBoth'}
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Participant'}
      responses:
        '200': {$ref: '#/components/responses/OkApiResponse'}
        '400': {$ref: '#/components/responses/BadRequestApiResponse'}
        '403': {$ref: '#/components/responses/UnauthorizedApiResponse'}
        '404': {$ref: '#/components/responses/NotFoundApiResponse'}
        '500': {$ref: '#/components/responses/InternalErrorApiResponse'}
      requestBody:
        required: true
        content:
          application/json:
            schema: {$ref: '#/components/schemas/MultiVariantScheduleOffer'}
  /markets/{market}/{day}/offer/defaults/participants/{participantName}:
    description: Manage Schedule Defaults. Submission for one or more pnode locations
      is supported.
    parameters:
    - {$ref: '#/components/parameters/x-acting-participant'}
    get:
      tags: [Offer]
      description: Returns the collection of schedule offer defaults by pnode location
        for the day.  Pnode or portfolio query parameters may be provided, otherwise
        all applicable resources for participant are returned. Message format differs
        by offerType property which can be one of the following values; - genDefaultOffer
        - dirDefaultOffer - drr1DefaultOffer - drr2DefaultOffer - earDefaultOffer
        - serDefaultOffer - esrDefaultOffer
      operationId: getDefaultDay
      parameters:
      - {$ref: '#/components/parameters/MarketTypeIncBoth'}
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Participant'}
      - {$ref: '#/components/parameters/Pnode'}
      - {$ref: '#/components/parameters/Portfolio'}
      - {$ref: '#/components/parameters/LocationType'}
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/MultiVariantScheduleDefault'}
          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'}
    post:
      tags: [Offer]
      description: Submit schedule offer defaults for one or more pnode locations
        for the day. Message format differs by offerType property which can be one
        of the following values; - genDefaultOffer - dirDefaultOffer - drr1DefaultOffer
        - drr2DefaultOffer - earDefaultOffer - serDefaultOffer - esrDefaultOffer
      operationId: postDefaultDay
      parameters:
      - {$ref: '#/components/parameters/MarketTypeIncBoth'}
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Participant'}
      responses:
        '200': {$ref: '#/components/responses/OkApiResponse'}
        '400': {$ref: '#/components/responses/BadRequestApiResponse'}
        '403': {$ref: '#/components/responses/UnauthorizedApiResponse'}
        '404': {$ref: '#/components/responses/NotFoundApiResponse'}
        '500': {$ref: '#/components/responses/InternalErrorApiResponse'}
      requestBody:
        required: true
        content:
          application/json:
            schema: {$ref: '#/components/schemas/MultiVariantScheduleDefault'}
  /markets/real-time/{day}/offer/overrides/participants/{participantName}:
    description: Manage Real Time Offer Overrides API. Submission for one or more
      pnode locations is supported.
    parameters:
    - {$ref: '#/components/parameters/x-acting-participant'}
    get:
      tags: [Offer]
      description: Returns the collection of Real-Time offer overrides by pnode location
        for the day. Pnode or portfolio query parameters may be provided, otherwise
        all applicable resources for participant are returned. Message format differs
        by offerType property which can be one of the following values; - genScheduleOfferOverrides
        - dirScheduleOfferOverrides - drr1ScheduleOfferOverrides - drr2ScheduleOfferOverrides
        - earScheduleOfferOverrides - serScheduleOfferOverrides - esrScheduleOfferOverrides
      operationId: getRealTimeOfferOverrides
      parameters:
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Participant'}
      - {$ref: '#/components/parameters/Pnode'}
      - {$ref: '#/components/parameters/Portfolio'}
      - {$ref: '#/components/parameters/LocationType'}
      - name: interval5Since
        description: Date-time as defined in RFC 3339 having format YYYY-MM-DDTHH:MM:SS-05:00.
          Optional element to specify the interval since which the overrides are requested.
          If {day} is today and interval5Since is not provided then currectly active
          overrides will be returned. If {day} is not today and interval5Since is
          not provided then data for the day since interval 23:59:59 will be returned.
        in: query
        required: false
        schema: {$ref: '#/components/schemas/MarketIntervalLabel'}
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/RetrievedMultiVariantRTOfferOverrides'}
          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'}
    post:
      tags: [Offer]
      description: Submit the Real-Time offer overrides by one or more pnode locations
        for the day. Message format differs by offerType property which can be one
        of the following values; - genScheduleOfferOverrides - dirScheduleOfferOverrides
        - drr1ScheduleOfferOverrides - drr2ScheduleOfferOverrides - earScheduleOfferOverrides
        - serScheduleOfferOverrides - esrScheduleOfferOverrides
      operationId: postRealTimeOfferOverrides
      parameters:
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Participant'}
      responses:
        '200': {$ref: '#/components/responses/OkApiResponse'}
        '400': {$ref: '#/components/responses/BadRequestApiResponse'}
        '403': {$ref: '#/components/responses/UnauthorizedApiResponse'}
        '404': {$ref: '#/components/responses/NotFoundApiResponse'}
        '500': {$ref: '#/components/responses/InternalErrorApiResponse'}
      requestBody:
        required: true
        content:
          application/json:
            schema: {$ref: '#/components/schemas/MultiVariantRTOfferOverrides'}
  /markets/real-time/{day}/reports/lmp-exante:
    description: LMP Ex-Ante report for the Real-Time market for a specific day that
      returns a single interval.
    parameters:
    - {$ref: '#/components/parameters/x-acting-participant'}
    get:
      tags: [Reports]
      description: Returns the LMP Ex-Ante (UDS) report for the Real-Time market for
        a specific day and one or more 5 minute intervals. If neither pnode or portfolio
        query parameters are provided then all public pnodes from the report are returned.
        If no interval5 query parameter is provided then returns data for the latest
        5 minute interval that is available.
      operationId: getRealTimeLmpExAnte
      parameters:
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Pnode'}
      - {$ref: '#/components/parameters/Portfolio'}
      - name: interval5
        description: List of up to 12 date-time values as defined in RFC 3339 having
          format YYYY-MM-DDTHH:MM:SS-05:00 specifying the 5 minute interval(s) for
          which the LMP report is requested. If not specified then return the latest
          approved 5 minute interval.
        in: query
        required: false
        schema:
          type: array
          minItems: 1
          items: {$ref: '#/components/schemas/MarketIntervalLabel'}
        style: form
        explode: false
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/RealTimeLmpExAnte'}
          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'}
  /markets/real-time/{day}/reports/lmp-expost:
    description: LMP Ex-Post report for the Real-Time market for a specific day that
      returns a single interval.
    parameters:
    - {$ref: '#/components/parameters/x-acting-participant'}
    get:
      tags: [Reports]
      description: Returns the LMP Ex-Post (RTLMP) report for the Real-Time market
        for a specific day and one or more 5 minute intervals. If neither pnode or
        portfolio query parameters are provided then all public pnodes from the report
        are returned. If no interval5 query parameter is provided then returns data
        for the latest 5 minute interval that is available.
      operationId: getRealTimeLmpExPost
      parameters:
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Pnode'}
      - {$ref: '#/components/parameters/Portfolio'}
      - name: interval5
        description: List of up to 12 date-time values as defined in RFC 3339 having
          format YYYY-MM-DDTHH:MM:SS-05:00 specifying the 5 minute interval(s) for
          which the LMP report is requested. If not specified then return the latest
          approved 5 minute interval.
        in: query
        required: false
        schema:
          type: array
          minItems: 1
          items: {$ref: '#/components/schemas/MarketIntervalLabel'}
        style: form
        explode: false
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/RealTimeLmpExPost'}
          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'}
  /markets/real-time/{day}/reports/hourly-lmp-expost:
    description: Integrated hourly Real-Time locational marginal prices on a per pricing
      node basis.
    parameters:
    - {$ref: '#/components/parameters/x-acting-participant'}
    get:
      tags: [Reports]
      description: Returns the integrated hourly Real-Time locational marginal prices
        on a per pricing node basis. The integrated hourly totals contain a time-weighted
        aggregation of the underlying 5 minute reports. The integrated totals are
        only available for the Ex-Post (RTLMP) study mode. If neither pnode or portfolio
        or hour query parameters are provided then all public pnodes are returned
        for all intervals of the day.
      operationId: getRealTimeIntgLmp
      parameters:
      - {$ref: '#/components/parameters/MarketOperatingDay'}
      - {$ref: '#/components/parameters/Pnode'}
      - {$ref: '#/components/parameters/Portfolio'}
      - {$ref: '#/components/parameters/Hour'}
      responses:
        '200':
          description: Successful operation.
          content:
            application/json:
              schema: {$ref: '#/components/schemas/RealTimeIntegratedLmpExPost'}
          headers:
            http-x-request-id: {$ref: '#/components/headers/http-x-request-id'}
        '400': {$ref: '#/components/responses/BadRequestApiResponse'}
        '403': {$

# --- truncated at 32 KB (502 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/miso/refs/heads/main/openapi/miso-mui-20-api-openapi.yaml