generated: '2026-10-09' method: derived generator: derive-data-model.py source: - openapi/oddsrelay-openapi.yml notation: has_one = property $ref; has_many = array of $ref; belongs_to = _id field summary: entities: 31 entities_in_spec: 31 relationships: 5 entities: - name: CoverageKeyed fields: 3 description: 'The keyed view: your key''s products the region serves.' - name: CoverageSummary fields: 4 description: The keyless view. - name: Error400 fields: 0 - name: Error401 fields: 0 - name: Error402 fields: 1 - name: Error403 fields: 0 - name: Error404 fields: 0 - name: Error405 fields: 0 - name: Error429 fields: 0 - name: Error500 fields: 0 - name: Error503 fields: 0 - name: ErrorBody fields: 1 description: Every JSON 4xx and 5xx this API writes. - name: Event fields: 8 - name: Health fields: 6 - name: MatchedEnvelope fields: 2 - name: MatchedEvent fields: 9 description: 'One fixture. Ids are opaque and stable across boards (one fixture is one id on every route), but not durable keys: a paired fixture re-keys once when a higher-ranked exchange lists it.' - name: MatchedMeta fields: 8 - name: MatchedOutcome fields: 4 - name: OpenApiDocument fields: 0 description: This document. - name: PageMeta fields: 7 - name: PriceTable fields: 5 description: The price table the feed prices every call from, byte for byte. A call costs max(1, ceil(whole x each named filter's points / 100)). - name: Quote fields: 3 description: '`quote=true`: this request''s price. Free.' - name: RawEnvelope fields: 2 - name: RawEvent fields: 8 - name: RawMeta fields: 9 - name: RawOutcome fields: 5 description: A bookmaker quote is `{name, price}`; a venue quoting a lay side is `{name, back_price, lay_price, available}` (`available` left out under `includeLiquidity=false`). No commission is applied. - name: Regions fields: 3 - name: Sport fields: 8 - name: Status fields: 3 - name: Usage fields: 9 - name: Venue fields: 4 relationships: - from: MatchedEvent to: Event type: belongs_to via: event_id - from: MatchedEnvelope to: MatchedMeta type: has_one via: meta - from: MatchedEnvelope to: MatchedEvent type: has_many via: data - from: RawEnvelope to: RawMeta type: has_one via: meta - from: RawEnvelope to: RawEvent type: has_many via: data