{
  "openapi": "3.1.0",
  "info": {
    "title": "OpenHoops local API",
    "version": "0.2.0.dev57",
    "description": "OpenHoops private development57/HTTPv1, unchanged snapshotABI26/eventABI4/profile4/court3 and native Crowd.1. Public crowd contract version2 uses 0\u2013100 percent for per-launch settings, guarded live commands and readback. The API converts the native 0\u20131 Float32 values."
  },
  "servers": [
    {
      "url": "http://127.0.0.1:27614"
    }
  ],
  "security": [
    {
      "bearer": []
    }
  ],
  "components": {
    "securitySchemes": {
      "bearer": {
        "type": "http",
        "scheme": "bearer"
      }
    },
    "schemas": {
      "Stats": {
        "type": "object",
        "properties": {
          "points": {
            "type": "integer"
          },
          "ftm": {
            "type": "integer"
          },
          "fta": {
            "type": "integer"
          },
          "two_made": {
            "type": "integer"
          },
          "two_attempts": {
            "type": "integer"
          },
          "three_made": {
            "type": "integer"
          },
          "three_attempts": {
            "type": "integer"
          },
          "offensive_rebounds": {
            "type": "integer"
          },
          "defensive_rebounds": {
            "type": "integer"
          },
          "assists": {
            "type": "integer"
          },
          "steals": {
            "type": "integer"
          },
          "blocks": {
            "type": "integer"
          },
          "turnovers": {
            "type": "integer"
          },
          "fouls": {
            "type": "integer"
          },
          "fgm": {
            "type": "integer"
          },
          "fga": {
            "type": "integer"
          },
          "total_rebounds": {
            "type": "integer"
          },
          "plus_minus": {
            "type": "integer"
          },
          "seconds_played": {
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "points",
          "ftm",
          "fta",
          "two_made",
          "two_attempts",
          "three_made",
          "three_attempts",
          "offensive_rebounds",
          "defensive_rebounds",
          "assists",
          "steals",
          "blocks",
          "turnovers",
          "fouls",
          "fgm",
          "fga",
          "total_rebounds"
        ],
        "additionalProperties": true
      },
      "Player": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "side": {
            "enum": [
              "home",
              "away"
            ]
          },
          "slot": {
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "on_court": {
            "type": "boolean"
          },
          "stats": {
            "$ref": "#/components/schemas/Stats"
          },
          "position": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": [
                "number",
                "null"
              ]
            },
            "minItems": 3,
            "maxItems": 3
          },
          "court_contact_samples": {
            "type": "object",
            "description": "Four original geometry samples plus original boundary projection; not authoritative shot/violation adjudication.",
            "properties": {
              "points": {
                "type": "array",
                "minItems": 4,
                "maxItems": 4,
                "items": {
                  "type": "array",
                  "minItems": 3,
                  "maxItems": 3,
                  "items": {
                    "type": "number"
                  }
                }
              },
              "boundary_projection": {
                "type": "array",
                "minItems": 3,
                "maxItems": 3,
                "items": {
                  "type": "number"
                }
              },
              "boundary_projection_predicate_result": {
                "type": "integer"
              },
              "any_sample_on_or_beyond_boundary": {
                "type": "boolean"
              },
              "coordinate_space": {
                "const": "game_world_centimeters"
              },
              "authority": {
                "const": "original_four_point_transform_and_boundary_projection"
              },
              "legal_out_of_bounds_event_inferred": {
                "const": false
              },
              "shot_value_inferred": {
                "const": false
              }
            },
            "required": [
              "points",
              "boundary_projection",
              "boundary_projection_predicate_result",
              "any_sample_on_or_beyond_boundary",
              "coordinate_space",
              "authority",
              "legal_out_of_bounds_event_inferred",
              "shot_value_inferred"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "key",
          "side",
          "slot",
          "name",
          "on_court",
          "stats",
          "position"
        ],
        "additionalProperties": true
      },
      "Team": {
        "type": "object",
        "properties": {
          "stats": {
            "$ref": "#/components/schemas/Stats"
          },
          "box_score_team_fouls": {
            "type": "integer"
          },
          "team_only_turnovers": {
            "type": "integer"
          },
          "scoring_buckets": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer"
              },
              "regulation": {
                "type": "array",
                "items": {
                  "type": "integer"
                },
                "minItems": 4,
                "maxItems": 4
              },
              "overtime_combined": {
                "type": "integer"
              },
              "regulation_periods": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "enum": [
                        "half",
                        "overtime"
                      ]
                    },
                    "number": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "raw_period": {
                      "type": "integer",
                      "minimum": 1
                    },
                    "points": {
                      "type": "integer",
                      "minimum": 0
                    }
                  },
                  "required": [
                    "type",
                    "number",
                    "raw_period",
                    "points"
                  ],
                  "additionalProperties": false
                }
              }
            },
            "required": [
              "total",
              "regulation",
              "overtime_combined"
            ],
            "additionalProperties": true
          },
          "qualifying_fouls": {
            "type": "integer"
          },
          "last_two_minutes_qualifying_fouls": {
            "type": "integer"
          },
          "bonus_threshold_reached": {
            "type": "boolean"
          },
          "timeouts": {
            "type": "object",
            "properties": {
              "full": {
                "type": "integer"
              },
              "short": {
                "type": "integer"
              }
            },
            "required": [
              "full",
              "short"
            ],
            "additionalProperties": true
          },
          "bonus": {
            "type": "object",
            "properties": {
              "against_team": {
                "enum": [
                  "none",
                  "one_and_one",
                  "double_bonus"
                ]
              },
              "qualifying_fouls": {
                "type": "integer"
              },
              "one_and_one_threshold": {
                "type": "integer",
                "minimum": 1,
                "maximum": 2147483647
              },
              "double_bonus_threshold": {
                "type": "integer",
                "minimum": 1,
                "maximum": 2147483647
              },
              "authority": {
                "const": "qualifying_foul_counter"
              },
              "individual_foul_eligibility_inferred": {
                "const": false
              }
            },
            "required": [
              "against_team",
              "qualifying_fouls",
              "one_and_one_threshold",
              "double_bonus_threshold",
              "authority",
              "individual_foul_eligibility_inferred"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "stats",
          "box_score_team_fouls",
          "team_only_turnovers",
          "scoring_buckets",
          "qualifying_fouls",
          "last_two_minutes_qualifying_fouls",
          "bonus_threshold_reached",
          "timeouts"
        ],
        "additionalProperties": true
      },
      "Snapshot": {
        "type": "object",
        "properties": {
          "run_id": {
            "type": "string"
          },
          "source_sequence": {
            "type": "integer"
          },
          "source_tick_ms": {
            "type": "integer"
          },
          "adapter_errors": {
            "type": "integer"
          },
          "valid": {
            "type": "boolean"
          },
          "boundary": {
            "type": "string"
          },
          "coherence": {
            "type": "string"
          },
          "phase_code": {
            "type": "integer"
          },
          "raw_period": {
            "type": "integer"
          },
          "finished": {
            "type": "boolean"
          },
          "winner": {
            "enum": [
              "home",
              "away",
              null
            ]
          },
          "clocks": {
            "type": "object",
            "properties": {
              "game_seconds": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "shot_seconds": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "backcourt_seconds": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "game_timer_flags": {
                "type": "integer"
              },
              "shot_timer_flags": {
                "type": "integer"
              },
              "paused": {
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "replay_active": {
                "type": [
                  "boolean",
                  "null"
                ]
              }
            },
            "required": [
              "game_seconds",
              "shot_seconds",
              "backcourt_seconds",
              "game_timer_flags",
              "shot_timer_flags",
              "paused",
              "replay_active"
            ],
            "additionalProperties": true
          },
          "ball": {
            "type": "object",
            "properties": {
              "attached_player_key": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "legal_possession": {
                "type": "null"
              },
              "live": {
                "type": "null"
              },
              "holder": {
                "anyOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "player_key": {
                        "type": "string"
                      },
                      "team": {
                        "enum": [
                          "home",
                          "away"
                        ]
                      },
                      "authority": {
                        "const": "physical_ball_attachment"
                      }
                    },
                    "required": [
                      "player_key",
                      "team",
                      "authority"
                    ],
                    "additionalProperties": false
                  }
                ],
                "description": "Current on-court roster attachment only. Null is not a possession change."
              }
            },
            "required": [
              "attached_player_key",
              "legal_possession",
              "live"
            ],
            "additionalProperties": true
          },
          "rules": {
            "type": "object",
            "properties": {
              "bonus_selector": {
                "type": "integer"
              },
              "parameters": {
                "anyOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "authority": {
                        "const": "engine_parameter_snapshot"
                      },
                      "three_point_selector": {
                        "type": "integer",
                        "minimum": 0
                      },
                      "backcourt_selector": {
                        "type": "integer",
                        "minimum": 0
                      },
                      "period_duration_seconds": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "full_shot_clock_seconds": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "conditional_shot_clock_minimum_seconds": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "three_point_geometry": {
                        "type": "object",
                        "additionalProperties": false,
                        "properties": {
                          "units": {
                            "const": "game_units"
                          },
                          "arc_radius": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "corner_half_width": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "corner_start_oriented_z": {
                            "type": [
                              "number",
                              "null"
                            ]
                          },
                          "basket_oriented_z": {
                            "type": [
                              "number",
                              "null"
                            ]
                          }
                        },
                        "required": [
                          "units",
                          "arc_radius",
                          "corner_half_width",
                          "corner_start_oriented_z",
                          "basket_oriented_z"
                        ]
                      },
                      "backcourt_duration_seconds": {
                        "type": "number",
                        "minimum": 1,
                        "maximum": 120
                      }
                    },
                    "required": [
                      "authority",
                      "three_point_selector",
                      "backcourt_selector",
                      "period_duration_seconds",
                      "full_shot_clock_seconds",
                      "conditional_shot_clock_minimum_seconds",
                      "three_point_geometry"
                    ]
                  }
                ]
              },
              "profile": {
                "anyOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/RuleProfile"
                  }
                ]
              },
              "period": {
                "anyOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "enum": [
                          "half",
                          "overtime"
                        ]
                      },
                      "number": {
                        "type": "integer",
                        "minimum": 1
                      },
                      "raw_period": {
                        "type": "integer",
                        "minimum": 1
                      },
                      "at_boundary": {
                        "type": "boolean"
                      },
                      "authority": {
                        "const": "adapter_period_mapping"
                      }
                    },
                    "required": [
                      "type",
                      "number",
                      "raw_period",
                      "at_boundary",
                      "authority"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "media_timeouts": {
                "anyOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/MediaTimeouts"
                  }
                ]
              },
              "court": {
                "type": "object",
                "description": "NCAA court definition with adapter parameter alignment and explicit verification limits. Present only for college profile revision3+.",
                "additionalProperties": true,
                "properties": {
                  "definition_id": {
                    "const": "ncaa_mens_2026_27"
                  },
                  "definition_revision": {
                    "type": "integer",
                    "enum": [
                      2,
                      3
                    ]
                  },
                  "units": {
                    "const": "centimeters"
                  },
                  "geometry": {
                    "type": "object"
                  },
                  "alignment": {
                    "type": "object"
                  },
                  "texture_mapping": {
                    "type": "object"
                  }
                },
                "required": [
                  "definition_id",
                  "definition_revision",
                  "units",
                  "geometry",
                  "alignment",
                  "texture_mapping"
                ]
              },
              "court_observation": {
                "type": "object",
                "description": "Actual runtime court boundaries, physical basket reference and offensive direction; ABI14+.",
                "properties": {
                  "units": {
                    "const": "centimeters"
                  },
                  "boundary_half_width": {
                    "type": "number"
                  },
                  "boundary_half_length": {
                    "type": "number"
                  },
                  "legacy_basket_reference_oriented_z": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "offensive_direction": {
                    "enum": [
                      -1,
                      1,
                      null
                    ]
                  },
                  "authority": {
                    "const": "original_geometry_routines_on_game_thread"
                  }
                },
                "required": [
                  "units",
                  "boundary_half_width",
                  "boundary_half_length",
                  "legacy_basket_reference_oriented_z",
                  "offensive_direction",
                  "authority"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "bonus_selector"
            ],
            "additionalProperties": true,
            "description": "Recovered parameters, declared profile/logical period, media ownership and court observations where available. Full-rulebook and legal-ball-state certification are not implied."
          },
          "free_throws": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer"
              },
              "remaining": {
                "type": "integer"
              },
              "award": {
                "anyOf": [
                  {
                    "type": "null"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "kind_code": {
                        "type": "integer",
                        "minimum": 0
                      },
                      "kind_name": {
                        "enum": [
                          "shooting",
                          "non_shooting_bonus",
                          null,
                          "one_and_one",
                          "double_bonus"
                        ]
                      },
                      "shooter_player_key": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "authority": {
                        "const": "engine_free_throw_schedule"
                      }
                    },
                    "required": [
                      "kind_code",
                      "kind_name",
                      "shooter_player_key",
                      "authority"
                    ],
                    "additionalProperties": false
                  }
                ]
              }
            },
            "required": [
              "total",
              "remaining"
            ],
            "additionalProperties": true
          },
          "teams": {
            "type": "object",
            "properties": {
              "home": {
                "$ref": "#/components/schemas/Team"
              },
              "away": {
                "$ref": "#/components/schemas/Team"
              }
            },
            "required": [
              "home",
              "away"
            ],
            "additionalProperties": true
          },
          "players": {
            "type": "array",
            "maxItems": 40,
            "items": {
              "$ref": "#/components/schemas/Player"
            }
          },
          "roster_fingerprint": {
            "type": "string"
          },
          "health": {
            "type": "string"
          },
          "age_seconds": {
            "type": [
              "number",
              "null"
            ]
          },
          "match_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "timeline_revision": {
            "type": [
              "integer",
              "null"
            ]
          },
          "engine_event_boundary": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "sequence": {
                "type": "integer",
                "minimum": 0
              },
              "faults": {
                "type": "integer",
                "minimum": 0
              }
            },
            "required": [
              "sequence",
              "faults"
            ],
            "additionalProperties": false,
            "description": "ABI v3 ordered record watermark copied with this frame; null on older adapters."
          },
          "adapter_abi_version": {
            "type": "integer",
            "minimum": 1,
            "description": "Private producer layout revision, used for capability negotiation; not a cross-platform public ABI promise."
          },
          "presentation": {
            "type": "object",
            "properties": {
              "state": {
                "enum": [
                  "pregame",
                  "inbound",
                  "play",
                  "period_ending",
                  "halftime",
                  "between_periods",
                  "free_throw",
                  "stoppage",
                  "postgame",
                  "timeout",
                  null
                ]
              },
              "authority": {
                "const": "observed_engine_phase"
              },
              "scope": {
                "enum": [
                  "four_quarter_exhibition",
                  "college_research_exhibition"
                ]
              },
              "legal_ball_state": {
                "const": false
              }
            },
            "required": [
              "state",
              "authority",
              "scope",
              "legal_ball_state"
            ],
            "additionalProperties": false,
            "description": "Observed presentation cue, including timeout. Unknown phases remain null; pause/replay are independent; not legal ball state."
          },
          "settings": {
            "$ref": "#/components/schemas/GameSettings"
          },
          "options": {
            "$ref": "#/components/schemas/GameOptions"
          },
          "controllers": {
            "$ref": "#/components/schemas/ControllerSettings"
          },
          "cameras": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CameraState"
              },
              {
                "type": "null"
              }
            ]
          },
          "timeout": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/TimeoutContext"
              },
              {
                "type": "null"
              }
            ]
          },
          "launch": {
            "$ref": "#/components/schemas/LaunchState"
          },
          "startup": {
            "$ref": "#/components/schemas/StartupState"
          },
          "launch_rules": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LaunchRules"
              },
              {
                "type": "null"
              }
            ]
          },
          "startup_settings": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StartupSettingsState"
              }
            ]
          },
          "startup_camera": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StartupCameraState"
              }
            ]
          },
          "participation": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ParticipationState"
              }
            ]
          },
          "coaching": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CoachingState"
              },
              {
                "type": "null"
              }
            ]
          },
          "defense": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/DefenseState"
              }
            ]
          },
          "simulation_control": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SimulationControl"
              }
            ]
          },
          "substitutions": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Substitutions"
              },
              {
                "type": "null"
              }
            ]
          },
          "timeout_control": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TimeoutControl"
              },
              {
                "type": "null"
              }
            ]
          },
          "rotations": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Rotations"
              },
              {
                "type": "null"
              }
            ]
          },
          "input_devices": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/InputDevices"
              },
              {
                "type": "null"
              }
            ]
          },
          "roster_context": {
            "$ref": "#/components/schemas/RosterContextReference"
          },
          "legal_ball": {
            "$ref": "#/components/schemas/LegalBallState"
          },
          "rule_runtime": {
            "$ref": "#/components/schemas/RuleRuntime"
          },
          "extension_platform": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NativePlatform"
              },
              {
                "type": "null"
              }
            ]
          },
          "crowd": {
            "$ref": "#/components/schemas/CrowdState"
          },
          "crowd_appearance": {
            "$ref": "#/components/schemas/CrowdAppearanceState"
          }
        },
        "required": [
          "run_id",
          "source_sequence",
          "source_tick_ms",
          "adapter_errors",
          "valid",
          "boundary",
          "coherence",
          "phase_code",
          "raw_period",
          "finished",
          "winner",
          "clocks",
          "ball",
          "rules",
          "free_throws",
          "teams",
          "players",
          "roster_fingerprint",
          "health",
          "age_seconds",
          "match_id",
          "timeline_revision"
        ],
        "additionalProperties": true
      },
      "Bind": {
        "type": "object",
        "properties": {
          "match_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "client_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "run_id": {
            "type": "string"
          },
          "roster_fingerprint": {
            "type": "string"
          },
          "teams": {
            "type": "object",
            "properties": {
              "home": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "away": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              }
            },
            "required": [
              "home",
              "away"
            ],
            "additionalProperties": true
          },
          "players": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
            }
          },
          "ruleset": {
            "type": "object"
          },
          "roster_id": {
            "type": "string",
            "pattern": "^roster:[0-9a-f]{64}$"
          },
          "expected_names": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "metadata": {
            "type": "object"
          },
          "roster_context": {
            "$ref": "#/components/schemas/RosterContextSpec"
          }
        },
        "required": [
          "match_id",
          "client_id",
          "run_id",
          "roster_fingerprint",
          "teams",
          "players",
          "ruleset"
        ],
        "additionalProperties": true
      },
      "Resume": {
        "type": "object",
        "properties": {
          "client_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "run_id": {
            "type": "string"
          },
          "expected_revision": {
            "type": "integer"
          }
        },
        "required": [
          "client_id",
          "run_id",
          "expected_revision"
        ],
        "additionalProperties": true
      },
      "Abandon": {
        "type": "object",
        "properties": {
          "client_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          }
        },
        "required": [
          "client_id"
        ],
        "additionalProperties": true
      },
      "Lease": {
        "type": "object",
        "properties": {
          "client_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "ttl_seconds": {
            "type": "number",
            "minimum": 1,
            "maximum": 60,
            "default": 30
          },
          "lease_token": {
            "type": "string"
          }
        },
        "required": [
          "client_id"
        ],
        "additionalProperties": true
      },
      "Release": {
        "type": "object",
        "properties": {
          "lease_token": {
            "type": "string"
          }
        },
        "required": [
          "lease_token"
        ],
        "additionalProperties": true
      },
      "Ack": {
        "type": "object",
        "properties": {
          "consumer_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "match_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "revision": {
            "type": "integer",
            "minimum": 1
          }
        },
        "required": [
          "consumer_id",
          "match_id",
          "revision"
        ],
        "additionalProperties": true
      },
      "Command": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "command_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "client_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "lease_token": {
                "type": "string"
              },
              "run_id": {
                "type": "string"
              },
              "type": {
                "enum": [
                  "clock.set",
                  "shot_clock.set",
                  "slider.set",
                  "option.set",
                  "controller.set",
                  "camera.select",
                  "camera.set",
                  "preparation.set"
                ]
              },
              "expected_period": {
                "type": "integer"
              },
              "expected_value": {
                "oneOf": [
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 3600
                  },
                  {
                    "type": "string",
                    "pattern": "^(arena|playbook|team-row|uniform-row):[0-9]+$"
                  }
                ]
              },
              "value": {
                "oneOf": [
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 3600
                  },
                  {
                    "type": "string",
                    "pattern": "^(arena|playbook|team-row|uniform-row):[0-9]+$"
                  }
                ]
              },
              "setting_id": {
                "type": "string"
              },
              "side": {
                "enum": [
                  "user",
                  "cpu"
                ]
              },
              "player_slot": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9,
                "description": "Stored controller preference slot, not a roster player or connection state."
              },
              "camera_id": {
                "enum": [
                  "broadcast_stadium",
                  "broadcast_generic",
                  "beluba",
                  "parametric",
                  "press",
                  "2k",
                  "player_lock",
                  "turbo",
                  "action",
                  "action_2",
                  "nosebleeds",
                  "skybox",
                  "side",
                  "drive",
                  "showtime",
                  "wire",
                  "high",
                  "iso",
                  "dunk_cam",
                  "coach_view",
                  "broadcast_dynamic",
                  "drill_high",
                  "drill_2k",
                  "bench",
                  "horse",
                  "training_camp"
                ]
              },
              "expected_camera_id": {
                "enum": [
                  "broadcast_stadium",
                  "broadcast_generic",
                  "beluba",
                  "parametric",
                  "press",
                  "2k",
                  "player_lock",
                  "turbo",
                  "action",
                  "action_2",
                  "nosebleeds",
                  "skybox",
                  "side",
                  "drive",
                  "showtime",
                  "wire",
                  "high",
                  "iso",
                  "dunk_cam",
                  "coach_view",
                  "broadcast_dynamic",
                  "drill_high",
                  "drill_2k",
                  "bench",
                  "horse",
                  "training_camp"
                ]
              },
              "expected_revision": {
                "type": "integer",
                "minimum": 1
              }
            },
            "required": [
              "command_id",
              "client_id",
              "lease_token",
              "run_id",
              "type"
            ],
            "additionalProperties": true,
            "allOf": [
              {
                "if": {
                  "properties": {
                    "type": {
                      "const": "slider.set"
                    }
                  },
                  "required": [
                    "type"
                  ]
                },
                "then": {
                  "required": [
                    "setting_id",
                    "side"
                  ],
                  "properties": {
                    "value": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 100
                    },
                    "expected_value": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 100
                    }
                  }
                }
              },
              {
                "if": {
                  "properties": {
                    "type": {
                      "const": "option.set"
                    }
                  },
                  "required": [
                    "type"
                  ]
                },
                "then": {
                  "required": [
                    "setting_id"
                  ],
                  "properties": {
                    "value": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 100
                    },
                    "expected_value": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 100
                    }
                  }
                }
              },
              {
                "if": {
                  "properties": {
                    "type": {
                      "const": "controller.set"
                    }
                  },
                  "required": [
                    "type"
                  ]
                },
                "then": {
                  "required": [
                    "setting_id",
                    "player_slot"
                  ],
                  "properties": {
                    "value": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 100
                    },
                    "expected_value": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 100
                    }
                  }
                }
              },
              {
                "if": {
                  "properties": {
                    "type": {
                      "const": "camera.select"
                    }
                  }
                },
                "then": {
                  "required": [
                    "camera_id",
                    "expected_camera_id"
                  ]
                },
                "else": {
                  "required": [
                    "value",
                    "expected_value"
                  ]
                }
              },
              {
                "if": {
                  "properties": {
                    "type": {
                      "const": "camera.set"
                    }
                  }
                },
                "then": {
                  "required": [
                    "camera_id",
                    "setting_id"
                  ],
                  "properties": {
                    "setting_id": {
                      "enum": [
                        "zoom",
                        "height",
                        "key_zoom",
                        "reverse_angle",
                        "auto_flip",
                        "fixed_height"
                      ]
                    },
                    "value": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 10
                    },
                    "expected_value": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 10
                    }
                  }
                }
              },
              {
                "if": {
                  "properties": {
                    "type": {
                      "const": "preparation.set"
                    }
                  }
                },
                "then": {
                  "required": [
                    "expected_revision",
                    "setting_id",
                    "value",
                    "expected_value"
                  ],
                  "properties": {
                    "setting_id": {
                      "enum": [
                        "difficulty",
                        "game_speed",
                        "quarter_length_minutes",
                        "fatigue",
                        "injuries",
                        "arena",
                        "home_playbook",
                        "away_playbook",
                        "game_style",
                        "home_team",
                        "away_team",
                        "home_uniform",
                        "away_uniform"
                      ]
                    }
                  }
                },
                "else": {
                  "required": [
                    "expected_period"
                  ],
                  "properties": {
                    "value": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 3600
                    },
                    "expected_value": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 3600
                    }
                  }
                }
              }
            ]
          },
          {
            "type": "object",
            "properties": {
              "command_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "client_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "lease_token": {
                "type": "string"
              },
              "run_id": {
                "type": "string"
              },
              "type": {
                "enum": [
                  "roster.load",
                  "match.start"
                ]
              },
              "expected_revision": {
                "type": "integer",
                "minimum": 1
              },
              "expected_launch_revision": {
                "type": "integer",
                "minimum": 1
              },
              "catalog_id": {
                "type": "string"
              },
              "roster_id": {
                "type": "string",
                "pattern": "^roster:[0-9a-f]{64}$"
              }
            },
            "required": [
              "command_id",
              "client_id",
              "lease_token",
              "run_id",
              "type",
              "expected_revision",
              "expected_launch_revision",
              "catalog_id",
              "roster_id"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "type": {
                "const": "session.stop"
              },
              "command_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "client_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "lease_token": {
                "type": "string"
              },
              "run_id": {
                "type": "string"
              },
              "match_id": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "reason": {
                "enum": [
                  "cancelled",
                  "finished"
                ]
              }
            },
            "required": [
              "type",
              "command_id",
              "client_id",
              "lease_token",
              "run_id",
              "match_id",
              "reason"
            ],
            "additionalProperties": false
          },
          {
            "$ref": "#/components/schemas/CoachingCommand"
          },
          {
            "$ref": "#/components/schemas/DefensiveCommand"
          },
          {
            "$ref": "#/components/schemas/SimulationCommand"
          },
          {
            "$ref": "#/components/schemas/SubstitutionCommand"
          },
          {
            "type": "object",
            "properties": {
              "command_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "client_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "lease_token": {
                "type": "string"
              },
              "run_id": {
                "type": "string"
              },
              "expected_period": {
                "type": "integer",
                "minimum": 1,
                "maximum": 36
              },
              "expected_revision": {
                "type": "integer",
                "minimum": 1,
                "maximum": 4294967295
              },
              "type": {
                "const": "timeout.call"
              },
              "side": {
                "const": "home"
              },
              "kind": {
                "enum": [
                  "short",
                  "full"
                ]
              },
              "expected_remaining": {
                "type": "integer",
                "minimum": 1,
                "maximum": 64
              }
            },
            "required": [
              "command_id",
              "client_id",
              "lease_token",
              "run_id",
              "expected_period",
              "expected_revision",
              "type",
              "side",
              "kind",
              "expected_remaining"
            ],
            "additionalProperties": false,
            "allOf": [
              {
                "if": {
                  "properties": {
                    "kind": {
                      "const": "full"
                    }
                  }
                },
                "then": {
                  "properties": {
                    "expected_remaining": {
                      "maximum": 32
                    }
                  }
                }
              }
            ]
          },
          {
            "type": "object",
            "properties": {
              "command_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "client_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "lease_token": {
                "type": "string"
              },
              "run_id": {
                "type": "string"
              },
              "expected_period": {
                "type": "integer",
                "minimum": 1,
                "maximum": 36
              },
              "expected_revision": {
                "type": "integer",
                "minimum": 1,
                "maximum": 4294967295
              },
              "type": {
                "const": "timeout.call"
              },
              "side": {
                "const": "away"
              },
              "kind": {
                "enum": [
                  "short",
                  "full"
                ]
              },
              "expected_remaining": {
                "type": "integer",
                "minimum": 1,
                "maximum": 64
              }
            },
            "required": [
              "command_id",
              "client_id",
              "lease_token",
              "run_id",
              "expected_period",
              "expected_revision",
              "type",
              "side",
              "kind",
              "expected_remaining"
            ],
            "additionalProperties": false,
            "allOf": [
              {
                "if": {
                  "properties": {
                    "kind": {
                      "const": "full"
                    }
                  }
                },
                "then": {
                  "properties": {
                    "expected_remaining": {
                      "maximum": 32
                    }
                  }
                }
              }
            ]
          },
          {
            "type": "object",
            "properties": {
              "command_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "client_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "lease_token": {
                "type": "string"
              },
              "run_id": {
                "type": "string"
              },
              "expected_period": {
                "type": "integer",
                "minimum": 1,
                "maximum": 36
              },
              "expected_revision": {
                "type": "integer",
                "minimum": 1,
                "maximum": 4294967295
              },
              "type": {
                "const": "rotations.replace"
              },
              "entries": {
                "$ref": "#/components/schemas/RotationPlan"
              }
            },
            "required": [
              "command_id",
              "client_id",
              "lease_token",
              "run_id",
              "expected_period",
              "expected_revision",
              "type",
              "entries"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "command_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "client_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "lease_token": {
                "type": "string"
              },
              "run_id": {
                "type": "string"
              },
              "expected_period": {
                "type": "integer",
                "minimum": 1,
                "maximum": 36
              },
              "expected_revision": {
                "type": "integer",
                "minimum": 1,
                "maximum": 4294967295
              },
              "type": {
                "const": "rotations.cancel"
              }
            },
            "required": [
              "command_id",
              "client_id",
              "lease_token",
              "run_id",
              "expected_period",
              "expected_revision",
              "type"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "command_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "client_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "lease_token": {
                "type": "string"
              },
              "run_id": {
                "type": "string"
              },
              "type": {
                "const": "participation.assign"
              },
              "expected_launch_revision": {
                "type": "integer",
                "minimum": 1,
                "maximum": 4294967295
              },
              "expected_input_revision": {
                "type": "integer",
                "minimum": 1,
                "maximum": 4294967295
              },
              "assignments": {
                "type": "array",
                "minItems": 0,
                "maxItems": 10,
                "items": {
                  "$ref": "#/components/schemas/InputAssignment"
                }
              }
            },
            "required": [
              "command_id",
              "client_id",
              "lease_token",
              "run_id",
              "type",
              "expected_launch_revision",
              "expected_input_revision",
              "assignments"
            ],
            "additionalProperties": false
          },
          {
            "$ref": "#/components/schemas/CrowdCommand"
          },
          {
            "$ref": "#/components/schemas/CrowdAppearanceCommand"
          }
        ]
      },
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "details": {}
            },
            "required": [
              "code",
              "message",
              "details"
            ],
            "additionalProperties": true
          }
        },
        "required": [
          "error"
        ],
        "additionalProperties": true
      },
      "Event": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string"
          },
          "run_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "observed_at": {
            "type": "number"
          },
          "payload": {
            "type": "object"
          },
          "sequence": {
            "type": "integer"
          },
          "event_id": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "run_id",
          "observed_at",
          "payload",
          "sequence",
          "event_id"
        ],
        "additionalProperties": true,
        "allOf": [
          {
            "if": {
              "properties": {
                "type": {
                  "enum": [
                    "engine.record_stored",
                    "engine.record_capture_failed",
                    "stats.counter_changed",
                    "stats.counter_unchanged",
                    "stats.counter_unavailable",
                    "game.phase_changed",
                    "game.phase_reentered",
                    "stats.team_counter_changed",
                    "stats.team_counter_unchanged",
                    "stats.team_counter_unavailable"
                  ]
                }
              }
            },
            "then": {
              "properties": {
                "payload": {
                  "$ref": "#/components/schemas/EngineRecordPayload"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "substitution.request_changed"
                }
              }
            },
            "then": {
              "properties": {
                "payload": {
                  "$ref": "#/components/schemas/SubstitutionRequest"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "rotations.plan_changed"
                }
              }
            },
            "then": {
              "properties": {
                "payload": {
                  "$ref": "#/components/schemas/RotationPlanObservation"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "enum": [
                    "rules.ball_state",
                    "rules.decision",
                    "rules.lifecycle",
                    "rules.observation_context"
                  ]
                }
              }
            },
            "then": {
              "properties": {
                "payload": {
                  "$ref": "#/components/schemas/RuleEvent"
                }
              }
            }
          }
        ]
      },
      "EngineActor": {
        "type": "object",
        "properties": {
          "side": {
            "enum": [
              "home",
              "away"
            ]
          },
          "slot": {
            "type": "integer",
            "minimum": 0,
            "maximum": 19
          },
          "player_key": {
            "type": "string"
          },
          "external_player_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "external_team_id": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "side",
          "slot",
          "player_key"
        ],
        "additionalProperties": true
      },
      "CounterChange": {
        "type": "object",
        "properties": {
          "stat": {
            "enum": [
              "offensive_rebounds",
              "defensive_rebounds",
              "blocks",
              "assists",
              "steals",
              "personal_fouls",
              "turnovers",
              "free_throws_made",
              "three_pointers_made",
              "three_pointers_attempted",
              "two_pointers_made",
              "two_pointers_attempted",
              "free_throws_attempted",
              "points"
            ]
          },
          "operation": {
            "enum": [
              "credit",
              "retract"
            ]
          },
          "player": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EngineActor"
              },
              {
                "type": "null"
              }
            ]
          },
          "before": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 4294967295
          },
          "after": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 4294967295
          },
          "delta": {
            "type": [
              "integer",
              "null"
            ]
          },
          "changed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "wrapped": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "correction_of_event_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Retained durable public event ID of the original counter credit, when established by the original engine path. Null when absent or expired; not inferred by proximity."
          },
          "correction_of_record_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Original engine rebound-context source record selected by the observed correction path. This is not the original stat-credit event ID; may predate the current binding."
          },
          "correction_of_stat_record_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Run-scoped source record ID of an original rebound or block counter credit, established by the instrumented engine owner and correction context. May predate binding or retained public history."
          }
        },
        "required": [
          "stat",
          "operation",
          "player",
          "before",
          "after",
          "delta",
          "changed",
          "wrapped",
          "correction_of_event_id"
        ],
        "additionalProperties": true
      },
      "EngineRecordPayload": {
        "type": "object",
        "properties": {
          "source_event_id": {
            "type": "string"
          },
          "source_event_sequence": {
            "type": "integer"
          },
          "source_tick_ms": {
            "type": "integer"
          },
          "category_code": {
            "type": [
              "integer",
              "null"
            ]
          },
          "checkpoint_index": {
            "type": "integer"
          },
          "raw_period": {
            "type": "integer"
          },
          "phase_code": {
            "type": "integer"
          },
          "game_seconds": {
            "type": [
              "number",
              "null"
            ]
          },
          "shot_seconds": {
            "type": [
              "number",
              "null"
            ]
          },
          "engine_time": {
            "type": [
              "number",
              "null"
            ]
          },
          "engine_time_secondary": {
            "type": [
              "number",
              "null"
            ]
          },
          "capture_flags": {
            "type": "integer"
          },
          "authority": {
            "enum": [
              "engine_record_storage_completed",
              "player_counter_write_completed",
              "game_phase_transition_completed",
              "team_counter_write_completed"
            ]
          },
          "basketball_meaning": {
            "type": [
              "string",
              "null"
            ]
          },
          "stat_change": {
            "$ref": "#/components/schemas/CounterChange"
          },
          "violation_record": {
            "type": "object",
            "properties": {
              "kind_code": {
                "type": "integer"
              },
              "actors": {
                "type": "array",
                "minItems": 2,
                "maxItems": 2,
                "items": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/EngineActor"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "position": {
                "type": "array",
                "minItems": 3,
                "maxItems": 3,
                "items": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "offensive_direction": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "kind_name": {
                "enum": [
                  "eight_second_backcourt_violation",
                  "ten_second_backcourt_violation",
                  "double_dribble_violation",
                  "out_of_bounds",
                  "five_second_inbound_violation",
                  "shot_clock_violation",
                  "kicked_ball_violation",
                  "reach_in_foul",
                  "blocking_foul",
                  "shooting_foul",
                  null
                ]
              },
              "actor_roles": {
                "type": "array",
                "minItems": 2,
                "maxItems": 2,
                "items": {
                  "enum": [
                    "violating_player",
                    "foul_committer",
                    "fouled_player",
                    null
                  ]
                }
              },
              "role_authority": {
                "enum": [
                  "original_handler_credit_arguments",
                  "unresolved"
                ]
              },
              "detection_authority": {
                "const": "original_game_detection_not_independently_certified"
              }
            },
            "required": [
              "kind_code",
              "actors",
              "position",
              "offensive_direction"
            ],
            "additionalProperties": true
          },
          "phase_transition": {
            "type": "object",
            "properties": {
              "before": {
                "type": "integer"
              },
              "after": {
                "type": "integer"
              },
              "initialized": {
                "type": "boolean"
              },
              "changed": {
                "type": "boolean"
              }
            },
            "required": [
              "before",
              "after",
              "initialized",
              "changed"
            ],
            "additionalProperties": true
          },
          "team_stat_change": {
            "$ref": "#/components/schemas/TeamCounterChange"
          },
          "context": {
            "type": "object",
            "properties": {
              "status": {
                "enum": [
                  "bound",
                  "unbound"
                ]
              },
              "match_id": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "timeline_revision": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "reason": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "authority": {
                "const": "snapshot_bracketed_binding"
              }
            },
            "required": [
              "status",
              "match_id",
              "timeline_revision",
              "reason",
              "authority"
            ],
            "additionalProperties": false
          },
          "rebound_record": {
            "type": "object",
            "properties": {
              "player": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/EngineActor"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "offensive": {
                "type": "boolean"
              },
              "position": {
                "type": "array",
                "minItems": 3,
                "maxItems": 3,
                "items": {
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "offensive_direction": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "credit_source_event_id": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Run-scoped source record ID of the counter credit associated by the original rebound-credit owner. Absent when linkage is unavailable; not a public HTTP cursor."
              }
            },
            "required": [
              "player",
              "offensive",
              "position",
              "offensive_direction"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "source_event_id",
          "source_event_sequence",
          "source_tick_ms",
          "category_code",
          "checkpoint_index",
          "raw_period",
          "phase_code",
          "game_seconds",
          "shot_seconds",
          "engine_time",
          "engine_time_secondary",
          "capture_flags",
          "authority",
          "basketball_meaning"
        ],
        "additionalProperties": true
      },
      "EventPage": {
        "type": "object",
        "properties": {
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Event"
            }
          },
          "next_cursor": {
            "type": "string"
          },
          "latest_cursor": {
            "type": "string"
          }
        },
        "required": [
          "events",
          "next_cursor",
          "latest_cursor"
        ],
        "additionalProperties": true
      },
      "Receipt": {
        "type": "object",
        "properties": {
          "command_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "status": {
            "enum": [
              "accepted",
              "applied",
              "rejected",
              "indeterminate"
            ]
          },
          "type": {
            "type": "string"
          },
          "run_id": {
            "type": "string"
          },
          "observed_camera_id": {
            "enum": [
              "broadcast_stadium",
              "broadcast_generic",
              "beluba",
              "parametric",
              "press",
              "2k",
              "player_lock",
              "turbo",
              "action",
              "action_2",
              "nosebleeds",
              "skybox",
              "side",
              "drive",
              "showtime",
              "wire",
              "high",
              "iso",
              "dunk_cam",
              "coach_view",
              "broadcast_dynamic",
              "drill_high",
              "drill_2k",
              "bench",
              "horse",
              "training_camp",
              null
            ]
          },
          "observed_pending_player_key": {
            "type": [
              "string",
              "null"
            ]
          },
          "observed_pending_known": {
            "type": "boolean"
          },
          "completed": {
            "type": "boolean"
          },
          "meaning": {
            "type": "string"
          }
        },
        "required": [
          "command_id",
          "status",
          "type",
          "run_id"
        ],
        "additionalProperties": true
      },
      "Result": {
        "type": "object",
        "properties": {
          "match_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "timeline_revision": {
            "type": "integer"
          },
          "run_id": {
            "type": "string"
          },
          "winner": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "teams": {
            "type": "object",
            "properties": {
              "home": {
                "$ref": "#/components/schemas/Team"
              },
              "away": {
                "$ref": "#/components/schemas/Team"
              }
            },
            "required": [
              "home",
              "away"
            ],
            "additionalProperties": true
          },
          "players": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "external_id": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
                },
                "side": {
                  "enum": [
                    "home",
                    "away"
                  ]
                },
                "stats": {
                  "$ref": "#/components/schemas/Stats"
                }
              },
              "required": [
                "external_id",
                "side",
                "stats"
              ],
              "additionalProperties": true
            }
          },
          "ruleset": {
            "type": "object"
          },
          "source_executable_sha256": {
            "type": "string"
          },
          "completeness": {
            "type": "object",
            "properties": {
              "points_reconciled": {
                "type": "boolean"
              },
              "whole_match_events": {
                "type": "boolean"
              },
              "separate_overtime_periods": {
                "type": "boolean"
              },
              "started_mid_match": {
                "type": "boolean"
              },
              "rule_profile_verified": {
                "type": "boolean",
                "description": "Historical field name: follows the captured profile final_exports_verified (or original_game default). It describes reference export-profile evidence, not full basketball-rule or attached-binary certification. Read engine_rule_profile.full_rulebook_verified separately; inspect this result scoring_ledger and reconciliation flags."
              },
              "requested_rule_contract_intact": {
                "type": "boolean"
              }
            },
            "required": [
              "points_reconciled",
              "whole_match_events",
              "separate_overtime_periods",
              "started_mid_match"
            ],
            "additionalProperties": true
          },
          "finalization_reason": {
            "type": "string"
          },
          "result_revision": {
            "type": "integer"
          },
          "idempotency_key": {
            "type": "string"
          },
          "scoring_ledger": {
            "$ref": "#/components/schemas/ScoringLedger"
          },
          "engine_rule_profile": {
            "$ref": "#/components/schemas/RuleProfile",
            "description": "Profile declaration captured at finalization. Immutable historical result metadata is not rewritten when the broker evidence ledger changes. Use completeness and scoring_ledger to assess this result independently."
          },
          "metadata": {
            "type": "object"
          },
          "roster_context": {
            "$ref": "#/components/schemas/RosterContext"
          },
          "rule_extensions": {
            "$ref": "#/components/schemas/RuleResultContext"
          },
          "native_context": {
            "$ref": "#/components/schemas/NativeContextReceipt"
          },
          "match_assets": {
            "$ref": "#/components/schemas/NativeAssetStatus"
          }
        },
        "required": [
          "match_id",
          "timeline_revision",
          "run_id",
          "winner",
          "teams",
          "players",
          "ruleset",
          "source_executable_sha256",
          "completeness",
          "finalization_reason",
          "result_revision",
          "idempotency_key"
        ],
        "additionalProperties": true
      },
      "ResultPage": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Result"
            }
          }
        },
        "required": [
          "results"
        ],
        "additionalProperties": true
      },
      "Match": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "status": {
            "enum": [
              "active",
              "finalized",
              "review_required",
              "abandoned"
            ]
          },
          "client_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "run_id": {
            "type": "string"
          },
          "roster_fingerprint": {
            "type": "string"
          },
          "teams": {
            "type": "object",
            "properties": {
              "home": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "away": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              }
            },
            "required": [
              "home",
              "away"
            ],
            "additionalProperties": true
          },
          "players": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
            }
          },
          "ruleset": {
            "type": "object"
          },
          "timeline_revision": {
            "type": "integer"
          },
          "binding_request": {
            "$ref": "#/components/schemas/Bind"
          },
          "event_binding_boundary": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Snapshot event watermark at bind/resume; does not claim whole-match history."
          },
          "scoring_ledger": {
            "$ref": "#/components/schemas/ScoringLedger"
          },
          "metadata": {
            "type": "object"
          },
          "binding_phase_code": {
            "enum": [
              4,
              10
            ]
          },
          "started_before_opening_play": {
            "type": "boolean"
          },
          "roster_context": {
            "$ref": "#/components/schemas/RosterContext"
          },
          "binding_start_command": {
            "$ref": "#/components/schemas/RosterContextIdentifier"
          },
          "rule_epoch": {
            "type": "integer",
            "minimum": 0
          },
          "native_context": {
            "$ref": "#/components/schemas/NativeContextReceipt"
          },
          "match_assets": {
            "$ref": "#/components/schemas/NativeAssetStatus"
          }
        },
        "required": [
          "id",
          "status",
          "client_id",
          "run_id",
          "roster_fingerprint",
          "teams",
          "players",
          "ruleset",
          "timeline_revision",
          "binding_request"
        ],
        "additionalProperties": true
      },
      "TeamCounterChange": {
        "type": "object",
        "properties": {
          "stat": {
            "const": "team_only_turnovers"
          },
          "operation": {
            "const": "credit"
          },
          "before": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 4294967295
          },
          "after": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 4294967295
          },
          "delta": {
            "type": [
              "integer",
              "null"
            ]
          },
          "changed": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "wrapped": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "team": {
            "enum": [
              "home",
              "away",
              null
            ]
          },
          "external_team_id": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "stat",
          "operation",
          "before",
          "after",
          "delta",
          "changed",
          "wrapped",
          "team"
        ],
        "additionalProperties": true
      },
      "ScoringLedger": {
        "type": [
          "object",
          "null"
        ],
        "description": "Observed per-period scoring. Reconciled means continuous captured counter chains match all player points and engine regulation/combined OT buckets; not authoritative legal scoring. Partial ledgers must not be used as complete period exports.",
        "properties": {
          "status": {
            "enum": [
              "capturing",
              "partial",
              "reconciled"
            ]
          },
          "authority": {
            "const": "captured_point_counter_writes"
          },
          "timeline_revision": {
            "type": "integer",
            "minimum": 1
          },
          "baseline_complete": {
            "type": "boolean"
          },
          "separate_overtime_periods_reconciled": {
            "type": "boolean"
          },
          "record_count": {
            "type": "integer",
            "minimum": 0
          },
          "issues": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "periods": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "required": [
                "home",
                "away"
              ],
              "properties": {
                "home": {
                  "type": "integer"
                },
                "away": {
                  "type": "integer"
                }
              },
              "additionalProperties": false
            }
          },
          "baseline_points": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            }
          },
          "current_points": {
            "type": "object",
            "additionalProperties": {
              "type": "integer"
            }
          },
          "logical_periods": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "enum": [
                    "half",
                    "overtime"
                  ]
                },
                "number": {
                  "type": "integer",
                  "minimum": 1
                },
                "raw_period": {
                  "type": "integer",
                  "minimum": 1
                },
                "home": {
                  "type": "integer",
                  "minimum": 0
                },
                "away": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "required": [
                "type",
                "number",
                "raw_period",
                "home",
                "away"
              ],
              "additionalProperties": false
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "status",
          "authority",
          "timeline_revision",
          "baseline_complete",
          "record_count",
          "issues",
          "periods",
          "baseline_points",
          "current_points"
        ]
      },
      "SliderValues": {
        "type": "object",
        "additionalProperties": {
          "type": [
            "number",
            "null"
          ],
          "minimum": 0,
          "maximum": 100
        }
      },
      "GameSettings": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "authority": {
            "const": "original_slider_profile"
          },
          "preset_code": {
            "type": "integer"
          },
          "persistence": {
            "type": "string"
          },
          "values": {
            "type": "object",
            "properties": {
              "user": {
                "$ref": "#/components/schemas/SliderValues"
              },
              "cpu": {
                "$ref": "#/components/schemas/SliderValues"
              }
            },
            "required": [
              "user",
              "cpu"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "authority",
          "preset_code",
          "persistence",
          "values"
        ],
        "additionalProperties": false
      },
      "SettingsResponse": {
        "type": "object",
        "properties": {
          "run_id": {
            "type": "string"
          },
          "health": {
            "type": "string"
          },
          "settings": {
            "$ref": "#/components/schemas/GameSettings"
          },
          "catalog": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "options": {
            "$ref": "#/components/schemas/GameOptions"
          },
          "options_catalog": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "controllers": {
            "$ref": "#/components/schemas/ControllerSettings"
          },
          "controllers_catalog": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "cameras_catalog": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CameraDescriptor"
            },
            "minItems": 26,
            "maxItems": 26
          },
          "cameras": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CameraState"
              },
              {
                "type": "null"
              }
            ]
          },
          "coaching": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CoachingState"
              },
              {
                "type": "null"
              }
            ]
          },
          "coaching_catalog": {
            "type": "array",
            "maxItems": 9,
            "items": {
              "type": "object"
            }
          },
          "defense": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/DefenseState"
              }
            ]
          },
          "defense_catalog": {
            "type": "array",
            "maxItems": 6,
            "items": {
              "type": "object"
            }
          },
          "simulation_control": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SimulationControl"
              }
            ]
          },
          "simulation_control_catalog": {
            "type": "object"
          },
          "substitutions": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Substitutions"
              },
              {
                "type": "null"
              }
            ]
          },
          "substitution_catalog": {
            "type": "object"
          },
          "timeout_control": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TimeoutControl"
              },
              {
                "type": "null"
              }
            ]
          },
          "rotations": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Rotations"
              },
              {
                "type": "null"
              }
            ]
          },
          "timeout_catalog": {
            "type": "object"
          },
          "rotation_catalog": {
            "type": "object"
          }
        },
        "required": [
          "run_id",
          "health",
          "settings",
          "catalog"
        ],
        "additionalProperties": false
      },
      "GameOptions": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "authority": {
            "const": "engine_active_game_settings"
          },
          "persistence": {
            "const": "current_game_only"
          },
          "values": {
            "type": "object",
            "additionalProperties": {
              "type": [
                "integer",
                "null"
              ]
            }
          }
        },
        "required": [
          "authority",
          "persistence",
          "values"
        ],
        "additionalProperties": false
      },
      "ControllerSettings": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "authority": {
            "const": "engine_controller_profile"
          },
          "persistence": {
            "type": "string"
          },
          "slots": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "player_slot",
                "values"
              ],
              "properties": {
                "player_slot": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9,
                  "description": "Stored controller preference slot, not a roster player or connection state."
                },
                "values": {
                  "type": "object",
                  "additionalProperties": {
                    "type": [
                      "integer",
                      "null"
                    ],
                    "minimum": 0,
                    "maximum": 100
                  }
                }
              },
              "additionalProperties": false
            },
            "minItems": 10,
            "maxItems": 10
          }
        },
        "required": [
          "authority",
          "persistence",
          "slots"
        ],
        "additionalProperties": false
      },
      "CameraDescriptor": {
        "type": "object",
        "required": [
          "id",
          "label",
          "observed_in_exhibition_menu",
          "activation_supported",
          "activation_verification",
          "controls",
          "verification"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "observed_in_exhibition_menu": {
            "type": "boolean"
          },
          "activation_supported": {
            "type": "boolean"
          },
          "activation_verification": {
            "type": "string"
          },
          "verification": {
            "type": "string"
          },
          "controls": {
            "type": "array",
            "minItems": 6,
            "maxItems": 6,
            "items": {
              "type": "object",
              "required": [
                "id",
                "minimum",
                "maximum",
                "step",
                "default",
                "engine_configurable"
              ],
              "properties": {
                "id": {
                  "enum": [
                    "zoom",
                    "height",
                    "key_zoom",
                    "reverse_angle",
                    "auto_flip",
                    "fixed_height"
                  ]
                },
                "minimum": {
                  "type": "integer"
                },
                "maximum": {
                  "type": "integer"
                },
                "step": {
                  "const": 1
                },
                "default": {
                  "type": "integer"
                },
                "engine_configurable": {
                  "type": "boolean"
                }
              },
              "additionalProperties": false
            }
          }
        },
        "additionalProperties": false
      },
      "CameraState": {
        "type": "object",
        "properties": {
          "active_camera_id": {
            "enum": [
              "broadcast_stadium",
              "broadcast_generic",
              "beluba",
              "parametric",
              "press",
              "2k",
              "player_lock",
              "turbo",
              "action",
              "action_2",
              "nosebleeds",
              "skybox",
              "side",
              "drive",
              "showtime",
              "wire",
              "high",
              "iso",
              "dunk_cam",
              "coach_view",
              "broadcast_dynamic",
              "drill_high",
              "drill_2k",
              "bench",
              "horse",
              "training_camp",
              null
            ]
          },
          "menu_open": {
            "type": "boolean"
          },
          "values": {
            "type": "object",
            "properties": {
              "broadcast_stadium": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "broadcast_generic": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "beluba": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "parametric": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "press": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "2k": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "player_lock": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "turbo": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "action": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "action_2": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "nosebleeds": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "skybox": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "side": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "drive": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "showtime": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "wire": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "high": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "iso": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "dunk_cam": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "coach_view": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "broadcast_dynamic": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "drill_high": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "drill_2k": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "bench": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "horse": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              },
              "training_camp": {
                "type": "object",
                "properties": {
                  "zoom": {
                    "type": "integer"
                  },
                  "height": {
                    "type": "integer"
                  },
                  "key_zoom": {
                    "type": "integer"
                  },
                  "reverse_angle": {
                    "type": "integer"
                  },
                  "auto_flip": {
                    "type": "integer"
                  },
                  "fixed_height": {
                    "type": "integer"
                  }
                },
                "required": [
                  "zoom",
                  "height",
                  "key_zoom",
                  "reverse_angle",
                  "auto_flip",
                  "fixed_height"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "broadcast_stadium",
              "broadcast_generic",
              "beluba",
              "parametric",
              "press",
              "2k",
              "player_lock",
              "turbo",
              "action",
              "action_2",
              "nosebleeds",
              "skybox",
              "side",
              "drive",
              "showtime",
              "wire",
              "high",
              "iso",
              "dunk_cam",
              "coach_view",
              "broadcast_dynamic",
              "drill_high",
              "drill_2k",
              "bench",
              "horse",
              "training_camp"
            ],
            "additionalProperties": false
          },
          "authority": {
            "const": "engine_camera_configuration"
          },
          "persistence": {
            "const": "runtime_only"
          }
        },
        "required": [
          "active_camera_id",
          "menu_open",
          "values",
          "authority",
          "persistence"
        ],
        "additionalProperties": false
      },
      "TimeoutContext": {
        "type": "object",
        "properties": {
          "team": {
            "enum": [
              "home",
              "away",
              null
            ]
          },
          "kind": {
            "enum": [
              "short",
              "full",
              null
            ]
          },
          "seconds_remaining": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 180
          },
          "authority": {
            "const": "engine_timeout_context"
          }
        },
        "required": [
          "team",
          "kind",
          "seconds_remaining",
          "authority"
        ],
        "additionalProperties": false
      },
      "PreparationResponse": {
        "type": "object",
        "properties": {
          "run_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "health": {
            "enum": [
              "ready",
              "unavailable",
              "stale"
            ]
          },
          "configuration": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "properties": {
                  "revision": {
                    "type": "integer"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "difficulty": {
                        "type": "integer"
                      },
                      "game_speed": {
                        "type": "integer"
                      },
                      "quarter_length_minutes": {
                        "type": "integer"
                      },
                      "fatigue": {
                        "type": "integer"
                      },
                      "injuries": {
                        "type": "integer"
                      },
                      "arena": {
                        "type": "string"
                      },
                      "home_playbook": {
                        "type": "string"
                      },
                      "away_playbook": {
                        "type": "string"
                      },
                      "game_style": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 3
                      },
                      "home_team": {
                        "type": "string",
                        "pattern": "^team-row:[0-9]+$"
                      },
                      "away_team": {
                        "type": "string",
                        "pattern": "^team-row:[0-9]+$"
                      },
                      "home_uniform": {
                        "type": "string",
                        "pattern": "^uniform-row:[0-9]+$"
                      },
                      "away_uniform": {
                        "type": "string",
                        "pattern": "^uniform-row:[0-9]+$"
                      }
                    },
                    "required": [
                      "difficulty",
                      "game_speed",
                      "quarter_length_minutes",
                      "fatigue",
                      "injuries",
                      "arena",
                      "home_playbook",
                      "away_playbook"
                    ],
                    "additionalProperties": true
                  },
                  "game_style_code": {
                    "type": "integer",
                    "description": "Legacy raw options-profile code; not the Game Style menu selection. Use values.game_style on ABI15."
                  },
                  "teams": {
                    "type": "object",
                    "properties": {
                      "home": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "name"
                        ],
                        "additionalProperties": true
                      },
                      "away": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "name"
                        ],
                        "additionalProperties": true
                      }
                    },
                    "required": [
                      "home",
                      "away"
                    ],
                    "additionalProperties": true
                  },
                  "arenas": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "writable": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "id",
                        "label",
                        "writable"
                      ],
                      "additionalProperties": true
                    }
                  },
                  "playbooks": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        },
                        "writable": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "id",
                        "label",
                        "writable"
                      ],
                      "additionalProperties": true
                    }
                  },
                  "catalog_id": {
                    "type": "string"
                  },
                  "scope": {
                    "const": "exhibition_configuration_before_simulation"
                  },
                  "persistence": {
                    "const": "runtime_only"
                  },
                  "launch_supported": {
                    "type": "boolean",
                    "description": "ABI16 native Start available; inspect /v1/launch for current eligibility"
                  },
                  "catalog_revision": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "team_count": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "uniform_count": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "team_graphics_ids": {
                    "type": "object",
                    "properties": {
                      "home": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 65535
                      },
                      "away": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 65535
                      }
                    },
                    "required": [
                      "home",
                      "away"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "revision",
                  "values",
                  "game_style_code",
                  "teams",
                  "arenas",
                  "playbooks",
                  "catalog_id",
                  "scope",
                  "persistence",
                  "launch_supported"
                ],
                "additionalProperties": true
              }
            ]
          },
          "catalog": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "minimum": {
                  "type": "integer"
                },
                "maximum": {
                  "type": "integer"
                },
                "step": {
                  "type": "integer"
                }
              },
              "required": [
                "id",
                "label",
                "minimum",
                "maximum",
                "step"
              ],
              "additionalProperties": true
            }
          }
        },
        "required": [
          "run_id",
          "health",
          "configuration",
          "catalog"
        ],
        "additionalProperties": true
      },
      "RuleProfile": {
        "type": "object",
        "properties": {
          "id": {
            "enum": [
              "original_game",
              "openhoops_college_research"
            ]
          },
          "revision": {
            "enum": [
              1,
              2,
              3,
              4
            ]
          },
          "authority": {
            "const": "adapter_configuration"
          },
          "status": {
            "const": "experimental"
          },
          "regulation_periods": {
            "const": 2
          },
          "regulation_period_type": {
            "const": "half"
          },
          "regulation_raw_periods": {
            "const": [
              1,
              3
            ]
          },
          "half_duration_seconds": {
            "type": "number",
            "minimum": 60,
            "maximum": 1200
          },
          "overtime_duration_seconds": {
            "enum": [
              60,
              120,
              180,
              240,
              300
            ]
          },
          "overtime_policy": {
            "enum": [
              "ceil_half_minutes_divided_by_four",
              "extension_frozen"
            ]
          },
          "elapsed_seconds": {
            "type": "number"
          },
          "full_rulebook_verified": {
            "const": false,
            "description": "Always false: the scoped OpenHoops college mode and user exclusions are not certification of the complete NCAA rulebook."
          },
          "final_exports_verified": {
            "type": "boolean",
            "description": "Reference export-scenario evidence for this profile revision in the current broker. True for newly decoded revision4 after natural36ct OT/player-team/ledger/independent-consumer checks. Does not certify the attached DLL or a particular match, whole-match events, or all rules. Stored revision4 recordings/results with false remain valid and immutable; revisions1\u20133 remain false."
          },
          "incomplete": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Verification limits rather than a list of wholly unimplemented features. Revision4 lists rare live injury/rim recovery/held-ball checks, exhaustive airborne/boundary semantics and the deferred uninstrumented-production full-match smoke. Earlier revisions preserve their historical coarse labels. These strings are descriptive, not capability IDs."
          },
          "configuration_variant": {
            "const": "extension_modified"
          },
          "extension_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "extension_integrity": {
            "enum": [
              "applied",
              "degraded"
            ]
          }
        },
        "required": [
          "id",
          "revision",
          "authority"
        ],
        "additionalProperties": false,
        "description": "Adapter configuration, not a ruleset command or full NCAA certification. Absent on ABI1\u201311; null when unavailable. Current college revision4 has verified reference regulation/OT export scenarios. Historical stored results retain their original declarations.",
        "allOf": [
          {
            "if": {
              "properties": {
                "id": {
                  "const": "original_game"
                }
              },
              "required": [
                "id"
              ]
            },
            "then": {
              "properties": {
                "revision": {
                  "const": 1
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "id": {
                  "const": "openhoops_college_research"
                },
                "revision": {
                  "enum": [
                    1,
                    2,
                    3
                  ]
                }
              },
              "required": [
                "id",
                "revision"
              ]
            },
            "then": {
              "properties": {
                "final_exports_verified": {
                  "const": false
                }
              }
            }
          }
        ]
      },
      "MediaTimeouts": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "authority": {
            "const": "openhoops_media_scheduler"
          },
          "status": {
            "const": "experimental"
          },
          "enabled": {
            "type": "boolean"
          },
          "scheduled_breaks_per_half": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4
          },
          "marks_seconds_remaining": {
            "type": "array",
            "items": {
              "type": "number",
              "minimum": 0
            },
            "maxItems": 4
          },
          "shortened_half_policy": {
            "enum": [
              "proportional_spacing",
              "fixed_clock_marks"
            ]
          },
          "duration_seconds": {
            "const": 60
          },
          "state_raw_period": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 64
          },
          "served_mark_numbers": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "maximum": 4
            },
            "uniqueItems": true
          },
          "active_break": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "reason": {
                    "enum": [
                      "scheduled_mark",
                      "first_team_timeout",
                      "injury_timeout"
                    ]
                  },
                  "scheduled_mark_number": {
                    "type": [
                      "integer",
                      "null"
                    ],
                    "minimum": 1,
                    "maximum": 4
                  },
                  "counts_against_team_allowance": {
                    "type": "boolean"
                  },
                  "seconds_remaining": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "minimum": 0,
                    "maximum": 180
                  }
                },
                "required": [
                  "reason",
                  "scheduled_mark_number",
                  "counts_against_team_allowance",
                  "seconds_remaining"
                ]
              }
            ]
          },
          "complete_rulebook_verified": {
            "const": false
          },
          "full_length_breaks_per_half": {
            "enum": [
              0,
              3,
              4
            ]
          }
        },
        "required": [
          "authority",
          "status",
          "enabled",
          "scheduled_breaks_per_half",
          "marks_seconds_remaining",
          "shortened_half_policy",
          "duration_seconds",
          "state_raw_period",
          "served_mark_numbers",
          "active_break",
          "complete_rulebook_verified"
        ]
      },
      "PreparationCatalogResponse": {
        "type": "object",
        "properties": {
          "run_id": {
            "type": "string"
          },
          "revision": {
            "type": "integer",
            "minimum": 1
          },
          "catalog_id": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "teams",
              "uniforms"
            ]
          },
          "start": {
            "type": "integer",
            "minimum": 0
          },
          "total": {
            "type": "integer",
            "minimum": 0
          },
          "items": {
            "type": "array",
            "maxItems": 64,
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "row": {
                  "type": "integer",
                  "minimum": 0
                },
                "record_id": {
                  "type": "integer"
                },
                "graphics_id": {
                  "type": "integer"
                },
                "writable": {
                  "type": "boolean"
                },
                "away": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "label": {
                  "type": "string"
                },
                "resource": {
                  "type": "string"
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "row",
                "record_id",
                "graphics_id",
                "writable",
                "away",
                "label",
                "resource"
              ]
            }
          },
          "next_start": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          }
        },
        "required": [
          "run_id",
          "revision",
          "catalog_id",
          "kind",
          "start",
          "total",
          "items",
          "next_start"
        ],
        "additionalProperties": false
      },
      "RosterMetadata": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^roster:[0-9a-f]{64}$"
          },
          "sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          },
          "bytes": {
            "enum": [
              2672672,
              16777248
            ]
          },
          "schema": {
            "const": "nba2k14_pc_ros"
          },
          "expanded": {
            "type": "boolean"
          },
          "teams": {
            "type": "integer",
            "minimum": 2,
            "maximum": 2048
          },
          "players": {
            "type": "integer",
            "minimum": 1,
            "maximum": 65535
          },
          "uniforms": {
            "type": "integer",
            "minimum": 1,
            "maximum": 65535
          },
          "arenas": {
            "type": "integer",
            "minimum": 1,
            "maximum": 128
          },
          "playbooks": {
            "type": "integer",
            "minimum": 1,
            "maximum": 128
          },
          "native_loaded": {
            "const": false
          }
        },
        "required": [
          "id",
          "sha256",
          "bytes",
          "schema",
          "expanded",
          "teams",
          "players",
          "uniforms",
          "arenas",
          "playbooks",
          "native_loaded"
        ],
        "additionalProperties": false
      },
      "RosterImport": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Absolute local Windows ROS path, read without modifying the source"
          },
          "sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          }
        },
        "required": [
          "path",
          "sha256"
        ],
        "additionalProperties": false
      },
      "LaunchState": {
        "type": "object",
        "properties": {
          "available": {
            "type": "boolean"
          },
          "revision": {
            "type": "integer",
            "minimum": 0
          },
          "phase": {
            "enum": [
              "unavailable",
              "ready",
              "loading",
              "active",
              "other_menu",
              "startup",
              "unknown"
            ]
          },
          "menu": {
            "enum": [
              "home",
              "team_selection",
              null
            ]
          },
          "catalog_revision": {
            "type": "integer",
            "minimum": 0
          },
          "team_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2048
          },
          "player_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 65535
          },
          "uniform_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 65535
          },
          "roster_id": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "type": "string",
                "pattern": "^roster:[0-9a-f]{64}$"
              }
            ]
          }
        },
        "required": [
          "available",
          "revision",
          "phase",
          "menu",
          "catalog_revision",
          "team_count",
          "player_count",
          "uniform_count",
          "roster_id"
        ],
        "additionalProperties": false
      },
      "LaunchResponse": {
        "type": "object",
        "properties": {
          "run_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "health": {
            "enum": [
              "ready",
              "unavailable",
              "stale"
            ]
          },
          "state": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/LaunchState"
              }
            ]
          },
          "bootstrap": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "type": "object",
                "properties": {
                  "status": {
                    "enum": [
                      "starting",
                      "ready",
                      "failed"
                    ]
                  },
                  "game_pid": {
                    "type": "integer"
                  },
                  "acknowledgements": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "reason": {
                    "type": "string"
                  },
                  "mode": {
                    "enum": [
                      "native_managed"
                    ]
                  }
                },
                "required": [
                  "status",
                  "game_pid",
                  "acknowledgements"
                ],
                "additionalProperties": false
              }
            ]
          },
          "startup": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StartupState"
              }
            ]
          },
          "configuration": {
            "type": "object",
            "properties": {
              "requested": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/LaunchConfiguration"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "effective": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/LaunchRules"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "verified": {
                "type": [
                  "boolean",
                  "null"
                ]
              }
            },
            "required": [
              "requested",
              "effective",
              "verified"
            ],
            "additionalProperties": false
          },
          "startup_settings": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StartupSettingsState"
              }
            ]
          },
          "startup_camera": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StartupCameraState"
              }
            ]
          },
          "participation": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ParticipationState"
              }
            ]
          },
          "rotations": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/Rotations"
              },
              {
                "type": "null"
              }
            ]
          },
          "rule_runtime": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RuleRuntime"
              },
              {
                "type": "null"
              }
            ]
          },
          "extension_platform": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NativePlatform"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "run_id",
          "health",
          "state",
          "bootstrap"
        ],
        "additionalProperties": false
      },
      "StartupState": {
        "type": "object",
        "properties": {
          "available": {
            "type": "boolean"
          },
          "managed": {
            "type": "boolean"
          },
          "loading_presented": {
            "type": "boolean"
          },
          "match_revealed": {
            "type": "boolean"
          }
        },
        "required": [
          "available",
          "managed",
          "loading_presented",
          "match_revealed"
        ],
        "additionalProperties": false
      },
      "LoadingScreenConfiguration": {
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "const": 1
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "subtitle": {
            "type": "string",
            "minLength": 1,
            "maxLength": 160
          },
          "background_color": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$"
          },
          "text_color": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$"
          },
          "muted_color": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$"
          },
          "accent_color": {
            "type": "string",
            "pattern": "^#[0-9a-fA-F]{6}$"
          },
          "logo_path": {
            "type": "string",
            "description": "Absolute local PNG, JPEG or BMP path, at most 16 MiB. Private immutable copy; decoded dimensions at most 8192 by 4320."
          },
          "background_path": {
            "type": "string",
            "description": "Absolute local PNG, JPEG or BMP path, at most 16 MiB. Private immutable copy; decoded dimensions at most 8192 by 4320."
          }
        },
        "additionalProperties": false,
        "description": "Optional version1 JSON file passed through broker --loading-screen. Neutral defaults are used for omitted fields."
      },
      "LaunchRules": {
        "type": "object",
        "properties": {
          "version": {
            "const": 1
          },
          "profile": {
            "enum": [
              "original",
              "college"
            ]
          },
          "half_length_minutes": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 20
          },
          "overtime_seconds": {
            "enum": [
              60,
              120,
              180,
              240,
              300
            ]
          },
          "media_timeouts": {
            "enum": [
              0,
              3,
              4
            ]
          },
          "authority": {
            "const": "adapter_startup_configuration"
          }
        },
        "required": [
          "version",
          "profile",
          "half_length_minutes",
          "overtime_seconds",
          "media_timeouts",
          "authority"
        ],
        "additionalProperties": false
      },
      "LaunchConfiguration": {
        "type": "object",
        "properties": {
          "version": {
            "const": 1
          },
          "rules": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "profile": {
                    "const": "original"
                  }
                },
                "required": [
                  "profile"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "profile": {
                    "const": "college"
                  },
                  "half_length_minutes": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 20
                  },
                  "media_timeouts": {
                    "enum": [
                      0,
                      3,
                      4
                    ]
                  },
                  "overtime_policy": {
                    "const": "scaled"
                  }
                },
                "required": [
                  "profile"
                ],
                "additionalProperties": false
              }
            ]
          },
          "settings": {
            "$ref": "#/components/schemas/StartupSettingsPlan"
          },
          "participation": {
            "$ref": "#/components/schemas/ParticipationPlan"
          },
          "rotations": {
            "$ref": "#/components/schemas/RotationPlan"
          },
          "extensions": {
            "type": "array",
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/RuleExtensionRequest"
            }
          },
          "native_metadata": {
            "type": "boolean"
          },
          "assets": {
            "type": "array",
            "items": {
              "type": "string",
              "pattern": "^asset-package:[a-f0-9]{64}$"
            },
            "maxItems": 8,
            "minItems": 1,
            "uniqueItems": true
          },
          "crowd": {
            "$ref": "#/components/schemas/CrowdSettings"
          }
        },
        "required": [
          "version",
          "rules"
        ],
        "additionalProperties": false
      },
      "MatchIdentityPlan": {
        "type": "object",
        "properties": {
          "version": {
            "const": 1
          },
          "match_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "teams": {
            "type": "object",
            "properties": {
              "home": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "away": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              }
            },
            "required": [
              "home",
              "away"
            ],
            "additionalProperties": false
          },
          "players": {
            "type": "object",
            "minProperties": 2,
            "maxProperties": 40,
            "propertyNames": {
              "pattern": "^(home|away):([0-9]|1[0-9])$"
            },
            "additionalProperties": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 128
                }
              },
              "required": [
                "id",
                "name"
              ],
              "additionalProperties": false
            }
          },
          "ruleset": {
            "type": "object"
          },
          "metadata": {
            "type": "object"
          }
        },
        "required": [
          "version",
          "match_id",
          "teams",
          "players",
          "ruleset"
        ],
        "additionalProperties": false
      },
      "Lifecycle": {
        "type": "object",
        "properties": {
          "available": {
            "type": "boolean"
          },
          "run_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "match_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "game_pid": {
            "type": [
              "integer",
              "null"
            ]
          },
          "game_running": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "scope": {
            "const": "broker_owned_process_only"
          }
        },
        "required": [
          "available",
          "run_id",
          "match_id",
          "game_pid",
          "game_running",
          "scope"
        ],
        "additionalProperties": false
      },
      "StartupSettingsPlan": {
        "type": "object",
        "properties": {
          "options": {
            "type": "object",
            "properties": {
              "shooting_type": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1,
                "multipleOf": 1
              },
              "ft_shooting_type": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1,
                "multipleOf": 1
              },
              "ft_difficulty": {
                "type": "integer",
                "minimum": 0,
                "maximum": 100,
                "multipleOf": 5
              },
              "commentary_volume": {
                "type": "integer",
                "minimum": 0,
                "maximum": 100,
                "multipleOf": 5
              },
              "pa_volume": {
                "type": "integer",
                "minimum": 0,
                "maximum": 100,
                "multipleOf": 5
              },
              "sound_effects_volume": {
                "type": "integer",
                "minimum": 0,
                "maximum": 100,
                "multipleOf": 5
              },
              "crowd_volume": {
                "type": "integer",
                "minimum": 0,
                "maximum": 100,
                "multipleOf": 5
              },
              "player_chatter_volume": {
                "type": "integer",
                "minimum": 0,
                "maximum": 100,
                "multipleOf": 5
              },
              "in_game_music_volume": {
                "type": "integer",
                "minimum": 0,
                "maximum": 100,
                "multipleOf": 5
              },
              "action_replays": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2,
                "multipleOf": 1
              },
              "after_basket_camera_cuts": {
                "type": "integer",
                "minimum": 0,
                "maximum": 2,
                "multipleOf": 1
              },
              "ball_handler_text": {
                "type": "integer",
                "minimum": 0,
                "maximum": 3,
                "multipleOf": 1
              },
              "free_throw_help": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1,
                "multipleOf": 1
              },
              "free_throw_routines": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1,
                "multipleOf": 1
              },
              "shot_feedback": {
                "type": "integer",
                "minimum": 0,
                "maximum": 3,
                "multipleOf": 1
              },
              "pick_and_roll_overlay": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1,
                "multipleOf": 1
              }
            },
            "required": [],
            "additionalProperties": false
          },
          "sliders": {
            "type": "object",
            "properties": {
              "user": {
                "type": "object",
                "properties": {
                  "stealing": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "blocking": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "speed": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "ball_handling": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "dunking_ability": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "offensive_awareness": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "defensive_awareness": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "offensive_rebounding": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "defensive_rebounding": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "strength": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "quickness": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "hustle": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "consistency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "durability": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "stamina": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "hands": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "vertical": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "on_ball_defense": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "alley_oop_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "contact_shot_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "inside_shot_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "close_shot_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "mid_range_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "3pt_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "layup_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "dunk_in_traffic_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "dunk_in_traffic_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "backdoor_cuts": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "pass_accuracy": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "steal_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "driving_contact_shot_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "inside_contact_shot_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "layup_defense_strength_takeoff": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "layup_defense_strength_release": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "jump_shot_defense_strength_gather": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "jump_shot_defense_strength_release": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "over_the_back_foul_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "charging_foul_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "blocking_foul_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "reaching_foul_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "shooting_foul_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "loose_ball_foul_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "injury_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "injury_severity": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "fatigue_rate": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "attempt_dunks": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "attempt_putbacks": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "play_passing_lanes": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "go_for_on_ball_steals": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "contest_shots": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "post_shots": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "help_defense_strength": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "take_inside_shots": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "take_close_shots": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "take_mid_range_shots": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "take_3pt_shots": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "attack_the_basket": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "look_for_post_players": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "throw_alley_oops": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  }
                },
                "required": [],
                "additionalProperties": false
              },
              "cpu": {
                "type": "object",
                "properties": {
                  "stealing": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "blocking": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "speed": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "ball_handling": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "dunking_ability": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "offensive_awareness": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "defensive_awareness": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "offensive_rebounding": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "defensive_rebounding": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "strength": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "quickness": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "hustle": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "consistency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "durability": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "stamina": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "hands": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "vertical": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "on_ball_defense": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "alley_oop_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "contact_shot_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "inside_shot_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "close_shot_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "mid_range_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "3pt_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "layup_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "dunk_in_traffic_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "dunk_in_traffic_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "backdoor_cuts": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "pass_accuracy": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "steal_success": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "driving_contact_shot_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "inside_contact_shot_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "layup_defense_strength_takeoff": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "layup_defense_strength_release": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "jump_shot_defense_strength_gather": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "jump_shot_defense_strength_release": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "over_the_back_foul_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "charging_foul_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "blocking_foul_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "reaching_foul_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "shooting_foul_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "loose_ball_foul_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "injury_frequency": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "injury_severity": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "fatigue_rate": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "attempt_dunks": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "attempt_putbacks": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "play_passing_lanes": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "go_for_on_ball_steals": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "contest_shots": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "post_shots": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "help_defense_strength": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "take_inside_shots": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "take_close_shots": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "take_mid_range_shots": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "take_3pt_shots": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "attack_the_basket": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "look_for_post_players": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  },
                  "throw_alley_oops": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100
                  }
                },
                "required": [],
                "additionalProperties": false
              }
            },
            "required": [],
            "additionalProperties": false
          },
          "controllers": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "type": "object",
              "properties": {
                "player_slot": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 9
                },
                "values": {
                  "type": "object",
                  "properties": {
                    "preferred_position": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 5,
                      "multipleOf": 1
                    },
                    "vibration": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 1,
                      "multipleOf": 1
                    },
                    "pro_stick": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 2,
                      "multipleOf": 1
                    },
                    "pro_stick_orientation": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 1,
                      "multipleOf": 1
                    },
                    "offball_freelance": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 1,
                      "multipleOf": 1
                    },
                    "passing_icons": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 1,
                      "multipleOf": 1
                    },
                    "icon_lead_passing": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 1,
                      "multipleOf": 1
                    },
                    "right_stick_passing": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 2,
                      "multipleOf": 1
                    },
                    "right_stick_defense": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 1,
                      "multipleOf": 1
                    },
                    "defensive_icons": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 1,
                      "multipleOf": 1
                    },
                    "who_to_guard": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 1,
                      "multipleOf": 1
                    },
                    "automatic_shot_contest": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 2,
                      "multipleOf": 1
                    },
                    "defensive_assist_strength": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 100,
                      "multipleOf": 5
                    }
                  },
                  "required": [],
                  "additionalProperties": false
                }
              },
              "required": [
                "player_slot",
                "values"
              ],
              "additionalProperties": false
            }
          },
          "camera": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "broadcast_stadium"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "reverse_angle": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "broadcast_generic"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "zoom": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "height": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "reverse_angle": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "beluba"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "zoom": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "height": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "reverse_angle": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "parametric"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "zoom": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "height": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "key_zoom": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "reverse_angle": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "press"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "zoom": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "height": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "key_zoom": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "reverse_angle": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "2k"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "zoom": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "height": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "key_zoom": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "reverse_angle": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "auto_flip": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "fixed_height": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "player_lock"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "zoom": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "height": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "key_zoom": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "fixed_height": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "action"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "zoom": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "height": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "key_zoom": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "reverse_angle": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "action_2"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "zoom": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "height": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "key_zoom": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "reverse_angle": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "nosebleeds"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "zoom": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "height": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "key_zoom": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "reverse_angle": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "skybox"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "zoom": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "height": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "key_zoom": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "reverse_angle": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "side"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "zoom": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "height": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "key_zoom": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "reverse_angle": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "drive"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "zoom": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "height": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "key_zoom": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "reverse_angle": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "auto_flip": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "wire"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "zoom": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "height": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "key_zoom": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "reverse_angle": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "high"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "zoom": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "height": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "key_zoom": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "reverse_angle": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "auto_flip": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "iso"
                  },
                  "values": {
                    "type": "object",
                    "properties": {
                      "zoom": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "height": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "key_zoom": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      },
                      "reverse_angle": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 1
                      }
                    },
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "id": {
                    "const": "coach_view"
                  },
                  "values": {
                    "type": "object",
                    "properties": {},
                    "required": [],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              }
            ]
          },
          "coaching": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "home": {
                "$ref": "#/components/schemas/CoachingPlanValues"
              },
              "away": {
                "$ref": "#/components/schemas/CoachingPlanValues"
              }
            }
          },
          "defense": {
            "$ref": "#/components/schemas/StartupDefensePlan"
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "StartupSettingsState": {
        "type": "object",
        "properties": {
          "version": {
            "const": 1
          },
          "requested_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 426
          },
          "applied_count": {
            "type": "integer",
            "minimum": 0,
            "maximum": 426
          },
          "attempted": {
            "type": "boolean"
          },
          "failed": {
            "type": "boolean"
          },
          "ready": {
            "type": "boolean"
          },
          "failed_index": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 263
          },
          "failure_reason": {
            "enum": [
              null,
              "opening_boundary_missed",
              "native_settings_unavailable",
              "native_setter_exception",
              "readback_mismatch"
            ]
          },
          "authority": {
            "const": "original_setters_with_readback"
          }
        },
        "required": [
          "version",
          "requested_count",
          "applied_count",
          "attempted",
          "failed",
          "ready",
          "failed_index",
          "failure_reason",
          "authority"
        ],
        "additionalProperties": false
      },
      "StartupSettingsResponse": {
        "type": "object",
        "properties": {
          "run_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StartupSettingsState"
              }
            ]
          },
          "catalog": {
            "type": "object"
          },
          "requested": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StartupSettingsPlan"
              }
            ]
          },
          "camera_status": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/StartupCameraState"
              }
            ]
          }
        },
        "required": [
          "run_id",
          "status",
          "catalog",
          "requested"
        ],
        "additionalProperties": false
      },
      "RosterTools": {
        "type": "object",
        "properties": {
          "available": {
            "type": "boolean"
          },
          "backend_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "backend_fingerprint": {
            "type": [
              "string",
              "null"
            ]
          },
          "tables": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "fields": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "required": [
                "id",
                "fields"
              ],
              "additionalProperties": false
            }
          },
          "maximum_edit_cells": {
            "const": 512
          },
          "maximum_query_rows": {
            "const": 128
          },
          "maximum_query_fields": {
            "const": 32
          },
          "maximum_query_text_characters": {
            "const": 4096
          },
          "native_loaded": {
            "const": false
          },
          "scope": {
            "type": "string"
          }
        },
        "required": [
          "available",
          "backend_version",
          "backend_fingerprint",
          "tables",
          "maximum_edit_cells",
          "maximum_query_rows",
          "maximum_query_fields",
          "maximum_query_text_characters",
          "native_loaded",
          "scope"
        ],
        "additionalProperties": false
      },
      "RosterFieldPage": {
        "type": "object",
        "properties": {
          "table": {
            "type": "string"
          },
          "total": {
            "type": "integer",
            "minimum": 0
          },
          "start": {
            "type": "integer",
            "minimum": 0
          },
          "fields": {
            "type": "array",
            "maxItems": 256,
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                },
                "reference_table": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "id",
                "type",
                "reference_table"
              ],
              "additionalProperties": true
            }
          }
        },
        "required": [
          "table",
          "total",
          "start",
          "fields"
        ],
        "additionalProperties": false
      },
      "RosterQueryRequest": {
        "type": "object",
        "properties": {
          "roster_id": {
            "type": "string",
            "pattern": "^roster:[0-9a-f]{64}$"
          },
          "table": {
            "type": "string"
          },
          "start": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 128
          },
          "fields": {
            "type": "array",
            "minItems": 1,
            "maxItems": 32,
            "uniqueItems": true,
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "roster_id",
          "table"
        ],
        "additionalProperties": false
      },
      "RosterQueryResponse": {
        "type": "object",
        "properties": {
          "roster_id": {
            "type": "string",
            "pattern": "^roster:[0-9a-f]{64}$"
          },
          "table": {
            "type": "string"
          },
          "total": {
            "type": "integer",
            "minimum": 0
          },
          "start": {
            "type": "integer",
            "minimum": 0
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "rows": {
            "type": "array",
            "maxItems": 128,
            "items": {
              "type": "object",
              "properties": {
                "row": {
                  "type": "integer",
                  "minimum": 0
                },
                "values": {
                  "type": "object"
                },
                "errors": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "row",
                "values",
                "errors"
              ],
              "additionalProperties": false
            }
          },
          "native_loaded": {
            "const": false
          }
        },
        "required": [
          "roster_id",
          "table",
          "total",
          "start",
          "fields",
          "rows",
          "native_loaded"
        ],
        "additionalProperties": false
      },
      "RosterEditRequest": {
        "type": "object",
        "properties": {
          "roster_id": {
            "type": "string",
            "pattern": "^roster:[0-9a-f]{64}$"
          },
          "changes": {
            "type": "array",
            "minItems": 1,
            "maxItems": 512,
            "items": {
              "type": "object",
              "properties": {
                "table": {
                  "type": "string"
                },
                "row": {
                  "type": "integer",
                  "minimum": 0
                },
                "field": {
                  "type": "string"
                },
                "value": {
                  "type": [
                    "string",
                    "number",
                    "boolean",
                    "null"
                  ]
                }
              },
              "required": [
                "table",
                "row",
                "field",
                "value"
              ],
              "additionalProperties": false
            }
          },
          "metadata_id": {
            "type": "string",
            "pattern": "^roster-metadata:[0-9a-f]{64}$"
          }
        },
        "required": [
          "roster_id",
          "changes"
        ],
        "additionalProperties": false
      },
      "RosterPreparationRequest": {
        "type": "object",
        "properties": {
          "roster_id": {
            "type": "string",
            "pattern": "^roster:[0-9a-f]{64}$"
          },
          "teams": {
            "type": "object",
            "properties": {
              "home": {
                "type": "object",
                "properties": {
                  "team_row": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 2047
                  },
                  "roster_order": {
                    "type": "array",
                    "minItems": 5,
                    "maxItems": 20,
                    "uniqueItems": true,
                    "items": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 65534
                    }
                  },
                  "minutes": {
                    "type": "array",
                    "maxItems": 20,
                    "items": {
                      "type": "object",
                      "properties": {
                        "player_row": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 65534
                        },
                        "value": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 48
                        }
                      },
                      "required": [
                        "player_row",
                        "value"
                      ],
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "team_row"
                ],
                "additionalProperties": false
              },
              "away": {
                "type": "object",
                "properties": {
                  "team_row": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 2047
                  },
                  "roster_order": {
                    "type": "array",
                    "minItems": 5,
                    "maxItems": 20,
                    "uniqueItems": true,
                    "items": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 65534
                    }
                  },
                  "minutes": {
                    "type": "array",
                    "maxItems": 20,
                    "items": {
                      "type": "object",
                      "properties": {
                        "player_row": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 65534
                        },
                        "value": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 48
                        }
                      },
                      "required": [
                        "player_row",
                        "value"
                      ],
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "team_row"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "home",
              "away"
            ],
            "additionalProperties": false
          },
          "metadata_id": {
            "type": "string",
            "pattern": "^roster-metadata:[0-9a-f]{64}$"
          }
        },
        "required": [
          "roster_id",
          "teams"
        ],
        "additionalProperties": false
      },
      "RosterAuthoringReceipt": {
        "type": "object",
        "properties": {
          "receipt_id": {
            "type": "string",
            "pattern": "^roster-authoring:[0-9a-f]{64}$"
          },
          "operation": {
            "enum": [
              "edit",
              "prepare"
            ]
          },
          "source_roster_id": {
            "type": "string",
            "pattern": "^roster:[0-9a-f]{64}$"
          },
          "roster": {
            "$ref": "#/components/schemas/RosterMetadata"
          },
          "backend_version": {
            "type": "string"
          },
          "backend_fingerprint": {
            "type": "string"
          },
          "native_loaded": {
            "const": false
          },
          "scope": {
            "type": "string"
          },
          "edited_cells": {
            "type": "integer",
            "minimum": 1,
            "maximum": 512
          },
          "teams": {
            "type": "array"
          },
          "roster_metadata": {
            "$ref": "#/components/schemas/RosterCompanionInfo"
          }
        },
        "required": [
          "receipt_id",
          "operation",
          "source_roster_id",
          "roster",
          "backend_version",
          "backend_fingerprint",
          "native_loaded",
          "scope"
        ],
        "additionalProperties": false
      },
      "MatchRequest": {
        "type": "object",
        "properties": {
          "format": {
            "const": "openhoops.match_request"
          },
          "version": {
            "const": 1
          },
          "request_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,95}$"
          },
          "client_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "roster": {
            "oneOf": [
              {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "pattern": "^roster:[0-9a-f]{64}$"
                  }
                },
                "required": [
                  "id"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "path": {
                    "type": "string"
                  },
                  "sha256": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$"
                  }
                },
                "required": [
                  "path",
                  "sha256"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "archive_path": {
                    "type": "string",
                    "minLength": 1
                  },
                  "sha256": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$"
                  }
                },
                "required": [
                  "archive_path",
                  "sha256"
                ],
                "additionalProperties": false
              }
            ]
          },
          "launch_configuration": {
            "$ref": "#/components/schemas/LaunchConfiguration"
          },
          "preparation": {
            "type": "object",
            "description": "Documented preparation IDs; row/choice membership is checked against loaded ROS"
          },
          "identity": {
            "$ref": "#/components/schemas/MatchIdentityPlan"
          },
          "roster_edits": {
            "type": "array",
            "minItems": 0,
            "maxItems": 512,
            "items": {
              "type": "object",
              "properties": {
                "table": {
                  "type": "string"
                },
                "row": {
                  "type": "integer",
                  "minimum": 0
                },
                "field": {
                  "type": "string"
                },
                "value": {
                  "type": [
                    "string",
                    "number",
                    "boolean",
                    "null"
                  ]
                }
              },
              "required": [
                "table",
                "row",
                "field",
                "value"
              ],
              "additionalProperties": false
            }
          },
          "roster_preparation": {
            "type": "object",
            "properties": {
              "home": {
                "type": "object",
                "properties": {
                  "team_row": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 2047
                  },
                  "roster_order": {
                    "type": "array",
                    "minItems": 5,
                    "maxItems": 20,
                    "uniqueItems": true,
                    "items": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 65534
                    }
                  },
                  "minutes": {
                    "type": "array",
                    "maxItems": 20,
                    "items": {
                      "type": "object",
                      "properties": {
                        "player_row": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 65534
                        },
                        "value": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 48
                        }
                      },
                      "required": [
                        "player_row",
                        "value"
                      ],
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "team_row"
                ],
                "additionalProperties": false
              },
              "away": {
                "type": "object",
                "properties": {
                  "team_row": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 2047
                  },
                  "roster_order": {
                    "type": "array",
                    "minItems": 5,
                    "maxItems": 20,
                    "uniqueItems": true,
                    "items": {
                      "type": "integer",
                      "minimum": 0,
                      "maximum": 65534
                    }
                  },
                  "minutes": {
                    "type": "array",
                    "maxItems": 20,
                    "items": {
                      "type": "object",
                      "properties": {
                        "player_row": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 65534
                        },
                        "value": {
                          "type": "integer",
                          "minimum": 0,
                          "maximum": 48
                        }
                      },
                      "required": [
                        "player_row",
                        "value"
                      ],
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "team_row"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "home",
              "away"
            ],
            "additionalProperties": false
          },
          "loading_screen": {
            "$ref": "#/components/schemas/LoadingScreenConfiguration"
          },
          "roster_metadata": {
            "$ref": "#/components/schemas/RosterMetadataSelection"
          },
          "asset_packages": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "pattern": "^asset-package:[a-f0-9]{64}$"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "path": {
                      "type": "string"
                    },
                    "sha256": {
                      "type": "string",
                      "pattern": "^[a-f0-9]{64}$"
                    }
                  },
                  "required": [
                    "path",
                    "sha256"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            "maxItems": 8,
            "minItems": 1
          }
        },
        "required": [
          "format",
          "version",
          "request_id",
          "client_id",
          "roster",
          "launch_configuration",
          "preparation",
          "identity"
        ],
        "additionalProperties": false
      },
      "MatchRequestStatus": {
        "type": "object",
        "properties": {
          "request_id": {
            "type": "string"
          },
          "request_sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          },
          "status": {
            "enum": [
              "accepted",
              "preparing",
              "starting",
              "started",
              "failed"
            ]
          },
          "started": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Null preserves an unknown native Start outcome; inspect saved command IDs before retrying"
          },
          "result": {
            "type": "object"
          },
          "error": {
            "type": "string"
          },
          "receipts": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "authoring_receipts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RosterAuthoringReceipt"
            }
          }
        },
        "required": [
          "request_id",
          "request_sha256",
          "status",
          "started"
        ],
        "additionalProperties": false
      },
      "MatchRequestResponse": {
        "type": "object",
        "properties": {
          "available": {
            "type": "boolean"
          },
          "request": {
            "anyOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MatchRequestStatus"
              }
            ]
          }
        },
        "required": [
          "available",
          "request"
        ],
        "additionalProperties": false
      },
      "StartupCameraState": {
        "type": "object",
        "properties": {
          "version": {
            "const": 1
          },
          "requested": {
            "type": "boolean"
          },
          "camera_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "attempted": {
            "type": "boolean"
          },
          "failed": {
            "type": "boolean"
          },
          "ready": {
            "type": "boolean"
          },
          "failure_reason": {
            "enum": [
              null,
              "opening_boundary_missed",
              "native_camera_unavailable",
              "native_setter_exception",
              "readback_mismatch"
            ]
          },
          "authority": {
            "const": "original_camera_selection_with_descriptor_readback"
          }
        },
        "required": [
          "version",
          "requested",
          "camera_id",
          "attempted",
          "failed",
          "ready",
          "failure_reason",
          "authority"
        ],
        "additionalProperties": false
      },
      "ParticipationPlan": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "mode": {
                "enum": [
                  "cpu_vs_cpu",
                  "primary_home",
                  "primary_away"
                ]
              }
            },
            "required": [
              "mode"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "mode": {
                "const": "assigned"
              },
              "assignments": {
                "type": "array",
                "minItems": 1,
                "maxItems": 10,
                "items": {
                  "$ref": "#/components/schemas/InputAssignment"
                }
              }
            },
            "required": [
              "mode",
              "assignments"
            ],
            "additionalProperties": false
          }
        ]
      },
      "ParticipationState": {
        "type": "object",
        "properties": {
          "version": {
            "enum": [
              1,
              2
            ]
          },
          "requested": {
            "type": "boolean"
          },
          "mode": {
            "enum": [
              "cpu_vs_cpu",
              "primary_home",
              "primary_away",
              null,
              "assigned"
            ]
          },
          "primary_input_slot": {
            "enum": [
              0,
              null
            ]
          },
          "attempted": {
            "type": "boolean"
          },
          "failed": {
            "type": "boolean"
          },
          "ready": {
            "type": "boolean"
          },
          "committed": {
            "type": "boolean"
          },
          "failure_reason": {
            "enum": [
              null,
              "opening_boundary_missed",
              "native_input_unavailable",
              "native_setter_exception",
              "control_record_mismatch",
              "other_participants_present"
            ]
          },
          "authority": {
            "const": "native_picker_and_game_control_commit_readback"
          },
          "scope": {
            "type": "string"
          }
        },
        "required": [
          "version",
          "requested",
          "mode",
          "primary_input_slot",
          "attempted",
          "failed",
          "ready",
          "committed",
          "failure_reason",
          "authority",
          "scope"
        ],
        "additionalProperties": false
      },
      "CoachingPlanValues": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "timeouts": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1
          },
          "substitutions": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1
          },
          "substitution_method": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1
          },
          "playvision": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2
          },
          "playvision_display": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1
          },
          "playcall_messages": {
            "type": "integer",
            "minimum": 0,
            "maximum": 2
          },
          "offense_playcalling": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1
          },
          "defense_playcalling": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1
          },
          "late_game_fouling": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1
          }
        }
      },
      "CoachingValues": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "timeouts",
          "substitutions",
          "substitution_method",
          "playvision",
          "playvision_display",
          "playcall_messages",
          "offense_playcalling",
          "defense_playcalling",
          "late_game_fouling"
        ],
        "properties": {
          "timeouts": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "substitutions": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "substitution_method": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "playvision": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 2
              },
              {
                "type": "null"
              }
            ]
          },
          "playvision_display": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "playcall_messages": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 2
              },
              {
                "type": "null"
              }
            ]
          },
          "offense_playcalling": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "defense_playcalling": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 1
              },
              {
                "type": "null"
              }
            ]
          },
          "late_game_fouling": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 1
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "CoachingState": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "authority",
          "persistence",
          "teams"
        ],
        "properties": {
          "authority": {
            "const": "native_team_coaching_settings"
          },
          "persistence": {
            "const": "current_match_only"
          },
          "teams": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "home",
              "away"
            ],
            "properties": {
              "home": {
                "$ref": "#/components/schemas/CoachingValues"
              },
              "away": {
                "$ref": "#/components/schemas/CoachingValues"
              }
            }
          },
          "revision": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 1,
            "maximum": 4294967295
          }
        }
      },
      "DefensiveSettings": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "on_ball_pressure",
          "off_ball_pressure",
          "double_team",
          "screen_defense",
          "hedge"
        ],
        "properties": {
          "on_ball_pressure": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 3
          },
          "off_ball_pressure": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 4
          },
          "double_team": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 4
          },
          "screen_defense": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 3
          },
          "hedge": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0,
            "maximum": 4
          }
        }
      },
      "DefensiveOpponent": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "opponent_player_key",
          "settings",
          "preferred_defender_player_key",
          "preferred_defender_known"
        ],
        "properties": {
          "opponent_player_key": {
            "type": "string",
            "pattern": "^(home|away):([0-9]|1[01])$"
          },
          "settings": {
            "$ref": "#/components/schemas/DefensiveSettings"
          },
          "preferred_defender_player_key": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^(home|away):([0-9]|1[01])$"
          },
          "preferred_defender_known": {
            "type": "boolean"
          }
        }
      },
      "DefenseState": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "authority",
          "revision",
          "persistence",
          "teams",
          "actual_guarding_assignments_observed"
        ],
        "properties": {
          "authority": {
            "const": "native_defensive_configuration"
          },
          "revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "persistence": {
            "const": "current_match_only"
          },
          "teams": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "home",
              "away"
            ],
            "properties": {
              "home": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "opponents",
                  "eligible_defender_player_keys"
                ],
                "properties": {
                  "opponents": {
                    "type": "array",
                    "maxItems": 12,
                    "items": {
                      "$ref": "#/components/schemas/DefensiveOpponent"
                    }
                  },
                  "eligible_defender_player_keys": {
                    "type": "array",
                    "maxItems": 12,
                    "uniqueItems": true,
                    "items": {
                      "type": "string",
                      "pattern": "^(home|away):([0-9]|1[01])$"
                    }
                  }
                }
              },
              "away": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "opponents",
                  "eligible_defender_player_keys"
                ],
                "properties": {
                  "opponents": {
                    "type": "array",
                    "maxItems": 12,
                    "items": {
                      "$ref": "#/components/schemas/DefensiveOpponent"
                    }
                  },
                  "eligible_defender_player_keys": {
                    "type": "array",
                    "maxItems": 12,
                    "uniqueItems": true,
                    "items": {
                      "type": "string",
                      "pattern": "^(home|away):([0-9]|1[01])$"
                    }
                  }
                }
              }
            }
          },
          "actual_guarding_assignments_observed": {
            "const": false
          }
        }
      },
      "CoachingCommand": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "command_id",
          "client_id",
          "lease_token",
          "run_id",
          "expected_period",
          "expected_revision",
          "side",
          "type",
          "setting_id",
          "value",
          "expected_value"
        ],
        "properties": {
          "command_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "client_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "lease_token": {
            "type": "string"
          },
          "run_id": {
            "type": "string"
          },
          "expected_period": {
            "type": "integer"
          },
          "expected_revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "side": {
            "enum": [
              "home",
              "away"
            ]
          },
          "type": {
            "const": "coaching.set"
          },
          "setting_id": {
            "enum": [
              "timeouts",
              "substitutions",
              "substitution_method",
              "playvision",
              "playvision_display",
              "playcall_messages",
              "offense_playcalling",
              "defense_playcalling",
              "late_game_fouling"
            ]
          },
          "value": {},
          "expected_value": {}
        },
        "allOf": [
          {
            "if": {
              "properties": {
                "setting_id": {
                  "const": "timeouts"
                }
              },
              "required": [
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1
                },
                "expected_value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "setting_id": {
                  "const": "substitutions"
                }
              },
              "required": [
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1
                },
                "expected_value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "setting_id": {
                  "const": "substitution_method"
                }
              },
              "required": [
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1
                },
                "expected_value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "setting_id": {
                  "const": "playvision"
                }
              },
              "required": [
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 2
                },
                "expected_value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 2
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "setting_id": {
                  "const": "playvision_display"
                }
              },
              "required": [
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1
                },
                "expected_value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "setting_id": {
                  "const": "playcall_messages"
                }
              },
              "required": [
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 2
                },
                "expected_value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 2
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "setting_id": {
                  "const": "offense_playcalling"
                }
              },
              "required": [
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1
                },
                "expected_value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "setting_id": {
                  "const": "defense_playcalling"
                }
              },
              "required": [
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1
                },
                "expected_value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "setting_id": {
                  "const": "late_game_fouling"
                }
              },
              "required": [
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1
                },
                "expected_value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 1
                }
              }
            }
          }
        ]
      },
      "DefensiveCommand": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "command_id",
          "client_id",
          "lease_token",
          "run_id",
          "expected_period",
          "expected_revision",
          "side",
          "type",
          "setting_id",
          "value",
          "expected_value",
          "opponent_player_key"
        ],
        "properties": {
          "command_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "client_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "lease_token": {
            "type": "string"
          },
          "run_id": {
            "type": "string"
          },
          "expected_period": {
            "type": "integer"
          },
          "expected_revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "side": {
            "enum": [
              "home",
              "away"
            ]
          },
          "type": {
            "const": "defense.set"
          },
          "setting_id": {
            "enum": [
              "on_ball_pressure",
              "off_ball_pressure",
              "double_team",
              "screen_defense",
              "hedge",
              "preferred_defender"
            ]
          },
          "value": {},
          "expected_value": {},
          "opponent_player_key": {
            "type": "string",
            "pattern": "^(home|away):([0-9]|1[01])$"
          }
        },
        "allOf": [
          {
            "if": {
              "properties": {
                "setting_id": {
                  "const": "on_ball_pressure"
                }
              },
              "required": [
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 3
                },
                "expected_value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 3
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "setting_id": {
                  "const": "off_ball_pressure"
                }
              },
              "required": [
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4
                },
                "expected_value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "setting_id": {
                  "const": "double_team"
                }
              },
              "required": [
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4
                },
                "expected_value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "setting_id": {
                  "const": "screen_defense"
                }
              },
              "required": [
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 3
                },
                "expected_value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 3
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "setting_id": {
                  "const": "hedge"
                }
              },
              "required": [
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4
                },
                "expected_value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 4
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "setting_id": {
                  "const": "preferred_defender"
                }
              },
              "required": [
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "pattern": "^(home|away):([0-9]|1[01])$"
                },
                "expected_value": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "pattern": "^(home|away):([0-9]|1[01])$"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "side": {
                  "const": "home"
                }
              },
              "required": [
                "side"
              ]
            },
            "then": {
              "properties": {
                "opponent_player_key": {
                  "type": "string",
                  "pattern": "^away:([0-9]|1[01])$"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "side": {
                  "const": "home"
                },
                "setting_id": {
                  "const": "preferred_defender"
                }
              },
              "required": [
                "side",
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "pattern": "^home:([0-9]|1[01])$"
                },
                "expected_value": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "pattern": "^home:([0-9]|1[01])$"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "side": {
                  "const": "away"
                }
              },
              "required": [
                "side"
              ]
            },
            "then": {
              "properties": {
                "opponent_player_key": {
                  "type": "string",
                  "pattern": "^home:([0-9]|1[01])$"
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "side": {
                  "const": "away"
                },
                "setting_id": {
                  "const": "preferred_defender"
                }
              },
              "required": [
                "side",
                "setting_id"
              ]
            },
            "then": {
              "properties": {
                "value": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "pattern": "^away:([0-9]|1[01])$"
                },
                "expected_value": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "pattern": "^away:([0-9]|1[01])$"
                }
              }
            }
          }
        ]
      },
      "SimulationControl": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "authority",
          "adapter_owned",
          "expires_in_seconds",
          "maximum_duration_seconds",
          "native_pause_layers_cleared"
        ],
        "properties": {
          "authority": {
            "const": "adapter_owned_native_pause_layer"
          },
          "adapter_owned": {
            "type": "boolean"
          },
          "expires_in_seconds": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 60
          },
          "maximum_duration_seconds": {
            "const": 60
          },
          "native_pause_layers_cleared": {
            "const": false
          }
        }
      },
      "SimulationCommand": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "command_id",
          "client_id",
          "lease_token",
          "run_id",
          "expected_period",
          "expected_revision",
          "type",
          "expected_owned"
        ],
        "properties": {
          "command_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "client_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "lease_token": {
            "type": "string"
          },
          "run_id": {
            "type": "string"
          },
          "expected_period": {
            "type": "integer"
          },
          "expected_revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "type": {
            "enum": [
              "simulation.pause",
              "simulation.resume"
            ]
          },
          "expected_owned": {
            "type": "boolean"
          },
          "duration_seconds": {
            "type": "integer",
            "minimum": 1,
            "maximum": 60
          }
        },
        "allOf": [
          {
            "if": {
              "properties": {
                "type": {
                  "const": "simulation.pause"
                }
              }
            },
            "then": {
              "required": [
                "duration_seconds"
              ]
            }
          },
          {
            "if": {
              "properties": {
                "type": {
                  "const": "simulation.resume"
                }
              }
            },
            "then": {
              "not": {
                "required": [
                  "duration_seconds"
                ]
              }
            }
          }
        ]
      },
      "Substitutions": {
        "type": "object",
        "properties": {
          "authority": {
            "const": "native_team_position_array_and_pending_queue"
          },
          "revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "teams": {
            "type": "object",
            "properties": {
              "home": {
                "type": "object",
                "properties": {
                  "positions": {
                    "type": "array",
                    "minItems": 5,
                    "maxItems": 5,
                    "items": {
                      "type": "object",
                      "properties": {
                        "position": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 5
                        },
                        "player_key": {
                          "type": "string"
                        },
                        "pending_player_key": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "position",
                        "player_key",
                        "pending_player_key"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "eligible_bench_player_keys": {
                    "type": "array",
                    "maxItems": 7,
                    "uniqueItems": true,
                    "items": {
                      "type": "string"
                    }
                  },
                  "pending_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 5
                  },
                  "native_queue_editable": {
                    "type": "boolean"
                  },
                  "user_requested": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "positions",
                  "eligible_bench_player_keys",
                  "pending_count",
                  "native_queue_editable",
                  "user_requested"
                ],
                "additionalProperties": false
              },
              "away": {
                "type": "object",
                "properties": {
                  "positions": {
                    "type": "array",
                    "minItems": 5,
                    "maxItems": 5,
                    "items": {
                      "type": "object",
                      "properties": {
                        "position": {
                          "type": "integer",
                          "minimum": 1,
                          "maximum": 5
                        },
                        "player_key": {
                          "type": "string"
                        },
                        "pending_player_key": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "position",
                        "player_key",
                        "pending_player_key"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "eligible_bench_player_keys": {
                    "type": "array",
                    "maxItems": 7,
                    "uniqueItems": true,
                    "items": {
                      "type": "string"
                    }
                  },
                  "pending_count": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 5
                  },
                  "native_queue_editable": {
                    "type": "boolean"
                  },
                  "user_requested": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "positions",
                  "eligible_bench_player_keys",
                  "pending_count",
                  "native_queue_editable",
                  "user_requested"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "home",
              "away"
            ],
            "additionalProperties": false
          },
          "acceptance_is_not_completion": {
            "const": true
          },
          "legal_substitution_window_inferred": {
            "const": false
          }
        },
        "required": [
          "authority",
          "revision",
          "teams",
          "acceptance_is_not_completion",
          "legal_substitution_window_inferred"
        ],
        "additionalProperties": false
      },
      "SubstitutionCommand": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "command_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "client_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "lease_token": {
                "type": "string"
              },
              "run_id": {
                "type": "string"
              },
              "expected_period": {
                "type": "integer"
              },
              "expected_revision": {
                "type": "integer",
                "minimum": 1,
                "maximum": 4294967295
              },
              "side": {
                "enum": [
                  "home",
                  "away"
                ]
              },
              "outgoing_player_key": {
                "type": "string"
              },
              "expected_pending_player_key": {
                "type": "null"
              },
              "type": {
                "const": "substitution.queue"
              },
              "incoming_player_key": {
                "type": "string"
              }
            },
            "required": [
              "command_id",
              "client_id",
              "lease_token",
              "run_id",
              "expected_period",
              "expected_revision",
              "side",
              "outgoing_player_key",
              "expected_pending_player_key",
              "type",
              "incoming_player_key"
            ],
            "additionalProperties": false,
            "allOf": [
              {
                "if": {
                  "properties": {
                    "side": {
                      "const": "home"
                    }
                  }
                },
                "then": {
                  "properties": {
                    "outgoing_player_key": {
                      "type": "string",
                      "pattern": "^home:([0-9]|1[01])$"
                    },
                    "incoming_player_key": {
                      "type": "string",
                      "pattern": "^home:([0-9]|1[01])$"
                    }
                  }
                }
              },
              {
                "if": {
                  "properties": {
                    "side": {
                      "const": "away"
                    }
                  }
                },
                "then": {
                  "properties": {
                    "outgoing_player_key": {
                      "type": "string",
                      "pattern": "^away:([0-9]|1[01])$"
                    },
                    "incoming_player_key": {
                      "type": "string",
                      "pattern": "^away:([0-9]|1[01])$"
                    }
                  }
                }
              }
            ]
          },
          {
            "type": "object",
            "properties": {
              "command_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "client_id": {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              "lease_token": {
                "type": "string"
              },
              "run_id": {
                "type": "string"
              },
              "expected_period": {
                "type": "integer"
              },
              "expected_revision": {
                "type": "integer",
                "minimum": 1,
                "maximum": 4294967295
              },
              "side": {
                "enum": [
                  "home",
                  "away"
                ]
              },
              "outgoing_player_key": {
                "type": "string"
              },
              "expected_pending_player_key": {
                "type": "string"
              },
              "type": {
                "const": "substitution.cancel"
              }
            },
            "required": [
              "command_id",
              "client_id",
              "lease_token",
              "run_id",
              "expected_period",
              "expected_revision",
              "side",
              "outgoing_player_key",
              "expected_pending_player_key",
              "type"
            ],
            "additionalProperties": false,
            "allOf": [
              {
                "if": {
                  "properties": {
                    "side": {
                      "const": "home"
                    }
                  }
                },
                "then": {
                  "properties": {
                    "outgoing_player_key": {
                      "type": "string",
                      "pattern": "^home:([0-9]|1[01])$"
                    },
                    "expected_pending_player_key": {
                      "type": "string",
                      "pattern": "^home:([0-9]|1[01])$"
                    }
                  }
                }
              },
              {
                "if": {
                  "properties": {
                    "side": {
                      "const": "away"
                    }
                  }
                },
                "then": {
                  "properties": {
                    "outgoing_player_key": {
                      "type": "string",
                      "pattern": "^away:([0-9]|1[01])$"
                    },
                    "expected_pending_player_key": {
                      "type": "string",
                      "pattern": "^away:([0-9]|1[01])$"
                    }
                  }
                }
              }
            ]
          }
        ]
      },
      "SubstitutionRequest": {
        "type": "object",
        "properties": {
          "request_command_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "client_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "run_id": {
            "type": "string"
          },
          "roster_fingerprint": {
            "type": "string"
          },
          "side": {
            "enum": [
              "home",
              "away"
            ]
          },
          "outgoing_player_key": {
            "type": "string"
          },
          "incoming_player_key": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          },
          "match_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "position": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5
          },
          "status": {
            "enum": [
              "pending",
              "awaiting_entry",
              "removed",
              "superseded",
              "observed_in_lineup",
              "cancelled",
              "context_changed",
              "ended_before_entry"
            ]
          },
          "accepted_source_sequence": {
            "type": "integer",
            "minimum": 0
          },
          "observed_source_sequence": {
            "type": "integer",
            "minimum": 0
          },
          "completion_authority": {
            "const": "observed_native_position_and_on_court_transition"
          },
          "cancel_command_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "pending_observed": {
            "type": "boolean"
          }
        },
        "required": [
          "request_command_id",
          "client_id",
          "run_id",
          "roster_fingerprint",
          "side",
          "outgoing_player_key",
          "incoming_player_key",
          "reason",
          "match_id",
          "position",
          "status",
          "accepted_source_sequence",
          "observed_source_sequence",
          "completion_authority"
        ],
        "additionalProperties": false
      },
      "SubstitutionRequestPage": {
        "type": "object",
        "properties": {
          "requests": {
            "type": "array",
            "maxItems": 100,
            "items": {
              "$ref": "#/components/schemas/SubstitutionRequest"
            }
          },
          "limit": {
            "const": 100
          }
        },
        "required": [
          "requests",
          "limit"
        ],
        "additionalProperties": false
      },
      "StartupDefensePlan": {
        "type": "object",
        "properties": {
          "home": {
            "type": "object",
            "maxProperties": 12,
            "patternProperties": {
              "^away:([0-9]|1[01])$": {
                "type": "object",
                "properties": {
                  "on_ball_pressure": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 3
                  },
                  "off_ball_pressure": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 4
                  },
                  "double_team": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 4
                  },
                  "screen_defense": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 3
                  },
                  "hedge": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 4
                  },
                  "preferred_defender": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^home:([0-9]|1[01])$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "away": {
            "type": "object",
            "maxProperties": 12,
            "patternProperties": {
              "^home:([0-9]|1[01])$": {
                "type": "object",
                "properties": {
                  "on_ball_pressure": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 3
                  },
                  "off_ball_pressure": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 4
                  },
                  "double_team": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 4
                  },
                  "screen_defense": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 3
                  },
                  "hedge": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 4
                  },
                  "preferred_defender": {
                    "anyOf": [
                      {
                        "type": "string",
                        "pattern": "^away:([0-9]|1[01])$"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "TimeoutControl": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "authority": {
            "const": "original_timeout_eligibility_predicate"
          },
          "teams": {
            "type": "object",
            "properties": {
              "home": {
                "type": "object",
                "properties": {
                  "native_eligible": {
                    "type": "boolean"
                  },
                  "full": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 32
                  },
                  "short": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 64
                  }
                },
                "required": [
                  "native_eligible",
                  "full",
                  "short"
                ],
                "additionalProperties": false
              },
              "away": {
                "type": "object",
                "properties": {
                  "native_eligible": {
                    "type": "boolean"
                  },
                  "full": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 32
                  },
                  "short": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 64
                  }
                },
                "required": [
                  "native_eligible",
                  "full",
                  "short"
                ],
                "additionalProperties": false
              }
            },
            "required": [
              "home",
              "away"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "revision",
          "authority",
          "teams"
        ],
        "additionalProperties": false
      },
      "RotationPlanEntry": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "side": {
                "const": "home"
              },
              "period": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "const": "half"
                      },
                      "number": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 2
                      }
                    },
                    "required": [
                      "type",
                      "number"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "const": "quarter"
                      },
                      "number": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 4
                      }
                    },
                    "required": [
                      "type",
                      "number"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "const": "overtime"
                      },
                      "number": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 32
                      }
                    },
                    "required": [
                      "type",
                      "number"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "game_seconds": {
                "type": "number",
                "minimum": 0,
                "maximum": 3600
              },
              "lineup": {
                "type": "array",
                "minItems": 5,
                "maxItems": 5,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^home:(?:[0-9]|1[01])$"
                }
              }
            },
            "required": [
              "side",
              "period",
              "game_seconds",
              "lineup"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "properties": {
              "side": {
                "const": "away"
              },
              "period": {
                "oneOf": [
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "const": "half"
                      },
                      "number": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 2
                      }
                    },
                    "required": [
                      "type",
                      "number"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "const": "quarter"
                      },
                      "number": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 4
                      }
                    },
                    "required": [
                      "type",
                      "number"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "object",
                    "properties": {
                      "type": {
                        "const": "overtime"
                      },
                      "number": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 32
                      }
                    },
                    "required": [
                      "type",
                      "number"
                    ],
                    "additionalProperties": false
                  }
                ]
              },
              "game_seconds": {
                "type": "number",
                "minimum": 0,
                "maximum": 3600
              },
              "lineup": {
                "type": "array",
                "minItems": 5,
                "maxItems": 5,
                "uniqueItems": true,
                "items": {
                  "type": "string",
                  "pattern": "^away:(?:[0-9]|1[01])$"
                }
              }
            },
            "required": [
              "side",
              "period",
              "game_seconds",
              "lineup"
            ],
            "additionalProperties": false
          }
        ]
      },
      "RotationPlan": {
        "type": "array",
        "maxItems": 64,
        "items": {
          "$ref": "#/components/schemas/RotationPlanEntry"
        }
      },
      "RotationEntryObservation": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "minimum": 0,
            "maximum": 63
          },
          "side": {
            "enum": [
              "home",
              "away"
            ]
          },
          "raw_period": {
            "type": "integer",
            "minimum": 1,
            "maximum": 36
          },
          "game_seconds": {
            "type": "number",
            "minimum": 0,
            "maximum": 3600
          },
          "lineup": {
            "type": "array",
            "minItems": 5,
            "maxItems": 5,
            "uniqueItems": true,
            "items": {
              "type": "string",
              "pattern": "^(home|away):(?:[0-9]|1[01])$"
            }
          },
          "status": {
            "enum": [
              "scheduled",
              "due",
              "queued",
              "observed_in_lineup",
              "missed",
              "blocked",
              "cancelled",
              "fault",
              "superseded"
            ]
          },
          "reason": {
            "type": [
              "string",
              "null"
            ]
          },
          "due_game_seconds": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 3600
          },
          "queued_game_seconds": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 3600
          },
          "observed_game_seconds": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 3600
          }
        },
        "required": [
          "index",
          "side",
          "raw_period",
          "game_seconds",
          "lineup",
          "status",
          "reason",
          "due_game_seconds",
          "queued_game_seconds",
          "observed_game_seconds"
        ],
        "additionalProperties": false
      },
      "Rotations": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "entries": {
            "type": "array",
            "maxItems": 64,
            "items": {
              "$ref": "#/components/schemas/RotationEntryObservation"
            }
          },
          "startup_requested": {
            "type": "boolean"
          },
          "startup_ready": {
            "type": "boolean"
          },
          "startup_failed": {
            "type": "boolean"
          },
          "authority": {
            "type": "string"
          },
          "completed_at_requested_clock_guaranteed": {
            "const": false
          }
        },
        "required": [
          "revision",
          "entries",
          "startup_requested",
          "startup_ready",
          "startup_failed",
          "authority",
          "completed_at_requested_clock_guaranteed"
        ],
        "additionalProperties": false
      },
      "InputAssignment": {
        "type": "object",
        "properties": {
          "input_id": {
            "type": "string",
            "pattern": "^native-input:[0-9]$"
          },
          "kind": {
            "enum": [
              "keyboard",
              "game_controller"
            ]
          },
          "side": {
            "enum": [
              "home",
              "away"
            ]
          }
        },
        "required": [
          "input_id",
          "kind",
          "side"
        ],
        "additionalProperties": false
      },
      "InputDevices": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "devices": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "type": "object",
              "properties": {
                "input_id": {
                  "type": "string",
                  "pattern": "^native-input:[0-9]$"
                },
                "kind": {
                  "enum": [
                    "keyboard",
                    "game_controller",
                    "unsupported_native"
                  ]
                },
                "native_type": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 10
                },
                "label": {
                  "type": "string"
                },
                "current_side": {
                  "enum": [
                    null,
                    "home",
                    "away"
                  ]
                },
                "saved_side": {
                  "enum": [
                    null,
                    "home",
                    "away"
                  ]
                },
                "control_record_present": {
                  "type": "boolean"
                },
                "requested_side": {
                  "enum": [
                    null,
                    "home",
                    "away"
                  ]
                },
                "assignment_supported": {
                  "type": "boolean"
                }
              },
              "required": [
                "input_id",
                "kind",
                "native_type",
                "label",
                "current_side",
                "saved_side",
                "control_record_present",
                "requested_side"
              ],
              "additionalProperties": false
            }
          },
          "authority": {
            "type": "string"
          },
          "identity_scope": {
            "type": "string"
          },
          "physical_multicontroller_verified": {
            "const": false
          }
        },
        "required": [
          "revision",
          "devices",
          "authority",
          "identity_scope",
          "physical_multicontroller_verified"
        ],
        "additionalProperties": false
      },
      "RotationPlanObservation": {
        "type": "object",
        "properties": {
          "revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "entries": {
            "type": "array",
            "maxItems": 64,
            "items": {
              "$ref": "#/components/schemas/RotationEntryObservation"
            }
          },
          "startup_requested": {
            "type": "boolean"
          },
          "startup_ready": {
            "type": "boolean"
          },
          "startup_failed": {
            "type": "boolean"
          },
          "authority": {
            "type": "string"
          },
          "completed_at_requested_clock_guaranteed": {
            "const": false
          },
          "plan_id": {
            "type": "string"
          },
          "run_id": {
            "type": "string"
          },
          "match_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "superseded_by_revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          }
        },
        "required": [
          "revision",
          "entries",
          "startup_requested",
          "startup_ready",
          "startup_failed",
          "authority",
          "completed_at_requested_clock_guaranteed",
          "plan_id",
          "run_id",
          "match_id"
        ],
        "additionalProperties": false
      },
      "RosterExtraFields": {
        "type": "object",
        "maxProperties": 256,
        "propertyNames": {
          "pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*){2,7}$",
          "maxLength": 160
        },
        "additionalProperties": {
          "oneOf": [
            {
              "type": "string",
              "maxLength": 16384
            },
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "number",
              "not": {
                "type": "integer"
              }
            },
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "RosterCompanion": {
        "type": "object",
        "properties": {
          "format": {
            "const": "openhoops.roster.extensions"
          },
          "version": {
            "const": 1
          },
          "roster_sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          },
          "roster_bytes": {
            "enum": [
              2672672,
              16777248
            ]
          },
          "fields": {
            "$ref": "#/components/schemas/RosterExtraFields"
          },
          "records": {
            "type": "array",
            "maxItems": 100000,
            "items": {
              "type": "object",
              "properties": {
                "section": {
                  "type": "integer",
                  "enum": [
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16,
                    17,
                    18,
                    19,
                    20,
                    21,
                    22,
                    23,
                    24,
                    25,
                    26,
                    27,
                    28,
                    29,
                    30,
                    31,
                    32,
                    33,
                    34,
                    35,
                    36,
                    37,
                    38,
                    39,
                    40,
                    45
                  ]
                },
                "row": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 65534
                },
                "fields": {
                  "$ref": "#/components/schemas/RosterExtraFields"
                }
              },
              "required": [
                "section",
                "row",
                "fields"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "format",
          "version",
          "roster_sha256",
          "roster_bytes",
          "fields",
          "records"
        ],
        "additionalProperties": false
      },
      "RosterCompanionInfo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^roster-metadata:[0-9a-f]{64}$"
          },
          "sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          },
          "bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 16777216
          },
          "roster_id": {
            "type": "string",
            "pattern": "^roster:[0-9a-f]{64}$"
          },
          "format": {
            "const": "openhoops.roster.extensions"
          },
          "version": {
            "const": 1
          },
          "records": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100000
          },
          "native_effects": {
            "const": false
          }
        },
        "required": [
          "id",
          "sha256",
          "bytes",
          "roster_id",
          "format",
          "version",
          "records",
          "native_effects"
        ],
        "additionalProperties": false
      },
      "RosterMetadataPatch": {
        "type": "object",
        "properties": {
          "fields": {
            "$ref": "#/components/schemas/RosterExtraFields"
          },
          "unset": {
            "type": "array",
            "uniqueItems": true,
            "maxItems": 256,
            "items": {
              "type": "string",
              "pattern": "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*){2,7}$",
              "maxLength": 160
            }
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "RosterMetadataOverrides": {
        "type": "object",
        "properties": {
          "roster": {
            "$ref": "#/components/schemas/RosterMetadataPatch"
          },
          "teams": {
            "type": "object",
            "properties": {
              "home": {
                "$ref": "#/components/schemas/RosterMetadataPatch"
              },
              "away": {
                "$ref": "#/components/schemas/RosterMetadataPatch"
              }
            },
            "additionalProperties": false
          },
          "players": {
            "type": "object",
            "maxProperties": 40,
            "patternProperties": {
              "^(home|away):([0-9]|1[0-9])$": {
                "$ref": "#/components/schemas/RosterMetadataPatch"
              }
            },
            "additionalProperties": false
          },
          "arena": {
            "$ref": "#/components/schemas/RosterMetadataPatch"
          },
          "uniforms": {
            "type": "object",
            "properties": {
              "home": {
                "$ref": "#/components/schemas/RosterMetadataPatch"
              },
              "away": {
                "$ref": "#/components/schemas/RosterMetadataPatch"
              }
            },
            "additionalProperties": false
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "RosterContextSpec": {
        "type": "object",
        "properties": {
          "version": {
            "const": 1
          },
          "metadata_id": {
            "type": "string",
            "pattern": "^roster-metadata:[0-9a-f]{64}$"
          },
          "roster_id": {
            "type": "string",
            "pattern": "^roster:[0-9a-f]{64}$"
          },
          "selection": {
            "type": "object",
            "properties": {
              "home_team": {
                "type": "string",
                "pattern": "^team-row:(0|[1-9][0-9]{0,4})$"
              },
              "away_team": {
                "type": "string",
                "pattern": "^team-row:(0|[1-9][0-9]{0,4})$"
              },
              "home_uniform": {
                "type": "string",
                "pattern": "^uniform-row:(0|[1-9][0-9]{0,4})$"
              },
              "away_uniform": {
                "type": "string",
                "pattern": "^uniform-row:(0|[1-9][0-9]{0,4})$"
              },
              "arena": {
                "type": "string",
                "pattern": "^arena:(0|[1-9][0-9]{0,4})$"
              }
            },
            "required": [
              "home_team",
              "away_team",
              "home_uniform",
              "away_uniform",
              "arena"
            ],
            "additionalProperties": false
          },
          "player_rows": {
            "type": "object",
            "maxProperties": 40,
            "patternProperties": {
              "^(home|away):([0-9]|1[0-9])$": {
                "type": "integer",
                "minimum": 0,
                "maximum": 65534
              }
            },
            "additionalProperties": false
          },
          "player_ids": {
            "type": "object",
            "maxProperties": 40,
            "patternProperties": {
              "^(home|away):([0-9]|1[0-9])$": {
                "$ref": "#/components/schemas/RosterContextIdentifier"
              }
            },
            "additionalProperties": false
          },
          "overrides": {
            "$ref": "#/components/schemas/RosterMetadataOverrides"
          },
          "mapping_authority": {
            "enum": [
              "explicit_client_rows",
              "unique_name_within_selected_roster_team"
            ]
          }
        },
        "required": [
          "version",
          "metadata_id",
          "roster_id",
          "selection",
          "player_rows",
          "player_ids",
          "overrides",
          "mapping_authority"
        ],
        "additionalProperties": false
      },
      "RosterContextEntity": {
        "type": "object",
        "properties": {
          "fields": {
            "$ref": "#/components/schemas/RosterExtraFields"
          },
          "field_sources": {
            "type": "object",
            "additionalProperties": {
              "enum": [
                "roster_companion",
                "match_override"
              ]
            }
          },
          "section": {
            "type": "integer"
          },
          "row": {
            "type": "integer",
            "minimum": 0,
            "maximum": 65534
          },
          "external_id": {
            "$ref": "#/components/schemas/RosterContextIdentifier"
          }
        },
        "required": [
          "fields",
          "field_sources"
        ],
        "additionalProperties": false
      },
      "RosterContext": {
        "type": "object",
        "properties": {
          "version": {
            "const": 1
          },
          "roster_id": {
            "type": "string",
            "pattern": "^roster:[0-9a-f]{64}$"
          },
          "metadata": {
            "$ref": "#/components/schemas/RosterCompanionInfo"
          },
          "mapping_authority": {
            "enum": [
              "explicit_client_rows",
              "unique_name_within_selected_roster_team"
            ]
          },
          "native_effects": {
            "const": false
          },
          "native_save_policy": {
            "const": "frozen_source_context_no_automatic_rebind"
          },
          "roster": {
            "$ref": "#/components/schemas/RosterContextEntity"
          },
          "teams": {
            "type": "object",
            "properties": {
              "home": {
                "$ref": "#/components/schemas/RosterContextEntity"
              },
              "away": {
                "$ref": "#/components/schemas/RosterContextEntity"
              }
            },
            "additionalProperties": false
          },
          "players": {
            "type": "object",
            "maxProperties": 40,
            "patternProperties": {
              "^(home|away):([0-9]|1[0-9])$": {
                "$ref": "#/components/schemas/RosterContextEntity"
              }
            },
            "additionalProperties": false
          },
          "uninstantiated_players": {
            "type": "object",
            "maxProperties": 40,
            "patternProperties": {
              "^(home|away):([0-9]|1[0-9])$": {
                "$ref": "#/components/schemas/RosterContextEntity"
              }
            },
            "additionalProperties": false
          },
          "uniforms": {
            "type": "object",
            "properties": {
              "home": {
                "$ref": "#/components/schemas/RosterContextEntity"
              },
              "away": {
                "$ref": "#/components/schemas/RosterContextEntity"
              }
            },
            "additionalProperties": false
          },
          "arena": {
            "$ref": "#/components/schemas/RosterContextEntity"
          },
          "sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          }
        },
        "required": [
          "version",
          "roster_id",
          "metadata",
          "mapping_authority",
          "native_effects",
          "native_save_policy",
          "roster",
          "teams",
          "players",
          "uninstantiated_players",
          "uniforms",
          "arena",
          "sha256"
        ],
        "additionalProperties": false
      },
      "RosterContextReference": {
        "type": "object",
        "properties": {
          "version": {
            "const": 1
          },
          "sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          },
          "roster_id": {
            "type": "string",
            "pattern": "^roster:[0-9a-f]{64}$"
          },
          "metadata_id": {
            "type": "string",
            "pattern": "^roster-metadata:[0-9a-f]{64}$"
          },
          "match_id": {
            "$ref": "#/components/schemas/RosterContextIdentifier"
          },
          "frozen": {
            "const": true
          }
        },
        "required": [
          "version",
          "sha256",
          "roster_id",
          "metadata_id",
          "match_id",
          "frozen"
        ],
        "additionalProperties": false
      },
      "RosterMetadataSelection": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^roster-metadata:[0-9a-f]{64}$"
          },
          "path": {
            "type": "string",
            "minLength": 1
          },
          "sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          },
          "overrides": {
            "$ref": "#/components/schemas/RosterMetadataOverrides"
          },
          "player_rows": {
            "type": "object",
            "maxProperties": 40,
            "patternProperties": {
              "^(home|away):([0-9]|1[0-9])$": {
                "type": "integer",
                "minimum": 0,
                "maximum": 65534
              }
            },
            "additionalProperties": false
          }
        },
        "required": [],
        "additionalProperties": false,
        "allOf": [
          {
            "not": {
              "required": [
                "id",
                "path"
              ]
            }
          },
          {
            "not": {
              "required": [
                "id",
                "sha256"
              ]
            }
          },
          {
            "if": {
              "required": [
                "path"
              ]
            },
            "then": {
              "required": [
                "sha256"
              ]
            }
          },
          {
            "if": {
              "required": [
                "sha256"
              ]
            },
            "then": {
              "required": [
                "path"
              ]
            }
          }
        ]
      },
      "RosterMetadataQuery": {
        "type": "object",
        "properties": {
          "metadata_id": {
            "type": "string",
            "pattern": "^roster-metadata:[0-9a-f]{64}$"
          },
          "section": {
            "type": "integer",
            "enum": [
              3,
              4,
              5,
              6,
              7,
              8,
              9,
              10,
              11,
              12,
              13,
              14,
              15,
              16,
              17,
              18,
              19,
              20,
              21,
              22,
              23,
              24,
              25,
              26,
              27,
              28,
              29,
              30,
              31,
              32,
              33,
              34,
              35,
              36,
              37,
              38,
              39,
              40,
              45
            ]
          },
          "start": {
            "type": "integer",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 128
          }
        },
        "required": [
          "metadata_id"
        ],
        "additionalProperties": false
      },
      "RosterMetadataPage": {
        "type": "object",
        "properties": {
          "metadata": {
            "$ref": "#/components/schemas/RosterCompanionInfo"
          },
          "fields": {
            "$ref": "#/components/schemas/RosterExtraFields"
          },
          "records": {
            "type": "array",
            "maxItems": 100000,
            "items": {
              "type": "object",
              "properties": {
                "section": {
                  "type": "integer",
                  "enum": [
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16,
                    17,
                    18,
                    19,
                    20,
                    21,
                    22,
                    23,
                    24,
                    25,
                    26,
                    27,
                    28,
                    29,
                    30,
                    31,
                    32,
                    33,
                    34,
                    35,
                    36,
                    37,
                    38,
                    39,
                    40,
                    45
                  ]
                },
                "row": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 65534
                },
                "fields": {
                  "$ref": "#/components/schemas/RosterExtraFields"
                }
              },
              "required": [
                "section",
                "row",
                "fields"
              ],
              "additionalProperties": false
            }
          },
          "total": {
            "type": "integer",
            "minimum": 0
          },
          "start": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "metadata",
          "fields",
          "records",
          "total",
          "start"
        ],
        "additionalProperties": false
      },
      "RosterMetadataResolve": {
        "type": "object",
        "properties": {
          "metadata_id": {
            "type": "string",
            "pattern": "^roster-metadata:[0-9a-f]{64}$"
          },
          "roster_id": {
            "type": "string",
            "pattern": "^roster:[0-9a-f]{64}$"
          },
          "preparation": {
            "type": "object"
          },
          "identity": {
            "$ref": "#/components/schemas/MatchIdentityPlan"
          },
          "overrides": {
            "$ref": "#/components/schemas/RosterMetadataOverrides"
          },
          "player_rows": {
            "type": "object",
            "maxProperties": 40,
            "patternProperties": {
              "^(home|away):([0-9]|1[0-9])$": {
                "type": "integer",
                "minimum": 0,
                "maximum": 65534
              }
            },
            "additionalProperties": false
          }
        },
        "required": [
          "metadata_id",
          "roster_id",
          "preparation",
          "identity"
        ],
        "additionalProperties": false
      },
      "RosterContextIdentifier": {
        "type": "string",
        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
      },
      "RuleExtensionRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9._:-]{1,63}$"
          },
          "path": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1023,
            "description": "Explicit trusted x86 DLL path, admitted/frozen before owned child creation; not a runtime load command"
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "configuration": {
            "type": "object"
          },
          "required": {
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "path",
          "sha256"
        ],
        "additionalProperties": false
      },
      "RuleAttempt": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "none",
              "field_goal",
              "free_throw",
              "unknown"
            ]
          },
          "stage": {
            "enum": [
              "absent",
              "registered",
              "flight",
              "settled"
            ]
          },
          "shooter": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EngineActor"
              },
              {
                "type": "null"
              }
            ]
          },
          "scoring_points": {
            "enum": [
              1,
              2,
              3,
              null
            ]
          },
          "can_score": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "known_fields": {
            "type": "array",
            "items": {
              "enum": [
                "identity",
                "shooter",
                "scoring_points",
                "can_score"
              ]
            },
            "uniqueItems": true
          }
        },
        "required": [
          "id",
          "kind",
          "stage",
          "shooter",
          "scoring_points",
          "can_score",
          "known_fields"
        ],
        "additionalProperties": false
      },
      "RuleRestart": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "none",
              "throw_in",
              "free_throw",
              "jump_ball"
            ]
          },
          "stage": {
            "enum": [
              "absent",
              "awarded",
              "disposed",
              "released",
              "legal_touch",
              "completed"
            ]
          },
          "team": {
            "enum": [
              "home",
              "away",
              null
            ]
          },
          "thrower": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EngineActor"
              },
              {
                "type": "null"
              }
            ]
          },
          "count_complete": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "throw_in_complete": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "arrow_consumed": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "known_fields": {
            "type": "array",
            "items": {
              "enum": [
                "identity",
                "team",
                "thrower",
                "count_complete",
                "throw_in_complete",
                "arrow_consumed"
              ]
            },
            "uniqueItems": true
          }
        },
        "required": [
          "id",
          "kind",
          "stage",
          "team",
          "thrower",
          "count_complete",
          "throw_in_complete",
          "arrow_consumed",
          "known_fields"
        ],
        "additionalProperties": false
      },
      "RuleFreeThrows": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "shooter": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/EngineActor"
              },
              {
                "type": "null"
              }
            ]
          },
          "attempt_ordinal": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 3
              },
              {
                "type": "null"
              }
            ]
          },
          "total": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "maximum": 3
              },
              {
                "type": "null"
              }
            ]
          },
          "remaining": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 3
              },
              {
                "type": "null"
              }
            ]
          },
          "conditional_next": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "retained_team": {
            "enum": [
              "home",
              "away",
              null
            ]
          },
          "following_restart": {
            "enum": [
              "none",
              "throw_in",
              "free_throw",
              "jump_ball",
              null
            ]
          },
          "known_fields": {
            "type": "array",
            "items": {
              "enum": [
                "identity",
                "shooter",
                "attempt_ordinal",
                "total",
                "remaining",
                "conditional_next",
                "retained_team",
                "following_restart"
              ]
            },
            "uniqueItems": true
          }
        },
        "required": [
          "id",
          "shooter",
          "attempt_ordinal",
          "total",
          "remaining",
          "conditional_next",
          "retained_team",
          "following_restart",
          "known_fields"
        ],
        "additionalProperties": false
      },
      "LegalBallState": {
        "type": "object",
        "properties": {
          "authority": {
            "const": "engine_committed_profile_interpretation"
          },
          "model": {
            "enum": [
              "nba2k14",
              "openhoops_college"
            ]
          },
          "epoch": {
            "type": "integer",
            "minimum": 0
          },
          "revision": {
            "type": "integer",
            "minimum": 0
          },
          "evidence_sequence": {
            "type": "integer",
            "minimum": 0
          },
          "continuity_faults": {
            "type": "integer",
            "minimum": 0
          },
          "fields": {
            "type": "object",
            "properties": {
              "live": {
                "type": "object",
                "properties": {
                  "status": {
                    "enum": [
                      "known",
                      "unknown",
                      "inapplicable"
                    ]
                  },
                  "value": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_sequence": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "reason": {
                    "enum": [
                      "new_match",
                      "accepted_control",
                      "pass_release",
                      "attempt",
                      "contact",
                      "rim",
                      "adjudication",
                      "goal",
                      "period",
                      "restart",
                      "free_throw",
                      "capture_gap",
                      "unclassified_transition",
                      "match_end",
                      null
                    ]
                  }
                },
                "required": [
                  "status",
                  "value",
                  "evidence_sequence",
                  "reason"
                ],
                "additionalProperties": false,
                "allOf": [
                  {
                    "if": {
                      "properties": {
                        "status": {
                          "enum": [
                            "unknown",
                            "inapplicable"
                          ]
                        }
                      }
                    },
                    "then": {
                      "properties": {
                        "value": {
                          "type": "null"
                        }
                      }
                    }
                  }
                ]
              },
              "alive": {
                "type": "object",
                "properties": {
                  "status": {
                    "enum": [
                      "known",
                      "unknown",
                      "inapplicable"
                    ]
                  },
                  "value": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_sequence": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "reason": {
                    "enum": [
                      "new_match",
                      "accepted_control",
                      "pass_release",
                      "attempt",
                      "contact",
                      "rim",
                      "adjudication",
                      "goal",
                      "period",
                      "restart",
                      "free_throw",
                      "capture_gap",
                      "unclassified_transition",
                      "match_end",
                      null
                    ]
                  }
                },
                "required": [
                  "status",
                  "value",
                  "evidence_sequence",
                  "reason"
                ],
                "additionalProperties": false,
                "allOf": [
                  {
                    "if": {
                      "properties": {
                        "status": {
                          "enum": [
                            "unknown",
                            "inapplicable"
                          ]
                        }
                      }
                    },
                    "then": {
                      "properties": {
                        "value": {
                          "type": "null"
                        }
                      }
                    }
                  }
                ]
              },
              "player_control": {
                "type": "object",
                "properties": {
                  "status": {
                    "enum": [
                      "known",
                      "unknown",
                      "inapplicable"
                    ]
                  },
                  "value": {
                    "anyOf": [
                      {
                        "$ref": "#/components/schemas/EngineActor"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_sequence": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "reason": {
                    "enum": [
                      "new_match",
                      "accepted_control",
                      "pass_release",
                      "attempt",
                      "contact",
                      "rim",
                      "adjudication",
                      "goal",
                      "period",
                      "restart",
                      "free_throw",
                      "capture_gap",
                      "unclassified_transition",
                      "match_end",
                      null
                    ]
                  }
                },
                "required": [
                  "status",
                  "value",
                  "evidence_sequence",
                  "reason"
                ],
                "additionalProperties": false,
                "allOf": [
                  {
                    "if": {
                      "properties": {
                        "status": {
                          "enum": [
                            "unknown",
                            "inapplicable"
                          ]
                        }
                      }
                    },
                    "then": {
                      "properties": {
                        "value": {
                          "type": "null"
                        }
                      }
                    }
                  }
                ]
              },
              "team_control": {
                "type": "object",
                "properties": {
                  "status": {
                    "enum": [
                      "known",
                      "unknown",
                      "inapplicable"
                    ]
                  },
                  "value": {
                    "anyOf": [
                      {
                        "enum": [
                          "home",
                          "away",
                          null
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_sequence": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "reason": {
                    "enum": [
                      "new_match",
                      "accepted_control",
                      "pass_release",
                      "attempt",
                      "contact",
                      "rim",
                      "adjudication",
                      "goal",
                      "period",
                      "restart",
                      "free_throw",
                      "capture_gap",
                      "unclassified_transition",
                      "match_end",
                      null
                    ]
                  }
                },
                "required": [
                  "status",
                  "value",
                  "evidence_sequence",
                  "reason"
                ],
                "additionalProperties": false,
                "allOf": [
                  {
                    "if": {
                      "properties": {
                        "status": {
                          "enum": [
                            "unknown",
                            "inapplicable"
                          ]
                        }
                      }
                    },
                    "then": {
                      "properties": {
                        "value": {
                          "type": "null"
                        }
                      }
                    }
                  }
                ]
              },
              "team_possession": {
                "type": "object",
                "properties": {
                  "status": {
                    "enum": [
                      "known",
                      "unknown",
                      "inapplicable"
                    ]
                  },
                  "value": {
                    "anyOf": [
                      {
                        "enum": [
                          "home",
                          "away",
                          null
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_sequence": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "reason": {
                    "enum": [
                      "new_match",
                      "accepted_control",
                      "pass_release",
                      "attempt",
                      "contact",
                      "rim",
                      "adjudication",
                      "goal",
                      "period",
                      "restart",
                      "free_throw",
                      "capture_gap",
                      "unclassified_transition",
                      "match_end",
                      null
                    ]
                  }
                },
                "required": [
                  "status",
                  "value",
                  "evidence_sequence",
                  "reason"
                ],
                "additionalProperties": false,
                "allOf": [
                  {
                    "if": {
                      "properties": {
                        "status": {
                          "enum": [
                            "unknown",
                            "inapplicable"
                          ]
                        }
                      }
                    },
                    "then": {
                      "properties": {
                        "value": {
                          "type": "null"
                        }
                      }
                    }
                  }
                ]
              },
              "entitlement": {
                "type": "object",
                "properties": {
                  "status": {
                    "enum": [
                      "known",
                      "unknown",
                      "inapplicable"
                    ]
                  },
                  "value": {
                    "anyOf": [
                      {
                        "enum": [
                          "home",
                          "away",
                          null
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_sequence": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "reason": {
                    "enum": [
                      "new_match",
                      "accepted_control",
                      "pass_release",
                      "attempt",
                      "contact",
                      "rim",
                      "adjudication",
                      "goal",
                      "period",
                      "restart",
                      "free_throw",
                      "capture_gap",
                      "unclassified_transition",
                      "match_end",
                      null
                    ]
                  }
                },
                "required": [
                  "status",
                  "value",
                  "evidence_sequence",
                  "reason"
                ],
                "additionalProperties": false,
                "allOf": [
                  {
                    "if": {
                      "properties": {
                        "status": {
                          "enum": [
                            "unknown",
                            "inapplicable"
                          ]
                        }
                      }
                    },
                    "then": {
                      "properties": {
                        "value": {
                          "type": "null"
                        }
                      }
                    }
                  }
                ]
              },
              "attempt": {
                "type": "object",
                "properties": {
                  "status": {
                    "enum": [
                      "known",
                      "unknown",
                      "inapplicable"
                    ]
                  },
                  "value": {
                    "anyOf": [
                      {
                        "$ref": "#/components/schemas/RuleAttempt"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_sequence": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "reason": {
                    "enum": [
                      "new_match",
                      "accepted_control",
                      "pass_release",
                      "attempt",
                      "contact",
                      "rim",
                      "adjudication",
                      "goal",
                      "period",
                      "restart",
                      "free_throw",
                      "capture_gap",
                      "unclassified_transition",
                      "match_end",
                      null
                    ]
                  }
                },
                "required": [
                  "status",
                  "value",
                  "evidence_sequence",
                  "reason"
                ],
                "additionalProperties": false,
                "allOf": [
                  {
                    "if": {
                      "properties": {
                        "status": {
                          "enum": [
                            "unknown",
                            "inapplicable"
                          ]
                        }
                      }
                    },
                    "then": {
                      "properties": {
                        "value": {
                          "type": "null"
                        }
                      }
                    }
                  }
                ]
              },
              "restart": {
                "type": "object",
                "properties": {
                  "status": {
                    "enum": [
                      "known",
                      "unknown",
                      "inapplicable"
                    ]
                  },
                  "value": {
                    "anyOf": [
                      {
                        "$ref": "#/components/schemas/RuleRestart"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_sequence": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "reason": {
                    "enum": [
                      "new_match",
                      "accepted_control",
                      "pass_release",
                      "attempt",
                      "contact",
                      "rim",
                      "adjudication",
                      "goal",
                      "period",
                      "restart",
                      "free_throw",
                      "capture_gap",
                      "unclassified_transition",
                      "match_end",
                      null
                    ]
                  }
                },
                "required": [
                  "status",
                  "value",
                  "evidence_sequence",
                  "reason"
                ],
                "additionalProperties": false,
                "allOf": [
                  {
                    "if": {
                      "properties": {
                        "status": {
                          "enum": [
                            "unknown",
                            "inapplicable"
                          ]
                        }
                      }
                    },
                    "then": {
                      "properties": {
                        "value": {
                          "type": "null"
                        }
                      }
                    }
                  }
                ]
              },
              "free_throws": {
                "type": "object",
                "properties": {
                  "status": {
                    "enum": [
                      "known",
                      "unknown",
                      "inapplicable"
                    ]
                  },
                  "value": {
                    "anyOf": [
                      {
                        "$ref": "#/components/schemas/RuleFreeThrows"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "evidence_sequence": {
                    "type": "integer",
                    "minimum": 0
                  },
                  "reason": {
                    "enum": [
                      "new_match",
                      "accepted_control",
                      "pass_release",
                      "attempt",
                      "contact",
                      "rim",
                      "adjudication",
                      "goal",
                      "period",
                      "restart",
                      "free_throw",
                      "capture_gap",
                      "unclassified_transition",
                      "match_end",
                      null
                    ]
                  }
                },
                "required": [
                  "status",
                  "value",
                  "evidence_sequence",
                  "reason"
                ],
                "additionalProperties": false,
                "allOf": [
                  {
                    "if": {
                      "properties": {
                        "status": {
                          "enum": [
                            "unknown",
                            "inapplicable"
                          ]
                        }
                      }
                    },
                    "then": {
                      "properties": {
                        "value": {
                          "type": "null"
                        }
                      }
                    }
                  }
                ]
              }
            },
            "required": [
              "live",
              "alive",
              "player_control",
              "team_control",
              "team_possession",
              "entitlement",
              "attempt",
              "restart",
              "free_throws"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "authority",
          "model",
          "epoch",
          "revision",
          "evidence_sequence",
          "continuity_faults",
          "fields"
        ],
        "additionalProperties": false
      },
      "RuleDecision": {
        "type": "object",
        "properties": {
          "kind": {
            "enum": [
              "permission",
              "shot_clock_full",
              "shot_clock_minimum",
              "backcourt_seconds",
              "personal_foul_limit",
              "bonus_threshold",
              "late_bonus_threshold",
              "one_and_one_threshold",
              "overtime_seconds",
              "period_seconds",
              "three_point_classification",
              "free_throw_count",
              "shot_clock_rim"
            ]
          },
          "value": {
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "kind",
          "value"
        ],
        "additionalProperties": false
      },
      "RuleExtensionStatus": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "configuration_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "required": {
            "type": "boolean"
          },
          "calls": {
            "type": "integer",
            "minimum": 0
          },
          "overrides": {
            "type": "integer",
            "minimum": 0
          },
          "faults": {
            "type": "integer",
            "minimum": 0
          },
          "disabled": {
            "type": "boolean"
          },
          "last_fault": {
            "enum": [
              null,
              "exception",
              "invalid_result",
              "context_mutation",
              "over_budget",
              "reentrant",
              "floating_point_environment"
            ]
          },
          "last_exception_code": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "decisions": {
            "type": "array",
            "items": {
              "enum": [
                "permission",
                "shot_clock_full",
                "shot_clock_minimum",
                "backcourt_seconds",
                "personal_foul_limit",
                "bonus_threshold",
                "late_bonus_threshold",
                "one_and_one_threshold",
                "overtime_seconds",
                "period_seconds",
                "three_point_classification",
                "free_throw_count",
                "shot_clock_rim"
              ]
            },
            "uniqueItems": true
          },
          "permissions": {
            "type": "array",
            "items": {
              "enum": [
                "shot_clock",
                "out_of_bounds",
                "backcourt",
                "eight_second",
                "offensive_three_second",
                "defensive_three_second",
                "back_to_basket",
                "goaltending",
                "traveling",
                "double_dribble",
                "illegal_screen",
                "over_the_back",
                "charging",
                "blocking",
                "reaching",
                "shooting",
                "loose_ball",
                "intentional",
                "kicked_ball"
              ]
            },
            "uniqueItems": true
          },
          "events": {
            "type": "array",
            "items": {
              "enum": [
                "ball_state",
                "adjudication_record",
                "stat_delta",
                "phase",
                "decision",
                "lifecycle"
              ]
            },
            "uniqueItems": true
          },
          "maximum_microseconds": {
            "type": "integer",
            "minimum": 0
          },
          "last_fault_surface": {
            "enum": [
              null,
              "decision",
              "observer"
            ]
          },
          "last_fault_decision_id": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "last_fault_observation_sequence": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0
              },
              {
                "type": "null"
              }
            ]
          },
          "last_fault_sequence": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "version",
          "sha256",
          "configuration_sha256",
          "required",
          "calls",
          "overrides",
          "faults",
          "disabled",
          "last_fault",
          "last_exception_code",
          "decisions",
          "permissions",
          "events",
          "maximum_microseconds",
          "last_fault_surface",
          "last_fault_decision_id",
          "last_fault_observation_sequence",
          "last_fault_sequence"
        ],
        "additionalProperties": false
      },
      "RuleRuntime": {
        "type": "object",
        "properties": {
          "available": {
            "type": "boolean"
          },
          "version": {
            "enum": [
              1,
              2
            ]
          },
          "interpreter_version": {
            "type": "integer",
            "minimum": 0
          },
          "profile": {
            "enum": [
              "original",
              "college"
            ]
          },
          "profile_revision": {
            "type": "integer",
            "minimum": 0
          },
          "initialized": {
            "type": "boolean"
          },
          "configuration_frozen": {
            "type": "boolean"
          },
          "active": {
            "type": "boolean"
          },
          "degraded": {
            "type": "boolean"
          },
          "halted": {
            "type": "boolean"
          },
          "halt_pending": {
            "type": "boolean"
          },
          "host_faults": {
            "type": "integer",
            "minimum": 0
          },
          "continuity_faults": {
            "type": "integer",
            "minimum": 0
          },
          "off_thread": {
            "type": "integer",
            "minimum": 0
          },
          "match_epoch": {
            "type": "integer",
            "minimum": 0
          },
          "evaluation_epoch": {
            "type": "integer",
            "minimum": 0
          },
          "decision_sequence": {
            "type": "integer",
            "minimum": 0
          },
          "evidence_sequence": {
            "type": "integer",
            "minimum": 0
          },
          "configuration_decisions": {
            "type": "array",
            "items": {
              "enum": [
                "permission",
                "shot_clock_full",
                "shot_clock_minimum",
                "backcourt_seconds",
                "personal_foul_limit",
                "bonus_threshold",
                "late_bonus_threshold",
                "one_and_one_threshold",
                "overtime_seconds",
                "period_seconds",
                "three_point_classification",
                "free_throw_count",
                "shot_clock_rim"
              ]
            },
            "uniqueItems": true
          },
          "runtime_decisions": {
            "type": "array",
            "items": {
              "enum": [
                "permission",
                "shot_clock_full",
                "shot_clock_minimum",
                "backcourt_seconds",
                "personal_foul_limit",
                "bonus_threshold",
                "late_bonus_threshold",
                "one_and_one_threshold",
                "overtime_seconds",
                "period_seconds",
                "three_point_classification",
                "free_throw_count",
                "shot_clock_rim"
              ]
            },
            "uniqueItems": true
          },
          "permissions": {
            "type": "array",
            "items": {
              "enum": [
                "shot_clock",
                "out_of_bounds",
                "backcourt",
                "eight_second",
                "offensive_three_second",
                "defensive_three_second",
                "back_to_basket",
                "goaltending",
                "traveling",
                "double_dribble",
                "illegal_screen",
                "over_the_back",
                "charging",
                "blocking",
                "reaching",
                "shooting",
                "loose_ball",
                "intentional",
                "kicked_ball"
              ]
            },
            "uniqueItems": true
          },
          "events": {
            "type": "array",
            "items": {
              "enum": [
                "ball_state",
                "adjudication_record",
                "stat_delta",
                "phase",
                "decision",
                "lifecycle"
              ]
            },
            "uniqueItems": true
          },
          "ball_field_families": {
            "type": "array",
            "items": {
              "enum": [
                "live",
                "alive",
                "player_control",
                "team_control",
                "team_possession",
                "entitlement",
                "attempt",
                "restart",
                "free_throws"
              ]
            },
            "uniqueItems": true
          },
          "frozen_values": {
            "$ref": "#/components/schemas/FrozenRuleValues"
          },
          "modules": {
            "type": "array",
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/RuleExtensionStatus"
            }
          },
          "ball": {
            "$ref": "#/components/schemas/LegalBallState"
          },
          "boundary": {
            "type": "object",
            "properties": {
              "sequence": {
                "type": "integer",
                "minimum": 0
              },
              "errors": {
                "type": "integer",
                "minimum": 0
              }
            },
            "required": [
              "sequence",
              "errors"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "available",
          "version",
          "interpreter_version",
          "profile",
          "profile_revision",
          "initialized",
          "configuration_frozen",
          "active",
          "degraded",
          "halted",
          "halt_pending",
          "host_faults",
          "continuity_faults",
          "off_thread",
          "match_epoch",
          "evaluation_epoch",
          "decision_sequence",
          "evidence_sequence",
          "configuration_decisions",
          "runtime_decisions",
          "permissions",
          "events",
          "ball_field_families",
          "frozen_values",
          "modules",
          "ball",
          "boundary"
        ],
        "additionalProperties": false
      },
      "RuleEvent": {
        "type": "object",
        "properties": {
          "source_rule_sequence": {
            "type": "integer",
            "minimum": 0
          },
          "kind": {
            "enum": [
              "ball_state",
              "adjudication_record",
              "stat_delta",
              "phase",
              "decision",
              "lifecycle"
            ]
          },
          "match_epoch": {
            "type": "integer",
            "minimum": 0
          },
          "decision_id": {
            "type": "integer",
            "minimum": 0
          },
          "raw_period": {
            "type": "integer",
            "minimum": 0
          },
          "phase_code": {
            "type": "integer",
            "minimum": 0
          },
          "game_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "shot_seconds": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "ball": {
            "$ref": "#/components/schemas/LegalBallState"
          },
          "evidence_sequence": {
            "type": "integer",
            "minimum": 0
          },
          "transaction_id": {
            "type": "integer",
            "minimum": 0
          },
          "parent_transaction": {
            "type": "integer",
            "minimum": 0
          },
          "engine_event_watermark": {
            "type": "integer",
            "minimum": 0
          },
          "record_stage": {
            "type": "integer",
            "minimum": 0
          },
          "fault_code": {
            "type": "integer",
            "minimum": 0
          },
          "actors": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/EngineActor"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "record_kind_code": {
            "type": "integer",
            "minimum": 0
          },
          "record_kind_name": {
            "enum": [
              "eight_second_backcourt_violation",
              "ten_second_backcourt_violation",
              "double_dribble_violation",
              "out_of_bounds",
              "five_second_inbound_violation",
              "shot_clock_violation",
              "kicked_ball_violation",
              "reach_in_foul",
              "blocking_foul",
              "shooting_foul",
              null
            ]
          },
          "actor_roles": {
            "type": "array",
            "minItems": 2,
            "maxItems": 2,
            "items": {
              "enum": [
                "violating_player",
                "foul_committer",
                "fouled_player",
                null
              ]
            }
          },
          "role_authority": {
            "enum": [
              "original_handler_credit_arguments",
              "unresolved"
            ]
          },
          "detection_authority": {
            "const": "original_game_detection_not_independently_certified"
          },
          "scope": {
            "enum": [
              "match_configuration",
              "simulation_step",
              "native_transaction"
            ]
          },
          "reason": {
            "enum": [
              null,
              "field_goal_release",
              "shooting_foul",
              "conditional_bonus",
              "double_bonus",
              "administrative_free_throws",
              "other_free_throws"
            ]
          }
        },
        "required": [
          "source_rule_sequence",
          "kind",
          "match_epoch",
          "decision_id",
          "raw_period",
          "phase_code",
          "game_seconds",
          "shot_seconds",
          "ball",
          "evidence_sequence",
          "transaction_id",
          "parent_transaction",
          "engine_event_watermark",
          "record_stage",
          "fault_code",
          "actors"
        ],
        "additionalProperties": true
      },
      "RuleResultContext": {
        "type": "object",
        "properties": {
          "version": {
            "const": 1
          },
          "profile": {
            "enum": [
              "original",
              "college"
            ]
          },
          "profile_revision": {
            "type": "integer",
            "minimum": 0
          },
          "interpreter_version": {
            "type": "integer",
            "minimum": 0
          },
          "match_epoch": {
            "type": "integer",
            "minimum": 0
          },
          "configuration_frozen": {
            "type": "boolean"
          },
          "frozen_values": {
            "$ref": "#/components/schemas/FrozenRuleValues"
          },
          "modules": {
            "type": "array",
            "maxItems": 8,
            "items": {
              "$ref": "#/components/schemas/RuleExtensionStatus"
            }
          },
          "degraded": {
            "type": "boolean"
          },
          "halted": {
            "type": "boolean"
          },
          "halt_pending": {
            "type": "boolean"
          },
          "host_faults": {
            "type": "integer",
            "minimum": 0
          },
          "continuity_faults": {
            "type": "integer",
            "minimum": 0
          },
          "event_boundary": {
            "type": "object",
            "properties": {
              "sequence": {
                "type": "integer",
                "minimum": 0
              },
              "errors": {
                "type": "integer",
                "minimum": 0
              }
            },
            "required": [
              "sequence",
              "errors"
            ],
            "additionalProperties": false
          },
          "transport_gaps": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "first": {
                  "type": "integer",
                  "minimum": 0
                },
                "last": {
                  "type": "integer",
                  "minimum": 0
                }
              },
              "required": [
                "first",
                "last"
              ],
              "additionalProperties": false
            },
            "maxItems": 128
          },
          "fault_receipts": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "maxItems": 128
          },
          "semantic_coverage": {
            "const": "per_field_validity; unknown_and_inapplicable_are_explicit"
          },
          "fault_receipts_omitted": {
            "type": "integer",
            "minimum": 0
          },
          "transport_gaps_omitted": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "version",
          "profile",
          "profile_revision",
          "interpreter_version",
          "match_epoch",
          "configuration_frozen",
          "frozen_values",
          "modules",
          "degraded",
          "halted",
          "halt_pending",
          "host_faults",
          "continuity_faults",
          "event_boundary",
          "transport_gaps",
          "fault_receipts",
          "semantic_coverage"
        ],
        "additionalProperties": false
      },
      "RuleRuntimeResponse": {
        "type": "object",
        "properties": {
          "run_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "health": {
            "enum": [
              "ready",
              "unavailable",
              "stale"
            ]
          },
          "state": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/RuleRuntime"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "run_id",
          "health",
          "state"
        ],
        "additionalProperties": false
      },
      "LegalBallResponse": {
        "type": "object",
        "properties": {
          "run_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "health": {
            "enum": [
              "ready",
              "unavailable",
              "stale"
            ]
          },
          "state": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LegalBallState"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "run_id",
          "health",
          "state"
        ],
        "additionalProperties": false
      },
      "AssetFile": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9_.-]{0,119}\\.iff$"
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "kind": {
            "enum": [
              "arena",
              "court",
              "uniform",
              "logo",
              "support"
            ]
          },
          "bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 536870912
          }
        },
        "required": [
          "name",
          "sha256",
          "kind",
          "bytes"
        ],
        "additionalProperties": false
      },
      "AssetFileObservation": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9_.-]{0,119}\\.iff$"
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "kind": {
            "enum": [
              "arena",
              "court",
              "uniform",
              "logo",
              "support"
            ]
          },
          "bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 536870912
          },
          "opens": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "name",
          "sha256",
          "kind",
          "bytes",
          "opens"
        ],
        "additionalProperties": false
      },
      "AssetContainerValidation": {
        "type": "object",
        "properties": {
          "family": {
            "const": "94ef3bff"
          },
          "segments": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4096
          },
          "resources": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100000
          },
          "decoded_bytes": {
            "type": "integer",
            "minimum": 0,
            "maximum": 536870912
          }
        },
        "required": [
          "family",
          "segments",
          "resources",
          "decoded_bytes"
        ],
        "additionalProperties": false
      },
      "AssetPackageFile": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9_.-]{0,119}\\.iff$"
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "kind": {
            "enum": [
              "arena",
              "court",
              "uniform",
              "logo",
              "support"
            ]
          },
          "bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 536870912
          },
          "path": {
            "type": "string",
            "pattern": "^files/"
          },
          "container": {
            "$ref": "#/components/schemas/AssetContainerValidation"
          }
        },
        "required": [
          "name",
          "sha256",
          "kind",
          "bytes",
          "path",
          "container"
        ],
        "additionalProperties": false
      },
      "AssetPackageDescriptor": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^asset-package:[a-f0-9]{64}$"
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "archive_bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 536870912
          },
          "expanded_bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2147483648
          },
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetPackageFile"
            },
            "maxItems": 512,
            "minItems": 1
          },
          "native_loaded": {
            "const": false
          }
        },
        "required": [
          "id",
          "sha256",
          "archive_bytes",
          "expanded_bytes",
          "files",
          "native_loaded"
        ],
        "additionalProperties": false
      },
      "AssetPackageReference": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^asset-package:[a-f0-9]{64}$"
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          }
        },
        "required": [
          "id",
          "sha256"
        ],
        "additionalProperties": false
      },
      "AssetOverlay": {
        "type": "object",
        "properties": {
          "version": {
            "const": 1
          },
          "packages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetPackageReference"
            },
            "maxItems": 8,
            "minItems": 1
          },
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetFile"
            },
            "maxItems": 512,
            "minItems": 1
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          }
        },
        "required": [
          "version",
          "packages",
          "files",
          "sha256"
        ],
        "additionalProperties": false
      },
      "NativeMetadataStatus": {
        "type": "object",
        "properties": {
          "required": {
            "type": "boolean"
          },
          "state": {
            "enum": [
              "inactive",
              "waiting",
              "committed"
            ]
          },
          "epoch": {
            "type": "integer",
            "minimum": 0
          },
          "context_sha256": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "match_id": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "bytes": {
            "type": "integer",
            "minimum": 0,
            "maximum": 524288
          },
          "entities": {
            "type": "integer",
            "minimum": 0,
            "maximum": 46
          },
          "simulation_blocked": {
            "type": "boolean"
          },
          "error": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "required",
          "state",
          "epoch",
          "context_sha256",
          "match_id",
          "bytes",
          "entities",
          "simulation_blocked",
          "error"
        ],
        "additionalProperties": false
      },
      "NativeAssetStatus": {
        "type": "object",
        "properties": {
          "active": {
            "type": "boolean"
          },
          "sha256": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[a-f0-9]{64}$"
              },
              {
                "type": "null"
              }
            ]
          },
          "packages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetPackageReference"
            },
            "maxItems": 8,
            "minItems": 0
          },
          "files": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AssetFileObservation"
            },
            "maxItems": 512,
            "minItems": 0
          },
          "reads": {
            "type": "integer",
            "minimum": 0
          },
          "write_refusals": {
            "type": "integer",
            "minimum": 0
          }
        },
        "required": [
          "active",
          "sha256",
          "packages",
          "files",
          "reads",
          "write_refusals"
        ],
        "additionalProperties": false
      },
      "NativePlatform": {
        "type": "object",
        "properties": {
          "available": {
            "const": true
          },
          "version": {
            "const": 1
          },
          "metadata": {
            "$ref": "#/components/schemas/NativeMetadataStatus"
          },
          "assets": {
            "$ref": "#/components/schemas/NativeAssetStatus"
          }
        },
        "required": [
          "available",
          "version",
          "metadata",
          "assets"
        ],
        "additionalProperties": false
      },
      "NativePlatformResponse": {
        "type": "object",
        "properties": {
          "run_id": {
            "type": "string"
          },
          "health": {
            "type": "string"
          },
          "platform": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/NativePlatform"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "run_id",
          "health",
          "platform"
        ],
        "additionalProperties": false
      },
      "NativeContextReceipt": {
        "type": "object",
        "properties": {
          "status": {
            "const": "committed"
          },
          "epoch": {
            "type": "integer",
            "minimum": 1
          },
          "match_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "context_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "payload_sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "bytes": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2097152
          },
          "entities": {
            "type": "integer",
            "minimum": 6,
            "maximum": 46
          }
        },
        "required": [
          "status",
          "epoch",
          "match_id",
          "context_sha256",
          "payload_sha256",
          "bytes",
          "entities"
        ],
        "additionalProperties": false
      },
      "CompatibilityCheck": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "enum": [
              "pass",
              "fail",
              "warning",
              "unknown"
            ]
          },
          "message": {
            "type": "string"
          },
          "fix": {
            "type": [
              "string",
              "null"
            ]
          },
          "evidence": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "required": [
          "id",
          "status",
          "message",
          "fix",
          "evidence"
        ],
        "additionalProperties": false
      },
      "CompatibilityReport": {
        "type": "object",
        "properties": {
          "format": {
            "const": "openhoops.compatibility_report"
          },
          "version": {
            "const": 1
          },
          "status": {
            "enum": [
              "passed",
              "failed",
              "incomplete"
            ]
          },
          "scope": {
            "const": "static_preflight"
          },
          "live_readiness": {
            "const": "not_established"
          },
          "game_started": {
            "const": false
          },
          "request_reserved": {
            "const": false
          },
          "source_files_modified": {
            "const": false
          },
          "summary": {
            "type": "object",
            "properties": {
              "pass": {
                "type": "integer",
                "minimum": 0
              },
              "fail": {
                "type": "integer",
                "minimum": 0
              },
              "warning": {
                "type": "integer",
                "minimum": 0
              },
              "unknown": {
                "type": "integer",
                "minimum": 0
              }
            },
            "required": [
              "pass",
              "fail",
              "warning",
              "unknown"
            ],
            "additionalProperties": false
          },
          "checks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CompatibilityCheck"
            }
          }
        },
        "required": [
          "format",
          "version",
          "status",
          "scope",
          "live_readiness",
          "game_started",
          "request_reserved",
          "source_files_modified",
          "summary",
          "checks"
        ],
        "additionalProperties": false
      },
      "CompatibilityRequest": {
        "type": "object",
        "properties": {
          "request": {
            "$ref": "#/components/schemas/MatchRequest"
          },
          "game_path": {
            "type": "string"
          }
        },
        "required": [
          "request"
        ],
        "additionalProperties": false
      },
      "FrozenRuleValues": {
        "type": "object",
        "properties": {
          "shot_clock_full": {
            "type": "number",
            "minimum": 1,
            "maximum": 120
          },
          "shot_clock_minimum": {
            "type": "number",
            "minimum": 1,
            "maximum": 120
          },
          "personal_foul_limit": {
            "enum": [
              5,
              6
            ]
          },
          "shot_clock_rim": {
            "type": "number",
            "minimum": 1,
            "maximum": 120
          },
          "backcourt_seconds": {
            "type": "number",
            "minimum": 1,
            "maximum": 120
          },
          "overtime_seconds": {
            "type": "number",
            "minimum": 60,
            "maximum": 300,
            "multipleOf": 60
          },
          "period_seconds": {
            "type": "number",
            "minimum": 60,
            "maximum": 1200,
            "multipleOf": 60
          },
          "bonus_threshold": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2147483647
          },
          "one_and_one_threshold": {
            "type": "integer",
            "minimum": 1,
            "maximum": 2147483647
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "CrowdSettings": {
        "type": "object",
        "properties": {
          "fill": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Crowd fullness percentage, 0\u2013100 (35 means 35%). API converts to native Float32 0\u20131; native weighted seat thresholds do not imply an exact headcount."
          },
          "away_percent": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Share of crowd rows using the selected away team clothing and colors. Fullness remains independent; no arena-file changes. Actual shares are reported with row quantization."
          }
        },
        "additionalProperties": false,
        "minProperties": 1
      },
      "CrowdState": {
        "type": "object",
        "properties": {
          "version": {
            "const": 2
          },
          "revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "scene": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "epoch": {
            "type": "integer",
            "minimum": 0
          },
          "active": {
            "type": "boolean"
          },
          "overridden": {
            "type": "boolean"
          },
          "fill": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "target": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "native_fill": {
            "type": "number",
            "minimum": 0,
            "maximum": 100
          },
          "rows": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "anchors": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "occupied_anchors": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "startup": {
            "type": "object",
            "properties": {
              "requested": {
                "type": "boolean"
              },
              "ready": {
                "type": "boolean"
              },
              "failed": {
                "type": "boolean"
              },
              "fill": {
                "type": [
                  "number",
                  "null"
                ],
                "minimum": 0,
                "maximum": 100
              }
            },
            "required": [
              "requested",
              "ready",
              "failed",
              "fill"
            ],
            "additionalProperties": false
          },
          "native_calls": {
            "type": "object",
            "properties": {
              "getter": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295
              },
              "setter": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295
              }
            },
            "required": [
              "getter",
              "setter"
            ],
            "additionalProperties": false
          },
          "error": {
            "enum": [
              null,
              "invalid_crowd_resource",
              "opening_boundary_missed",
              "readback_mismatch",
              "adapter_fault"
            ]
          },
          "authority": {
            "const": "native_attendance_with_readback"
          },
          "units": {
            "const": "percent"
          }
        },
        "required": [
          "version",
          "revision",
          "scene",
          "epoch",
          "active",
          "overridden",
          "fill",
          "target",
          "native_fill",
          "rows",
          "anchors",
          "occupied_anchors",
          "startup",
          "native_calls",
          "error",
          "authority",
          "units"
        ],
        "additionalProperties": false,
        "description": "All fullness values use 0\u2013100 percent, including fill, target, native_fill and startup.fill. Values preserve the native Float32 preimage for guarded commands."
      },
      "CrowdCatalog": {
        "type": "object",
        "properties": {
          "version": {
            "const": 2
          },
          "minimum": {
            "const": 0
          },
          "maximum": {
            "const": 100
          },
          "default": {
            "const": "native"
          },
          "startup": {
            "const": true
          },
          "live": {
            "const": true
          },
          "reset": {
            "const": true
          },
          "distribution": {
            "const": "native_stable_seat_thresholds"
          },
          "scope": {
            "const": "native_audience_occupancy"
          },
          "limits": {
            "type": "string"
          },
          "units": {
            "const": "percent"
          }
        },
        "required": [
          "version",
          "minimum",
          "maximum",
          "default",
          "startup",
          "live",
          "reset",
          "distribution",
          "scope",
          "limits",
          "units"
        ],
        "additionalProperties": false,
        "description": "Public crowd contract version2 uses 0\u2013100 percent. The separate native Crowd.1 mapping retains 0\u20131 scalars."
      },
      "CrowdResponse": {
        "type": "object",
        "properties": {
          "run_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "health": {
            "enum": [
              "ready",
              "unavailable",
              "stale"
            ]
          },
          "state": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CrowdState"
              },
              {
                "type": "null"
              }
            ]
          },
          "catalog": {
            "$ref": "#/components/schemas/CrowdCatalog"
          }
        },
        "required": [
          "run_id",
          "health",
          "state",
          "catalog"
        ],
        "additionalProperties": false
      },
      "CrowdSetCommand": {
        "type": "object",
        "properties": {
          "command_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "client_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "lease_token": {
            "type": "string"
          },
          "run_id": {
            "type": "string"
          },
          "expected_period": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "expected_revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "expected_scene": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "expected_epoch": {
            "type": "integer",
            "minimum": 0
          },
          "expected_value": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Copy the current public fill percentage from crowd state."
          },
          "type": {
            "const": "crowd.set"
          },
          "value": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Crowd fullness percentage, 0\u2013100; 0 empties the native audience and 100 selects its maximum."
          }
        },
        "required": [
          "command_id",
          "client_id",
          "lease_token",
          "run_id",
          "expected_period",
          "expected_revision",
          "expected_scene",
          "expected_epoch",
          "expected_value",
          "type",
          "value"
        ],
        "additionalProperties": false
      },
      "CrowdResetCommand": {
        "type": "object",
        "properties": {
          "command_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "client_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "lease_token": {
            "type": "string"
          },
          "run_id": {
            "type": "string"
          },
          "expected_period": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "expected_revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "expected_scene": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "expected_epoch": {
            "type": "integer",
            "minimum": 0
          },
          "expected_value": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Copy the current public fill percentage from crowd state."
          },
          "type": {
            "const": "crowd.reset"
          }
        },
        "required": [
          "command_id",
          "client_id",
          "lease_token",
          "run_id",
          "expected_period",
          "expected_revision",
          "expected_scene",
          "expected_epoch",
          "expected_value",
          "type"
        ],
        "additionalProperties": false
      },
      "CrowdCommand": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/CrowdSetCommand"
          },
          {
            "$ref": "#/components/schemas/CrowdResetCommand"
          }
        ]
      },
      "CrowdAppearanceState": {
        "type": "object",
        "properties": {
          "version": {
            "const": 1
          },
          "units": {
            "const": "percent"
          },
          "revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "scene": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "epoch": {
            "type": "integer",
            "minimum": 0
          },
          "active": {
            "type": "boolean"
          },
          "overridden": {
            "type": "boolean"
          },
          "away_percent": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "assigned_percent": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "occupied_away_percent": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "rows": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "anchors": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "assigned_anchors": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295
              },
              {
                "type": "null"
              }
            ]
          },
          "occupied_anchors": {
            "type": "integer",
            "minimum": 0,
            "maximum": 4294967295
          },
          "occupied_away": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295
              },
              {
                "type": "null"
              }
            ]
          },
          "home": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "gid": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 4294967295
                  },
                  "filename": {
                    "type": "string",
                    "pattern": "^team_[A-Za-z0-9_.-]+\\.iff$"
                  },
                  "sha256": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$"
                  },
                  "fallback": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "gid",
                  "filename",
                  "sha256",
                  "fallback"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "away": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "gid": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 4294967295
                  },
                  "filename": {
                    "type": "string",
                    "pattern": "^team_[A-Za-z0-9_.-]+\\.iff$"
                  },
                  "sha256": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$"
                  },
                  "fallback": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "gid",
                  "filename",
                  "sha256",
                  "fallback"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "placement": {
            "const": "stable_global_rows"
          },
          "startup": {
            "type": "object",
            "properties": {
              "requested": {
                "type": "boolean"
              },
              "ready": {
                "type": "boolean"
              },
              "failed": {
                "type": "boolean"
              },
              "away_percent": {
                "anyOf": [
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "requested",
              "ready",
              "failed",
              "away_percent"
            ],
            "additionalProperties": false
          },
          "native_calls": {
            "type": "object",
            "properties": {
              "near": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295
              },
              "distant": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295
              },
              "atlas": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295
              },
              "retired": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295
              },
              "pending": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295
              },
              "render_revision": {
                "type": "integer",
                "minimum": 0,
                "maximum": 4294967295
              }
            },
            "required": [
              "near",
              "distant",
              "atlas",
              "retired",
              "pending",
              "render_revision"
            ],
            "additionalProperties": false
          },
          "error": {
            "enum": [
              null,
              "adapter_fault"
            ]
          },
          "authority": {
            "const": "native_crowd_artwork_partition"
          }
        },
        "required": [
          "version",
          "units",
          "revision",
          "scene",
          "epoch",
          "active",
          "overridden",
          "away_percent",
          "assigned_percent",
          "occupied_away_percent",
          "rows",
          "anchors",
          "assigned_anchors",
          "occupied_anchors",
          "occupied_away",
          "home",
          "away",
          "placement",
          "startup",
          "native_calls",
          "error",
          "authority"
        ],
        "additionalProperties": false,
        "description": "Native crowd artwork partition. Requested, assigned and occupied shares use 0\u2013100 percent. Reset/native appearance has unknown away share (null). File hashes identify the read-only clothing sources; call counters establish recorded rendering activity, not pixel acceptance."
      },
      "CrowdAppearanceCatalog": {
        "type": "object",
        "properties": {
          "version": {
            "const": 1
          },
          "units": {
            "const": "percent"
          },
          "minimum": {
            "const": 0
          },
          "maximum": {
            "const": 100
          },
          "default": {
            "const": "native"
          },
          "startup": {
            "const": true
          },
          "live": {
            "const": true
          },
          "reset": {
            "const": true
          },
          "placement": {
            "const": "stable_global_rows"
          },
          "authentic_team_files": {
            "const": true
          },
          "arena_file_edits": {
            "const": false
          },
          "section_selection": {
            "const": false
          },
          "limits": {
            "type": "string"
          }
        },
        "required": [
          "version",
          "units",
          "minimum",
          "maximum",
          "default",
          "startup",
          "live",
          "reset",
          "placement",
          "authentic_team_files",
          "arena_file_edits",
          "section_selection",
          "limits"
        ],
        "additionalProperties": false
      },
      "CrowdAppearanceResponse": {
        "type": "object",
        "properties": {
          "run_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "health": {
            "enum": [
              "ready",
              "unavailable",
              "stale"
            ]
          },
          "state": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CrowdAppearanceState"
              },
              {
                "type": "null"
              }
            ]
          },
          "catalog": {
            "$ref": "#/components/schemas/CrowdAppearanceCatalog"
          }
        },
        "required": [
          "run_id",
          "health",
          "state",
          "catalog"
        ],
        "additionalProperties": false
      },
      "CrowdAppearanceSetCommand": {
        "type": "object",
        "properties": {
          "command_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "client_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "lease_token": {
            "type": "string"
          },
          "run_id": {
            "type": "string"
          },
          "expected_period": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "expected_revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "expected_scene": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "expected_epoch": {
            "type": "integer",
            "minimum": 0
          },
          "expected_value": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "const": "crowd.appearance.set"
          },
          "value": {
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "description": "Requested percentage of crowd assigned authentic away-team clothing and colors, from 0 to 100."
          }
        },
        "required": [
          "command_id",
          "client_id",
          "lease_token",
          "run_id",
          "expected_period",
          "expected_revision",
          "expected_scene",
          "expected_epoch",
          "expected_value",
          "type",
          "value"
        ],
        "additionalProperties": false,
        "description": "Scene/revision/epoch/preimage and lease guarded away-artwork percentage; null expected_value identifies native appearance. Fullness is independent."
      },
      "CrowdAppearanceResetCommand": {
        "type": "object",
        "properties": {
          "command_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "client_id": {
            "type": "string",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
          },
          "lease_token": {
            "type": "string"
          },
          "run_id": {
            "type": "string"
          },
          "expected_period": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "expected_revision": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "expected_scene": {
            "type": "integer",
            "minimum": 1,
            "maximum": 4294967295
          },
          "expected_epoch": {
            "type": "integer",
            "minimum": 0
          },
          "expected_value": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0,
                "maximum": 100
              },
              {
                "type": "null"
              }
            ]
          },
          "type": {
            "const": "crowd.appearance.reset"
          }
        },
        "required": [
          "command_id",
          "client_id",
          "lease_token",
          "run_id",
          "expected_period",
          "expected_revision",
          "expected_scene",
          "expected_epoch",
          "expected_value",
          "type"
        ],
        "additionalProperties": false,
        "description": "Scene/revision/epoch/preimage and lease guarded away-artwork percentage; null expected_value identifies native appearance. Fullness is independent."
      },
      "CrowdAppearanceCommand": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/CrowdAppearanceSetCommand"
          },
          {
            "$ref": "#/components/schemas/CrowdAppearanceResetCommand"
          }
        ]
      }
    }
  },
  "paths": {
    "/v1/session": {
      "get": {
        "summary": "Capabilities and versions",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/health": {
      "get": {
        "summary": "Source freshness",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/results": {
      "get": {
        "summary": "Durable result outbox",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResultPage"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "consumer_id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/v1/matches/{id}": {
      "get": {
        "summary": "Managed match",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Match"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
            }
          }
        ]
      }
    },
    "/v1/snapshot": {
      "get": {
        "summary": "Latest observed snapshot",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Snapshot"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/events": {
      "get": {
        "summary": "Durable observation replay",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventPage"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "after",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/v1/commands/{id}": {
      "get": {
        "summary": "Command receipt",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Receipt"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
            }
          }
        ]
      }
    },
    "/v1/matches": {
      "post": {
        "summary": "Bind current playing roster",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Bind"
              }
            }
          }
        }
      }
    },
    "/v1/matches/{id}/resume": {
      "post": {
        "summary": "Explicit timeline continuation",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Resume"
              }
            }
          }
        }
      }
    },
    "/v1/matches/{id}/abandon": {
      "post": {
        "summary": "Abandon incomplete match",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Abandon"
              }
            }
          }
        }
      }
    },
    "/v1/control/lease": {
      "post": {
        "summary": "Acquire or renew exclusive lease",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Lease"
              }
            }
          }
        }
      }
    },
    "/v1/control/release": {
      "post": {
        "summary": "Release lease",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Release"
              }
            }
          }
        }
      }
    },
    "/v1/commands": {
      "post": {
        "summary": "Guarded native settings, preparation, launch and owned-session commands",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Command"
              }
            }
          }
        }
      }
    },
    "/v1/results/ack": {
      "post": {
        "summary": "Acknowledge consumer result",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Ack"
              }
            }
          }
        }
      }
    },
    "/v1/stream": {
      "get": {
        "summary": "SSE observation replay; reconnect after25 seconds",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/event-stream": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "after",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/v1/settings": {
      "get": {
        "summary": "Observed native settings, coaching and per-opponent defensive configuration",
        "responses": {
          "200": {
            "description": "Current settings",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SettingsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/preparation": {
      "get": {
        "summary": "Current pre-simulation exhibition configuration and loaded arena/playbook choices",
        "responses": {
          "200": {
            "description": "Current exhibition preparation and loaded choices",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreparationResponse"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/preparation/catalog": {
      "get": {
        "summary": "Read a page of team or uniform rows on the game thread (ABI15)",
        "parameters": [
          {
            "name": "kind",
            "in": "query",
            "required": true,
            "schema": {
              "enum": [
                "teams",
                "uniforms"
              ]
            }
          },
          {
            "name": "start",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 65535,
              "default": 0
            }
          },
          {
            "name": "catalog_id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A page from the current loaded roster catalog",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PreparationCatalogResponse"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/launch": {
      "get": {
        "summary": "Current native startup/load/Start context (ABI16)",
        "responses": {
          "200": {
            "description": "Current native startup/load/Start context (ABI16)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LaunchResponse"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rosters": {
      "post": {
        "summary": "Import a hash-bound local standalone ROS without loading it",
        "responses": {
          "200": {
            "description": "Import a hash-bound local standalone ROS without loading it",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterMetadata"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RosterImport"
              }
            }
          }
        }
      }
    },
    "/v1/rosters/{sha256}": {
      "parameters": [
        {
          "name": "sha256",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          }
        }
      ],
      "get": {
        "summary": "Read admitted immutable roster metadata; not a native-load assertion",
        "responses": {
          "200": {
            "description": "Read admitted immutable roster metadata; not a native-load assertion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterMetadata"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "Upload a stock/expanded standalone ROS with exact SHA256; source bytes remain unchanged",
        "responses": {
          "200": {
            "description": "Upload a stock/expanded standalone ROS with exact SHA256; source bytes remain unchanged",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterMetadata"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/octet-stream": {
              "schema": {
                "type": "string",
                "format": "binary",
                "description": "Exactly 2672672 or 16777248 bytes; one Content-Length, no Transfer-Encoding"
              }
            }
          }
        }
      }
    },
    "/v1/lifecycle": {
      "get": {
        "summary": "Inspect ownership and lifetime of the broker-launched game",
        "responses": {
          "200": {
            "description": "Owned process observation; attached games have no stop authority",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Lifecycle"
                }
              }
            }
          }
        }
      }
    },
    "/v1/launch/settings": {
      "get": {
        "summary": "Named startup preset catalog and original-setter readback status (ABI19)",
        "responses": {
          "200": {
            "description": "Runtime preset contract, no device/team assignment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartupSettingsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/roster-tools": {
      "get": {
        "summary": "Optional shared writer availability and named table inventory",
        "responses": {
          "200": {
            "description": "RosterTools",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterTools"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/roster-tools/fields": {
      "get": {
        "summary": "Paged named roster fields without binary layout offsets",
        "parameters": [
          {
            "name": "table",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "start",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 256
            }
          }
        ],
        "responses": {
          "200": {
            "description": "RosterFieldPage",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterFieldPage"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rosters/query": {
      "post": {
        "summary": "Read named fields from an immutable registered ROS",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RosterQueryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "RosterQueryResponse",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterQueryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rosters/edit": {
      "post": {
        "summary": "Write named field edits to a new registered ROS; no game mutation",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RosterEditRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "RosterAuthoringReceipt",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterAuthoringReceipt"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rosters/prepare": {
      "post": {
        "summary": "Prepare roster order, starters and native minute preferences in a new ROS",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RosterPreparationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "RosterAuthoringReceipt",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterAuthoringReceipt"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/launch/request": {
      "get": {
        "summary": "Current or named durable match-request receipt; no automatic restart/replay",
        "parameters": [
          {
            "name": "request_id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request progress and confirmed or unknown native outcome",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MatchRequestResponse"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rosters/{sha256}/content": {
      "get": {
        "summary": "Download verified immutable standalone ROS bytes",
        "description": "Authenticated existing registered hash only. No arbitrary path, query, game mutation or partial transfer contract. ETag contains the exact SHA256.",
        "parameters": [
          {
            "name": "sha256",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{64}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Exact registered ROS content",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              },
              "Content-Disposition": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "400": {
            "description": "Invalid identity or stored content"
          },
          "401": {
            "description": "Authentication required"
          },
          "404": {
            "description": "Roster not registered"
          }
        }
      }
    },
    "/v1/substitutions/requests": {
      "get": {
        "summary": "Read durable substitution request observations",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubstitutionRequestPage"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/substitutions/requests/{id}": {
      "get": {
        "summary": "Read durable substitution request observations",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SubstitutionRequest"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{0,95}$"
            }
          }
        ]
      }
    },
    "/v1/input-devices": {
      "get": {
        "summary": "Connected native input slots and control-record observations",
        "responses": {
          "200": {
            "description": "Process-local input catalog",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "run_id": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "health": {
                      "type": "string"
                    },
                    "catalog": {
                      "oneOf": [
                        {
                          "$ref": "#/components/schemas/InputDevices"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "run_id",
                    "health",
                    "catalog"
                  ],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/rotations/plans": {
      "get": {
        "summary": "Durable rotation schedule observations, newest100",
        "responses": {
          "200": {
            "description": "Durable plan history",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "plans": {
                      "type": "array",
                      "maxItems": 100,
                      "items": {
                        "$ref": "#/components/schemas/RotationPlanObservation"
                      }
                    },
                    "limit": {
                      "const": 100
                    }
                  },
                  "required": [
                    "plans",
                    "limit"
                  ],
                  "additionalProperties": false
                }
              }
            }
          }
        }
      }
    },
    "/v1/roster-metadata": {
      "post": {
        "summary": "Admit an immutable hash-bound local companion",
        "responses": {
          "200": {
            "description": "Admit an immutable hash-bound local companion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterCompanionInfo"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RosterImport"
              }
            }
          }
        }
      }
    },
    "/v1/roster-metadata/{sha256}": {
      "get": {
        "summary": "Read the descriptor of an immutable companion",
        "responses": {
          "200": {
            "description": "Read the descriptor of an immutable companion",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterCompanionInfo"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "sha256",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          }
        }
      ],
      "put": {
        "summary": "Upload a1\u201316MiB exact companion JSON; roster must already be registered",
        "responses": {
          "200": {
            "description": "Upload a stock/expanded standalone ROS with exact SHA256; source bytes remain unchanged",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterCompanionInfo"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RosterCompanion"
              }
            }
          }
        }
      }
    },
    "/v1/roster-metadata/{sha256}/content": {
      "get": {
        "summary": "Download verified companion bytes with SHA256 ETag",
        "responses": {
          "200": {
            "description": "Download verified companion bytes with SHA256 ETag",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterCompanion"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "sha256",
          "in": "path",
          "required": true,
          "schema": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          }
        }
      ]
    },
    "/v1/roster-metadata/query": {
      "post": {
        "summary": "Page all companion scopes without guessing native effects",
        "responses": {
          "200": {
            "description": "Page all companion scopes without guessing native effects",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterMetadataPage"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RosterMetadataQuery"
              }
            }
          }
        }
      }
    },
    "/v1/roster-metadata/resolve": {
      "post": {
        "summary": "Validate selection, source rows and effective overrides before native Start",
        "responses": {
          "200": {
            "description": "Validate selection, source rows and effective overrides before native Start",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RosterContextSpec"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RosterMetadataResolve"
              }
            }
          }
        }
      }
    },
    "/v1/roster-metadata/catalog": {
      "get": {
        "summary": "Read the standard optional college vocabulary",
        "responses": {
          "200": {
            "description": "Read the standard optional college vocabulary",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "Exact version1 openhoops.college.fields catalog with91 optional definitions and scopes."
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rules": {
      "get": {
        "summary": "Rule extension capabilities, frozen configuration and integrity",
        "responses": {
          "200": {
            "description": "Rule extension capabilities, frozen configuration and integrity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RuleRuntimeResponse"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/ball-state": {
      "get": {
        "summary": "Per-field engine-committed ball state",
        "responses": {
          "200": {
            "description": "Per-field engine-committed ball state",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LegalBallResponse"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/platform": {
      "get": {
        "responses": {
          "200": {
            "description": "Checked platform data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NativePlatformResponse"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/asset-packages": {
      "post": {
        "responses": {
          "200": {
            "description": "Checked platform data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetPackageDescriptor"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "path": {
                    "type": "string"
                  },
                  "sha256": {
                    "type": "string",
                    "pattern": "^[a-f0-9]{64}$"
                  }
                },
                "required": [
                  "path",
                  "sha256"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/asset-packages/selection": {
      "post": {
        "responses": {
          "200": {
            "description": "Checked platform data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetOverlay"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "ids": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "pattern": "^asset-package:[a-f0-9]{64}$"
                    },
                    "maxItems": 8,
                    "minItems": 1,
                    "uniqueItems": true
                  }
                },
                "required": [
                  "ids"
                ],
                "additionalProperties": false
              }
            }
          }
        }
      }
    },
    "/v1/asset-packages/{sha256}": {
      "get": {
        "responses": {
          "200": {
            "description": "Checked platform data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetPackageDescriptor"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "sha256",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          }
        ]
      },
      "put": {
        "responses": {
          "200": {
            "description": "Checked platform data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetPackageDescriptor"
                }
              }
            }
          },
          "default": {
            "description": "Structured failure (400/401/403/404/409/413/415/422/500/503)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/zip": {
              "schema": {
                "type": "string",
                "format": "binary"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "sha256",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            }
          }
        ]
      }
    },
    "/v1/compatibility": {
      "post": {
        "description": "Read-only static match preflight. Scratch validation never reserves a request or starts a game; a pass does not establish live readiness.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompatibilityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Static compatibility report, including explicit failures/unknowns.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompatibilityReport"
                }
              }
            }
          },
          "default": {
            "description": "HTTP contract error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/crowd": {
      "get": {
        "summary": "Native audience fullness, scene identity and startup/readback status",
        "responses": {
          "200": {
            "description": "Current native audience state; stale and unavailable remain explicit",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrowdResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/crowd/appearance": {
      "get": {
        "summary": "Visiting team crowd artwork share, provenance and native rendering status",
        "responses": {
          "200": {
            "description": "Current visiting crowd state with explicit stale/unavailable status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CrowdAppearanceResponse"
                }
              }
            }
          }
        }
      }
    }
  }
}
