Aufträge

Transportaufträge anlegen, abfragen, stornieren — und die manipulationssichere Event-Historie lesen.

Alle Pfade relativ zur Basis-URL (…/api/partner/v1). Die vollständigen Feldlisten mit Typen und Beispielen stehen in der API-Referenz.

Endpoint Zweck Scope
POST /orders Auftrag anlegen orders:write
GET /orders Aufträge auflisten (Cursor-Pagination, Filter) orders:read
GET /orders/{id} Auftragsdetail orders:read
POST /orders/{id}/cancel Auftrag stornieren orders:write
GET /orders/{id}/events Event-Historie (Chain of Custody) orders:read
GET /locations, POST /locations Standorte der Organisation lesen/anlegen orders:read / orders:write

Auftrag anlegen

POST /orders. Abhol- und Zustellort (pickup, dropoff) geben Sie jeweils in einer von drei Formen an:

Form Feld Verhalten
Bestehender Standort location_id referenziert einen Standort Ihrer Organisation (siehe GET /locations)
Strukturierte Adresse address wird serverseitig geocodiert und als Standort Ihrer Organisation angelegt bzw. wiederverwendet
Freitext-Adresse address_text wie address, aber als eine Zeile Freitext

Kann eine Adresse nicht aufgelöst werden, antwortet die API mit 422 und dem Fehler-Code ADDRESS_NOT_RESOLVED — der Auftrag wird dann nicht angelegt. Prüfen Sie die Adresse und senden Sie erneut.

external_id (empfohlen): Ihre eigene Referenz (z. B. Bestell- oder Rezeptnummer, max. 100 Zeichen). Sie ist pro Organisation eindeutig, erscheint in Webhook-Payloads und ist als Filter in GET /orders nutzbar — damit verknüpfen Sie Hemostat-Aufträge robust mit Ihrem System.

Weitere Felder (SLA, Zeitfenster, Notizen, Positionen mit Warentyp) entnehmen Sie der API-Referenz.

Idempotenz

Übermitteln Sie bei POST /orders den Header Idempotency-Key mit einem von Ihnen erzeugten eindeutigen Wert (z. B. UUID). Damit sind Retries — etwa nach Timeout — gefahrlos:

Idempotency-Keys werden zeitlich begrenzt vorgehalten (Größenordnung ein Tag); für langfristige Dublettenvermeidung nutzen Sie zusätzlich external_id.

Auflisten, Pagination, Filter

GET /orders liefert Seiten in stabiler Reihenfolge über Cursor-Pagination: Jede Antwort enthält einen Cursor, den Sie für die nächste Seite übergeben; limit ist auf 100 begrenzt. Verlassen Sie sich nicht auf Seitenzahlen — Cursor bleiben auch bei parallel entstehenden Aufträgen konsistent.

Filter:

Parameter Wirkung
status nur Aufträge in diesem Status
external_id Auftrag zu Ihrer Referenz finden
updated_since nur seitdem geänderte Aufträge (für Abgleich-Läufe)

Für laufende Statusverfolgung sind Webhooks das vorgesehene Mittel; Polling mit updated_since eignet sich als Abgleich- und Nachhol-Mechanismus.

Event-Historie

GET /orders/{id}/events liefert die Chain-of-Custody-Historie des Auftrags als Auszug aus dem hashverketteten Event-Log der Plattform: wer wann welchen Schritt dokumentiert hat — von der Beauftragung über Abholung und Siegel-Scan bis zur Zustellung. Dieselbe Datenbasis speist das revisionssichere Transportprotokoll.

Die Feldstruktur der Events entnehmen Sie der API-Referenz.

Stornieren

POST /orders/{id}/cancel storniert einen Auftrag, solange die Übernahme in die Gewahrsamskette noch nicht begonnen hat — es gelten dieselben Regeln wie in der Hemostat-Plattform. Danach ist eine Stornierung über die API nicht mehr möglich; wenden Sie sich in dem Fall an die Disposition.

Fehlerformat

Alle Fehler haben denselben Envelope:

{
  "error": {
    "code": "ADDRESS_NOT_RESOLVED",
    "message": "Die Zustelladresse konnte nicht aufgelöst werden.",
    "details": {
      "field": "dropoff.address_text"
    }
  }
}

Die je Endpoint möglichen Codes listet die API-Referenz.