{ "@context": { "@vocab": "https://oddsrelay.io/schema#", "schema": "https://schema.org/", "xsd": "http://www.w3.org/2001/XMLSchema#", "dcterms": "http://purl.org/dc/terms/", "oddsrelay": "https://oddsrelay.io/schema#", "ErrorBody": "oddsrelay:ErrorBody", "error": { "@id": "oddsrelay:error" }, "Error402": "oddsrelay:Error402", "Quote": "oddsrelay:Quote", "cost": { "@id": "oddsrelay:cost", "@type": "xsd:integer" }, "remaining": { "@id": "oddsrelay:remaining", "@type": "xsd:integer" }, "rate_card": { "@id": "oddsrelay:rate_card", "@type": "xsd:string" }, "MatchedMeta": "oddsrelay:MatchedMeta", "feed_type": { "@id": "oddsrelay:feed_type", "@type": "xsd:string" }, "region": { "@id": "oddsrelay:region", "@type": "xsd:string" }, "odds_format": { "@id": "oddsrelay:odds_format", "@type": "xsd:string" }, "processed_at": { "@id": "oddsrelay:processed_at", "@type": "xsd:string" }, "last_seen": { "@id": "oddsrelay:last_seen" }, "count": { "@id": "oddsrelay:count", "@type": "xsd:integer" }, "version": { "@id": "oddsrelay:version", "@type": "xsd:string" }, "next_cursor": { "@id": "oddsrelay:next_cursor" }, "MatchedEvent": "oddsrelay:MatchedEvent", "event_id": { "@id": "oddsrelay:event_id", "@type": "xsd:string" }, "sport_key": { "@id": "oddsrelay:sport_key", "@type": "xsd:string" }, "sport_title": { "@id": "oddsrelay:sport_title", "@type": "xsd:string" }, "commence_time": { "@id": "oddsrelay:commence_time", "@type": "xsd:string" }, "home_team": { "@id": "oddsrelay:home_team", "@type": "xsd:string" }, "away_team": { "@id": "oddsrelay:away_team", "@type": "xsd:string" }, "event_name": { "@id": "oddsrelay:event_name", "@type": "xsd:string" }, "venue": { "@id": "oddsrelay:venue", "@type": "xsd:string" }, "markets": { "@id": "oddsrelay:markets", "@container": "@list" }, "MatchedOutcome": "oddsrelay:MatchedOutcome", "name": { "@id": "oddsrelay:name", "@type": "xsd:string" }, "point": { "@id": "oddsrelay:point", "@type": "xsd:decimal" }, "back": { "@id": "oddsrelay:back", "@container": "@list" }, "lay": { "@id": "oddsrelay:lay" }, "MatchedEnvelope": "oddsrelay:MatchedEnvelope", "meta": { "@id": "oddsrelay:meta", "@type": "@id" }, "data": { "@id": "oddsrelay:data", "@container": "@list" }, "RawOutcome": "oddsrelay:RawOutcome", "price": { "@id": "oddsrelay:price", "@type": "xsd:decimal" }, "back_price": { "@id": "oddsrelay:back_price", "@type": "xsd:decimal" }, "lay_price": { "@id": "oddsrelay:lay_price", "@type": "xsd:decimal" }, "available": { "@id": "oddsrelay:available", "@type": "xsd:decimal" }, "RawEvent": "oddsrelay:RawEvent", "id": { "@id": "oddsrelay:id", "@type": "xsd:string" }, "cluster_id": { "@id": "oddsrelay:cluster_id", "@type": "xsd:string" }, "bookmakers": { "@id": "oddsrelay:bookmakers", "@container": "@list" }, "RawMeta": "oddsrelay:RawMeta", "total": { "@id": "oddsrelay:total", "@type": "xsd:integer" }, "board_version": { "@id": "oddsrelay:board_version", "@type": "xsd:integer" }, "RawEnvelope": "oddsrelay:RawEnvelope", "PageMeta": "oddsrelay:PageMeta", "Sport": "oddsrelay:Sport", "key": { "@id": "oddsrelay:key", "@type": "xsd:string" }, "group": { "@id": "oddsrelay:group", "@type": "xsd:string" }, "title": { "@id": "oddsrelay:title", "@type": "xsd:string" }, "description": { "@id": "oddsrelay:description", "@type": "xsd:string" }, "active": { "@id": "oddsrelay:active", "@type": "xsd:boolean" }, "has_outrights": { "@id": "oddsrelay:has_outrights", "@type": "xsd:boolean" }, "regions": { "@id": "oddsrelay:regions", "@container": "@list" }, "Event": "oddsrelay:Event", "status": { "@id": "oddsrelay:status", "@type": "xsd:string" }, "has_coverage": { "@id": "oddsrelay:has_coverage", "@container": "@list" }, "Venue": "oddsrelay:Venue", "is_exchange": { "@id": "oddsrelay:is_exchange", "@type": "xsd:boolean" }, "Regions": "oddsrelay:Regions", "default_region": { "@id": "oddsrelay:default_region", "@type": "xsd:string" }, "Health": "oddsrelay:Health", "boards": { "@id": "oddsrelay:boards" }, "stale_boards": { "@id": "oddsrelay:stale_boards", "@container": "@list" }, "max_board_age_s": { "@id": "oddsrelay:max_board_age_s", "@type": "xsd:decimal" }, "missing_boards": { "@id": "oddsrelay:missing_boards", "@container": "@list" }, "Status": "oddsrelay:Status", "generated_at": { "@id": "oddsrelay:generated_at", "@type": "xsd:string" }, "products": { "@id": "oddsrelay:products" }, "CoverageSummary": "oddsrelay:CoverageSummary", "CoverageKeyed": "oddsrelay:CoverageKeyed", "Usage": "oddsrelay:Usage", "plan": { "@id": "oddsrelay:plan", "@type": "xsd:string" }, "account": { "@id": "oddsrelay:account" }, "tokens": { "@id": "oddsrelay:tokens" }, "flood_cap": { "@id": "oddsrelay:flood_cap" }, "scope": { "@id": "oddsrelay:scope" }, "scope_version": { "@id": "oddsrelay:scope_version", "@type": "xsd:integer" }, "PriceTable": "oddsrelay:PriceTable", "provisional": { "@id": "oddsrelay:provisional", "@type": "xsd:boolean" }, "captured_at": { "@id": "oddsrelay:captured_at", "@type": "xsd:string" }, "recent": { "@id": "oddsrelay:recent" } }, "@type": "schema:Dataset", "schema:name": "OddsRelay API JSON-LD context", "schema:description": "A JSON-LD @context for the objects OddsRelay's own API contract declares: one class per component schema, one property per declared field, typed from the contract. Derived by script (derive-json-ld.py, 2026-10-09) from openapi/oddsrelay-openapi.yml.", "dcterms:created": "2026-10-09", "dcterms:source": [ "openapi/oddsrelay-openapi.yml" ] }