Zum Hauptinhalt springen

REST-API-Übersicht

REST‑API‑Dokumentation – Kunden‑ und Adress‑Service


1. Basis‑URL

https://api.example.com/v1

Alle Endpunkte sind relativ zu dieser Basis‑URL zu verstehen.


2. Authentifizierung

Die API verwendet OAuth 2.0.
Für jede Anfrage muss ein gültiger Access‑Token im Header übergeben werden:

Authorization: Bearer <access_token>

3. Fehler‑Antworten

HTTP‑StatusCodeBeschreibung
400bad_requestUngültige Parameter oder fehlende Pflichtfelder
401unauthorizedKein oder abgelaufenes Token
403forbiddenUnzureichende Berechtigung
404not_foundRessource nicht gefunden
500internal_errorServer‑seitiger Fehler

Antwortkörper (JSON):

{
"error": {
"code": "bad_request",
"message": "Invalid request payload",
"details": [
{
"field": "email",
"issue": "missing"
}
]
}
}

4. Kunden‑Endpunkte

MethodePfadZweckBeispiel‑RequestBeispiel‑Response
GET/customersAlle Kunden abrufen (mit Pagination)GET /customers?limit=20&page=2200 OK + JSON‑Array
GET/customers/{id}Einzelnen Kunden abrufenGET /customers/123200 OK + JSON‑Objekt
POST/customersNeuen Kunden anlegenPOST /customers + JSON‑Body201 Created + JSON‑Objekt
PUT/customers/{id}Kunden vollständig aktualisierenPUT /customers/123 + JSON‑Body200 OK + JSON‑Objekt
PATCH/customers/{id}Teilweise AktualisierungPATCH /customers/123 + JSON‑Body200 OK + JSON‑Objekt
DELETE/customers/{id}Kunden löschenDELETE /customers/123204 No Content

Beispiel‑Payload (Kunde)

{
"first_name": "Max",
"last_name": "Mustermann",
"email": "[email protected]",
"phone": "+49 123 4567890",
"address_id": 42
}

Beispiel‑Response (Kunde)

{
"id": 123,
"first_name": "Max",
"last_name": "Mustermann",
"email": "[email protected]",
"phone": "+49 123 4567890",
"address_id": 42,
"created_at": "2024-01-01T12:34:56Z",
"updated_at": "2024-01-01T12:34:56Z"
}

5. Adress‑Endpunkte

MethodePfadZweckBeispiel‑RequestBeispiel‑Response
GET/addressesAlle Adressen abrufenGET /addresses?limit=20&page=1200 OK + JSON‑Array
GET/addresses/{id}Einzelne Adresse abrufenGET /addresses/42200 OK + JSON‑Objekt
POST/addressesNeue Adresse anlegenPOST /addresses + JSON‑Body201 Created + JSON‑Objekt
PUT/addresses/{id}Adresse vollständig aktualisierenPUT /addresses/42 + JSON‑Body200 OK + JSON‑Objekt
PATCH/addresses/{id}Teilweise AktualisierungPATCH /addresses/42 + JSON‑Body200 OK + JSON‑Objekt
DELETE/addresses/{id}Adresse löschenDELETE /addresses/42204 No Content

Beispiel‑Payload (Adresse)

{
"street": "Musterstraße 1",
"city": "Berlin",
"postal_code": "10115",
"country": "DE"
}

Beispiel‑Response (Adresse)

{
"id": 42,
"street": "Musterstraße 1",
"city": "Berlin",
"postal_code": "10115",
"country": "DE",
"created_at": "2024-01-01T12:34:56Z",
"updated_at": "2024-01-01T12:34:56Z"
}

6. Pagination

Alle Listen‑Endpunkte unterstützen die Parameter limit (Anzahl pro Seite) und page (Seitennummer).
Antworten enthalten zusätzlich ein meta‑Objekt:

{
"data": [ ... ],
"meta": {
"total": 125,
"limit": 20,
"page": 2,
"pages": 7
}
}

7. Filter‑ und Sortier‑Parameter

ParameterTypBeschreibung
searchstringFreitextsuche (Name, Email, etc.)
sort_bystringFeld, nach dem sortiert werden soll (z. B. last_name)
sort_orderstringasc oder desc (Standard: asc)
created_afterISO‑8601‑DatumNur Kunden/Adressen ab diesem Datum
created_beforeISO‑8601‑DatumNur Kunden/Adressen bis zu diesem Datum

Beispiel: GET /customers?search=Max&sort_by=last_name&sort_order=desc


8. Beispiel‑Workflow

  1. Kundenliste abrufen
    GET https://api.example.com/v1/customers?limit=10&page=1

  2. Neuen Kunden anlegen

    POST https://api.example.com/v1/customers
    Content-Type: application/json
    Authorization: Bearer <token>

    {
    "first_name": "Anna",
    "last_name": "Schmidt",
    "email": "[email protected]",
    "phone": "+49 987 6543210",
    "address_id": 56
    }
  3. Adresse aktualisieren

    PATCH https://api.example.com/v1/addresses/56
    Content-Type: application/json
    Authorization: Bearer <token>

    {
    "city": "Hamburg"
    }
  4. Kunden löschen
    DELETE https://api.example.com/v1/customers/123


9. Rate‑Limiting

  • Anzahl: 1000 Anfragen pro Stunde pro Token
  • Header: X-RateLimit-Remaining, X-RateLimit-Reset

10. Kontakt

Bei Fragen oder Problemen wenden Sie sich bitte an den Support unter [email protected].