{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/odds-api-io/json-schema/odds-api-io-controllers-native-idmapping-page-schema.json",
  "title": "controllers.NativeIDMappingPage",
  "description": "Every /v3/mappings response. nextCursor is null for lookups and set in bulk sync while more pages remain.",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/odds-api-io-mappings-api-openapi.yml#/components/schemas/controllers.NativeIDMappingPage",
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/controllers.NativeIDMapping"
      }
    },
    "nextCursor": {
      "type": [
        "string",
        "null"
      ],
      "description": "Pass as `cursor` to get the next page. `null` on the last page."
    }
  },
  "$defs": {
    "controllers.League": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        }
      }
    },
    "controllers.NativeIDMapping": {
      "type": "object",
      "properties": {
        "eventId": {
          "type": "integer",
          "description": "Our event id"
        },
        "home": {
          "type": "string",
          "description": "Home team of our event, in our orientation"
        },
        "away": {
          "type": "string",
          "description": "Away team of our event, in our orientation"
        },
        "date": {
          "type": "string",
          "format": "date-time",
          "description": "Start time of our event"
        },
        "sport": {
          "$ref": "#/$defs/controllers.Sport"
        },
        "league": {
          "$ref": "#/$defs/controllers.League"
        },
        "bookmaker": {
          "type": "string"
        },
        "market": {
          "type": "string",
          "description": "Market name, as in /v3/odds"
        },
        "label": {
          "type": "string",
          "description": "Selection label for labelled markets such as player props"
        },
        "hdp": {
          "type": "number",
          "description": "The line as /v3/odds shows it (the home handicap on a Spread). Omitted on markets without a line"
        },
        "side": {
          "type": "string",
          "enum": [
            "home",
            "away",
            "draw",
            "over",
            "under",
            "yes",
            "no"
          ]
        },
        "nativeEventId": {
          "type": "string",
          "description": "The bookmaker's event id. For Polymarket it is the same value as `bookmakerIds` in `/v3/odds`. For Kalshi it is the event ticker the contract belongs to: the game ticker (the `bookmakerIds` value) for ML, and the spread or total event ticker for those contracts."
        },
        "marketId": {
          "type": "string",
          "description": "The bookmaker's market id (Polymarket conditionId, Kalshi contract ticker)"
        },
        "outcomeId": {
          "type": "string",
          "description": "The bookmaker's outcome id (Polymarket CLOB token id, Kalshi `yes` or `no`)"
        },
        "outcomeLabel": {
          "type": "string",
          "description": "The outcome's name at the bookmaker"
        },
        "extra": {
          "type": "object",
          "additionalProperties": {},
          "description": "Bookmaker-specific details, such as the Polymarket question"
        },
        "active": {
          "type": "boolean",
          "description": "False once the bookmaker stopped listing the outcome"
        },
        "firstSeenAt": {
          "type": "string",
          "format": "date-time"
        },
        "lastCheckedAt": {
          "type": "string",
          "format": "date-time",
          "description": "When we last saw the outcome at the bookmaker. Refreshed at least every 30 minutes while we track the event; Polymarket mappings stop refreshing at kickoff."
        }
      }
    },
    "controllers.Sport": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        }
      }
    }
  }
}