changedInput schema / properties / currency / description
Previous value: -"Currency code (ISO 4217) for all transactions"New value: +"Currency code used only for display, e.g. USD (default USD)"
changedInput schema / properties / payments / description
Previous value: -"Array of payment objects, each with payer, payee, and amount"New value: +"Optional list of who already paid what across the series, e.g. [{\"name\":\"Asha\",\"paid\":120}]"
addedInput schema / properties / payments / items / properties / name / description
Added value: +"Player who paid, e.g. the person who fronted court fees"
addedInput schema / properties / payments / items / properties / paid / description
Added value: +"Total amount this player has paid across the series, in currency units"
addedInput schema / properties / payments / items / properties / paid / minimum
Added value: +0
changedInput schema / properties / payments / items / required
Previous value: -[
- "name"
-]New value: +[
+ "name",
+ "paid"
+]
changedInput schema / properties / players / description
Previous value: -"Array of player names or IDs"New value: +"Optional full roster, so players who missed every session still appear with a zero balance"
changedInput schema / properties / sessions / description
Previous value: -"Array of session objects, each with date, attendees, and cost"New value: +"Sessions in order, each with its cost and the names who attended"
addedInput schema / properties / sessions / items / properties / attendees / description
Added value: +"Unique names of players present at this session"
addedInput schema / properties / sessions / items / properties / attendees / minItems
Added value: +1
addedInput schema / properties / sessions / items / properties / cost / description
Added value: +"Cost of this session in currency units, e.g. 60"
addedInput schema / properties / sessions / items / properties / cost / exclusiveMinimum
Added value: +0
addedInput schema / properties / sessions / items / properties / label / description
Added value: +"Optional session label, e.g. 'Tue 7pm' (default 'session N')"
addedInput schema / properties / sessions / minItems
Added value: +1
changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "properties": {
+ "currency": {
+ "description": "Currency code used for display",
+ "type": "string"
+ },
+ "note": {
+ "description": "Explanation of how the series was split",
+ "type": "string"
+ },
+ "players": {
+ "description": "Per-player paid, owed, balance and sessions attended",
+ "items": {
+ "properties": {
+ "balance": {
+ "description": "paid minus owed; positive = gets money back, negative = owes money",
+ "type": "number"
+ },
+ "name": {
+ "description": "Player name",
+ "type": "string"
+ },
+ "owed": {
+ "description": "This player's fair share of the cost",
+ "type": "number"
+ },
+ "paid": {
+ "description": "Amount this player paid",
+ "type": "number"
+ },
+ "sessions_played": {
+ "description": "Number of sessions this player attended",
+ "type": "integer"
+ }
+ },
+ "required": [
+ "name",
+ "paid",
+ "owed",
+ "balance",
+ "sessions_played"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "session_count": {
+ "description": "Number of sessions processed",
+ "type": "integer"
+ },
+ "sessions": {
+ "description": "Per-session cost breakdown",
+ "items": {
+ "properties": {
+ "attendees": {
+ "description": "Number of attendees",
+ "type": "integer"
+ },
+ "cost": {
+ "description": "Session cost",
+ "type": "number"
+ },
+ "label": {
+ "description": "Session label",
+ "type": "string"
+ },
+ "per_head": {
+ "description": "Cost per attendee for this session",
+ "type": "number"
+ }
+ },
+ "required": [
+ "label",
+ "cost",
+ "attendees",
+ "per_head"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "total_cost": {
+ "description": "Sum of all session costs",
+ "type": "number"
+ },
+ "transfers": {
+ "description": "Fewest payments that settle everyone",
+ "items": {
+ "properties": {
+ "amount": {
+ "description": "Amount to transfer, rounded to cents",
+ "type": "number"
+ },
+ "from": {
+ "description": "Player who pays",
+ "type": "string"
+ },
+ "to": {
+ "description": "Player who receives",
+ "type": "string"
+ }
+ },
+ "required": [
+ "from",
+ "to",
+ "amount"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "currency",
+ "total_cost",
+ "session_count",
+ "sessions",
+ "players",
+ "transfers",
+ "note"
+ ],
+ "type": "object"
+}