addedInput schema / properties / snapshot / properties
Added value: +{
+ "budget": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "balance": {
+ "minimum": 0,
+ "title": "Balance",
+ "type": "integer"
+ },
+ "pending_amount": {
+ "anyOf": [
+ {
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "title": "Pending Amount"
+ },
+ "pending_moves": {
+ "anyOf": [
+ {
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "title": "Pending Moves"
+ },
+ "roster_moves_week": {
+ "default": 0,
+ "minimum": 0,
+ "title": "Roster Moves Week",
+ "type": "integer"
+ },
+ "spent_season": {
+ "default": 0,
+ "minimum": 0,
+ "title": "Spent Season",
+ "type": "integer"
+ },
+ "spent_week": {
+ "default": 0,
+ "minimum": 0,
+ "title": "Spent Week",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "balance"
+ ],
+ "title": "Budget",
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "Selected team's current FAAB balance, spending, and pending commitments. Acquisitions require known budget and move counts."
+ },
+ "league_id": {
+ "description": "Stable league identifier from the observation provider.",
+ "maxLength": 120,
+ "minLength": 1,
+ "title": "League Id",
+ "type": "string"
+ },
+ "phase": {
+ "default": "season",
+ "description": "Use draft for pick analysis or season for weekly roster analysis.",
+ "enum": [
+ "draft",
+ "season"
+ ],
+ "title": "Phase",
+ "type": "string"
+ },
+ "picks": {
+ "description": "Complete ordered draft history, starting at pick 1 with no gaps. Draft rosters must match these picks.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "pick_no": {
+ "maximum": 1280,
+ "minimum": 1,
+ "title": "Pick No",
+ "type": "integer"
+ },
+ "player_id": {
+ "title": "Player Id",
+ "type": "string"
+ },
+ "slot": {
+ "maximum": 32,
+ "minimum": 1,
+ "title": "Slot",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "pick_no",
+ "player_id",
+ "slot"
+ ],
+ "title": "Pick",
+ "type": "object"
+ },
+ "title": "Picks",
+ "type": "array"
+ },
+ "players": {
+ "description": "Unique available and rostered player identities. Projections must already use the league's scoring system.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "adp": {
+ "default": 999,
+ "exclusiveMinimum": 0,
+ "title": "Adp",
+ "type": "number"
+ },
+ "availability": {
+ "default": "UNKNOWN",
+ "title": "Availability",
+ "type": "string"
+ },
+ "bye": {
+ "anyOf": [
+ {
+ "maximum": 18,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "title": "Bye"
+ },
+ "eligible_positions": {
+ "items": {
+ "type": "string"
+ },
+ "title": "Eligible Positions",
+ "type": "array"
+ },
+ "id": {
+ "maxLength": 120,
+ "minLength": 1,
+ "title": "Id",
+ "type": "string"
+ },
+ "locked": {
+ "default": false,
+ "title": "Locked",
+ "type": "boolean"
+ },
+ "name": {
+ "maxLength": 160,
+ "minLength": 1,
+ "title": "Name",
+ "type": "string"
+ },
+ "position": {
+ "enum": [
+ "QB",
+ "RB",
+ "WR",
+ "TE",
+ "DST",
+ "K"
+ ],
+ "title": "Position",
+ "type": "string"
+ },
+ "projection": {
+ "anyOf": [
+ {
+ "minimum": 0,
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "Full-season fantasy projection. Draft data requires a value except for verified opponent picks retained as identities.",
+ "title": "Projection"
+ },
+ "team": {
+ "default": "",
+ "title": "Team",
+ "type": "string"
+ },
+ "weekly_ceiling": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "title": "Weekly Ceiling"
+ },
+ "weekly_floor": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "title": "Weekly Floor"
+ },
+ "weekly_projection": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "title": "Weekly Projection"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "position"
+ ],
+ "title": "Player",
+ "type": "object"
+ },
+ "maxItems": 10000,
+ "minItems": 1,
+ "title": "Players",
+ "type": "array"
+ },
+ "rules": {
+ "additionalProperties": false,
+ "description": "League roster rules. Draft rounds equal starter slots plus bench slots. Injured reserve slots are separate.",
+ "properties": {
+ "bench": {
+ "default": 5,
+ "maximum": 30,
+ "minimum": 0,
+ "title": "Bench",
+ "type": "integer"
+ },
+ "caps": {
+ "additionalProperties": {
+ "type": "integer"
+ },
+ "title": "Caps",
+ "type": "object"
+ },
+ "flex_eligible": {
+ "items": {
+ "type": "string"
+ },
+ "title": "Flex Eligible",
+ "type": "array"
+ },
+ "ir": {
+ "default": 2,
+ "maximum": 10,
+ "minimum": 0,
+ "title": "Ir",
+ "type": "integer"
+ },
+ "rounds": {
+ "default": 14,
+ "maximum": 40,
+ "minimum": 1,
+ "title": "Rounds",
+ "type": "integer"
+ },
+ "slot": {
+ "default": 1,
+ "maximum": 32,
+ "minimum": 1,
+ "title": "Slot",
+ "type": "integer"
+ },
+ "snake": {
+ "default": true,
+ "title": "Snake",
+ "type": "boolean"
+ },
+ "starters": {
+ "additionalProperties": {
+ "type": "integer"
+ },
+ "title": "Starters",
+ "type": "object"
+ },
+ "teams": {
+ "default": 14,
+ "maximum": 32,
+ "minimum": 2,
+ "title": "Teams",
+ "type": "integer"
+ }
+ },
+ "title": "Rules",
+ "type": "object"
+ },
+ "schema_version": {
+ "const": 1,
+ "default": 1,
+ "title": "Schema Version",
+ "type": "integer"
+ },
+ "season": {
+ "description": "Season year for this league context.",
+ "maximum": 2100,
+ "minimum": 2020,
+ "title": "Season",
+ "type": "integer"
+ },
+ "source": {
+ "additionalProperties": false,
+ "description": "Observation provenance and freshness. Timestamps require a UTC offset and must describe the actual observation.",
+ "properties": {
+ "browser": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "autopick_enabled": {
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "title": "Autopick Enabled"
+ },
+ "current_pick": {
+ "anyOf": [
+ {
+ "maximum": 1281,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "title": "Current Pick"
+ },
+ "draft_complete": {
+ "default": false,
+ "title": "Draft Complete",
+ "type": "boolean"
+ },
+ "league_id": {
+ "title": "League Id",
+ "type": "string"
+ },
+ "page_url": {
+ "maxLength": 2048,
+ "title": "Page Url",
+ "type": "string"
+ },
+ "team_id": {
+ "title": "Team Id",
+ "type": "string"
+ }
+ },
+ "required": [
+ "page_url",
+ "league_id",
+ "team_id"
+ ],
+ "title": "BrowserObservation",
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "complete": {
+ "default": true,
+ "description": "True only when the observation contains the complete required league context and draft history.",
+ "title": "Complete",
+ "type": "boolean"
+ },
+ "locks_scope": {
+ "description": "Extent of verified player locks. ESPN browser observations without this field default to selected_team.",
+ "enum": [
+ "league",
+ "selected_team"
+ ],
+ "title": "Locks Scope",
+ "type": "string"
+ },
+ "locks_verified": {
+ "default": false,
+ "description": "True only when current player lock states have been verified for locks_scope.",
+ "title": "Locks Verified",
+ "type": "boolean"
+ },
+ "notes": {
+ "items": {
+ "type": "string"
+ },
+ "title": "Notes",
+ "type": "array"
+ },
+ "observed_at": {
+ "description": "Timestamp when the source was observed, with a UTC offset.",
+ "format": "date-time",
+ "title": "Observed At",
+ "type": "string"
+ },
+ "projections_observed_at": {
+ "anyOf": [
+ {
+ "format": "date-time",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "Timestamp when projections were observed, with a UTC offset. Draft, lineup, and acquisition checks require a known fresh timestamp.",
+ "title": "Projections Observed At"
+ },
+ "provider": {
+ "maxLength": 80,
+ "minLength": 1,
+ "title": "Provider",
+ "type": "string"
+ },
+ "synthetic": {
+ "default": false,
+ "description": "True only for fictional observations. Demo actions also require provider='synthetic'.",
+ "title": "Synthetic",
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "provider",
+ "observed_at"
+ ],
+ "title": "Source",
+ "type": "object"
+ },
+ "team_id": {
+ "description": "Selected team's ID. Its draft slot must match rules.slot.",
+ "maxLength": 120,
+ "minLength": 1,
+ "title": "Team Id",
+ "type": "string"
+ },
+ "teams": {
+ "description": "Every league team, with unique IDs and draft slots. Roster IDs must reference known players with unique ownership.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "id": {
+ "maxLength": 120,
+ "minLength": 1,
+ "title": "Id",
+ "type": "string"
+ },
+ "lineup": {
+ "additionalProperties": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "title": "Lineup",
+ "type": "object"
+ },
+ "name": {
+ "maxLength": 160,
+ "minLength": 1,
+ "title": "Name",
+ "type": "string"
+ },
+ "reserve_ids": {
+ "items": {
+ "type": "string"
+ },
+ "title": "Reserve Ids",
+ "type": "array"
+ },
+ "roster_ids": {
+ "items": {
+ "type": "string"
+ },
+ "title": "Roster Ids",
+ "type": "array"
+ },
+ "slot": {
+ "maximum": 32,
+ "minimum": 1,
+ "title": "Slot",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "id",
+ "name",
+ "slot"
+ ],
+ "title": "Team",
+ "type": "object"
+ },
+ "maxItems": 32,
+ "minItems": 2,
+ "title": "Teams",
+ "type": "array"
+ },
+ "week": {
+ "default": 1,
+ "description": "Scoring week used by weekly projections and season actions.",
+ "maximum": 18,
+ "minimum": 1,
+ "title": "Week",
+ "type": "integer"
+ }
+}