changedInput schema / properties / capacity / description
Previous value: -"Players per court (2 singles, 4 doubles)"New value: +"Players per court: 2 for singles, 4 for doubles, 10 for 5v5 basketball"
addedInput schema / properties / capacity / minimum
Added value: +1
changedInput schema / properties / capacity / type
Previous value: -"number"New value: +"integer"
changedInput schema / properties / courts / description
Previous value: -"Number of courts available for the rotation plan"New value: +"Number of courts in use at once (default 1)"
addedInput schema / properties / courts / minimum
Added value: +1
changedInput schema / properties / courts / type
Previous value: -"number"New value: +"integer"
changedInput schema / properties / players / description
Previous value: -"Roster names"New value: +"Unique roster names, at least capacity x courts of them, e.g. [\"Asha\",\"Dev\",\"Mira\",\"Sam\",\"Lee\",\"Kai\"]"
addedInput schema / properties / players / minItems
Added value: +2
changedInput schema / properties / rounds / description
Previous value: -"Number of rounds to be scheduled in the rotation plan"New value: +"Number of rounds to schedule, 1-50"
addedInput schema / properties / rounds / maximum
Added value: +50
addedInput schema / properties / rounds / minimum
Added value: +1
changedInput schema / properties / rounds / type
Previous value: -"number"New value: +"integer"
changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "properties": {
+ "fairness": {
+ "description": "Games-played balance across the roster",
+ "properties": {
+ "max_games": {
+ "description": "Most games any player gets",
+ "type": "integer"
+ },
+ "min_games": {
+ "description": "Fewest games any player gets",
+ "type": "integer"
+ },
+ "spread": {
+ "description": "max_games minus min_games",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "min_games",
+ "max_games",
+ "spread"
+ ],
+ "type": "object"
+ },
+ "format": {
+ "description": "Format label built from capacity and courts, e.g. '4v4 on 2 court(s)'",
+ "type": "string"
+ },
+ "note": {
+ "description": "Whether the rotation is perfectly balanced",
+ "type": "string"
+ },
+ "rounds": {
+ "description": "Number of rounds scheduled",
+ "type": "integer"
+ },
+ "schedule": {
+ "description": "One entry per round",
+ "items": {
+ "properties": {
+ "courts": {
+ "description": "Players on each court this round",
+ "items": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "type": "array"
+ },
+ "round": {
+ "description": "Round number starting at 1",
+ "type": "integer"
+ },
+ "sitting": {
+ "description": "Players sitting out this round",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "round",
+ "courts",
+ "sitting"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "format",
+ "rounds",
+ "fairness",
+ "schedule",
+ "note"
+ ],
+ "type": "object"
+}