IESO · AsyncAPI Specification
Ieso Dispatch Notification Webhooks
Version
View Spec
View on GitHub
EnergyCanadaElectricityEnergy MarketsGridSystem OperatorMarket DataOpen DataOntarioDemand ResponseRenewablesAsyncAPIWebhooksEvents
AsyncAPI Specification
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.