Anlegen antwortet mit 201 Created; Schema-Status bei POST ohne Rückgabe richtigstellen #128
Labels
No labels
Kind
Bug
Kind
Enhancement
Kind
Maintenance
Priority
P1
Priority
P2
Priority
P3
Status
In Progress
Status
Need More Info
Status
Zur Abnahme
Änderungen Wettspielreglement
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sffs-tt-basel/sffs-tt-issues#128
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Entschieden am 22.10.2026 beim Zalando-Review von
/api/seasons, die Regel steht in CLAUDE.md unter REST-Vertrag.1. Anlegen antwortet mit 201
Ein POST, der eine neue Ressource anlegt, antwortet mit 201 Created und liefert die neue Ressource wie bisher im Body. So verlangt es Zalando unter „MUST use HTTP methods correctly“, dort als SHOULD formuliert. Gibt es einen GET auf die neue Ressource, steht dessen URL im
Location-Header. Heute liefert keiner der Anlege-Endpunkte 201.Betroffen sind 21 der 46 POSTs:
/api/seasons,/api/match-weeks,/api/clubs,/api/clubs/{clubId}/players,/api/clubs/{clubId}/teams,/api/players,/api/competition/categories,/api/competition/team-matches/{teamMatchId}/proposals/api/competition/tournaments,…/tournaments/categories/{categoryId}/rounds,…/games,…/byes/api/articles,/api/articles/images,/api/board-members,/api/documents,/api/events,/api/events/{id}/attachments,/api/events/{id}/photos,/api/saisons/api/usersBei 200 bleiben Aktionen, Importe und Berechnungen:
archive/unarchivedepartures,withdraw-options,generate/api/import/*, Elorecalculate/classify/season-startloginboard-members/{id}/photo(ersetzt das Foto eines bestehenden Eintrags)Wie Cup-
advance(gibt eine nackte Zahl zurück) antworten soll, wird beim Durchgang seines Endpunkts entschieden.POST /api/competition/categorieshat laut Service-Analyse keinen Aufrufer mehr und fällt vielleicht weg. Erst klären, dann umstellen.Frontends: Hier ändert sich nichts.
packages/shared/src/api.tsprüftresponse.ok, das gilt für 200 wie für 201. Umzustellen sind die Backend- und E2E-Tests, die beim Anlegen200erwarten.Typen: Der Rückgabetyp muss im Schema bleiben (ADR 0007). Prüfen, ob
RestResponse<T>oder@ResponseStatus(201)den Typ und die 201 insopenapi.jsonbringt. Ein rohesResponsedarf es nicht werden.2. Das Schema nennt bei 5 POSTs einen falschen Status
Fünf POSTs ohne Rückgabewert stehen in
openapi.jsonmit 201, antworten aber mit 204. SmallRye nimmt fürvoidbei POST 201 an, Quarkus schickt 204, und die Backend-Tests prüfen auf 204:POST /api/auth/change-passwordPOST /api/board-members/reorderPOST /api/clubs/{id}/completePOST /api/clubs/{id}/reopenPOST /api/competition/elo/correctionsDas Schema muss hier 204 sagen.
complete/reopenstehen in der Endpunkt-Überarbeitung ohnehin zur Umstellung aufPUT …/registration-statusan. Fallen sie vorher weg, sind es nur noch drei.Abnahme
mvn -B clean verify, die Frontend-Builds, E2E undmetrics.py diffsind grün.openapi.jsonhat jeder der 21 Anlege-POSTs201mit Body-Schema, und kein POST ohne Rückgabe steht mit201.