Zum Inhalt

Kunden (Customers)

Die Kunden-API verwaltet alle Kunden und deren Zuordnungen.

Sichtbarkeit

Benutzer sehen standardmäßig nur Kunden aus ihrer eigenen Gruppe. Mit der Berechtigung inventory_global werden alle Kunden sichtbar.

Endpunkte

Methode Pfad Beschreibung Berechtigung
GET /api/v2/customers Alle Kunden auflisten customers_view
GET /api/v2/customers/{id} Einzelnen Kunden abrufen customers_view
POST /api/v2/customers Kunden anlegen customers_edit
PUT /api/v2/customers/{id} Kunden aktualisieren customers_edit
DELETE /api/v2/customers/{id} Kunden löschen customers_delete

Feldmapping

Metrologie-Code API-Feldname Beschreibung
K4601 name Kundenname
K4602 contact Ansprechpartner
K4603 city Stadt
K4604 postal_code Postleitzahl

Alle Kunden auflisten

curl -X GET "https://example.com/api/v2/customers?page=1&per_page=25" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Query-Parameter

Parameter Typ Beschreibung
page integer Seitennummer (Standard: 1)
per_page integer Einträge pro Seite (Standard: 25)
sort string Sortierfeld, z.B. name oder -city (absteigend)
filter[name] string Nach Kundenname filtern
filter[city] string Nach Stadt filtern
filter[postal_code] string Nach Postleitzahl filtern

Antwort

{
  "data": [
    {
      "id": 5,
      "name": "Mustermann GmbH",
      "contact": "Max Mustermann",
      "city": "München",
      "postal_code": "80331",
      "address": "Industriestraße 42",
      "email": "info@mustermann.de",
      "phone": "+49 89 1234567"
    }
  ],
  "meta": {
    "current_page": 1,
    "per_page": 25,
    "total": 87,
    "last_page": 4
  },
  "links": {
    "first": "/api/v2/customers?page=1",
    "last": "/api/v2/customers?page=4",
    "next": "/api/v2/customers?page=2",
    "prev": null
  }
}

Einzelnen Kunden abrufen

curl -X GET "https://example.com/api/v2/customers/5" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Kunden anlegen

curl -X POST "https://example.com/api/v2/customers" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Neuer Kunde AG",
    "contact": "Erika Musterfrau",
    "city": "Berlin",
    "postal_code": "10115",
    "address": "Hauptstraße 1",
    "email": "info@neuer-kunde.de",
    "phone": "+49 30 9876543"
  }'

Pflichtfelder

Das Feld name ist ein Pflichtfeld. Alle weiteren Felder sind optional.

Erfolgreiche Antwort (201)

{
  "data": {
    "id": 88,
    "name": "Neuer Kunde AG",
    "contact": "Erika Musterfrau",
    "city": "Berlin",
    "postal_code": "10115",
    "address": "Hauptstraße 1",
    "email": "info@neuer-kunde.de",
    "phone": "+49 30 9876543"
  }
}

Kunden aktualisieren

curl -X PUT "https://example.com/api/v2/customers/88" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "contact": "Hans Meier",
    "phone": "+49 30 1111111"
  }'

Partielle Updates

Es müssen nur die zu ändernden Felder gesendet werden.

Kunden löschen

curl -X DELETE "https://example.com/api/v2/customers/88" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Achtung

Ein Kunde kann nur gelöscht werden, wenn keine Inventare mehr mit ihm verknüpft sind.

Gruppen-Scoping

Die Kunden-API berücksichtigt automatisch die Gruppenzugehörigkeit des authentifizierten Benutzers:

Berechtigung Sichtbarkeit
Ohne inventory_global Nur Kunden der eigenen Gruppe
Mit inventory_global Alle Kunden im System
# Benutzer ohne inventory_global sieht nur eigene Kunden
curl "https://example.com/api/v2/customers" \
  -H "Authorization: Bearer {token_ohne_global}"
# → Nur Kunden aus der Gruppe des Benutzers

# Benutzer mit inventory_global sieht alle Kunden
curl "https://example.com/api/v2/customers" \
  -H "Authorization: Bearer {token_mit_global}"
# → Alle Kunden im System

Sortierung und Filterung

# Nach Name sortiert
curl "https://example.com/api/v2/customers?sort=name" \
  -H "Authorization: Bearer {token}"

# Kunden in München
curl "https://example.com/api/v2/customers?filter[city]=München" \
  -H "Authorization: Bearer {token}"

# Nach PLZ filtern, absteigend sortiert
curl "https://example.com/api/v2/customers?filter[postal_code]=80331&sort=-name" \
  -H "Authorization: Bearer {token}"

Fehlercodes

HTTP-Status Bedeutung
401 Nicht authentifiziert — ungültiger oder fehlender Token
403 Keine Berechtigung (customers_view, customers_edit oder customers_delete fehlt)
404 Kunde nicht gefunden oder nicht in der eigenen Gruppe
409 Kunde kann nicht gelöscht werden — verknüpfte Inventare vorhanden
422 Validierungsfehler — z.B. fehlender Kundenname
429 Rate-Limit überschritten