{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Hip4Question",
"description": "HIP-4 question: multi-choice resolver that groups N binary outcomes under one ballot. One named outcome per choice plus a fallback outcome that wins when no named choice resolves.",
"type": "object",
"required": [
"description",
"fallback_outcome_id",
"first_seen_at",
"last_updated_at",
"name",
"named_outcome_ids",
"question_id",
"settled_named_outcomes"
],
"properties": {
"description": {
"description": "Pipe-delimited question metadata (class, underlying, expiry, price thresholds, period).",
"type": "string",
"example": "class:priceBucket|underlying:BTC|expiry:20260508-0600|priceThresholds:79303,82540|period:1d"
},
"fallback_outcome_id": {
"description": "Outcome ID that resolves Yes when no named outcome does.",
"type": "integer",
"format": "int64",
"example": 6
},
"first_seen_at": {
"description": "When this question was first observed by the ingester (UTC).",
"type": "string",
"format": "date-time",
"example": "2026-05-08T05:57:28.326Z"
},
"last_updated_at": {
"description": "When this question row was last updated (UTC).",
"type": "string",
"format": "date-time",
"example": "2026-05-08T05:57:28.326Z"
},
"name": {
"description": "Question name as published on-chain (recurring markets use a generic name such as `Recurring`).",
"type": "string",
"example": "Recurring"
},
"named_outcome_ids": {
"description": "Outcome IDs of the named choices grouped under this question.",
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"example": [
7,
8,
9
]
},
"question_id": {
"description": "Question identifier.",
"type": "integer",
"format": "int64",
"example": 0
},
"settled_named_outcomes": {
"description": "Subset of `named_outcome_ids` that have already settled.",
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"example": []
}
},
"additionalProperties": true
}