{
  "openapi": "3.0.1",
  "info": {
    "title": "Unabated Data API",
    "description": "Unabated Market Data Endpoints",
    "version": "v1"
  },
  "paths": {
    "/api-key": {
      "post": {
        "tags": [
          "ApiKey"
        ],
        "parameters": [
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreatePublicApiKeyResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreatePublicApiKeyResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreatePublicApiKeyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreatePublicApiKeyResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreatePublicApiKeyResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreatePublicApiKeyResponse"
                }
              }
            }
          }
        }
      }
    },
    "/bettype": {
      "get": {
        "tags": [
          "BetType"
        ],
        "parameters": [
          {
            "name": "changedSince",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfBetType"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfBetType"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfBetType"
                }
              }
            }
          }
        }
      }
    },
    "/bonus/active": {
      "get": {
        "tags": [
          "Bonus"
        ],
        "parameters": [
          {
            "name": "marketSourceId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfBonus"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfBonus"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfBonus"
                }
              }
            }
          }
        }
      }
    },
    "/bonus/{id}": {
      "get": {
        "tags": [
          "Bonus"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfBonus"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfBonus"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfBonus"
                }
              }
            }
          }
        }
      }
    },
    "/bonus/market-lines": {
      "get": {
        "tags": [
          "Bonus"
        ],
        "parameters": [
          {
            "name": "ids",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfMarketLineBonus"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfMarketLineBonus"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfMarketLineBonus"
                }
              }
            }
          }
        }
      }
    },
    "/bonus/evaluate": {
      "post": {
        "tags": [
          "Bonus"
        ],
        "parameters": [
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/BonusEvaluationRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusEvaluationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BonusEvaluationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BonusEvaluationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfBonusEvaluationResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfBonusEvaluationResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfBonusEvaluationResult"
                }
              }
            }
          }
        }
      }
    },
    "/deeplink": {
      "get": {
        "tags": [
          "Deeplink"
        ],
        "summary": "Generate a deeplink URL for the provided market lines.",
        "parameters": [
          {
            "name": "ids",
            "in": "query",
            "description": "Comma separated market line ids.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "points",
            "in": "query",
            "description": "Optional comma separated list of points.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "description": "User state code.",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "isMobileDevice",
            "in": "query",
            "description": "Indicates mobile environment.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "os",
            "in": "query",
            "description": "Client operating system for platform-specific mobile deeplinks.",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "generationOptions",
            "in": "query",
            "description": "Optional generation options.",
            "schema": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              },
              "description": "Dictionary with String keys and String values"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the deeplink or details"
          },
          "500": {
            "description": "Generation failed"
          }
        }
      }
    },
    "/deeplink/sgp": {
      "get": {
        "tags": [
          "Deeplink"
        ],
        "summary": "Execute a same game parlay request.",
        "parameters": [
          {
            "name": "ids",
            "in": "query",
            "description": "Market line ids.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "points",
            "in": "query",
            "description": "Optional points values.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "description": "User state code.",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "isMobileDevice",
            "in": "query",
            "description": "Indicates mobile environment.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "includeDetails",
            "in": "query",
            "description": "Include detailed results.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "allowMismatchPoints",
            "in": "query",
            "description": "Allow the nearest available points when an exact line is unavailable.",
            "schema": {
              "type": "boolean",
              "default": true
            }
          },
          {
            "name": "allowStoredCorrelation",
            "in": "query",
            "description": "Use a same-book semantic correlation estimate when a validated observation exists.",
            "schema": {
              "type": "boolean",
              "default": true
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns SGP details"
          },
          "500": {
            "description": "Request failed"
          }
        }
      }
    },
    "/deeplink/sgp/price": {
      "get": {
        "tags": [
          "Deeplink"
        ],
        "summary": "Price shop a same game parlay request across books.",
        "parameters": [
          {
            "name": "ids",
            "in": "query",
            "description": "Market line ids.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "points",
            "in": "query",
            "description": "Optional points values.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "description": "User state code.",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "name": "isMobileDevice",
            "in": "query",
            "description": "Indicates mobile environment.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "includeDetails",
            "in": "query",
            "description": "Include detailed results.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "books",
            "in": "query",
            "description": "Comma separated book identifiers.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns price shop result"
          },
          "500": {
            "description": "Request failed"
          }
        }
      }
    },
    "/event/{league}/upcoming": {
      "get": {
        "tags": [
          "Event"
        ],
        "parameters": [
          {
            "name": "league",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "changedSince",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfEvent"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfEvent"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfEvent"
                }
              }
            }
          }
        }
      }
    },
    "/event/{league}/lineup": {
      "get": {
        "tags": [
          "Event"
        ],
        "summary": "Gets lineups for a specific league and optional date (defaults to today)",
        "parameters": [
          {
            "name": "league",
            "in": "path",
            "description": "League identifier (e.g., \"nfl\", \"nba\")",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date",
            "in": "query",
            "description": "Optional date in YYYY-MM-DD format (defaults to today if not provided)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfLineup"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfLineup"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfLineup"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/article-widgets/{partnerSlug}": {
      "get": {
        "tags": [
          "GamblyB2BArticleWidget"
        ],
        "summary": "Generate an article widget from article content.",
        "description": "Analyze article content and return matched betting offers that can be embedded in a publisher-owned widget.\r\nProvide either url for Gambly to fetch the article, or markdown for inline article text.\r\nResponses include partner metadata, matched bets, sportsbook odds, deeplinks, evidence snippets, cache metadata, and worker telemetry.\r\nUse GET /api/v1/article-widgets/{partnerSlug}/books to discover sportsbook IDs, then pass requestedBookIds and bookOrder to control which books are returned and how they are ordered.\r\nforceRefresh bypasses cached results; skipCache prevents cache lookup for the request.\r\nRequires an X-Api-Key with the api:gambly_article_widgets permission.",
        "parameters": [
          {
            "name": "partnerSlug",
            "in": "path",
            "description": "Partner slug supplied during Gambly onboarding.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "demo-partner"
          },
          {
            "name": "url",
            "in": "query",
            "description": "Article or video URL to analyze. Either url or markdown is required.",
            "schema": {
              "type": "string"
            },
            "example": "https://example.com/mlb-preview-article"
          },
          {
            "name": "markdown",
            "in": "query",
            "description": "Raw article markdown. Either markdown or url is required.",
            "schema": {
              "type": "string"
            },
            "example": "Shohei Ohtani could hit a home run tonight."
          },
          {
            "name": "maxBets",
            "in": "query",
            "description": "Maximum number of unique betting entities to return.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 1
          },
          {
            "name": "leagueHint",
            "in": "query",
            "description": "Optional league hint such as NFL, NBA, or Premier League.",
            "schema": {
              "type": "string"
            },
            "example": "MLB"
          },
          {
            "name": "forceRefresh",
            "in": "query",
            "description": "Bypass cache and force fresh worker analysis.",
            "schema": {
              "type": "boolean"
            },
            "example": false
          },
          {
            "name": "skipCache",
            "in": "query",
            "description": "Skip cache lookup for this request.",
            "schema": {
              "type": "boolean"
            },
            "example": true
          },
          {
            "name": "isMobileDevice",
            "in": "query",
            "description": "Generate mobile-optimized sportsbook deep links when possible.",
            "schema": {
              "type": "boolean"
            },
            "example": false
          },
          {
            "name": "requestedBookIds",
            "in": "query",
            "description": "Comma-separated sportsbook IDs to include.",
            "schema": {
              "type": "string"
            },
            "example": "1,2"
          },
          {
            "name": "bookOrder",
            "in": "query",
            "description": "Comma-separated sportsbook IDs defining preferred result order.",
            "schema": {
              "type": "string"
            },
            "example": "1,2"
          },
          {
            "name": "includeImplicitBets",
            "in": "query",
            "description": "Include bets inferred from article context.",
            "schema": {
              "type": "boolean"
            },
            "example": false
          },
          {
            "name": "inlineWidgetCap",
            "in": "query",
            "description": "Maximum number of inline widgets to generate.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 1
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Article widget generated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ArticleWidgetResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request parameters or missing content.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamblyB2BErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Valid API key without article-widget permission, or inactive partner.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamblyB2BErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Partner not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamblyB2BErrorResponse"
                }
              }
            }
          },
          "502": {
            "description": "Backend article processing worker unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamblyB2BErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/article-widgets/{partnerSlug}/books": {
      "get": {
        "tags": [
          "GamblyB2BArticleWidget"
        ],
        "summary": "Get available sportsbooks for an article-widget partner.",
        "description": "Return the sportsbook IDs, names, logos, priorities, and allowed flags available to an article-widget partner.\r\nUse these IDs in requestedBookIds to limit article-widget results and in bookOrder to choose the display order.\r\nRequires an X-Api-Key with the api:gambly_article_widgets permission.",
        "parameters": [
          {
            "name": "partnerSlug",
            "in": "path",
            "description": "Partner slug supplied during Gambly onboarding.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "demo-partner"
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sportsbooks retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartnerBooksResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid partner slug.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamblyB2BErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Valid API key without article-widget permission.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Partner not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamblyB2BErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bet/generate": {
      "post": {
        "tags": [
          "GamblyB2BBet"
        ],
        "summary": "Generate a bet slip.",
        "description": "Submit a natural-language prompt or an image of a bet slip and receive a requestId for asynchronous processing.\r\nText requests use content.text. Image requests use content.imageUrl or content.base64String.\r\nPoll GET /api/v1/bet/status/{guid} with the returned requestId until the status is Complete.\r\nComplete responses include sportsbook-specific bet slips, matched odds, deep links, sharedBetSlipId, and shareUrl values that can be used for one-tap bet placement or shareable bet-slip pages.\r\nRequires an X-Api-Key with the api:gambly_bet_slips permission.",
        "parameters": [
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The generation request containing the content type and content payload.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateBetRequest"
              },
              "examples": {
                "Text Example": {
                  "summary": "Generate a bet slip from a natural-language prompt.",
                  "value": {
                    "type": "text",
                    "generateMobileLinks": true,
                    "content": {
                      "text": "MLB moneyline bet slip for Yankees to win"
                    }
                  }
                },
                "Image Url Example": {
                  "summary": "Generate a bet slip from a publicly reachable image URL.",
                  "value": {
                    "type": "image",
                    "generateMobileLinks": true,
                    "content": {
                      "imageUrl": "https://example.com/betslip-image.jpg"
                    }
                  }
                },
                "Base 64 Image Example": {
                  "summary": "Generate a bet slip from a base64-encoded image payload.",
                  "value": {
                    "type": "image",
                    "generateMobileLinks": true,
                    "content": {
                      "base64String": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+/p9sAAAAASUVORK5CYII=",
                      "compression": null
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Request accepted and queued for processing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateBetResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Valid API key without Gambly bet-slip permission.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bet/status/{guid}": {
      "get": {
        "tags": [
          "GamblyB2BBet"
        ],
        "summary": "Check bet slip generation status.",
        "description": "Poll for the results of a previously submitted bet slip generation request.\r\nProcessing responses indicate that Gambly is still matching the submitted text or image.\r\nComplete responses include generated bet slips by sportsbook, overall odds, matched leg counts, leg-level odds, sportsbook deep links, sharedBetSlipId, and shareUrl.\r\nError responses preserve the requestId and include the upstream status details when a request cannot be completed.\r\nRequires an X-Api-Key with the api:gambly_bet_slips permission.",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "description": "The request ID returned from the generate endpoint.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BetStatusResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Valid API key without Gambly bet-slip permission.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/market/{league}/in-game-fair-prices": {
      "get": {
        "tags": [
          "InGameFairPrice"
        ],
        "parameters": [
          {
            "name": "league",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfIReadOnlyCollectionOfInGameFairPriceSet"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfIReadOnlyCollectionOfInGameFairPriceSet"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfIReadOnlyCollectionOfInGameFairPriceSet"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/league": {
      "get": {
        "tags": [
          "League"
        ],
        "parameters": [
          {
            "name": "changedSince",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfLeague"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfLeague"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfLeague"
                }
              }
            }
          }
        }
      }
    },
    "/league/{id}": {
      "get": {
        "tags": [
          "League"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfLeague"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfLeague"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfLeague"
                }
              }
            }
          }
        }
      }
    },
    "/market/{league}/{marketType}/odds": {
      "get": {
        "tags": [
          "MarketData"
        ],
        "summary": "Get Odds",
        "parameters": [
          {
            "name": "league",
            "in": "path",
            "description": "League identifier (e.g., mlb, nfl, cbb, nba, nhl, etc.)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marketType",
            "in": "path",
            "description": "Type of market to return (straight, futures, props)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MarketType"
            }
          },
          {
            "name": "betTypeId",
            "in": "query",
            "description": "Query Param for Bet Type Id(s) to include (e.g. ?betTypeId=74&betTypeId=75&betTypeId=76)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the odds data",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfOdds"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfOdds"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfOdds"
                }
              }
            }
          },
          "400": {
            "description": "Invalid league or market type",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/market/{league}/{marketType}/people": {
      "get": {
        "tags": [
          "MarketData"
        ],
        "summary": "Get People",
        "parameters": [
          {
            "name": "league",
            "in": "path",
            "description": "League identifier (e.g., mlb, nfl, cbb, nba, nhl, etc.)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marketType",
            "in": "path",
            "description": "Type of market (straight, futures, props)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MarketType"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the people data",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfDictionaryOfInt64Person"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfDictionaryOfInt64Person"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfDictionaryOfInt64Person"
                }
              }
            }
          },
          "400": {
            "description": "Invalid league or market type",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/market/{league}/{marketType}/sources": {
      "get": {
        "tags": [
          "MarketData"
        ],
        "summary": "Get Market Sources",
        "parameters": [
          {
            "name": "league",
            "in": "path",
            "description": "League identifier (e.g., mlb, nfl, cbb, nba, nhl, etc.)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marketType",
            "in": "path",
            "description": "Type of market (straight, futures, props)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MarketType"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the market sources",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfMarketSource"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfMarketSource"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfMarketSource"
                }
              }
            }
          },
          "400": {
            "description": "Invalid league or market type",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/market/{league}/{marketType}/teams": {
      "get": {
        "tags": [
          "MarketData"
        ],
        "summary": "Get Teams",
        "parameters": [
          {
            "name": "league",
            "in": "path",
            "description": "League identifier (e.g., mlb, nfl, cbb, nba, nhl, etc.)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "marketType",
            "in": "path",
            "description": "Type of market (straight, futures, props)",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/MarketType"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the teams data",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfDictionaryOfInt64Team"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfDictionaryOfInt64Team"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfDictionaryOfInt64Team"
                }
              }
            }
          },
          "400": {
            "description": "Invalid league or market type",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized access",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/market-type": {
      "get": {
        "tags": [
          "MarketType"
        ],
        "parameters": [
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfMarketTypeDetail"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfMarketTypeDetail"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfMarketTypeDetail"
                }
              }
            }
          }
        }
      }
    },
    "/period-type": {
      "get": {
        "tags": [
          "PeriodType"
        ],
        "parameters": [
          {
            "name": "changedSince",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPeriodType"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPeriodType"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPeriodType"
                }
              }
            }
          }
        }
      }
    },
    "/period-type/{league}": {
      "get": {
        "tags": [
          "PeriodType"
        ],
        "parameters": [
          {
            "name": "league",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "changedSince",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPeriodType"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPeriodType"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPeriodType"
                }
              }
            }
          }
        }
      }
    },
    "/player/{league}": {
      "get": {
        "tags": [
          "Player"
        ],
        "parameters": [
          {
            "name": "league",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "changedSince",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPerson"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPerson"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPerson"
                }
              }
            }
          }
        }
      }
    },
    "/player/{league}/news": {
      "get": {
        "tags": [
          "Player"
        ],
        "summary": "Gets player news for a specific league (25 items per page)",
        "parameters": [
          {
            "name": "league",
            "in": "path",
            "description": "League identifier (e.g., \"nfl\", \"nba\")",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Cursor for pagination",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort order: \"desc\" (default, newest first) or \"asc\" (oldest first)",
            "schema": {
              "type": "string",
              "default": "desc"
            }
          },
          {
            "name": "personId",
            "in": "query",
            "description": "Filter by specific player ID",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "teamId",
            "in": "query",
            "description": "Filter by specific team ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPlayerNews"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPlayerNews"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPlayerNews"
                }
              }
            }
          }
        }
      }
    },
    "/player/{league}/percent-to-play": {
      "get": {
        "tags": [
          "Player"
        ],
        "summary": "Gets player percent-to-play for a specific league (50 items per page)",
        "parameters": [
          {
            "name": "league",
            "in": "path",
            "description": "League identifier (e.g., \"nfl\", \"nba\")",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Cursor for pagination",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort order: \"desc\" (default, newest first) or \"asc\" (oldest first)",
            "schema": {
              "type": "string",
              "default": "desc"
            }
          },
          {
            "name": "personId",
            "in": "query",
            "description": "Filter by specific player ID",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "teamId",
            "in": "query",
            "description": "Filter by specific team ID",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPlayerPercentToPlay"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPlayerPercentToPlay"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPlayerPercentToPlay"
                }
              }
            }
          }
        }
      }
    },
    "/projections/{leagueName}": {
      "post": {
        "tags": [
          "Projections"
        ],
        "parameters": [
          {
            "name": "leagueName",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PropsTemplate"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PropsTemplate"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PropsTemplate"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PropsTemplate"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/promo/active": {
      "get": {
        "tags": [
          "Promo"
        ],
        "parameters": [
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPromo"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPromo"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPromo"
                }
              }
            }
          }
        }
      }
    },
    "/promo/market-source/{marketSourceId}": {
      "get": {
        "tags": [
          "Promo"
        ],
        "parameters": [
          {
            "name": "marketSourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPromo"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPromo"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfPromo"
                }
              }
            }
          }
        }
      }
    },
    "/promo/{id}": {
      "get": {
        "tags": [
          "Promo"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfPromo"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfPromo"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfPromo"
                }
              }
            }
          }
        }
      }
    },
    "/replay/sessions/{sessionId}/sse": {
      "get": {
        "tags": [
          "ReplaySse"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/season/{league}": {
      "get": {
        "tags": [
          "Season"
        ],
        "parameters": [
          {
            "name": "league",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "changedSince",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfSeason"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfSeason"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfSeason"
                }
              }
            }
          }
        }
      }
    },
    "/subscriptions": {
      "post": {
        "tags": [
          "Sse"
        ],
        "parameters": [
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSseSubscriptionRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSseSubscriptionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSseSubscriptionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSseSubscriptionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              }
            }
          }
        }
      }
    },
    "/order-book/subscriptions": {
      "post": {
        "tags": [
          "Sse"
        ],
        "parameters": [
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSseSubscriptionRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSseSubscriptionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSseSubscriptionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSseSubscriptionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfCreateSseSubscriptionResponse"
                }
              }
            }
          }
        }
      }
    },
    "/sse/{subscriptionId}": {
      "get": {
        "tags": [
          "Sse"
        ],
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "token",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/order-book/sse/{subscriptionId}": {
      "get": {
        "tags": [
          "Sse"
        ],
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "token",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sinceUtc",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/team/{league}": {
      "get": {
        "tags": [
          "Team"
        ],
        "parameters": [
          {
            "name": "league",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "changedSince",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfTeam"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfTeam"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfTeam"
                }
              }
            }
          }
        }
      }
    },
    "/tournament/{league}": {
      "get": {
        "tags": [
          "Tournament"
        ],
        "parameters": [
          {
            "name": "league",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "changedSince",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-API-Version",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfTournament"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfTournament"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponseOfListOfTournament"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ApiResponseOfBonus": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Bonus"
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfBonusEvaluationResult": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/BonusEvaluationResult"
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfCreatePublicApiKeyResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CreatePublicApiKeyResponse"
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfCreateSseSubscriptionResponse": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CreateSseSubscriptionResponse"
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfDictionaryOfInt64Person": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Person"
            },
            "description": "Dictionary with Int64 keys and PublicPerson values",
            "nullable": true,
            "example": {
              "883262": {
                "id": 883262,
                "headshotUrl": "players/nba/883262.png",
                "firstName": "Shai",
                "lastName": "Gilgeous-Alexander",
                "jerseyNumber": "2",
                "country": "Toronto, ON, CAN",
                "priorityType": 0,
                "height": 78,
                "weight": 195,
                "position": "G",
                "birthDate": "1998-07-12T00:00:00Z",
                "leagueId": 3,
                "partnerPlayerData": {
                  "fanduel": {
                    "playerId": "fd-player-883262"
                  },
                  "sportradar": {
                    "playerId": "sr:player:883262"
                  }
                }
              },
              "882572": {
                "id": 882572,
                "headshotUrl": "players/nba/882572.png",
                "firstName": "Pascal",
                "lastName": "Siakam",
                "jerseyNumber": "43",
                "country": "Douala,, CMR",
                "priorityType": 0,
                "height": 80,
                "weight": 245,
                "position": "F",
                "birthDate": "1994-04-02T00:00:00Z",
                "leagueId": 3
              },
              "883170": {
                "id": 883170,
                "headshotUrl": "players/nba/883170.png",
                "firstName": "Aaron",
                "lastName": "Nesmith",
                "jerseyNumber": "23",
                "country": "Charleston, SC, USA",
                "priorityType": 0,
                "height": 78,
                "weight": 215,
                "position": "G-F",
                "birthDate": "1999-10-16T00:00:00Z",
                "leagueId": 3
              }
            }
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfDictionaryOfInt64Team": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Team"
            },
            "description": "Dictionary with Int64 keys and PublicTeam values",
            "nullable": true,
            "example": {
              "84": {
                "id": 84,
                "name": "Oklahoma City Thunder",
                "abbreviation": "OKC",
                "logoUrl": "https://assets.unabated.com/teams/logos/nba/okc.svg",
                "leagueId": 3,
                "partnerTeamData": {
                  "fanduel": {
                    "teamId": "fd-team-84"
                  },
                  "sportradar": {
                    "teamId": "sr:team:84"
                  }
                }
              },
              "68": {
                "id": 68,
                "name": "Chicago Bulls",
                "abbreviation": "CHI",
                "logoUrl": "https://assets.unabated.com/teams/logos/nba/chi.svg",
                "leagueId": 3
              }
            }
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfIReadOnlyCollectionOfInGameFairPriceSet": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InGameFairPriceSet"
            },
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfLeague": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/League"
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfListOfBetType": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BetType"
            },
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfListOfBonus": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Bonus"
            },
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfListOfEvent": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Event"
            },
            "nullable": true,
            "example": [
              {
                "eventId": 940356,
                "leagueId": 3,
                "statusId": 1,
                "eventStart": "2025-06-05T16:30:00Z",
                "name": "Thunder Oklahoma City OKC @ Pacers Indiana IND",
                "eventTeams": [
                  {
                    "teamId": 75,
                    "rotationNumber": 501,
                    "score": 0,
                    "sideIndex": 0,
                    "name": "Oklahoma City Thunder"
                  },
                  {
                    "teamId": 84,
                    "rotationNumber": 502,
                    "score": 0,
                    "sideIndex": 1,
                    "name": "Indiana Pacers"
                  }
                ],
                "partnerEventData": {
                  "fanduel": {
                    "eventId": "fd-event-940356"
                  },
                  "sportradar": {
                    "eventId": "sr:match:940356"
                  }
                }
              }
            ]
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfListOfLeague": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/League"
            },
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfListOfLineup": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Lineup"
            },
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfListOfMarketLineBonus": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MarketLineBonus"
            },
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfListOfMarketSource": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MarketSource"
            },
            "nullable": true,
            "example": [
              {
                "id": 1,
                "name": "DraftKings",
                "logoUrl": "https://assets.unabated.com/sportsbooks/logos/draft-kings.svg",
                "thumbnailUrl": "https://assets.unabated.com/sportsbooks/thumbnails/draft-kings.webp",
                "siteUrl": "https://sportsbook.draftkings.com/",
                "isActive": true,
                "statusId": 1,
                "propsStatusId": 1,
                "futuresStatusId": 1
              },
              {
                "id": 4,
                "name": "BetMGM",
                "logoUrl": "https://assets.unabated.com/sportsbooks/logos/bet-mgm.svg",
                "thumbnailUrl": "https://assets.unabated.com/sportsbooks/thumbnails/bet-mgm.webp",
                "siteUrl": "https://sports.betmgm.com/en/sports",
                "isActive": true,
                "statusId": 3,
                "propsStatusId": 1,
                "futuresStatusId": 3
              }
            ]
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfListOfMarketTypeDetail": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MarketTypeDetail"
            },
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfListOfPeriodType": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PeriodType"
            },
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfListOfPerson": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Person"
            },
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfListOfPlayerNews": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PlayerNews"
            },
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfListOfPlayerPercentToPlay": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PlayerPercentToPlay"
            },
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfListOfPromo": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Promo"
            },
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfListOfSeason": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Season"
            },
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfListOfTeam": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Team"
            },
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfListOfTournament": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Tournament"
            },
            "nullable": true
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfOdds": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Odds"
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApiResponseOfPromo": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Promo"
          },
          "success": {
            "type": "boolean"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "pagination": {
            "$ref": "#/components/schemas/PaginationInfo"
          }
        },
        "additionalProperties": false
      },
      "ApplicableBonus": {
        "type": "object",
        "properties": {
          "bonus": {
            "$ref": "#/components/schemas/Bonus"
          },
          "eligibleStake": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "baseProfit": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "bonusAmount": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "boostedProfit": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ArticleWidgetBetDto": {
        "type": "object",
        "properties": {
          "betOffer": {
            "$ref": "#/components/schemas/PopulatedBetOffer"
          },
          "deeplink": {
            "$ref": "#/components/schemas/Deeplink"
          },
          "evidence": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Text excerpts from the article that support this match."
          },
          "matchConfidence": {
            "type": "number",
            "description": "Confidence score between 0.0 and 1.0.",
            "format": "double",
            "nullable": true
          },
          "isDirectMatch": {
            "type": "boolean",
            "description": "True when the article directly mentioned the bet; false when inferred."
          }
        },
        "additionalProperties": false,
        "description": "Matched betting offer with article evidence and deep-link information."
      },
      "ArticleWidgetBookDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique sportsbook identifier. Use this in requestedBookIds and bookOrder.",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Sportsbook display name.",
            "nullable": true
          },
          "logoUrl": {
            "type": "string",
            "description": "URL to the sportsbook logo.",
            "nullable": true
          },
          "priority": {
            "type": "integer",
            "description": "Default display priority. Lower values should be shown first.",
            "format": "int32"
          },
          "allowed": {
            "type": "boolean",
            "description": "Whether this book is allowed for the partner."
          },
          "siteUrl": {
            "type": "string",
            "description": "Optional sportsbook website URL.",
            "nullable": true
          },
          "thumbnailUrl": {
            "type": "string",
            "description": "Optional sportsbook thumbnail URL.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A sportsbook available for use with article widgets."
      },
      "ArticleWidgetMetadataDto": {
        "type": "object",
        "properties": {
          "articleUrl": {
            "type": "string",
            "nullable": true
          },
          "leagueHint": {
            "type": "string",
            "nullable": true
          },
          "requestedMaxBets": {
            "type": "integer",
            "format": "int32"
          },
          "matchedCount": {
            "type": "integer",
            "format": "int32"
          },
          "workerLatency": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "fetchedAtUtc": {
            "type": "string",
            "format": "date-time"
          },
          "cacheTtlSeconds": {
            "type": "integer",
            "format": "int32"
          },
          "cacheHit": {
            "type": "boolean"
          },
          "workerResultType": {
            "type": "string",
            "nullable": true
          },
          "inlineWidgetCap": {
            "type": "integer",
            "format": "int32"
          },
          "includeImplicitBets": {
            "type": "boolean"
          },
          "bookOrderHash": {
            "type": "string",
            "nullable": true
          },
          "bookOrder": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          }
        },
        "additionalProperties": false,
        "description": "Processing metadata for an article-widget response."
      },
      "ArticleWidgetPartnerDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique partner identifier.",
            "format": "int64"
          },
          "slug": {
            "type": "string",
            "description": "URL-friendly partner slug."
          },
          "displayName": {
            "type": "string",
            "description": "Human-readable partner display name."
          },
          "status": {
            "type": "string",
            "description": "Current partner status such as active, inactive, or suspended."
          },
          "allowCreate": {
            "type": "boolean",
            "description": "Whether this partner can create missing widget bet configurations."
          }
        },
        "additionalProperties": false,
        "description": "Partner organization information used by article-widget requests."
      },
      "ArticleWidgetResponseDto": {
        "type": "object",
        "properties": {
          "partner": {
            "$ref": "#/components/schemas/ArticleWidgetPartnerDto"
          },
          "bets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ArticleWidgetBetDto"
            },
            "description": "Matched betting offers with odds, evidence, and sportsbook deep links."
          },
          "metadata": {
            "$ref": "#/components/schemas/ArticleWidgetMetadataDto"
          },
          "telemetry": {
            "$ref": "#/components/schemas/ArticleWidgetTelemetryDto"
          }
        },
        "additionalProperties": false,
        "description": "Complete article-widget response with partner info, matched bets, and processing metadata."
      },
      "ArticleWidgetTelemetryDto": {
        "type": "object",
        "properties": {
          "cacheStatus": {
            "type": "string",
            "nullable": true
          },
          "errorCode": {
            "type": "string",
            "nullable": true
          },
          "workerStatusCode": {
            "type": "integer",
            "format": "int32"
          },
          "workerLatencyMs": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Telemetry for article-widget worker and cache behavior."
      },
      "BetMetadata": {
        "type": "object",
        "properties": {
          "league": {
            "type": "string",
            "description": "The league or competition.",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "description": "The scheduled start time of the event in UTC.",
            "format": "date-time",
            "nullable": true
          },
          "additionalInfo": {
            "type": "object",
            "additionalProperties": { },
            "description": "Additional key-value data about the bet that may vary by bet type.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Additional metadata about a bet, including league and event timing information."
      },
      "BetOdds": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "The bet selection type.",
            "nullable": true
          },
          "value": {
            "type": "string",
            "description": "The odds value in American format.",
            "nullable": true
          },
          "points": {
            "type": "string",
            "description": "The line or points value for spread and totals bets.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Odds and line information for a bet."
      },
      "BetOfferBase": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "price": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "generatedEdge": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "points": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "betOpeningPoints": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "betOpeningPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sourceData": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Legacy Gambly bet-offer base shape used for alternate lines."
      },
      "BetStatusResponse": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string",
            "description": "The unique identifier of the original generation request.",
            "format": "uuid"
          },
          "status": {
            "type": "string",
            "description": "Current processing status: \"Processing\", \"Complete\", or \"Error\"."
          },
          "details": {
            "type": "string",
            "description": "Human-readable description of the current status."
          },
          "betSlips": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Betslip"
            },
            "description": "Generated bet slips. Populated when status is \"Complete\".",
            "nullable": true
          },
          "message": {
            "type": "string",
            "description": "Optional message from the processing system, typically present on errors.",
            "nullable": true
          },
          "sharedBetSlipId": {
            "type": "string",
            "description": "Unique identifier for the shared bet slip, if one was created.",
            "nullable": true
          },
          "shareUrl": {
            "type": "string",
            "description": "A shareable URL for the generated bet slip.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Response containing the current status and results of a bet slip generation request."
      },
      "BetType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "betOn": {
            "type": "string",
            "nullable": true
          },
          "sides": {
            "type": "string",
            "nullable": true
          },
          "canDraw": {
            "type": "boolean",
            "nullable": true
          },
          "hasPoints": {
            "type": "boolean",
            "nullable": true
          },
          "active": {
            "type": "boolean",
            "nullable": true
          },
          "selectionCountType": {
            "type": "string",
            "nullable": true
          },
          "betRange": {
            "type": "string",
            "nullable": true
          },
          "betTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "isFuture": {
            "type": "boolean"
          },
          "modifiedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BetTypeCore": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "nameShort": {
            "type": "string",
            "nullable": true
          },
          "nameMobile": {
            "type": "string",
            "nullable": true
          },
          "marketTypeId": {
            "type": "integer",
            "format": "int64"
          },
          "marketTypeName": {
            "type": "string",
            "nullable": true
          },
          "betOn": {
            "type": "string",
            "nullable": true
          },
          "sides": {
            "type": "string",
            "nullable": true
          },
          "canDraw": {
            "type": "boolean",
            "nullable": true
          },
          "selectionCountType": {
            "type": "string",
            "nullable": true
          },
          "betRange": {
            "type": "string",
            "nullable": true
          },
          "inferredBetTypeName": {
            "type": "string",
            "nullable": true
          },
          "containsBetSubTypes": {
            "type": "boolean"
          },
          "betTypePriority": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Bet type metadata included with a matched article-widget bet offer."
      },
      "Betslip": {
        "type": "object",
        "properties": {
          "book": {
            "type": "string",
            "description": "The name of the sportsbook."
          },
          "deepLink": {
            "type": "string",
            "description": "A deep link URL to open this bet slip directly in the sportsbook app or website.",
            "nullable": true
          },
          "overallOdds": {
            "type": "integer",
            "description": "The combined odds for the entire bet slip in American format.",
            "format": "int64",
            "nullable": true
          },
          "legsRequested": {
            "type": "integer",
            "description": "The number of legs originally requested.",
            "format": "int32"
          },
          "legsMatched": {
            "type": "integer",
            "description": "The number of legs that were successfully matched to available offers.",
            "format": "int32"
          },
          "betslipBets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BetslipBet"
            },
            "description": "The individual bets that make up this bet slip.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A generated bet slip for a specific sportsbook, containing matched bets and a deep link."
      },
      "BetslipBet": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier for this bet offer.",
            "nullable": true
          },
          "player": {
            "type": "string",
            "description": "The player name, if this is a player prop bet.",
            "nullable": true
          },
          "event": {
            "type": "string",
            "description": "The event description.",
            "nullable": true
          },
          "odds": {
            "$ref": "#/components/schemas/BetOdds"
          },
          "betType": {
            "type": "string",
            "description": "The type of bet.",
            "nullable": true
          },
          "periodType": {
            "type": "string",
            "description": "The period the bet applies to.",
            "nullable": true
          },
          "isLive": {
            "type": "boolean",
            "description": "Whether this bet is for a live event."
          },
          "deepLink": {
            "$ref": "#/components/schemas/DeepLink"
          },
          "metadata": {
            "$ref": "#/components/schemas/BetMetadata"
          }
        },
        "additionalProperties": false,
        "description": "An individual bet within a bet slip."
      },
      "Bonus": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "createdOn": {
            "type": "string",
            "format": "date-time"
          },
          "createdBy": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "modifiedOn": {
            "type": "string",
            "format": "date-time"
          },
          "modifiedBy": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "promoId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "marketSourceId": {
            "type": "integer",
            "format": "int32"
          },
          "sourceId": {
            "type": "string",
            "nullable": true
          },
          "bonusTypeId": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "percentage": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "maxBet": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "maxBonus": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "minLegs": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "minTotalOdds": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "minLegOdds": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "requiresSgp": {
            "type": "boolean"
          },
          "requiresParlay": {
            "type": "boolean"
          },
          "requiresLive": {
            "type": "boolean"
          },
          "requiresOptIn": {
            "type": "boolean"
          },
          "leagueIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "sportIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "constraints": {
            "type": "string",
            "nullable": true
          },
          "parseConfidence": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "parseVersion": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "allText": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "BonusEvaluationLeg": {
        "type": "object",
        "properties": {
          "marketLineId": {
            "type": "integer",
            "format": "int64"
          },
          "marketSourceId": {
            "type": "integer",
            "format": "int32"
          },
          "price": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "marketId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "eventId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "leagueId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sportId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "betTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "live": {
            "type": "boolean"
          },
          "boostedPrice": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "boostedByBonusId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BonusEvaluationRequest": {
        "type": "object",
        "properties": {
          "marketLineIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "nullable": true
          },
          "stake": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "marketSourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BonusEvaluationResult": {
        "type": "object",
        "properties": {
          "legs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BonusEvaluationLeg"
            },
            "nullable": true
          },
          "missingMarketLineIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "nullable": true
          },
          "legCount": {
            "type": "integer",
            "format": "int32"
          },
          "isParlay": {
            "type": "boolean"
          },
          "isSameGameParlay": {
            "type": "boolean"
          },
          "hasLiveLeg": {
            "type": "boolean"
          },
          "mixedMarketSources": {
            "type": "boolean"
          },
          "combinedDecimalOdds": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "combinedAmericanOdds": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "applicable": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicableBonus"
            },
            "nullable": true
          },
          "excluded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExcludedBonus"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Book": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "logoUrl": {
            "type": "string",
            "nullable": true
          },
          "thumbnailUrl": {
            "type": "string",
            "nullable": true
          },
          "siteUrl": {
            "type": "string",
            "nullable": true
          },
          "dl": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "type": "integer",
            "format": "int64"
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "bookType": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ContentBase": {
        "type": "object",
        "additionalProperties": false,
        "description": "Base class for bet generation content. The concrete type depends on the content payload."
      },
      "CreatePublicApiKeyResponse": {
        "type": "object",
        "properties": {
          "apiKey": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "CreateSseSubscriptionRequest": {
        "type": "object",
        "properties": {
          "apiKey": {
            "type": "string"
          },
          "eventTypes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "leagueIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "eventIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            }
          },
          "marketTypeIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            }
          },
          "marketSourceIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            }
          },
          "betTypeIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            }
          },
          "projectionSourceIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            }
          },
          "includeSnapshot": {
            "type": "boolean",
            "description": "Send the current matching lines as `market_line_snapshot` chunks before live updates."
          }
        },
        "additionalProperties": false
      },
      "CreateSseSubscriptionResponse": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string"
          },
          "streamUrl": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "DeepLink": {
        "type": "object",
        "properties": {
          "sportsbook": {
            "type": "string",
            "description": "The name of the sportsbook.",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "The deep link URL that opens the sportsbook app or website with the bet pre-populated.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A deep link to a specific sportsbook for placing a bet."
      },
      "Deeplink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Optional deeplink identifier.",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "URL that opens the sportsbook app or website.",
            "nullable": true
          },
          "deeplinkStatus": {
            "type": "string",
            "description": "Status returned by the deeplink generator.",
            "nullable": true
          },
          "message": {
            "type": "string",
            "description": "Optional status or error message.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Legacy Gambly article-widget deeplink response."
      },
      "Event": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "integer",
            "format": "int64"
          },
          "seasonId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "seasonPartId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "leagueId": {
            "type": "integer",
            "format": "int32"
          },
          "statusId": {
            "type": "integer",
            "format": "int64"
          },
          "eventStart": {
            "type": "string",
            "format": "date-time"
          },
          "eventEnd": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "gameClock": {
            "type": "string",
            "nullable": true
          },
          "periodTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "overtimeNumber": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "tournamentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "eventTeams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EventTeam"
            },
            "nullable": true
          },
          "partnerEventData": {
            "$ref": "#/components/schemas/PartnerEventData"
          },
          "modifiedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EventBasicInfo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "eventStart": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EventCore": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "eventStart": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "eventEnd": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "overtimeNumber": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "dayOfWeek": {
            "type": "string",
            "nullable": true
          },
          "gameStatus": {
            "type": "string",
            "nullable": true
          },
          "gameClock": {
            "type": "string",
            "nullable": true
          },
          "periodTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TeamCore"
            }
          },
          "seasonPart": {
            "$ref": "#/components/schemas/GamblyB2BSeasonPart"
          },
          "seasonId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "seasonPartId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "leagueId": {
            "type": "integer",
            "format": "int32"
          },
          "leagueName": {
            "type": "string",
            "nullable": true
          },
          "gamblyOpticIdentifier": {
            "type": "string",
            "nullable": true
          },
          "gamblyOverrideStartTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Event metadata included with a matched article-widget bet offer."
      },
      "EventTeam": {
        "type": "object",
        "properties": {
          "teamId": {
            "type": "integer",
            "format": "int64"
          },
          "rotationNumber": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "score": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "sideIndex": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExcludedBonus": {
        "type": "object",
        "properties": {
          "bonusId": {
            "type": "integer",
            "format": "int64"
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "bonusTypeId": {
            "type": "string",
            "nullable": true
          },
          "reasons": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GamblyB2BErrorResponse": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string",
            "description": "Machine-readable error code."
          },
          "message": {
            "type": "string",
            "description": "Human-readable error message."
          },
          "details": {
            "type": "string",
            "description": "Detailed explanation of the error."
          },
          "requestId": {
            "type": "string",
            "description": "Request identifier for support and debugging."
          }
        },
        "additionalProperties": false,
        "description": "Standard error response returned by migrated Gambly B2B endpoints."
      },
      "GamblyB2BLeague": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "sportId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "gamblySeasonalPriority": {
            "type": "number",
            "format": "double"
          },
          "priority": {
            "type": "integer",
            "format": "int32"
          },
          "gamblyOpticIdentifier": {
            "type": "string",
            "nullable": true
          },
          "opticIdentifier": {
            "type": "string",
            "nullable": true
          },
          "gamblyIsCompositeLeague": {
            "type": "boolean"
          },
          "gamblyShouldIngestFromOptic": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "description": "League metadata included with a matched article-widget bet offer."
      },
      "GamblyB2BPeriodType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "nameShort": {
            "type": "string",
            "nullable": true
          },
          "leagues": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Period type metadata included with a matched article-widget bet offer."
      },
      "GamblyB2BSeasonPart": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "seasonId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "seasonPartType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "seasonPartStart": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "seasonPartEnd": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GenerateBetRequest": {
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "text",
              "image"
            ],
            "type": "string",
            "description": "The type of content being submitted. Use \"text\" for natural-language prompts or \"image\" for a bet slip image.",
            "example": "text"
          },
          "generateMobileLinks": {
            "type": "boolean",
            "description": "Whether to generate mobile-optimized deep links for sportsbook apps. Defaults to true.",
            "example": true
          },
          "content": {
            "$ref": "#/components/schemas/ContentBase"
          }
        },
        "additionalProperties": false,
        "description": "Request to generate a bet slip from text or image content."
      },
      "GenerateBetResponse": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "The initial status of the request, such as \"pending\" or \"error\"."
          },
          "details": {
            "type": "string",
            "description": "A human-readable summary of the submitted content."
          },
          "requestId": {
            "type": "string",
            "description": "Unique identifier for this request. Use this to poll GET /api/v1/bet/status/{guid}.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Response returned when a bet slip generation request is accepted."
      },
      "InGameFairPriceMarket": {
        "type": "object",
        "properties": {
          "marketId": {
            "type": "integer",
            "format": "int64"
          },
          "probabilities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InGameFairPriceProbability"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InGameFairPriceProbability": {
        "type": "object",
        "properties": {
          "price": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "method": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "points": {
            "type": "number",
            "format": "double"
          },
          "probability": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "InGameFairPriceSet": {
        "type": "object",
        "properties": {
          "sourceKey": {
            "type": "string",
            "nullable": true
          },
          "leagueId": {
            "type": "integer",
            "format": "int32"
          },
          "eventId": {
            "type": "integer",
            "format": "int64"
          },
          "outputId": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "statusReason": {
            "type": "string",
            "nullable": true
          },
          "producedUtc": {
            "type": "string",
            "format": "date-time"
          },
          "statusChangedUtc": {
            "type": "string",
            "format": "date-time"
          },
          "schemaVersion": {
            "type": "string",
            "nullable": true
          },
          "checkpointType": {
            "type": "string",
            "nullable": true
          },
          "periodNumber": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "markets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InGameFairPriceMarket"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ItemMeta": {
        "type": "object",
        "properties": {
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "League": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "fullName": {
            "type": "string",
            "nullable": true
          },
          "modifiedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Lineup": {
        "type": "object",
        "properties": {
          "leagueId": {
            "type": "integer",
            "format": "int32"
          },
          "date": {
            "type": "string",
            "nullable": true
          },
          "event": {
            "$ref": "#/components/schemas/EventBasicInfo"
          },
          "teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LineupTeam"
            },
            "nullable": true
          },
          "meta": {
            "$ref": "#/components/schemas/ItemMeta"
          }
        },
        "additionalProperties": false
      },
      "LineupStarter": {
        "type": "object",
        "properties": {
          "position": {
            "type": "string",
            "nullable": true
          },
          "player": {
            "$ref": "#/components/schemas/PersonBasicInfo"
          }
        },
        "additionalProperties": false
      },
      "LineupTeam": {
        "type": "object",
        "properties": {
          "side": {
            "type": "string",
            "nullable": true
          },
          "team": {
            "$ref": "#/components/schemas/TeamBasicInfo"
          },
          "lineupStatus": {
            "type": "string",
            "nullable": true
          },
          "confirmedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "starters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LineupStarter"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Market": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "eventId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "marketTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "betTypeId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "teamId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "sideIndex": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "periodTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "personId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "live": {
            "type": "boolean",
            "nullable": true
          },
          "seasonId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "sequenceNumber": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "betSubType": {
            "type": "string",
            "nullable": true
          },
          "sideName": {
            "type": "string",
            "nullable": true
          },
          "modifiedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MarketAlternateLine": {
        "type": "object",
        "properties": {
          "deepLink": {
            "type": "string",
            "nullable": true
          },
          "marketId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "marketLineId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "marketSourceId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "points": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "price": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sourcePrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "liquidity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sourceFormat": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "alternateNumber": {
            "type": "integer",
            "format": "int32"
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "sequenceNumber": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "freshnessExpiresAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "edge": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "disabled": {
            "type": "boolean"
          },
          "modifiedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "partnerOddsData": {
            "$ref": "#/components/schemas/PartnerOddsData"
          }
        },
        "additionalProperties": false
      },
      "MarketLine": {
        "type": "object",
        "properties": {
          "deepLink": {
            "type": "string",
            "nullable": true
          },
          "marketId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "marketLineId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "marketSourceId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "points": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "price": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sourcePrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "liquidity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sourceFormat": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "openerPoints": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "openerPrice": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "sequenceNumber": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "freshnessExpiresAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "edge": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "bestAltPrice": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "bestAltPoints": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "bestAltEdge": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "alternateLines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MarketAlternateLine"
            },
            "nullable": true
          },
          "disabled": {
            "type": "boolean"
          },
          "marketLineKey": {
            "type": "string",
            "nullable": true
          },
          "modifiedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "partnerOddsData": {
            "$ref": "#/components/schemas/PartnerOddsData"
          },
          "market": {
            "$ref": "#/components/schemas/Market"
          },
          "internalDx": {
            "$ref": "#/components/schemas/MarketLineUpdateDiagnostics"
          }
        },
        "additionalProperties": false
      },
      "MarketLineBonus": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "createdOn": {
            "type": "string",
            "format": "date-time"
          },
          "createdBy": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "modifiedOn": {
            "type": "string",
            "format": "date-time"
          },
          "modifiedBy": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "marketLineId": {
            "type": "integer",
            "format": "int64"
          },
          "bonusId": {
            "type": "integer",
            "format": "int64"
          },
          "boostedPrice": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "matchMethod": {
            "type": "string",
            "nullable": true
          },
          "matchConfidence": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MarketLineGroup": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "isLive": {
            "type": "boolean"
          },
          "eventStart": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "eventEnd": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "betTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "betSubType": {
            "type": "string",
            "nullable": true
          },
          "gameClock": {
            "type": "string",
            "nullable": true
          },
          "eventPeriodTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "overtimeNumber": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "eventName": {
            "type": "string",
            "nullable": true
          },
          "playerPosition": {
            "type": "string",
            "nullable": true
          },
          "tournamentName": {
            "type": "string",
            "nullable": true
          },
          "key": {
            "type": "string",
            "nullable": true
          },
          "eventTeams": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/EventTeam"
            },
            "description": "Dictionary with Int32 keys and PublicEventTeam values",
            "nullable": true
          },
          "sides": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/MarketLineGroupSide"
            },
            "description": "Dictionary with String keys and PublicMarketLineGroupSide values",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MarketLineGroupSide": {
        "type": "object",
        "properties": {
          "sideIndex": {
            "type": "integer",
            "format": "int32"
          },
          "sideName": {
            "type": "string",
            "nullable": true
          },
          "personId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "teamId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "marketSourceLines": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/MarketLine"
            },
            "description": "Dictionary with String keys and PublicMarketLine values",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MarketLineUpdateDiagnostics": {
        "type": "object",
        "properties": {
          "cid": {
            "type": "string",
            "format": "uuid"
          },
          "tx": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "ps": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MarketSource": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "logoUrl": {
            "type": "string",
            "nullable": true
          },
          "thumbnailUrl": {
            "type": "string",
            "nullable": true
          },
          "siteUrl": {
            "type": "string",
            "nullable": true
          },
          "isActive": {
            "type": "boolean"
          },
          "statusId": {
            "$ref": "#/components/schemas/MarketSourceStatusType"
          },
          "propsStatusId": {
            "$ref": "#/components/schemas/MarketSourceStatusType"
          },
          "futuresStatusId": {
            "$ref": "#/components/schemas/MarketSourceStatusType"
          },
          "disabledMarketTypeIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "modifiedOn": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "MarketSourceStatusType": {
        "enum": [
          "HighFrequency",
          "LowFrequency",
          "Offline"
        ],
        "type": "string"
      },
      "MarketType": {
        "enum": [
          "straight",
          "futures",
          "props"
        ],
        "type": "string"
      },
      "MarketTypeDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Odds": {
        "type": "object",
        "properties": {
          "odds": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/OddsLeague"
            },
            "description": "Dictionary with String keys and PublicOddsLeague values",
            "nullable": true
          },
          "lastUpdated": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false,
        "example": {
          "odds": {
            "nba": {
              "leagueId": 3,
              "periodTypes": {
                "game": {
                  "periodTypeId": 1,
                  "pregame": {
                    "eid940356:bt72:bst0:pt1:pregame": {
                      "eventId": 940356,
                      "isLive": false,
                      "eventStart": "2025-06-05T16:30:00Z",
                      "eventEnd": "2025-06-05T19:30:00Z",
                      "statusId": 1,
                      "betTypeId": 71,
                      "betSubType": "",
                      "gameClock": "00:00",
                      "overtimeNumber": 0,
                      "eventName": "Thunder Oklahoma City OKC @ Pacers Indiana IND",
                      "playerPosition": "",
                      "tournamentName": "",
                      "eventTeams": {
                        "0": {
                          "teamId": 75,
                          "rotationNumber": 501,
                          "sideIndex": 0,
                          "score": 0
                        },
                        "1": {
                          "teamId": 84,
                          "rotationNumber": 502,
                          "sideIndex": 0,
                          "score": 0
                        }
                      },
                      "sides": {
                        "si0:tid75": {
                          "sideIndex": 0,
                          "sideName": "",
                          "teamId": 75,
                          "personId": null,
                          "marketSourceLines": {
                            "91": {
                              "marketId": 43907422,
                              "marketLineId": 3181318560,
                              "marketSourceId": 91,
                              "points": 230.5,
                              "price": -110,
                              "sourcePrice": -110,
                              "sourceFormat": 1,
                              "statusId": 1,
                              "sequenceNumber": 1749141120194,
                              "edge": -0.0642,
                              "bestAltPrice": -110,
                              "bestAltPoints": 230.5,
                              "bestAltEdge": -0.0842,
                              "disabled": false,
                              "marketLineKey": "",
                              "modifiedOn": "2025-06-05T16:32:07.592989Z",
                              "alternateLines": [
                                {
                                  "marketId": 43907422,
                                  "marketLineId": 3181318560,
                                  "marketSourceId": 91,
                                  "alternateNumber": 1,
                                  "points": 231.5,
                                  "price": -120,
                                  "sourcePrice": -120,
                                  "statusId": 1,
                                  "sequenceNumber": 1749141120194,
                                  "edge": -0.0842,
                                  "modifiedOn": "2025-06-05T16:32:07.592989Z"
                                },
                                {
                                  "marketId": 43907422,
                                  "marketLineId": 3181318560,
                                  "marketSourceId": 91,
                                  "alternateNumber": 1,
                                  "points": 229.5,
                                  "price": -100,
                                  "sourcePrice": -100,
                                  "sourceFormat": 1,
                                  "statusId": 1,
                                  "sequenceNumber": 1749141120194,
                                  "edge": -0.042,
                                  "modifiedOn": "2025-06-05T16:32:07.592989Z"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "lastUpdated": 1734567890
        }
      },
      "OddsLeague": {
        "type": "object",
        "properties": {
          "leagueId": {
            "type": "integer",
            "format": "int32"
          },
          "periodTypes": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/OddsPeriodType"
            },
            "description": "Dictionary with String keys and PublicOddsPeriodType values",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OddsPeriodType": {
        "type": "object",
        "properties": {
          "periodTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "pregame": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/MarketLineGroup"
            },
            "description": "Dictionary with String keys and PublicMarketLineGroup values",
            "nullable": true
          },
          "live": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/MarketLineGroup"
            },
            "description": "Dictionary with String keys and PublicMarketLineGroup values",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PaginationInfo": {
        "type": "object",
        "properties": {
          "nextCursor": {
            "type": "string",
            "nullable": true
          },
          "previousCursor": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PartnerBooksResponse": {
        "type": "object",
        "properties": {
          "partner": {
            "$ref": "#/components/schemas/ArticleWidgetPartnerDto"
          },
          "books": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ArticleWidgetBookDto"
            },
            "description": "Sportsbooks available to article-widget requests."
          },
          "requestId": {
            "type": "string",
            "description": "Unique request identifier."
          }
        },
        "additionalProperties": false,
        "description": "Response containing partner information and available sportsbooks."
      },
      "PartnerEventData": {
        "type": "object",
        "properties": {
          "partnerKey1": {
            "$ref": "#/components/schemas/PartnerEventDataDetail"
          },
          "partnerKey2": {
            "$ref": "#/components/schemas/PartnerEventDataDetail"
          }
        },
        "additionalProperties": false
      },
      "PartnerEventDataDetail": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PartnerOddsData": {
        "type": "object",
        "properties": {
          "partnerKey1": {
            "$ref": "#/components/schemas/PartnerOddsDataDetail"
          }
        },
        "additionalProperties": false
      },
      "PartnerOddsDataDetail": {
        "type": "object",
        "properties": {
          "marketId": {
            "type": "string",
            "nullable": true
          },
          "selectionId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PartnerPlayerData": {
        "type": "object",
        "properties": {
          "partnerKey1": {
            "$ref": "#/components/schemas/PartnerPlayerDataDetail"
          },
          "partnerKey2": {
            "$ref": "#/components/schemas/PartnerPlayerDataDetail"
          }
        },
        "additionalProperties": false
      },
      "PartnerPlayerDataDetail": {
        "type": "object",
        "properties": {
          "playerId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PartnerTeamData": {
        "type": "object",
        "properties": {
          "partnerKey1": {
            "$ref": "#/components/schemas/PartnerTeamDataDetail"
          },
          "partnerKey2": {
            "$ref": "#/components/schemas/PartnerTeamDataDetail"
          }
        },
        "additionalProperties": false
      },
      "PartnerTeamDataDetail": {
        "type": "object",
        "properties": {
          "teamId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PeriodType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "abbreviation": {
            "type": "string",
            "nullable": true
          },
          "leagueIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Person": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "headshotUrl": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "jerseyNumber": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "priorityType": {
            "$ref": "#/components/schemas/PersonPriorityType"
          },
          "height": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "weight": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "position": {
            "type": "string",
            "nullable": true
          },
          "birthDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "leagueId": {
            "type": "integer",
            "format": "int64"
          },
          "teamId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "partnerPlayerData": {
            "$ref": "#/components/schemas/PartnerPlayerData"
          },
          "modifiedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PersonBasicInfo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PersonCore": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "headshotUrl": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "currentTeamId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "position": {
            "type": "string",
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "nullable": true
          },
          "gamblyPersonPriority": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "gamblyLongRangePersonPriority": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "gamblyOpticIdentifier": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Player metadata included with a matched article-widget bet offer."
      },
      "PersonPriorityType": {
        "enum": [
          "low",
          "normal",
          "high",
          "featured"
        ],
        "type": "string"
      },
      "PlayerNews": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "leagueId": {
            "type": "integer",
            "format": "int32"
          },
          "person": {
            "$ref": "#/components/schemas/PersonBasicInfo"
          },
          "team": {
            "$ref": "#/components/schemas/TeamBasicInfo"
          },
          "headline": {
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "injury": {
            "$ref": "#/components/schemas/PlayerNewsInjury"
          },
          "meta": {
            "$ref": "#/components/schemas/ItemMeta"
          }
        },
        "additionalProperties": false
      },
      "PlayerNewsInjury": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PlayerPercentToPlay": {
        "type": "object",
        "properties": {
          "leagueId": {
            "type": "integer",
            "format": "int32"
          },
          "person": {
            "$ref": "#/components/schemas/PersonBasicInfo"
          },
          "event": {
            "$ref": "#/components/schemas/EventBasicInfo"
          },
          "team": {
            "$ref": "#/components/schemas/TeamBasicInfo"
          },
          "percentToPlay": {
            "type": "number",
            "format": "double"
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "meta": {
            "$ref": "#/components/schemas/ItemMeta"
          }
        },
        "additionalProperties": false
      },
      "PopulatedBetOffer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique bet offer identifier.",
            "format": "int64"
          },
          "price": {
            "type": "number",
            "description": "American odds price.",
            "format": "double",
            "nullable": true
          },
          "generatedEdge": {
            "type": "number",
            "description": "Generated edge for this offer when available.",
            "format": "double",
            "nullable": true
          },
          "points": {
            "type": "number",
            "description": "Line or points value for spread and totals bets.",
            "format": "double",
            "nullable": true
          },
          "betOpeningPoints": {
            "type": "number",
            "description": "Opening line or points value when available.",
            "format": "double",
            "nullable": true
          },
          "betOpeningPrice": {
            "type": "number",
            "description": "Opening American odds when available.",
            "format": "double",
            "nullable": true
          },
          "sourceData": {
            "type": "string",
            "description": "Sportsbook/source payload used by Gambly deeplink generation.",
            "nullable": true
          },
          "feedUniqueId": {
            "type": "string",
            "description": "Optional upstream feed identifier.",
            "nullable": true
          },
          "leagueId": {
            "type": "integer",
            "description": "Legacy Gambly league identifier.",
            "format": "int32"
          },
          "leagueName": {
            "type": "string",
            "description": "League display name.",
            "nullable": true
          },
          "dl": {
            "type": "string",
            "description": "Sportsbook deep-link source data when available.",
            "nullable": true
          },
          "teamId": {
            "type": "integer",
            "description": "Team identifier for team-based markets.",
            "format": "int64",
            "nullable": true
          },
          "opponentId": {
            "type": "integer",
            "description": "Opponent team identifier when derivable from the event.",
            "format": "int64",
            "nullable": true
          },
          "altTeamId": {
            "type": "integer",
            "description": "Alternate team identifier stored on the legacy Gambly bet offer.",
            "format": "int64",
            "nullable": true
          },
          "playerId": {
            "type": "integer",
            "description": "Player identifier for player prop markets.",
            "format": "int64",
            "nullable": true
          },
          "eventId": {
            "type": "integer",
            "description": "Event identifier for event-based markets.",
            "format": "int64",
            "nullable": true
          },
          "bookId": {
            "type": "integer",
            "description": "Sportsbook identifier.",
            "format": "int64"
          },
          "periodTypeId": {
            "type": "integer",
            "description": "Period type identifier.",
            "format": "int64"
          },
          "betTypeId": {
            "type": "integer",
            "description": "Bet type identifier.",
            "format": "int64"
          },
          "betOfferTypeId": {
            "type": "integer",
            "description": "Legacy bet-offer type identifier. This mirrors betTypeId for current Gambly offers.",
            "format": "int64"
          },
          "betSubType": {
            "type": "string",
            "description": "Optional bet subtype for specific markets.",
            "nullable": true
          },
          "popularityScore": {
            "type": "number",
            "description": "Optional popularity score.",
            "format": "double",
            "nullable": true
          },
          "betSubTypeCleaned": {
            "type": "string",
            "description": "Cleaned bet subtype display text when the legacy parser can derive one.",
            "nullable": true
          },
          "alternateOffers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BetOfferBase"
            },
            "description": "Alternate lines attached to this offer.",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "description": "Offer timestamp in ISO-8601 format.",
            "nullable": true
          },
          "gamblyModifiedTimestamp": {
            "type": "string",
            "description": "Legacy Gambly modified timestamp in ISO-8601 format.",
            "nullable": true
          },
          "overUnder": {
            "type": "string",
            "description": "Over, under, or n/a selection side.",
            "nullable": true
          },
          "betIndex": {
            "type": "integer",
            "description": "Legacy bet side index.",
            "format": "int32"
          },
          "edge": {
            "type": "number",
            "description": "Edge value for this offer when available.",
            "format": "double",
            "nullable": true
          },
          "syntheticHold": {
            "type": "number",
            "description": "Synthetic hold value when available.",
            "format": "double",
            "nullable": true
          },
          "shouldGamblyBotIgnore": {
            "type": "boolean",
            "description": "Whether GamblyBot should ignore this offer."
          },
          "isLiveBet": {
            "type": "boolean",
            "description": "Whether this bet is live."
          },
          "isAltLine": {
            "type": "boolean",
            "description": "Whether this offer represents an alternate line."
          },
          "altBetId": {
            "type": "integer",
            "description": "Legacy alternate bet identifier.",
            "format": "int64"
          },
          "betEntityId": {
            "type": "string",
            "description": "Legacy bet entity identifier.",
            "nullable": true
          },
          "betEntityIdCleaned": {
            "type": "string",
            "description": "Cleaned legacy bet entity identifier.",
            "nullable": true
          },
          "isSGPEnabled": {
            "type": "boolean",
            "description": "Whether this offer is eligible for sportsbook SGP pricing."
          },
          "seasonPart": {
            "type": "string",
            "description": "Legacy season-part override.",
            "nullable": true
          },
          "offerGroupHash": {
            "type": "string",
            "description": "Legacy offer group hash.",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "description": "Legacy Gambly status identifier.",
            "format": "int32"
          },
          "alternateOffersJson": {
            "type": "string",
            "description": "Raw alternate-offers JSON from Gambly.",
            "nullable": true
          },
          "gamblyOverrideSeasonPart": {
            "type": "string",
            "description": "Raw Gambly season-part override.",
            "nullable": true
          },
          "gamblyOverrideIsEnabled": {
            "type": "boolean",
            "description": "Gambly override flag for offer visibility.",
            "nullable": true
          },
          "personalizationPlayerScore": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "personalizationLeagueScore": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "personalizationBetTypeScore": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "personalizationTeamScore": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "personalizationAltTeamScore": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "personalizationGlobalPopularityScore": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "book": {
            "$ref": "#/components/schemas/Book"
          },
          "event": {
            "$ref": "#/components/schemas/EventCore"
          },
          "team": {
            "$ref": "#/components/schemas/TeamCore"
          },
          "opponent": {
            "$ref": "#/components/schemas/TeamCore"
          },
          "player": {
            "$ref": "#/components/schemas/PersonCore"
          },
          "periodType": {
            "$ref": "#/components/schemas/GamblyB2BPeriodType"
          },
          "betOfferType": {
            "$ref": "#/components/schemas/BetTypeCore"
          },
          "league": {
            "$ref": "#/components/schemas/GamblyB2BLeague"
          }
        },
        "additionalProperties": false,
        "description": "Hydrated Gambly bet offer returned by the article-widget API."
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "Promo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "createdOn": {
            "type": "string",
            "format": "date-time"
          },
          "createdBy": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "modifiedOn": {
            "type": "string",
            "format": "date-time"
          },
          "modifiedBy": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "marketSourceId": {
            "type": "integer",
            "format": "int32"
          },
          "sourceId": {
            "type": "string",
            "nullable": true
          },
          "imageUrl": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "terms": {
            "type": "string",
            "nullable": true
          },
          "captureMetadata": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "pageUrl": {
            "type": "string",
            "nullable": true
          },
          "allText": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PropsTemplate": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": { }
            },
            "nullable": true
          },
          "lastUpdatedTimeUTC": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "userId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Season": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "leagueId": {
            "type": "integer",
            "format": "int64"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "seasonParts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SeasonPart"
            },
            "nullable": true
          },
          "modifiedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SeasonPart": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "seasonPartType": {
            "$ref": "#/components/schemas/SeasonPartType"
          }
        },
        "additionalProperties": false
      },
      "SeasonPartType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Team": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "abbreviation": {
            "type": "string",
            "nullable": true
          },
          "logoUrl": {
            "type": "string",
            "nullable": true
          },
          "leagueId": {
            "type": "integer",
            "format": "int32"
          },
          "divisionId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "divisionAbbreviation": {
            "type": "string",
            "nullable": true
          },
          "conferenceAbbreviation": {
            "type": "string",
            "nullable": true
          },
          "hexColor": {
            "type": "string",
            "nullable": true
          },
          "secondaryHexColor": {
            "type": "string",
            "nullable": true
          },
          "partnerTeamData": {
            "$ref": "#/components/schemas/PartnerTeamData"
          },
          "modifiedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TeamBasicInfo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TeamCore": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "abbreviation": {
            "type": "string",
            "nullable": true
          },
          "displayNameOverride": {
            "type": "string",
            "nullable": true
          },
          "preferredDisplayName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "logoUrl": {
            "type": "string",
            "nullable": true
          },
          "leagueId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "gamblySportId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "gamblyOpticIdentifier": {
            "type": "string",
            "nullable": true
          },
          "gamblyTeamPriority": {
            "type": "number",
            "format": "float",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Team metadata included with a matched article-widget bet offer."
      },
      "Tournament": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "leagueId": {
            "type": "integer",
            "format": "int64"
          },
          "seasonId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "surfaceType": {
            "type": "string",
            "nullable": true
          },
          "bestOf": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "modifiedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "name": "X-Api-Key",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "ApiKeyAuth": [ ]
    }
  ]
}