{"openapi":"3.1.0","info":{"title":"FootballQuants public sources","description":"Anonymous player evidence. Cite canonical_url and inspect scoring, season, freshness and limitations. Null is unavailable, never zero. HTML and Markdown counterparts use the same data.","version":"1.0.0"},"paths":{"/sources/players.json":{"get":{"tags":["public sources"],"summary":"Search free player research","operationId":"player_sources_sources_players_json_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":80,"default":"","title":"Q"}},{"name":"position","in":"query","required":false,"schema":{"anyOf":[{"enum":["QB","RB","WR","TE"],"type":"string"},{"type":"null"}],"title":"Position"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":1,"title":"Page"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"fmt","in":"query","required":false,"schema":{"enum":["half","ppr","std"],"type":"string","default":"half","title":"Fmt"}},{"name":"teams","in":"query","required":false,"schema":{"type":"integer","maximum":12,"minimum":10,"enum":[10,12],"default":12,"title":"Teams"}},{"name":"qb","in":"query","required":false,"schema":{"type":"integer","maximum":2,"minimum":1,"default":1,"title":"Qb"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerSourceSearch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sources/players/{sleeper_id}.json":{"get":{"tags":["public sources"],"summary":"Get a citable player evidence packet","operationId":"player_source_sources_players__sleeper_id__json_get","parameters":[{"name":"sleeper_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]{1,20}$","title":"Sleeper Id"}},{"name":"fmt","in":"query","required":false,"schema":{"enum":["half","ppr","std"],"type":"string","default":"half","title":"Fmt"}},{"name":"teams","in":"query","required":false,"schema":{"type":"integer","maximum":12,"minimum":10,"enum":[10,12],"default":12,"title":"Teams"}},{"name":"qb","in":"query","required":false,"schema":{"type":"integer","maximum":2,"minimum":1,"default":1,"title":"Qb"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlayerSource"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sources/reports.json":{"get":{"tags":["public sources"],"summary":"List dated FootballQuants research reports","operationId":"reports_index_sources_reports_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchIndex"}}}}}}},"/sources/reports/{slug}.json":{"get":{"tags":["public sources"],"summary":"Read a dated research report","operationId":"report_source_sources_reports__slug__json_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9-]{1,100}$","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchReport"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sources/leagues/{league_id}/{surface}.json":{"get":{"tags":["public sources"],"summary":"Read a bounded public league research surface","operationId":"league_source_sources_leagues__league_id___surface__json_get","parameters":[{"name":"league_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9]{1,25}$","title":"League Id"}},{"name":"surface","in":"path","required":true,"schema":{"enum":["draft-review","managers","game-environment","season-activity","value","projected-finish","head-to-head","history","sharpness","players"],"type":"string","title":"Surface"}},{"name":"season","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":2000},{"type":"null"}],"title":"Season"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeagueSource"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LeagueSource":{"properties":{"schema_version":{"type":"string","title":"Schema Version"},"canonical_url":{"type":"string","title":"Canonical Url"},"league_id":{"type":"string","title":"League Id"},"surface":{"type":"string","title":"Surface"},"retrieved_at":{"type":"string","title":"Retrieved At"},"freshness":{"type":"object","title":"Freshness"},"season_filter":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Season Filter"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total"},"result":{"type":"object","title":"Result"},"truncations":{"items":{"type":"object"},"type":"array","title":"Truncations","description":"Paths and original/returned counts for all bounded collections and clipped text. Do not interpret a truncated response as complete."},"limitations":{"items":{"type":"string"},"type":"array","title":"Limitations"},"source_url":{"type":"string","title":"Source Url"}},"type":"object","required":["schema_version","canonical_url","league_id","surface","retrieved_at","freshness","season_filter","limit","offset","total","result","truncations","limitations","source_url"],"title":"LeagueSource"},"PlayerSource":{"properties":{"schema_version":{"type":"string","title":"Schema Version"},"canonical_url":{"type":"string","title":"Canonical Url","description":"Stable HTML citation URL, including non-default scoring assumptions."},"retrieved_at":{"type":"string","title":"Retrieved At","description":"Response creation time. This is not source capture time or proof of freshness."},"season":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Season"},"week":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Week"},"fmt":{"anyOf":[{"type":"string","enum":["std","half","ppr"]},{"type":"null"}],"title":"Fmt"},"teams":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Teams"},"qb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Qb"},"generated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generated At","description":"Production model generation time when available, distinct from provider capture time."},"data_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Version"},"model_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Version"},"freshness":{"type":"object","title":"Freshness","description":"Overall and per-source status, known capture times and warnings. Unknown or stale evidence must not be described as current."},"sources":{"items":{"type":"object"},"type":"array","title":"Sources"},"limitations":{"items":{"type":"string"},"type":"array","title":"Limitations"},"metric_definitions":{"additionalProperties":{"type":"string"},"type":"object","title":"Metric Definitions","description":"Units, periods and interpretation limits for key player fields; xFP remains rushing/receiving half-PPR regardless of selected scoring."},"access":{"type":"object","title":"Access"},"player":{"type":"object","title":"Player","description":"One anonymous production player-board row. Paid-format values remain locked even if credentials accompany a public-source request."},"profile":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Profile","description":"Optional stored preseason write-up, captured news and injury context, each with its own dates and freshness. Null when unavailable."}},"additionalProperties":true,"type":"object","required":["schema_version","canonical_url","retrieved_at","freshness","sources","limitations","metric_definitions","access","player"],"title":"PlayerSource"},"PlayerSourceSearch":{"properties":{"schema_version":{"type":"string","title":"Schema Version"},"canonical_url":{"type":"string","title":"Canonical Url","description":"Stable HTML citation URL, including non-default scoring assumptions."},"retrieved_at":{"type":"string","title":"Retrieved At","description":"Response creation time. This is not source capture time or proof of freshness."},"season":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Season"},"week":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Week"},"fmt":{"anyOf":[{"type":"string","enum":["std","half","ppr"]},{"type":"null"}],"title":"Fmt"},"teams":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Teams"},"qb":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Qb"},"generated_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generated At","description":"Production model generation time when available, distinct from provider capture time."},"data_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Version"},"model_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Version"},"freshness":{"type":"object","title":"Freshness","description":"Overall and per-source status, known capture times and warnings. Unknown or stale evidence must not be described as current."},"sources":{"items":{"type":"object"},"type":"array","title":"Sources"},"limitations":{"items":{"type":"string"},"type":"array","title":"Limitations"},"metric_definitions":{"additionalProperties":{"type":"string"},"type":"object","title":"Metric Definitions","description":"Units, periods and interpretation limits for key player fields; xFP remains rushing/receiving half-PPR regardless of selected scoring."},"access":{"type":"object","title":"Access"},"query":{"type":"object","title":"Query"},"total":{"type":"integer","title":"Total"},"players":{"items":{"type":"object"},"type":"array","title":"Players","description":"Alphabetically paginated production board rows, each with a canonical_url. proj is full-season projected points; adp is draft position; value is model trade value; ly/ytd are observed production. Null is unavailable or access restricted, never zero."},"next":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next","description":"Next JSON page URL, or null when no further results."}},"additionalProperties":true,"type":"object","required":["schema_version","canonical_url","retrieved_at","freshness","sources","limitations","metric_definitions","access","query","total","players"],"title":"PlayerSourceSearch"},"ResearchIndex":{"properties":{"schema_version":{"type":"string","title":"Schema Version"},"canonical_url":{"type":"string","title":"Canonical Url"},"reports":{"items":{"type":"object"},"type":"array","title":"Reports"},"limitations":{"items":{"type":"string"},"type":"array","title":"Limitations"}},"type":"object","required":["schema_version","canonical_url","reports","limitations"],"title":"ResearchIndex"},"ResearchReport":{"properties":{"slug":{"type":"string","title":"Slug"},"title":{"type":"string","title":"Title"},"date":{"type":"string","title":"Date","description":"Original publication date, not a current-data timestamp."},"teaser":{"type":"string","title":"Teaser"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"body":{"type":"string","title":"Body","description":"Original checked-in report Markdown. Findings apply to its stated population and time period."},"canonical_url":{"type":"string","title":"Canonical Url"},"limitations":{"items":{"type":"string"},"type":"array","title":"Limitations"}},"additionalProperties":true,"type":"object","required":["slug","title","date","teaser","tags","body","canonical_url","limitations"],"title":"ResearchReport"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"servers":[{"url":"https://footballquants.com"}]}