{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/flashodds-live/json-schema/flashodds-live-fair-value-schema.json",
  "title": "FairValue",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/flashodds-live-api-openapi.json#/components/schemas/FairValue",
  "type": "object",
  "required": [
    "outcome_id",
    "league",
    "market_type",
    "fair_probability",
    "method_version"
  ],
  "properties": {
    "outcome_id": {
      "type": "string"
    },
    "market_id": {
      "type": "string"
    },
    "event_id": {
      "type": "string"
    },
    "league": {
      "type": "string",
      "enum": [
        "nfl",
        "nba",
        "mlb",
        "nhl"
      ]
    },
    "market_type": {
      "type": "string",
      "enum": [
        "moneyline",
        "spread",
        "total"
      ]
    },
    "selection": {
      "type": "string"
    },
    "starts_at": {
      "type": "string",
      "format": "date-time"
    },
    "fair_probability": {
      "type": [
        "number",
        "null"
      ],
      "minimum": 0,
      "maximum": 1,
      "description": "Null means Sorqen refused to produce a number; limiting_factor explains why."
    },
    "confidence": {
      "type": [
        "number",
        "null"
      ],
      "minimum": 0,
      "maximum": 1
    },
    "dispersion": {
      "type": [
        "number",
        "null"
      ]
    },
    "books": {
      "type": "integer"
    },
    "limiting_factor": {
      "type": [
        "string",
        "null"
      ]
    },
    "method_version": {
      "type": "string"
    },
    "computed_at": {
      "type": "string",
      "format": "date-time"
    },
    "oldest_component_age_s": {
      "type": [
        "integer",
        "null"
      ]
    },
    "evidence": {
      "type": "object",
      "description": "Paid-plan component evidence. Omitted when the plan does not include evidence."
    }
  }
}