add food express endpoints markdown

main
Fabian Hoppe 2026-02-10 09:19:50 +01:00
parent b50a13d9db
commit f08624ef57
1 changed files with 126 additions and 0 deletions

View File

@ -0,0 +1,126 @@
# OpenAPI Workshop
**FoodExpress - API Dokumentation erstellen**
*Workshop-Material*
---
## Das Szenario: FoodExpress
> **Willkommen bei FoodExpress!**
>
> Ihr wurdet als Entwicklerteam beauftragt, die API-Dokumentation für FoodExpress zu erstellen - eine innovative Plattform zur Online-Essensbestellung. Die Plattform verbindet hungrige Kunden mit lokalen Restaurants und ermöglicht eine nahtlose Bestellabwicklung.
### Die Geschäftsanforderungen
FoodExpress möchte seinen Partnern und Entwicklern eine standardisierte, gut dokumentierte API zur Verfügung stellen. Eure Aufgabe ist es, eine vollständige OpenAPI-Spezifikation zu erstellen, die alle notwendigen Endpunkte beschreibt.
### Die Kernfunktionen der Plattform
| | **Restaurants** | **Bestellungen** | **Kunden** |
|--|-----------------|------------------|------------|
| **Beschreibung** | Verwaltung und Anzeige von Restaurants und deren Speisekarten | Erstellen, Abrufen und Verwalten von Bestellungen | Kundenverwaltung und Profilinformationen |
| **Endpunkte** | `GET /restaurants`<br>`GET /restaurants/{id}/menu` <br>`GET /restaurants/{id}/orders` | `POST /orders`<br>`GET /orders/{orderId}`<br>`PATCH /orders/{orderId}/status` | `POST /customers`<br>`GET /customers/{id}`<br>`GET /customers/me`<br>`PATCH /customers/{id}`<br>`DELETE /customers/{id}` |
> **Eure Mission**
>
> Im Laufe dieses Workshops werdet ihr schrittweise eine vollständige OpenAPI 3.0 Spezifikation für FoodExpress erstellen. Dabei lernt ihr alle wichtigen Konzepte und Best Practices kennen, die ihr für professionelle API-Dokumentation benötigt.
---
## API Endpunkte - Vollständige Übersicht
Diese Endpunkte sollt ihr im Verlauf des Workshops in eurer OpenAPI-Spezifikation definieren:
### Restaurant-Endpunkte
#### `GET` /restaurants
Liste aller verfügbaren Restaurants abrufen
- **Query-Parameter:** Pagination (limit, offset) für große Ergebnismengen
- **Header-Parameter:** AcceptLanguage
---
#### `GET` /restaurants/{id}/menu
Speisekarte eines bestimmten Restaurants abrufen
- **Path-Parameter:** Restaurant-ID als Pflichtparameter
- **Header-Parameter:** AcceptLanguage
---
#### `GET` /restaurants/{id}/orders
Liste an Bestellungen pro Restaurant
- **Path-Parameter:** Restaurant-ID als Pflichtparameter
- **Header-Parameter:** AcceptLanguage
### Bestell-Endpunkte
#### `POST` /orders
Neue Bestellung aufgeben
- **Request Body:** Bestelldetails inkl. Kunde, Restaurant, Artikel
- **Header-Parameter:** IdempotencyKey
---
#### `GET` /orders/{orderId}
Details einer spezifischen Bestellung abrufen
- **Path-Parameter:** Bestellnummer als Pflichtparameter
---
#### `PATCH` /orders/{orderId}/status
Bestellstatus aktualisieren (z.B. 'in Zubereitung', 'unterwegs')
- **Request Body:** Neuer Status-Wert
### Kunden-Endpunkte
#### `POST` /customers
Neuen Kunden registrieren
- **Request Body:** Kundendaten (Name, E-Mail, Adresse, etc.)
- **Header-Parameter:** IdempotencyKey
---
#### `GET` /customers/{id}
Kundenprofil abrufen
- **Path-Parameter:** Kunden-ID als Pflichtparameter
---
#### `GET` /customers/me
Eigenes Kundenprofil des authentifizierten Benutzers abrufen
---
#### `PATCH` /customers/{id}
Kundendaten aktualisieren
- **Request Body:** Zu aktualisierende Felder
---
#### `DELETE` /customers/{id}
Kundenkonto löschen
- **Hinweis:** Irreversible Aktion - Bestätigung erforderlich