> ## Documentation Index
> Fetch the complete documentation index at: https://docs.radion.app/llms.txt
> Use this file to discover all available pages before exploring further.

# oracle

> UMA oracle lifecycle events — initialization, proposals, disputes, settlements, pauses, and emergency resolutions — from the UMAAdapter and UMAOptimisticOracle contracts.

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

```json theme={null}
{
  "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](/websockets/filters) for the combination rule.

## Events

This channel sends all sixteen UMA resolution events. See [Onchain Data](/concepts/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](/websockets/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:

```json theme={null}
{
  "type": "event",
  "id": "s1",
  "channel": "oracle",
  "confirmed": true,
  "data": {
    "type": "uma_adapter_question_resolved",
    "questionID": "0x…",
    "…": "…"
  }
}
```

<Note>
  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.
</Note>

### UMAAdapter events

#### `uma_adapter_question_initialized`

`QuestionInitialized` on the UMAAdapter. A UMA-resolved question started, with its reward and bond parameters.

```json theme={null}
{
  "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.

```json theme={null}
{
  "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.

```json theme={null}
{
  "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.

```json theme={null}
{ "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.

```json theme={null}
{ "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.

```json theme={null}
{ "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.

```json theme={null}
{ "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.

```json theme={null}
{
  "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.

```json theme={null}
{
  "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.

```json theme={null}
{
  "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.

```json theme={null}
{ "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.

```json theme={null}
{ "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.

```json theme={null}
{
  "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.

```json theme={null}
{
  "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.

```json theme={null}
{
  "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.

```json theme={null}
{
  "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](/websockets/mempool) for the full frame shape and how to handle it.

```json theme={null}
{
  "action": "subscribe",
  "id": "pending",
  "channel": "oracle",
  "confirmed": false
}
```
