# API Dokumentation ## Überblick Die Veranstaltungen-API bietet Zugriff auf Events, Locations und deren Vorkommen (Termine). Alle Endpoints sind REST-konform und geben JSON zurück. **Base URL:** `http://localhost:8000/api` --- ## Events API ### 1. Alle Events auflisten **GET** `/events` **Beschreibung:** Listet alle veröffentlichten Events mit optionalen Filtern auf. **Query Parameter:** - `from` (optional): Startdatum im Format YYYY-MM-DD - `to` (optional): Enddatum im Format YYYY-MM-DD - `category` (optional): Filter nach Kategorie - `location` (optional): Filter nach Ort oder Stadt - `limit` (optional): Anzahl pro Seite (1-100, Standard: 20) **Beispiel:** ```bash curl "http://localhost:8000/api/events?category=Kultur&location=Dresden&limit=10" ``` **Response (200 OK):** ```json { "success": true, "data": [ { "id": 1, "title": "Jazz-Konzert im Park", "description": "...", "category": "Musik", "location_id": 1, "status": "published", "location": { "id": 1, "name": "Tiergarten Berlin", "address": { "street": "Straße des 17. Juni", "house_number": "100", "postal_code": "10785", "city": "Berlin", "state": "Berlin", "country": "Germany" }, "contact": { "phone": "+49 30 39403501", "email": "info@tiergarten.de", "website": "https://www.tiergarten.de" } }, "occurrences": [ { "id": 1, "start_datetime": "2026-04-18T10:00:00Z", "end_datetime": "2026-04-18T18:00:00Z", "status": "scheduled" } ] } ], "pagination": { "total": 42, "per_page": 20, "current_page": 1, "last_page": 3 } } ``` --- ### 2. Einzelnes Event anzeigen **GET** `/events/{id}` **Beschreibung:** Zeigt ein einzelnes veröffentlichtes Event mit allen seinen Terminen. **Path Parameter:** - `id` (erforderlich): Event ID **Beispiel:** ```bash curl "http://localhost:8000/api/events/1" ``` **Response (200 OK):** ```json { "success": true, "data": { "id": 1, "title": "Jazz-Konzert im Park", "description": "...", "category": "Musik", "location": { ... }, "occurrences": [ ... ] } } ``` **Response (404 Not Found):** Event nicht veröffentlicht oder existiert nicht. --- ## Locations API ### 3. Verfügbare Veranstaltungsorte **GET** `/events/locations/list` **Beschreibung:** Listet alle verfügbaren Veranstaltungsorte mit vollständigen Adressinformationen auf. **Beispiel:** ```bash curl "http://localhost:8000/api/events/locations/list" ``` **Response (200 OK):** ```json { "success": true, "data": [ { "id": 1, "name": "Tiergarten Berlin", "address": { "street": "Straße des 17. Juni", "house_number": "100", "postal_code": "10785", "city": "Berlin", "state": "Berlin", "country": "Germany", "full_address": "Straße des 17. Juni 100, 10785 Berlin, Germany", "short_address": "10785 Berlin" }, "contact": { "phone": "+49 30 39403501", "email": "info@tiergarten.de", "website": "https://www.tiergarten.de" }, "event_count": 1 } ] } ``` --- ## Utilities API ### 4. Verfügbare Kategorien **GET** `/events/categories/list` **Beschreibung:** Listet alle verfügbaren Event-Kategorien auf. **Beispiel:** ```bash curl "http://localhost:8000/api/events/categories/list" ``` **Response (200 OK):** ```json { "success": true, "data": [ "Musik", "Theater", "Sport", "Film", "Kulinarik", "Kunst", "Literatur", "Wellness", "Festival", "Technologie" ] } ``` --- ## Fehlerbehandlung ### Fehler-Response Format ```json { "success": false, "message": "Beschreibung des Fehlers", "errors": { "field": ["Validierungsfehler"] } } ``` ### HTTP Status Codes - **200 OK:** Erfolgreich - **404 Not Found:** Ressource nicht gefunden - **422 Unprocessable Entity:** Validierungsfehler - **500 Internal Server Error:** Serverfehler --- ## Filterbeispiele ### Events nach Kategorie filtern ```bash curl "http://localhost:8000/api/events?category=Musik" ``` ### Events nach Ort filtern ```bash curl "http://localhost:8000/api/events?location=Berlin" ``` ### Events in Zeitraum filtern ```bash curl "http://localhost:8000/api/events?from=2026-04-15&to=2026-05-31" ``` ### Kombinierte Filter ```bash curl "http://localhost:8000/api/events?category=Kultur&location=Dresden&from=2026-04-15&limit=5" ``` --- ## Swagger UI Eine interaktive API-Dokumentation ist verfügbar unter: **http://localhost:8000/api/docs** Hier kannst du: - Alle Endpoints visualisieren - Parameter testen - Response-Strukturen sehen - API-Calls direkt ausführen --- ## Rate Limiting Aktuell gibt es keine Rate-Limits. Dies kann in Zukunft implementiert werden. --- ## Versionierung Aktuelle API-Version: **1.0.0** Zukünftige Breaking Changes werden durch eine neue Major-Version gekennzeichnet (z.B. `/api/v2/...`). --- ## Support Bei Fragen oder Problemen: **support@veranstaltungen.de**