{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/odds-api-io/json-schema/odds-api-io-controllers-event-response-schema.json",
  "title": "controllers.EventResponse",
  "x-generated": "2026-11-06",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/odds-api-io-openapi.json#/components/schemas/controllers.EventResponse",
  "type": "object",
  "properties": {
    "away": {
      "type": "string"
    },
    "awayId": {
      "type": "integer"
    },
    "bookmakerIds": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "bookmakers": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "items": {
          "$ref": "#/$defs/dto.MultiMarketDto"
        }
      }
    },
    "date": {
      "type": "string"
    },
    "home": {
      "type": "string"
    },
    "homeId": {
      "type": "integer"
    },
    "id": {
      "type": "integer"
    },
    "league": {
      "$ref": "#/$defs/controllers.League"
    },
    "scores": {
      "$ref": "#/$defs/dto.Score"
    },
    "sport": {
      "$ref": "#/$defs/controllers.Sport"
    },
    "status": {
      "description": "Whether the match is under way: pending, live, settled or cancelled. Can read live before the listed start, or while /events still lists the event as pending. A pending event never carries in-play prices.",
      "type": "string"
    },
    "urls": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    }
  },
  "$defs": {
    "controllers.League": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        }
      }
    },
    "controllers.Sport": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        }
      }
    },
    "dto.MultiMarketDto": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "odds": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/dto.Odds"
          }
        },
        "updatedAt": {
          "type": "string"
        }
      }
    },
    "dto.Odds": {
      "type": "object",
      "properties": {
        "12": {
          "type": "string"
        },
        "1X": {
          "description": "Specialty market fields\nDouble Chance: 1X (home or draw), 12 (home or away), X2 (draw or away)",
          "type": "string"
        },
        "X2": {
          "type": "string"
        },
        "away": {
          "type": "string"
        },
        "awayLink": {
          "type": "string"
        },
        "depthAway": {
          "type": "string"
        },
        "depthDraw": {
          "type": "string"
        },
        "depthHome": {
          "type": "string"
        },
        "depthLayAway": {
          "type": "string"
        },
        "depthLayDraw": {
          "type": "string"
        },
        "depthLayHome": {
          "type": "string"
        },
        "depthLayNo": {
          "description": "Available liquidity to lay no. Yes/no markets only (currently Both Teams To Score on exchange-style books).",
          "type": "string"
        },
        "depthLayOver": {
          "description": "Available liquidity to lay over. On yes/no markets this repeats depthLayYes, kept for compatibility.",
          "type": "string"
        },
        "depthLayUnder": {
          "description": "Available liquidity to lay under. On yes/no markets this repeats depthLayNo, kept for compatibility.",
          "type": "string"
        },
        "depthLayYes": {
          "description": "Available liquidity to lay yes. Yes/no markets only (currently Both Teams To Score on exchange-style books).",
          "type": "string"
        },
        "depthNo": {
          "description": "Available liquidity to back no. Yes/no markets only (currently Both Teams To Score on exchange-style books).",
          "type": "string"
        },
        "depthOver": {
          "description": "Available liquidity to back over. On yes/no markets this repeats depthYes, kept for compatibility.",
          "type": "string"
        },
        "depthUnder": {
          "description": "Available liquidity to back under. On yes/no markets this repeats depthNo, kept for compatibility.",
          "type": "string"
        },
        "depthYes": {
          "description": "Available liquidity to back yes. Yes/no markets only (currently Both Teams To Score on exchange-style books).",
          "type": "string"
        },
        "draw": {
          "type": "string"
        },
        "drawLink": {
          "type": "string"
        },
        "even": {
          "type": "string"
        },
        "exactly": {
          "description": "Three-way corner lines only (Corners, Alternative Corners, 1st Half Corners): price for the count landing exactly on hdp. When present, Over and Under both lose on that number.",
          "type": "string"
        },
        "hdp": {
          "type": "number"
        },
        "home": {
          "type": "string"
        },
        "homeLink": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "layAway": {
          "type": "string"
        },
        "layDraw": {
          "type": "string"
        },
        "layHome": {
          "type": "string"
        },
        "layNo": {
          "type": "string"
        },
        "layOver": {
          "type": "string"
        },
        "layUnder": {
          "type": "string"
        },
        "layYes": {
          "type": "string"
        },
        "max": {
          "type": "integer"
        },
        "neither": {
          "description": "Corners Race: neither team reaches the target",
          "type": "string"
        },
        "no": {
          "type": "string"
        },
        "none": {
          "description": "First Team To Score: none option",
          "type": "string"
        },
        "odd": {
          "description": "Odd/Even market",
          "type": "string"
        },
        "odds": {
          "description": "Labeled markets (Half Time / Full Time, Correct Score) - single odds value per outcome",
          "type": "string"
        },
        "over": {
          "type": "string"
        },
        "under": {
          "type": "string"
        },
        "yes": {
          "type": "string"
        }
      }
    },
    "dto.PeriodScore": {
      "type": "object",
      "properties": {
        "away": {
          "type": "integer"
        },
        "home": {
          "type": "integer"
        },
        "overs": {
          "allOf": [
            {
              "$ref": "#/$defs/dto.SideFloats"
            }
          ],
          "description": "Cricket only. Overs bowled by each side in this innings."
        },
        "wickets": {
          "allOf": [
            {
              "$ref": "#/$defs/dto.SideInts"
            }
          ],
          "description": "Cricket only. Wickets lost by each side in this innings."
        }
      }
    },
    "dto.Score": {
      "type": "object",
      "properties": {
        "away": {
          "type": "integer"
        },
        "home": {
          "description": "Headline result: includes overtime, never a penalty shootout.",
          "type": "integer"
        },
        "periods": {
          "description": "Keyed p1..pN (that period only), ft, ot and ap (running totals after regulation, overtime and a penalty shootout), currentgame, mapN, inningN. See https://docs.odds-api.io/guides/live-events#period-scores",
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/dto.PeriodScore"
          }
        }
      }
    },
    "dto.SideFloats": {
      "type": "object",
      "description": "Home/away pair that can be fractional. Cricket overs use cricket notation: 19.3 means nineteen overs and three balls.",
      "properties": {
        "away": {
          "type": "number"
        },
        "home": {
          "type": "number"
        }
      }
    },
    "dto.SideInts": {
      "type": "object",
      "description": "Home/away pair of whole numbers (cricket wickets).",
      "properties": {
        "away": {
          "type": "integer"
        },
        "home": {
          "type": "integer"
        }
      }
    }
  }
}