The oracle channel sends every UMA oracle lifecycle event from the UMAAdapter and UMAOptimisticOracle contracts. We decode each one and send it after the transaction is confirmed on-chain.
Subscribe
{
"action": "subscribe",
"id": "s1",
"channel": "oracle"
}
With no filters, you get every confirmed oracle event from all markets.
Filters
| Filter | Type | Required | Description |
|---|
market_ids | string[] | No | Condition/market IDs as hex strings. Keeps events for those markets. |
This channel accepts only market_ids. wallets, token_ids, and min_usd are ignored here. See Filters for the combination rule.
Events
This channel sends all sixteen UMA resolution events. See Onchain Data for the part each event plays in the full oracle lifecycle.
UMAAdapter
| Event | data.type | Description |
|---|
UmaAdapterQuestionInitialized | uma_adapter_question_initialized | A UMA-resolved question was started. |
UmaAdapterQuestionResolved | uma_adapter_question_resolved | A UMA question reached its final result. |
UmaAdapterQuestionEmergencyResolved | uma_adapter_question_emergency_resolved | An emergency override result. Means an admin stepped in, outside the normal dispute flow. |
UmaAdapterQuestionFlagged | uma_adapter_question_flagged | A question was flagged for review. |
UmaAdapterQuestionPaused | uma_adapter_question_paused | A UMA question was paused part-way through. |
UmaAdapterQuestionUnpaused | uma_adapter_question_unpaused | A paused UMA question started again. |
UmaAdapterQuestionReset | uma_adapter_question_reset | A question was reset back to its started state. |
UmaAdapterAncillaryDataUpdated | uma_adapter_ancillary_data_updated | The ancillary data for a question was updated. |
UMAOptimisticOracle
| Event | data.type | Description |
|---|
UmaOptimisticQuestionInitialized | uma_optimistic_question_initialized | An optimistic oracle question was started. |
UmaOptimisticQuestionResolved | uma_optimistic_question_resolved | A question reached its final result via the optimistic oracle. |
UmaOptimisticQuestionPaused | uma_optimistic_question_paused | An optimistic oracle question was paused. |
UmaOptimisticQuestionUnpaused | uma_optimistic_question_unpaused | An optimistic oracle question was unpaused. |
UmaOptimisticQuestionSettled | uma_optimistic_question_settled | A question settled after the dispute window closed. |
UmaOptimisticResolutionDataRequested | uma_optimistic_resolution_data_requested | A request for resolution data was sent. |
UmaOptimisticQuestionUpdated | uma_optimistic_question_updated | An optimistic oracle question was updated. |
UmaOptimisticQuestionFlaggedForAdminResolution | uma_optimistic_question_flagged_for_admin_resolution | A question was sent up to admin resolution. |
Payloads
Every frame wraps the event in the standard envelope (type, id, channel, confirmed, data) shown on Frames. Below, each block is the data object for one event — its type discriminator plus every field the ABI decodes. A full frame looks like:
{
"type": "event",
"id": "s1",
"channel": "oracle",
"confirmed": true,
"data": {
"type": "uma_adapter_question_resolved",
"questionID": "0x…",
"…": "…"
}
}
The field is questionID — capital ID, matching the on-chain event
signature. uint256 fields serialize as 0x… hex; the signed int256
settledPrice serializes as a decimal string (for example "-1"); bytes
fields (ancillaryData, update) serialize as 0x… hex.
UMAAdapter events
uma_adapter_question_initialized
QuestionInitialized on the UMAAdapter. A UMA-resolved question started, with its reward and bond parameters.
{
"type": "uma_adapter_question_initialized",
"questionID": "0x…",
"requestTimestamp": "0x…",
"creator": "0x…",
"ancillaryData": "0x…",
"rewardToken": "0x…",
"reward": "0x…",
"proposalBond": "0x…"
}
| Field | Solidity type | Description |
|---|
type | string | uma_adapter_question_initialized. |
questionID | bytes32 (hex) | Question id being initialized. |
requestTimestamp | uint256 (hex) | Unix time (seconds) the request was made. |
creator | address (hex) | Address that created the question. |
ancillaryData | bytes (hex) | UMA ancillary data describing the question. |
rewardToken | address (hex) | ERC-20 token the reward is paid in. |
reward | uint256 (hex) | Reward offered to the proposer. |
proposalBond | uint256 (hex) | Bond a proposer must post. |
uma_adapter_question_resolved
QuestionResolved on the UMAAdapter. A UMA question reached its final result, with a settled price and payout split.
{
"type": "uma_adapter_question_resolved",
"questionID": "0x…",
"settledPrice": "1000000000000000000",
"payouts": ["0x0", "0x1"]
}
| Field | Solidity type | Description |
|---|
type | string | uma_adapter_question_resolved. |
questionID | bytes32 (hex) | Resolved question id. |
settledPrice | int256 (string) | Signed price the question settled at. |
payouts | uint256[] (hex) | Payout numerator per outcome slot. |
uma_adapter_question_emergency_resolved
QuestionEmergencyResolved on the UMAAdapter. An admin override result, outside the normal dispute flow.
{
"type": "uma_adapter_question_emergency_resolved",
"questionID": "0x…",
"payouts": ["0x0", "0x1"]
}
| Field | Solidity type | Description |
|---|
type | string | uma_adapter_question_emergency_resolved. |
questionID | bytes32 (hex) | Question id resolved by override. |
payouts | uint256[] (hex) | Payout numerator per outcome slot. |
uma_adapter_question_flagged
QuestionFlagged on the UMAAdapter. A question flagged for review.
{ "type": "uma_adapter_question_flagged", "questionID": "0x…" }
| Field | Solidity type | Description |
|---|
type | string | uma_adapter_question_flagged. |
questionID | bytes32 (hex) | Flagged question id. |
uma_adapter_question_paused
QuestionPaused on the UMAAdapter. A question paused part-way through.
{ "type": "uma_adapter_question_paused", "questionID": "0x…" }
| Field | Solidity type | Description |
|---|
type | string | uma_adapter_question_paused. |
questionID | bytes32 (hex) | Paused question id. |
uma_adapter_question_unpaused
QuestionUnpaused on the UMAAdapter. A paused question resumed.
{ "type": "uma_adapter_question_unpaused", "questionID": "0x…" }
| Field | Solidity type | Description |
|---|
type | string | uma_adapter_question_unpaused. |
questionID | bytes32 (hex) | Resumed question id. |
uma_adapter_question_reset
QuestionReset on the UMAAdapter. A question reset back to its started state.
{ "type": "uma_adapter_question_reset", "questionID": "0x…" }
| Field | Solidity type | Description |
|---|
type | string | uma_adapter_question_reset. |
questionID | bytes32 (hex) | Reset question id. |
uma_adapter_ancillary_data_updated
AncillaryDataUpdated on the UMAAdapter. The ancillary data for a question changed.
{
"type": "uma_adapter_ancillary_data_updated",
"questionID": "0x…",
"owner": "0x…",
"update": "0x…"
}
| Field | Solidity type | Description |
|---|
type | string | uma_adapter_ancillary_data_updated. |
questionID | bytes32 (hex) | Question whose ancillary data changed. |
owner | address (hex) | Owner that made the update. |
update | bytes (hex) | New ancillary data. |
UMAOptimisticOracle events
uma_optimistic_question_initialized
QuestionInitialized on the UMAOptimisticOracle. An optimistic-oracle question started.
{
"type": "uma_optimistic_question_initialized",
"questionID": "0x…",
"ancillaryData": "0x…",
"resolutionTime": "0x…",
"rewardToken": "0x…",
"reward": "0x…",
"proposalBond": "0x…",
"earlyResolutionEnabled": true
}
| Field | Solidity type | Description |
|---|
type | string | uma_optimistic_question_initialized. |
questionID | bytes32 (hex) | Question id being initialized. |
ancillaryData | bytes (hex) | UMA ancillary data describing the question. |
resolutionTime | uint256 (hex) | Unix time (seconds) resolution is expected. |
rewardToken | address (hex) | ERC-20 token the reward is paid in. |
reward | uint256 (hex) | Reward offered to the proposer. |
proposalBond | uint256 (hex) | Bond a proposer must post. |
earlyResolutionEnabled | bool | Whether early resolution is allowed. |
uma_optimistic_question_resolved
QuestionResolved on the UMAOptimisticOracle. A question reached its final result via the optimistic oracle.
{
"type": "uma_optimistic_question_resolved",
"questionID": "0x…",
"emergencyReport": false
}
| Field | Solidity type | Description |
|---|
type | string | uma_optimistic_question_resolved. |
questionID | bytes32 (hex) | Resolved question id. |
emergencyReport | bool | true if resolved by emergency report. |
uma_optimistic_question_paused
QuestionPaused on the UMAOptimisticOracle. A question paused.
{ "type": "uma_optimistic_question_paused", "questionID": "0x…" }
| Field | Solidity type | Description |
|---|
type | string | uma_optimistic_question_paused. |
questionID | bytes32 (hex) | Paused question id. |
uma_optimistic_question_unpaused
QuestionUnpaused on the UMAOptimisticOracle. A paused question resumed.
{ "type": "uma_optimistic_question_unpaused", "questionID": "0x…" }
| Field | Solidity type | Description |
|---|
type | string | uma_optimistic_question_unpaused. |
questionID | bytes32 (hex) | Resumed question id. |
uma_optimistic_question_settled
QuestionSettled on the UMAOptimisticOracle. A question settled after the dispute window closed.
{
"type": "uma_optimistic_question_settled",
"questionID": "0x…",
"settledPrice": "1000000000000000000",
"earlyResolution": false
}
| Field | Solidity type | Description |
|---|
type | string | uma_optimistic_question_settled. |
questionID | bytes32 (hex) | Settled question id. |
settledPrice | int256 (string) | Signed price the question settled at. |
earlyResolution | bool | true if settled via early resolution. |
uma_optimistic_resolution_data_requested
ResolutionDataRequested on the UMAOptimisticOracle. A request for resolution data was sent to UMA.
{
"type": "uma_optimistic_resolution_data_requested",
"requestor": "0x…",
"requestTimestamp": "0x…",
"questionID": "0x…",
"identifier": "0x…",
"ancillaryData": "0x…",
"rewardToken": "0x…",
"reward": "0x…",
"proposalBond": "0x…",
"earlyResolution": false
}
| Field | Solidity type | Description |
|---|
type | string | uma_optimistic_resolution_data_requested. |
requestor | address (hex) | Address that requested resolution data. |
requestTimestamp | uint256 (hex) | Unix time (seconds) of the request. |
questionID | bytes32 (hex) | Question the request is for. |
identifier | bytes32 (hex) | UMA price identifier. |
ancillaryData | bytes (hex) | UMA ancillary data for the request. |
rewardToken | address (hex) | ERC-20 token the reward is paid in. |
reward | uint256 (hex) | Reward offered to the proposer. |
proposalBond | uint256 (hex) | Bond a proposer must post. |
earlyResolution | bool | Whether early resolution is requested. |
uma_optimistic_question_updated
QuestionUpdated on the UMAOptimisticOracle. An optimistic-oracle question’s parameters changed.
{
"type": "uma_optimistic_question_updated",
"questionID": "0x…",
"ancillaryData": "0x…",
"resolutionTime": "0x…",
"rewardToken": "0x…",
"reward": "0x…",
"proposalBond": "0x…",
"earlyResolutionEnabled": true
}
| Field | Solidity type | Description |
|---|
type | string | uma_optimistic_question_updated. |
questionID | bytes32 (hex) | Updated question id. |
ancillaryData | bytes (hex) | New UMA ancillary data. |
resolutionTime | uint256 (hex) | New expected resolution time. |
rewardToken | address (hex) | ERC-20 token the reward is paid in. |
reward | uint256 (hex) | New reward amount. |
proposalBond | uint256 (hex) | New proposal bond. |
earlyResolutionEnabled | bool | Whether early resolution is allowed. |
uma_optimistic_question_flagged_for_admin_resolution
QuestionFlaggedForAdminResolution on the UMAOptimisticOracle. A question escalated to admin resolution.
{
"type": "uma_optimistic_question_flagged_for_admin_resolution",
"questionID": "0x…"
}
| Field | Solidity type | Description |
|---|
type | string | uma_optimistic_question_flagged_for_admin_resolution. |
questionID | bytes32 (hex) | Question escalated to admin resolution. |
Pending feed
Set confirmed: false on your subscribe to get the pending feed of this channel — the same payload shape for pending transactions sent to the UMAAdapter and UMAOptimisticOracle contracts, before they are in a block. Pending events are guesses. A transaction can be dropped, replaced, or reverted. See Mempool for the full frame shape and how to handle it.
{
"action": "subscribe",
"id": "pending",
"channel": "oracle",
"confirmed": false
}