Zum Hauptinhalt springen

Neue Bestellung für einen Kunden erstellen

Dieser Endpoint erstellt eine neue Bestellung für einen Kunden mit den angegebenen Shop-Artikeln. Die Artikel werden dem Warenkorb des Kunden hinzugefügt und anschließend wird daraus eine Bestellung generiert.

Endpoint-Details

HTTP-Methode: POST

URL: /external/v1/customers/{customer_id}/orders

Authentifizierung: API-Schlüssel (erforderlich)

Parameter

URL-Parameter

ParameterTypErforderlichBeschreibung
customer_idlongJaDie eindeutige ID des Kunden
HeaderTypErforderlichBeschreibung
X-Api-KeystringJaAPI-Schlüssel für die Authentifizierung

Request Body

Beispiel: Shop-Artikel Bestellung

{
"shopArticles": [
{
"id": 1001,
"amount": 2
},
{
"id": 1005,
"amount": 1
}
]
}

Beispiel: Labor-Auftrags-Bestellung

{
"shopArticles": [
{
"id": 2001,
"amount": 1
}
],
"questionnaireSurveyType": 20,
"labOrderPaymentType": 17,
"labSamples": [
{
"labSampleTypeId": 101,
"id": "SAMPLE-12345",
"date": "2026-06-01",
"note": "Morgenwert"
},
{
"labSampleTypeId": 102,
"id": "SAMPLE-12346",
"date": "2026-06-01",
"note": null
}
]
}

Request-Felder

FeldTypErforderlichBeschreibung
shopArticlesarrayJaListe der zu bestellenden Artikel
questionnaireSurveyTypeint?Bei Labor-Auftrags-ArtikelnFragebogen-Typ (siehe Tabelle unten)
labOrderPaymentTypeint?Bei Labor-Auftrags-ArtikelnZahlungsart für Laboraufträge (siehe Tabelle unten)
labSamplesarray?Bei Labor-Auftrags-ArtikelnListe der Laborproben

ShopArticle-Felder

FeldTypErforderlichBeschreibung
idlongJaEindeutige ID des Artikels
amountintJaBestellmenge (muss zwischen 1 und OrderMaximum des Artikels liegen)

LabSample-Felder (nur bei Labor-Auftrags-Artikeln)

FeldTypErforderlichBeschreibung
labSampleTypeIdlongJaID des Laborproben-Typs
idstringJaEindeutige Proben-ID (darf nicht leer sein)
dateDateTimeJaEntnahmedatum/-zeit (max. ±14 Tage von heute)
notestring?NeinNotiz zur Probe

Response

Erfolgreiche Response (200 OK)

{
"id": 67890,
"success": true,
"errorMessage": null
}

Fehlerhafte Response (400 Bad Request)

{
"id": 0,
"success": false,
"errorMessage": "Article with Id '9999' not found or not orderable"
}

Response-Felder

FeldTypBeschreibung
idlongDie ID der neu erstellten Bestellung (bei Erfolg)
successbooleanGibt an, ob die Bestellung erfolgreich erstellt wurde
errorMessagestring?Fehlermeldung, falls ein Fehler aufgetreten ist (ansonsten null)

Status-Codes

CodeBeschreibung
200OK - Bestellung wurde erfolgreich erstellt (prüfe success-Feld)
400Bad Request - Anfragedaten sind ungültig oder unvollständig
401Unauthorized - API-Schlüssel ist ungültig oder fehlt
403Forbidden - Keine Zugriffsberechtigung auf den Kunden
500Internal Server Error - Interner Serverfehler bei Bestellerstellung

Fragebogen-Typen (questionnaireSurveyType)

WertBezeichnungBeschreibung
20UseExistingBestehenden Fragebogen verwenden
30SendFilloutLinkAusfülllink per E-Mail an Kunden senden

Zahlungsarten für Laboraufträge (labOrderPaymentType)

Die Zahlungsart ist eine Kombination aus Basis-Zahlvariante und Rechnungstyp:

WertKombinationBeschreibung
17SelfPayer + InvoiceToCustomerSelbstzahler, Rechnung an Kunde
33SelfPayer + InvoiceToTherapistSelbstzahler, Rechnung an Therapeut
19Insurance + SelfPayer + InvoiceToCustomerKrankenkasse + Selbstzahler, Rechnung an Kunde
35Insurance + SelfPayer + InvoiceToTherapistKrankenkasse + Selbstzahler, Rechnung an Therapeut

Hinweis: Nicht alle Artikel unterstützen Krankenkassezahlung. Die Werte 19 und 35 können nur verwendet werden, wenn mindestens ein bestellter Artikel Krankenkassezahlung erlaubt. Manche Artikel erlauben die teilweise Abrechnung über die Krankenkasse, während der Restbetrag als Selbstzahler berechnet wird. In diesem Fall wird die Bestellung automatisch mit der Kombination aus Selbstzahler und Krankenkassezahlung erstellt.

