| season* | object | Saison, in die eingespeist wird. Wird angelegt oder aktualisiert. |
| season.externalId* | string | ID der Saison im System des Verbands. Muss pro Verband über alle Saisons hinweg eindeutig sein. (min. 1 Zeichen, max. 190 Zeichen) |
| season.name* | string | Anzeigename, z. B. „Saison 2026/27“. (min. 1 Zeichen, max. 200 Zeichen) |
| season.startsOn* | string | Erster Tag der Saison. (Muster ^\d{4}-\d{2}-\d{2}$) |
| season.endsOn* | string | Letzter Tag der Saison. (Muster ^\d{4}-\d{2}-\d{2}$) |
| season.previousSeasonExternalId | string | externalId der Vorsaison. Grundlage dafür, bestehende Verknüpfungen in die neue Saison zu übernehmen. (min. 1 Zeichen, max. 190 Zeichen) |
| competition* | object | Wettbewerb. Die Saisonzuordnung ergibt sich aus dem Feld season. |
| competition.externalId* | string | ID des Wettbewerbs im System des Verbands. (min. 1 Zeichen, max. 190 Zeichen) |
| competition.name* | string | Anzeigename, z. B. „Bezirksliga Herren“. (min. 1 Zeichen, max. 200 Zeichen) |
| competition.type | LEAGUE | CUP | FRIENDLY | Art des Wettbewerbs. (Standard "LEAGUE") |
| competition.sport | string | Sportart, z. B. „Handball“. (max. 100 Zeichen) |
| competition.ageGroup | string | Altersklasse, z. B. „Herren“. (max. 100 Zeichen) |
| competition.timezone | string | IANA-Zeitzone. Sie hängt am Wettbewerb, nicht am Verband, weil Wettbewerbe regional verortet sind. (min. 1 Zeichen, max. 100 Zeichen, Standard "Europe/Berlin") |
| competition.defaultKickoffTime | string | Standard-Anstoß als Ortszeit, wenn eine Begegnung keinen eigenen trägt. (Muster ^([01]\d|2[0-3]):[0-5]\d$) |
| competition.defaultDurationMinutes | integer | Standarddauer in Minuten, wenn eine Begegnung keine eigene trägt. (max. 600) |
| teams | object[] | Ligateams des Wettbewerbs. (Standard []) |
| teams[].externalId* | string | ID der Mannschaft im System des Verbands. (min. 1 Zeichen, max. 190 Zeichen) |
| teams[].name* | string | Name der Mannschaft, z. B. „SV Donnerblitz II“. (min. 1 Zeichen, max. 200 Zeichen) |
| teams[].clubName | string | Name des Vereins, z. B. „SV Donnerblitz e.V.“. (max. 200 Zeichen) |
| teams[].shortName | string | Kurzform für enge Darstellungen. (max. 50 Zeichen) |
| teams[].homeVenueName | string | Name der Heimspielstätte. (max. 200 Zeichen) |
| teams[].homeVenueAddress | string | Anschrift der Heimspielstätte. (max. 300 Zeichen) |
| rounds | object[] | Spieltage. Die Wettbewerbszuordnung ergibt sich aus dem Feld competition. (Standard []) |
| rounds[].externalId* | string | ID des Spieltags im System des Verbands. (min. 1 Zeichen, max. 190 Zeichen) |
| rounds[].name* | string | Anzeigename, z. B. „1. Spieltag“. (min. 1 Zeichen, max. 200 Zeichen) |
| rounds[].number | integer | Laufende Nummer des Spieltags. (max. 9007199254740991) |
| rounds[].periodStart* | string | Erster Tag des Zeitraums, in dem der Spieltag ausgetragen wird. (Muster ^\d{4}-\d{2}-\d{2}$) |
| rounds[].periodEnd* | string | Letzter Tag des Zeitraums. Ohne festen Anstoß terminieren die Teams innerhalb dieses Zeitraums. (Muster ^\d{4}-\d{2}-\d{2}$) |
| fixtures | object[] | Begegnungen des Spielplans. (Standard []) |
| fixtures[].externalId* | string | ID der Begegnung im System des Verbands. (min. 1 Zeichen, max. 190 Zeichen) |
| fixtures[].roundExternalId | string | externalId des Spieltags, zu dem die Begegnung gehört. (min. 1 Zeichen, max. 190 Zeichen) |
| fixtures[].homeTeamExternalId | string | externalId der Heimmannschaft. (min. 1 Zeichen, max. 190 Zeichen) |
| fixtures[].awayTeamExternalId | string | externalId der Gastmannschaft. (min. 1 Zeichen, max. 190 Zeichen) |
| fixtures[].venueName | string | Spielstätte, falls abweichend von der Heimspielstätte. (max. 200 Zeichen) |
| fixtures[].venueAddress | string | Anschrift der abweichenden Spielstätte. (max. 300 Zeichen) |
| fixtures[].status | SCHEDULED | CANCELLED | Absagen laufen ausschließlich über den Status, nie über Löschen — sonst gingen die Rückmeldungen der Spieler verloren. VOID wird nicht gesetzt, sondern ergibt sich aus einer Sperre. |
| fixtures[].kickoffAt | string (date-time) | Anstoß als ISO-8601-Zeitpunkt mit Offset oder Z — eindeutig, empfohlen. Schließt kickoffLocalTime aus. |
| fixtures[].kickoffLocalTime | string | Anstoß als Ortszeit HH:mm; wird über die Zeitzone des Wettbewerbs und das Datum des Spieltags sommerzeitfest in UTC umgerechnet. Schließt kickoffAt aus. (Muster ^([01]\d|2[0-3]):[0-5]\d$) |
| fixtures[].durationMinutes | integer | Dauer in Minuten. Fehlt sie, greift der Standardwert des Wettbewerbs, danach der des Teams. (max. 600) |
| fixtures[].note | string | Freitext, z. B. der Grund einer Absage. (max. 500 Zeichen) |