Assertion schema
A PropsOracle public result assertion publishes finalized player-prop data only. It is not a settlement-risk report.
The public schema is a structured JSON object emitted through the assertion flow and decoded by consumers or indexers. It intentionally excludes volatility signals, trigger reasons, stat-change diagnostics, and postponement explanations. Those fields belong to the paid API.
{
"assertion_type": "PLAYER_STATS",
"canonical_event_id": "0x7f2a…c914",
"league": "mlb",
"home_team": "New York Yankees",
"away_team": "Boston Red Sox",
"commence_time": "2026-04-22T23:05:00Z",
"game_completed_at": "2026-04-23T02:38:00Z",
"arweave_evidence_tx": "xHk9…Qp2m",
"player_stats": [
{
"oracle_player_id": "0x7a3b…f1c2",
"full_name": "Aaron Judge",
"stat_type": "batter_hits",
"stat_value": 2
},
{
"oracle_player_id": "0x9e4d…a8b7",
"full_name": "Gerrit Cole",
"stat_type": "pitcher_strikeouts",
"stat_value": 9
}
]
}Top-level fields
assertion_type identifies the public result claim family. Current beta integrations read PLAYER_STATS; per-line MARKET_RESOLUTIONS claims may be used for market-level result publishing.
canonical_event_id is the same hash consumers compute locally using the method described in Event and player IDs. commence_time and game_completed_at are ISO 8601 UTC timestamps.
arweave_evidence_tx points to the public evidence archive for the finalized result. The archive is limited to result evidence required to verify the final value. It does not include the paid settlement-risk report, volatility model output, or trigger history.
The player_stats array
Each entry asserts one final stat value for one player. Consumers should match by oracle_player_id and stat_type.
stat_type matches the canonical market/stat keys documented in Coverage → Markets. stat_value is the final value the oracle verified. Consumers compare this value against their own stored line and apply their own YES/NO/push logic.
A player who was expected to appear but did not — a scratched starter, a healthy DNP — produces a player-stat entry with stat_value: "DNP". Consumers interpret DNP according to their own push and refund rules. The oracle does not grade DNP itself, only reports it.
What is not public
The public claim and public archive do not expose:
- volatility level
- signal bucket
- reason codes
- trigger payloads
- stat-change history
- recommended settlement timing
- explanations for why a result was postponed
Platforms that need those fields should use the paid API before settlement.