IESO · AsyncAPI Specification

Ieso Dispatch Notification Webhooks

Version

View Spec View on GitHub EnergyCanadaElectricityEnergy MarketsGridSystem OperatorMarket DataOpen DataOntarioDemand ResponseRenewablesAsyncAPIEvents

AsyncAPI Specification

ieso-dispatch-notification-webhooks.yml Raw ↑
generated: '2026-07-27'
method: searched
source: >-
  SPEC-155 "Dispatch Notification Service Web Service Design Specifications", Issue 4.0, February 26,
  2025 — https://www.ieso.ca/-/media/Files/IESO/technical-interfaces/dispatch-service-system/SPEC-155-Dispatch-Notification-Service-Web-Service-Design-Specifications.pdf
docs: https://www.ieso.ca/sector-participants/technical-interfaces
note: >-
  IESO publishes no AsyncAPI document, and none has been fabricated. What it DOES publish is a real
  reverse-direction callback contract: SPEC-155 specifies a web service that the MARKET PARTICIPANT
  hosts and the IESO calls, pushing dispatch instructions in real time. That is a webhook in every
  sense except the transport — it is SOAP rather than JSON over HTTP POST — so it is captured here as
  a webhook catalogue with the full published payload contract. Every field, type, cardinality and
  enumeration below is transcribed from SPEC-155 section 2 and 3.
kind: webhooks
transport: SOAP over HTTPS
direction: provider-to-consumer (IESO calls the participant)
hosted_by: market participant
spec_version: '4.0'
spec_date: '2025-02-26'
timezone: >-
  All times in SPEC-155 are Eastern Standard Time (EST), per the document's stated conventions.

registration:
  self_serve: false
  process: >-
    A participant wishing to set up the Dispatch Notification System provides IESO with three things:
    IP allow-listing requirements, a username and password for the IESO to use when calling the
    participant's service, and the web service endpoint for both the Dev and Production environments.
  environments: [Dev, Production]
  authentication: HTTP username/password supplied by the participant to the IESO, plus IP allow-listing.

relationship_to_polling:
  note: >-
    The notification service does not replace the Dispatch Service Web Service (SPEC-154). The
    participant still sends its response to each dispatch instruction back through SPEC-154. Push is
    for delivery; the acknowledgement path stays request/response.
  companion_spec: https://www.ieso.ca/-/media/Files/IESO/technical-interfaces/dispatch-service-system/SPEC-154-Dispatch-Service-Web-Service-Design-Specifications.pdf

webhooks:
- name: newDispatches
  operation: newDispatches
  description: >-
    Allows the IESO to send new dispatch instructions to the market participant. This is the machine
    channel through which Ontario's grid is dispatched in real time.
  payload:
    root: DispatchInstructions
    cardinality: 0..*
    item: DispatchInstruction
    item_cardinality: 0..*
  response:
    fields:
    - {name: Confirmed, type: Boolean, cardinality: 1}
  fault: none
  delivery_rules:
  - 'IESO will consider any non "confirmed" responses as delivery failures.'
  - 'IESO will not process any SOAP faults returned from the web service.'
  operational_guidance: >-
    "Dispatch instructions can become large in size, if the Dispatch Notification Service is not
    configured properly error may occur when a set of new dispatches is received. It is recommended to
    properly set the HTTPS request limit on the server which is hosting Dispatch Notification Service
    to avoid potential errors."

