Pflicht-Query-Parameter stehen im Schema als freiwillig #135

Open
opened 2026-10-23 20:15:57 +00:00 by claude · 0 comments
Collaborator

Aus dem Review von Etappe 1 der URL-Neuordnung (23.10., Branch feature/url-etappe-1).

GET /api/elo-determinations antwortet ohne ?seasonId= mit 400 (EloResource.determinations). Im Schema (packages/api-types/openapi.json) steht der Parameter aber mit required: false. Der Vertrag beschreibt den Endpunkt damit falsch (ADR 0007).

Dasselbe Muster gab es schon vorher, zum Beispiel bei CategoryRoundResource.list und MatchWeekResource: Der Server verlangt den Parameter, das Schema nicht.

Vorschlag: Alle Query-Parameter, ohne die ein Endpunkt 400 antwortet, mit @Parameter(required = true) (MicroProfile OpenAPI) auszeichnen und openapi.json neu erzeugen. Am besten zusammen mit #126, das die Query-Parameter ohnehin auf snake_case umstellt (die Spec der URL-Neuordnung macht season_id dort zur Pflicht, G3).

Vorher vollständig aufzählen, welche Endpunkte einen Pflicht-Query-Parameter haben (Null-Prüfung im Code), nicht nur die drei genannten.

Aus dem Review von Etappe 1 der URL-Neuordnung (23.10., Branch `feature/url-etappe-1`). `GET /api/elo-determinations` antwortet ohne `?seasonId=` mit **400** (`EloResource.determinations`). Im Schema (`packages/api-types/openapi.json`) steht der Parameter aber mit `required: false`. Der Vertrag beschreibt den Endpunkt damit falsch (ADR 0007). Dasselbe Muster gab es schon vorher, zum Beispiel bei `CategoryRoundResource.list` und `MatchWeekResource`: Der Server verlangt den Parameter, das Schema nicht. **Vorschlag:** Alle Query-Parameter, ohne die ein Endpunkt 400 antwortet, mit `@Parameter(required = true)` (MicroProfile OpenAPI) auszeichnen und `openapi.json` neu erzeugen. Am besten zusammen mit #126, das die Query-Parameter ohnehin auf snake_case umstellt (die Spec der URL-Neuordnung macht `season_id` dort zur Pflicht, G3). Vorher vollständig aufzählen, welche Endpunkte einen Pflicht-Query-Parameter haben (Null-Prüfung im Code), nicht nur die drei genannten.
Sign in to join this conversation.
No description provided.