Validierungsregeln

Artikel-Validierung

  • Artikel muss existieren und vom Typ ShopArticle oder LabOrderArticle sein
  • Artikel muss einen gültigen Preis haben (> 0)
  • Bestellmenge muss gültig sein: 1 ≤ amount ≤ OrderMaximum

Laborauftrag-Validierung

  • questionnaireSurveyType muss 20 (UseExisting) oder 30 (SendFilloutLink) sein
  • labOrderPaymentType muss 17, 33, 19 oder 35 sein
  • Jede Laborprobe muss:
    • Einen gültigen labSampleTypeId haben
    • Eine nicht-leere id haben
    • Ein Datum innerhalb von ±14 Tagen haben

Funktionsweise

Bei normalen Shop-Artikeln:

  1. Authentifizierung über API-Schlüssel
  2. Validierung der Zugriffsberechtigung auf den Kunden
  3. Validierung der Artikel
  4. Leeren des bisherigen Warenkorbs
  5. Hinzufügen der Artikel zum Warenkorb
  6. Berechnung von Versandkosten und Gesamtpreis
  7. Hinzufügen der Versandposition (Normal Versand)
  8. Erstellung der Bestellung aus dem Warenkorb
  9. Rückgabe der Bestellungs-ID

Bei Labor-Auftrags-Artikeln:

Zusätzlich zu den obigen Schritten:

  1. Validierung der Laborauftrag-spezifischen Felder
  2. Überprüfung der Krankenkassenzahlung-Berechtigung (bei Werten 19 oder 35)
  3. Hinzufügen aller Laborproben

Wichtige Hinweise

Allgemeine Regeln

  • Keine Mischung erlaubt: Shop-Artikel und Labor-Auftrags-Artikel können nicht in derselben Bestellung kombiniert werden
  • Warenkorb wird geleert: Der bisherige Warenkorb des Kunden wird vor Hinzufügen der neuen Artikel vollständig geleert
  • Preisvalidierung: Artikel ohne gültigen Preis (Preis = 0) können nicht bestellt werden
  • Mengenvalidierung: Die Bestellmenge muss zwischen 1 und dem OrderMaximum des Artikels liegen

Laborproben-Regeln

  • Zeitfenster: Das Entnahmedatum muss innerhalb von ±14 Tagen vom aktuellen Datum liegen
  • Proben-ID erforderlich: Jede Laborprobe muss eine eindeutige, nicht-leere ID haben
  • Gültiger Typ: Die labSampleTypeId muss einem existierenden Laborproben-Typ entsprechen und kann aus dem Abruf der verfügbaren Shop-Artikel ermittelt werden

Krankenkassenzahlung

  • Nur verfügbar, wenn mindestens ein Artikel im Auftrag Krankenkassenzahlung unterstützt
  • Wird automatisch mit Selbstzahler kombiniert, wenn die Bestellung einen Selbstzahleranteil hat

Fehlermeldungen

Häufige Fehlermeldungen und ihre Bedeutung:

FehlermeldungUrsacheLösung
Article with Id 'X' not found or not orderableArtikel existiert nicht oder ist nicht bestellbarArtikel-ID überprüfen, nur Shop- oder Labor-Auftrags-Artikel verwenden
Article with Id 'X' does not have a valid priceArtikel hat keinen Preis oder Preis ist 0Sicherstellen, dass Artikel für den Verkaufsmarkt einen Preis hat
Article with Id 'X' has an invalid amount 'Y'Bestellmenge außerhalb des erlaubten BereichsMenge zwischen 1 und OrderMaximum setzen
Request cannot contain both shop articles and lab order articlesMischung von Shop- und Labor-Auftrags-ArtikelnNur einen Artikel-Typ pro Bestellung verwenden
QuestionnaireSurveyType is required and must be either '20' or '30'Fragebogen-Typ fehlt oder ungültig bei Labor-BestellungWert 20 oder 30 für questionnaireSurveyType setzen
LabOrderPaymentType is required and must be either '19', '35' or '17', '33'Zahlungsart fehlt oder ungültigEinen der erlaubten Werte für labOrderPaymentType setzen
No Article does allow insurance paymentKrankenkassenzahlung gewählt, aber kein Artikel unterstützt dieseLabOrderPaymentType auf 17 oder 33 ändern (ohne Insurance)
LabSample with LabSampleTypeId 'X' has an invalid LabSampleTypeIdLaborproben-Typ existiert nichtGültige labSampleTypeId verwenden
LabSample with LabSampleTypeId 'X' has an invalid DateDatum liegt außerhalb des ±14 Tage FenstersDatum innerhalb von ±14 Tagen vom aktuellen Datum setzen
LabSample with LabSampleTypeId 'X' has an invalid IdProben-ID ist leer oder nullEindeutige, nicht-leere ID für jede Probe setzen