Zum Inhalt springen
LOGICAR Entwickler Suchen

#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

http
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:

json
{
  "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

FeldTypBedeutung
externalOrderIdText, bis 200Ihre eigene Auftrags- oder Belegnummer. Je Konto eindeutig: dieselbe Nummer mit demselben Inhalt liefert den ersten Auftrag, mit anderem Inhalt 409 (Wiederholungen).
customerReferenceText, bis 200Eine freie Referenz, etwa Ihre Bestellnummer.
transportTypeDRIVEN, TRAILER, TRUCKWie das Fahrzeug bewegt wird (unten). Ohne Angabe wählt LOGICAR.
requestedPickupZeitpunktWunschtermin der Abholung.
requestedDeliveryZeitpunktWunschtermin der Zustellung.
instructionsText, bis 500Hinweis für Disposition und Fahrer, etwa „Schlüssel liegt beim Empfang“.
endCustomer.emailE-MailDer Empfänger des Fahrzeugs bekommt den Link zur Sendungsverfolgung und die Statusmeldungen per E-Mail. Ein Konto wird dabei nicht angelegt.
metadataObjekt, bis 20 EinträgeFreie 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:

FeldTypBedeutung
pickup.companyText, bis 160Firma am Ort, etwa das Autohaus.
pickup.streetText, bis 200Pflicht. Straße und Hausnummer.
pickup.postalCodeText, bis 20Pflicht. Postleitzahl.
pickup.cityText, bis 120Pflicht. Ort.
pickup.countryISO 3166-1 alpha-2Land, etwa DE oder AT. Ohne Angabe DE.
pickup.contact.nameText, bis 120Ansprechpartner vor Ort.
pickup.contact.phoneText, bis 60Telefon des Ansprechpartners.
pickup.coordinates.latZahlBreitengrad. Mit lng zusammen freiwillig; ohne Koordinaten sucht LOGICAR die Adresse.
pickup.coordinates.lngZahlLängengrad.

#Fahrzeug

FeldTypBedeutung
vehicle.vinFIN, 17 ZeichenFahrgestellnummer nach ISO 3779: Buchstaben und Ziffern ohne I, O und Q. Klein geschrieben wird groß abgelegt.
vehicle.manufacturerText, bis 80Hersteller.
vehicle.modelText, bis 80Modell.
vehicle.modelYearGanzzahlBaujahr.
vehicle.typeCAR, COMBI, SUV, VAN, TRUCK_7_5, TRUCK_12, TRUCK_40Fahrzeugklasse. Ohne Angabe CAR.
vehicle.fuelTypeDIESEL, PETROL, ELECTRIC, HYBRID, HYDROGEN, LPG, LNGAntrieb. Ohne Angabe DIESEL, mit electric: true ELECTRIC.
vehicle.electricJa/NeinElektrofahrzeug. Ein anderer fuelType dazu ist ein Widerspruch (400).
vehicle.registration.statussiehe untenDer Zulassungsstand.
vehicle.registration.licensePlateText, bis 20Kennzeichen. Pflicht bei TEMPORARILY_REGISTERED.
vehicle.registration.validUntilDatumGültig bis — bei einer vorübergehenden Zulassung.
vehicle.registration.countryISO 3166-1 alpha-2Land der Zulassung.
vehicle.operationalStatus.driveableJa/NeinFahrbereit. Pflicht, sobald operationalStatus mitkommt.
vehicle.operationalStatus.roadLegalJa/NeinVerkehrssicher.
vehicle.operationalStatus.keysAvailableJa/NeinSchlüssel liegen bereit.

#Leistungen

FeldBedeutung
services.registrationLOGICAR lässt das Fahrzeug zu.
services.shortTermPlateLOGICAR besorgt ein Kurzzeitkennzeichen für die Fahrt. Nur mit DRIVEN und nicht bei einem zugelassenen Fahrzeug — sonst 422 SERVICE_NOT_APPLICABLE.
services.exportPlateBietet LOGICAR nicht an: 422 SERVICE_NOT_SUPPORTED.
services.customsBietet LOGICAR nicht an: 422 SERVICE_NOT_SUPPORTED.

#Transportart

WertBedeutung
DRIVENEin Fahrer fährt das Fahrzeug. Es muss fahrbereit und verkehrssicher sein und ein Kennzeichen haben — ein eigenes oder ein Kurzzeitkennzeichen.
TRAILEREinzeltransport als Ladung, etwa auf einem Anhänger.
TRUCKSammeltransport 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:

WertBedeutung
REGISTEREDZugelassen. Mit DRIVEN fährt es mit seinem eigenen Kennzeichen.
UNREGISTEREDAbgemeldet 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_REGISTEREDEs hat ein Kurzzeit- oder Überführungskennzeichen, das Sie stellen — mit licensePlate.
UNKNOWNNicht 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ägt requestNumber und den Status QUOTE_REQUIRED. Das Angebot lesen, annehmen oder ablehnen Sie unter derselben Kennung mit GET /quotes/{id} (Angebote); erst nach der Annahme entsteht der Auftrag, und Ihr System bekommt order.created. Unter derselben Kennung antwortet GET /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:

json
{
  "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).