schemas:
  DispatchInstruction:
    fields:
    - {name: MESSAGE_ID, type: String, cardinality: 0..1, description: Unique identifier assigned to the dispatch instruction}
    - {name: PARTICIPANT_NAME, type: String, cardinality: 0..1, description: Market Participant Short Name}
    - {name: DATE_SENT, type: DateTime, cardinality: 0..1, description: Date/time the dispatch was issued by the IESO}
    - {name: DISPATCH_TYPE, type: DispatchType, cardinality: 0..1}
    - {name: STATE, type: DispatchState, cardinality: 0..1}
    - {name: ACTIVE, type: Boolean, cardinality: 0..1, description: Whether the dispatch is the last confirmed dispatch for the resource per dispatch type}
    - {name: RESOURCE_ID, type: String, cardinality: 0..1, description: Name of the resource being dispatched}
    - {name: DELIVERY_DATE, type: DateTime, cardinality: 0..1, format: YYYY-MM-DD}
    - {name: DELIVERY_HOUR, type: Integer, cardinality: 0..1, min: 1, max: 24}
    - {name: DELIVERY_INTERVAL, type: Integer, cardinality: 0..1, min: 1, max: 12, description: The five-minute interval the dispatch applies to}
    - {name: DELIVERY_START_TIME, type: DateTime, cardinality: 0..1, format: 'YYYY-MM-DDTHH:MM:SS', description: Start time requests are associated with dispatches for contract activation}
    - {name: DELIVERY_STOP_TIME, type: DateTime, cardinality: 0..1, format: 'YYYY-MM-DDTHH:MM:SS'}
    - {name: AMOUNT, type: Double, cardinality: 0..1, description: Value assigned to the dispatch; content depends on dispatch type}
    - {name: LIMIT_TYPE, type: LimitType, cardinality: 0..1}
    - {name: VG_OI, type: String, cardinality: 0..1, description: 'Variable Generation Obligation Indicator — Mandatory, Release, or null for non-Variable Generators'}
    - {name: RESERVE_CLASS, type: String, cardinality: 0..1, description: Class of reserve requested in a RESV type dispatch}
    - {name: REGULATION_RANGE, type: Double, cardinality: 0..1}
    - {name: RESPONDER, type: String, cardinality: 0..1, description: 'Username of the user that responded to the dispatch instruction (section 2 notes it is not used and left blank)'}
    - {name: EXPIRES_AT, type: DateTime, cardinality: 0..1, description: End of the active window / when the dispatch instruction expires}
    - {name: EFFECTIVE_TIME, type: DateTime, cardinality: 0..1, description: 'Time associated with the Product (START, EXTEND, DECOM)'}
    - {name: MLP_TIME, type: DateTime, cardinality: 0..1, description: First date and time at which a Resource is scheduled for a Commitment at or above the Minimum Load Point}
    - {name: SYNC_TIME, type: DateTime, cardinality: 0..1, description: Resource scheduled to synchronize}
    - {name: ALT_SYNC_TIME, type: DateTime, cardinality: 0..1, description: Alternate synchronization time to Commitment Dispatch}
    - {name: LAST_UPDATED, type: DateTime, cardinality: 0..1}

enums:
  DispatchState: [New, Timed Out, Accepted, Rejected]
  DispatchType:
    values: [ENG, ORA, ORD, RESV, RGR, RGS, START, EXTEND, DECOM]
    notes:
      ORD: not being used
  LimitType:
    values: [FIX, MAX, MIN, OTD]
    meanings:
      FIX: Resource is manually set
      MAX: Resource limited to maximum energy output
      MIN: Resource limited to minimum energy output
      OTD: Manual, on-demand, one time dispatch
  ReserveClass:
    '10S': 10 minute spinning
    '10N': 10 minute non-spinning
    '30R': 30 minute reserve

other_event_surfaces:
  note: >-
    No other push, streaming, webhook or event surface exists in the IESO estate. The public report
    repository is poll-only (see the recommended polling table in conventions/ieso-conventions.yml);
    there is no SSE, WebSocket, message queue or subscription API.

asyncapi_document: none_published
asyncapi_note: >-
  A faithful AsyncAPI rendering of this contract is possible but was NOT generated — SPEC-155 is a
  SOAP RPC design specification, not an event/channel model, and inventing channels, servers and
  bindings IESO does not publish would be fabrication.

Work with this as data

Every AsyncAPI spec 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 asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • 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 AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/ieso-dispatch-notification-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?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.