#Auftrag anlegen
Auf dieser Seite
POST /orders mit dem Recht orders:write. Pflicht sind nur Abhol- und Zielort mit Straße, Postleitzahl und Ort. Je vollständiger der Auftrag, desto weniger Rückfragen: Termin, Fahrzeug und Ansprechpartner sparen der Disposition einen Anruf.
#Beispiel
POST /api/v1/extern/orders HTTP/1.1
Host: api.logicar.cloud
Authorization: Bearer <Token>
Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000
Content-Type: application/json
{
"externalOrderId": "4500019283",
"customerReference": "PO-98312",
"vehicle": {
"vin": "WVWZZZ1KZAW000001",
"manufacturer": "Volkswagen",
"model": "Golf"
},
"pickup": {
"company": "Autohaus Beispiel GmbH",
"street": "Musterstraße 12",
"postalCode": "20095",
"city": "Hamburg",
"country": "DE"
},
"delivery": {
"company": "Fuhrpark Beispiel GmbH",
"street": "Beispielweg 5",
"postalCode": "80331",
"city": "München",
"country": "DE"
},
"transportType": "DRIVEN",
"requestedDelivery": "2026-10-02T16:00:00+02:00"
}Die Antwort (201 Created) ist der Auftrag, wie ihn auch GET /orders/{id} liefert:
{
"kind": "ORDER",
"id": "8c1d2e3f-4a5b-4c6d-9e7f-0a1b2c3d4e5f",
"orderNumber": "26K7F070042E",
"trackingNumber": "26K7F070042E",
"trackingUrl": "https://logicar.cloud/track/5b1f…",
"requestNumber": null,
"externalOrderId": "4500019283",
"customerReference": "PO-98312",
"status": "ACCEPTED",
"readiness": {
"status": "READY_FOR_PLANNING",
"documentsRequired": false,
"missing": []
},
"transportType": "DRIVEN",
"vehicle": {
"vin": "WVWZZZ1KZAW000001",
"manufacturer": "Volkswagen",
"model": "Golf",
"modelYear": 2021,
"type": "CAR",
"fuelType": "DIESEL",
"registration": {
"status": "REGISTERED",
"licensePlate": "HH-LC 1234"
},
"operationalStatus": {
"driveable": true
}
},
"pickup": {
"formatted": "Musterstraße 12, 20095 Hamburg",
"company": "Autohaus Beispiel GmbH",
"street": "Musterstraße 12",
"postalCode": "20095",
"city": "Hamburg",
"country": "DE",
"contact": {
"name": "Frau Muster · Autohaus Beispiel GmbH",
"phone": "+49 40 123456"
},
"coordinates": {
"lat": 53.5507,
"lng": 9.9934
}
},
"delivery": {
"formatted": "Beispielweg 5, 80331 München",
"company": "Fuhrpark Beispiel GmbH",
"street": "Beispielweg 5",
"postalCode": "80331",
"city": "München",
"country": "DE",
"contact": {
"name": null,
"phone": null
},
"coordinates": {
"lat": 48.1374,
"lng": 11.5755
}
},
"requestedPickup": "2026-10-01T06:00:00.000Z",
"requestedDelivery": "2026-10-02T14:00:00.000Z",
"actualPickup": null,
"actualDelivery": null,
"services": {
"registration": false,
"shortTermPlate": false
},
"instructions": "Schlüssel liegt beim Empfang.",
"price": {
"net": 482.5,
"gross": 574.18,
"vatRate": 19,
"currency": "EUR"
},
"driver": null,
"metadata": {
"sapPlant": "1000"
},
"sandbox": false,
"createdAt": "2026-09-23T10:15:00.000Z",
"updatedAt": "2026-09-23T10:15:01.000Z"
}status ist der öffentliche Stand (Auftragsstatus), readiness sagt, ob der Auftrag zur Planung freigegeben ist oder worauf er wartet. price nennt den Preis nach Ihrer Vereinbarung, netto und brutto. trackingUrl ist die Seite zur Sendungsverfolgung für den Empfänger.
#Felder des Auftrags
| Feld | Typ | Bedeutung |
|---|---|---|
externalOrderId | Text, bis 200 | Ihre eigene Auftrags- oder Belegnummer. Je Konto eindeutig: dieselbe Nummer mit demselben Inhalt liefert den ersten Auftrag, mit anderem Inhalt 409 (Wiederholungen). |
customerReference | Text, bis 200 | Eine freie Referenz, etwa Ihre Bestellnummer. |
transportType | DRIVEN, TRAILER, TRUCK | Wie das Fahrzeug bewegt wird (unten). Ohne Angabe wählt LOGICAR. |
requestedPickup | Zeitpunkt | Wunschtermin der Abholung. |
requestedDelivery | Zeitpunkt | Wunschtermin der Zustellung. |
instructions | Text, bis 500 | Hinweis für Disposition und Fahrer, etwa „Schlüssel liegt beim Empfang“. |
endCustomer.email | Der Empfänger des Fahrzeugs bekommt den Link zur Sendungsverfolgung und die Statusmeldungen per E-Mail. Ein Konto wird dabei nicht angelegt. | |
metadata | Objekt, bis 20 Einträge | Freie Daten Ihres Systems — Schlüssel bis 64 Zeichen, Werte Text (bis 500), Zahl, Ja/Nein oder null. Kommen unverändert zurück, in jeder Antwort; LOGICAR wertet sie nie aus. |
#Abhol- und Zielort
pickup und delivery haben dieselben Felder:
| Feld | Typ | Bedeutung |
|---|---|---|
pickup.company | Text, bis 160 | Firma am Ort, etwa das Autohaus. |
pickup.street | Text, bis 200 | Pflicht. Straße und Hausnummer. |
pickup.postalCode | Text, bis 20 | Pflicht. Postleitzahl. |
pickup.city | Text, bis 120 | Pflicht. Ort. |
pickup.country | ISO 3166-1 alpha-2 | Land, etwa DE oder AT. Ohne Angabe DE. |
pickup.contact.name | Text, bis 120 | Ansprechpartner vor Ort. |
pickup.contact.phone | Text, bis 60 | Telefon des Ansprechpartners. |
pickup.coordinates.lat | Zahl | Breitengrad. Mit lng zusammen freiwillig; ohne Koordinaten sucht LOGICAR die Adresse. |
pickup.coordinates.lng | Zahl | Längengrad. |
#Fahrzeug
| Feld | Typ | Bedeutung |
|---|---|---|
vehicle.vin | FIN, 17 Zeichen | Fahrgestellnummer nach ISO 3779: Buchstaben und Ziffern ohne I, O und Q. Klein geschrieben wird groß abgelegt. |
vehicle.manufacturer | Text, bis 80 | Hersteller. |
vehicle.model | Text, bis 80 | Modell. |
vehicle.modelYear | Ganzzahl | Baujahr. |
vehicle.type | CAR, COMBI, SUV, VAN, TRUCK_7_5, TRUCK_12, TRUCK_40 | Fahrzeugklasse. Ohne Angabe CAR. |
vehicle.fuelType | DIESEL, PETROL, ELECTRIC, HYBRID, HYDROGEN, LPG, LNG | Antrieb. Ohne Angabe DIESEL, mit electric: true ELECTRIC. |
vehicle.electric | Ja/Nein | Elektrofahrzeug. Ein anderer fuelType dazu ist ein Widerspruch (400). |
vehicle.registration.status | siehe unten | Der Zulassungsstand. |
vehicle.registration.licensePlate | Text, bis 20 | Kennzeichen. Pflicht bei TEMPORARILY_REGISTERED. |
vehicle.registration.validUntil | Datum | Gültig bis — bei einer vorübergehenden Zulassung. |
vehicle.registration.country | ISO 3166-1 alpha-2 | Land der Zulassung. |
vehicle.operationalStatus.driveable | Ja/Nein | Fahrbereit. Pflicht, sobald operationalStatus mitkommt. |
vehicle.operationalStatus.roadLegal | Ja/Nein | Verkehrssicher. |
vehicle.operationalStatus.keysAvailable | Ja/Nein | Schlüssel liegen bereit. |
#Leistungen
| Feld | Bedeutung |
|---|---|
services.registration | LOGICAR lässt das Fahrzeug zu. |
services.shortTermPlate | LOGICAR besorgt ein Kurzzeitkennzeichen für die Fahrt. Nur mit DRIVEN und nicht bei einem zugelassenen Fahrzeug — sonst 422 SERVICE_NOT_APPLICABLE. |
services.exportPlate | Bietet LOGICAR nicht an: 422 SERVICE_NOT_SUPPORTED. |
services.customs | Bietet LOGICAR nicht an: 422 SERVICE_NOT_SUPPORTED. |
#Transportart
| Wert | Bedeutung |
|---|---|
DRIVEN | Ein Fahrer fährt das Fahrzeug. Es muss fahrbereit und verkehrssicher sein und ein Kennzeichen haben — ein eigenes oder ein Kurzzeitkennzeichen. |
TRAILER | Einzeltransport als Ladung, etwa auf einem Anhänger. |
TRUCK | Sammeltransport auf einem Autotransporter. |
Welche Transportarten Ihre Vereinbarung zulässt, legen wir mit Ihnen fest; eine andere ergibt 422 TRANSPORT_TYPE_NOT_ALLOWED.
#Zulassung
vehicle.registration.status beschreibt, ob und wie das Fahrzeug zugelassen ist:
| Wert | Bedeutung |
|---|---|
REGISTERED | Zugelassen. Mit DRIVEN fährt es mit seinem eigenen Kennzeichen. |
UNREGISTERED | Abgemeldet oder nie zugelassen. Mit DRIVEN braucht es ein Kurzzeitkennzeichen: bestellen Sie es mit services.shortTermPlate, sonst klärt LOGICAR es, bevor die Fahrt geplant wird. |
TEMPORARILY_REGISTERED | Es hat ein Kurzzeit- oder Überführungskennzeichen, das Sie stellen — mit licensePlate. |
UNKNOWN | Nicht bekannt. Das ist nicht dasselbe wie UNREGISTERED: LOGICAR klärt es vor der Planung. |
Was dem Auftrag noch fehlt, steht in readiness.missing der Antwort — etwa eine Vollmacht, die Sie unterschreiben. Sobald nichts mehr fehlt, kommt order.accepted.
#Auftrag oder Anfrage
Was entsteht, bestimmt Ihre Vereinbarung mit LOGICAR:
kind: "ORDER", HTTP 201 — der Standardfall. Der Auftrag ist angelegt und wird zum vereinbarten Preis durchgeführt.kind: "REQUEST", HTTP 202 — dieser Fall braucht ein Angebot, etwa weil er außerhalb der vereinbarten Standardfälle liegt. Die Antwort trägtrequestNumberund den StatusQUOTE_REQUIRED. Das Angebot lesen, annehmen oder ablehnen Sie unter derselben Kennung mitGET /quotes/{id}(Angebote); erst nach der Annahme entsteht der Auftrag, und Ihr System bekommtorder.created. Unter derselben Kennung antwortetGET /orders/{id}dann mit dem Auftrag.
#Fachlich nicht ausführbar
Ist der Auftrag verständlich, aber so nicht ausführbar, antwortet die Schnittstelle 422 und nennt in details.errors jeden Grund:
{
"error": {
"code": "VEHICLE_NOT_DRIVEABLE",
"message": "A vehicle that is not driveable or not road legal cannot be moved on its own wheels (DRIVEN). Use TRAILER or TRUCK.",
"requestId": "…",
"details": {
"errors": [
{ "code": "VEHICLE_NOT_DRIVEABLE", "field": "vehicle.operationalStatus.driveable", "message": "…" }
]
}
}
}Eine Absage verbraucht Ihre externalOrderId nicht: korrigiert dürfen Sie denselben Auftrag mit derselben Nummer noch einmal schicken.
#Was Sie nicht bestimmen
Preis, Preisweg und Freigabe kommen aus Ihrer Vereinbarung, nicht aus dem Aufruf. Deshalb gibt es dafür kein Feld: wer basePrice oder price mitschickt, bekommt 400 INVALID_REQUEST mit dem Feldnamen in details.fields. Ein Preis, der ohne Nachricht verschwindet, wäre ein Preis, den Sie für vereinbart hielten.
Hinweis
Übertragen Sie nur, was für die Überführung nötig ist. Private Adressen oder Telefonnummern gehören nur dann in den Auftrag, wenn dort abgeholt oder übergeben wird (Datenschutz).