Zum Inhalt springen
LOGICAR Entwickler Suchen

#Anmeldung und Rechte

Auf dieser Seite

Jeder Aufruf an /api/v1/extern trägt eine Anmeldung. Sie bestimmt Ihr Konto, die Umgebung (Echtbetrieb oder Sandbox) und was der Aufruf darf.

#Zwei Wege

WegPasst fürIm Aufruf
OAuth 2.0 Client CredentialsIntegrationsplattformen wie SAP Integration Suite, Azure Logic Apps oder MuleSoft — dort ist es StandardAuthorization: Bearer <Token>
API-SchlüsselSkripte und schlanke AnbindungenAuthorization: Bearer lc_live_… oder X-API-Key: lc_live_…

Beide führen an dieselben Endpunkte mit denselben Rechten. Eine Anmeldung des Portals (Sitzungs-Token) gilt an der Schnittstelle nicht — die Schnittstelle ist für Systeme, das Portal für Menschen.

#OAuth 2.0 Client Credentials

Ein OAuth-Client hat eine Client-Kennung (lcc_…) und ein Secret. Damit holt Ihr System ein Zugriffstoken:

bash
curl https://api.logicar.cloud/api/v1/extern/oauth/token \
  -u "lcc_3f9a1c2b7d4e4f60a8b9c0d1e2f3a4b5:lc_live_…" \
  -d grant_type=client_credentials \
  --data-urlencode "scope=orders:read orders:write"
json
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "orders:read orders:write"
}
  • Kennung und Secret gehen per HTTP Basic (-u) oder als client_id und client_secret im Rumpf (application/x-www-form-urlencoded) — nicht beides zugleich.
  • scope ist freiwillig. Damit beschränken Sie das Token auf einen Teil der Rechte des Zugangs; ohne scope bekommt es alle.
  • Das Token gilt eine Stunde. Holen Sie rechtzeitig ein neues — spätestens, wenn ein Aufruf 401 TOKEN_EXPIRED antwortet. Token lassen sich nicht verlängern, und es gibt kein Refresh-Token.
  • Token-Abrufe sind gedrosselt (Grenzen): holen Sie eines und nutzen Sie es, statt je Aufruf ein neues.

Wenn der Token-Endpunkt ablehnt, antwortet er im Format von OAuth 2.0 ({ "error", "error_description" }):

HTTPerrorBedeutung
400invalid_requestgrant_type fehlt, oder die Anmeldung steht zugleich im Kopf (Basic) und im Rumpf.
400unsupported_grant_typeNur client_credentials ist möglich.
401invalid_clientClient-Kennung oder Secret falsch — oder der Zugang ist widerrufen, abgelaufen oder gesperrt. Welche Hälfte nicht stimmte, sagen wir absichtlich nicht.
400unauthorized_clientDas Konto ist gesperrt, kein Auftraggeber-Konto oder für den Echtbetrieb der API v1 nicht freigeschaltet.
400invalid_scopeEin angefragtes Recht hat der Zugang nicht — oder er hat gar keines.

#API-Schlüssel

Beginnt mitUmgebungWirkung
lc_live_EchtbetriebAufträge werden durchgeführt und berechnet.
lc_test_SandboxEigener Testspeicher, simulierte Abläufe, keine Fahrer, keine Rechnung.

Jede Antwort nennt die Umgebung im Kopf X-LogiCar-Environment (production oder sandbox). Ein Testschlüssel, der versehentlich in der Produktionskonfiguration steht, fällt so auch im Protokoll Ihres Systems auf.

Das Secret eines OAuth-Clients ist kein API-Schlüssel: als Schlüssel geschickt, antwortet die Schnittstelle 401 ACCESS_TOKEN_REQUIRED.

#Rechte

Jeder Zugang hat eigene Rechte. Kein Recht schließt ein anderes ein — wer anlegen und lesen soll, bekommt orders:write und orders:read.

RechtErlaubtEndpunkte
orders:readAufträge und ihren Stand lesenGET /orders
GET /orders/{id}
GET /orders/{id}/status
orders:writeAufträge anlegen, ändern und stornierenPOST /orders
PATCH /orders/{id}
POST /orders/{id}/cancel
POST /sandbox/orders/{id}/advance
tracking:readSendungsverfolgung und ETA lesenGET /orders/{id}/tracking
documents:readAuftragsdokumente abrufen (Protokolle, Nachweise)GET /orders/{id}/documents
GET /orders/{id}/documents/{documentId}
quotes:readAngebote lesenGET /quotes/{id}
GET /quotes/{id}/document
quotes:writeAngebote anfordern und annehmenPOST /quotes
POST /quotes/{id}/accept
POST /quotes/{id}/decline
invoices:readRechnungen lesen
webhooks:manageWebhook-Abonnements verwaltenPOST /webhook-subscriptions
GET /webhook-subscriptions
GET /webhook-subscriptions/{id}
DELETE /webhook-subscriptions/{id}
POST /webhook-subscriptions/{id}/test

GET /me braucht kein Recht: es zeigt, mit welchem Zugang, in welcher Umgebung und mit welchen Rechten Ihr System ankommt — der erste Aufruf jeder neuen Anbindung. Fehlt einem Aufruf ein Recht, antwortet die Schnittstelle 403 INSUFFICIENT_SCOPE und nennt es in details.required.

#Zugänge verwalten

Zugänge verwaltet der Administrator Ihres Kontos im Portal unter Einstellungen → API-Zugang:

  • Anlegen: Name (etwa „SAP Produktion“), Umgebung, Art (API-Schlüssel oder OAuth-Client) und Rechte, auf Wunsch ein Ablaufdatum. Schlüssel bzw. Secret erscheinen einmal im Klartext; gespeichert wird nur eine Prüfsumme.
  • Rechte ändern, sperren, freigeben: wirkt sofort — auch für Token, die schon ausgegeben sind.
  • Erneuern: legt einen neuen Zugang mit denselben Rechten an. Der alte gilt noch 24 Stunden, damit Sie ihn ohne Lücke austauschen können.
  • Widerrufen: endgültig und sofort. Aufrufe damit bekommen 401 INVALID_CREDENTIALS.

Mehrere Zugänge je Konto sind der Normalfall: je System einer, jeder mit genau den Rechten, die es braucht. Dann lässt sich einer zurückziehen, ohne die anderen zu stören. Die Liste zeigt je Zugang, wann er zuletzt benutzt wurde.

Den Echtbetrieb der Schnittstelle schaltet LOGICAR für Ihr Konto frei. Bis dahin antworten Zugänge des Echtbetriebs 403 FEATURE_NOT_ENABLED; die Sandbox steht Ihnen sofort offen.

#Aufbewahren

Achtung

Ein Schlüssel oder Secret ist ein Zugang zu Ihrem Konto. Wer ihn hat, kann in Ihrem Namen Aufträge einstellen.

  • Nur auf dem Server verwenden — nie in einer Web-Oberfläche, einer App oder einem öffentlichen Repository.
  • In einer Umgebungsvariablen oder einem Secret-Store ablegen, nicht im Quelltext.
  • Ist ein Schlüssel nach außen gelangt: sofort widerrufen und einen neuen anlegen. Sagen Sie uns Bescheid, wenn Sie nicht sicher sind, ob er benutzt wurde.

#Wenn die Anmeldung scheitert

HTTPerror.codeUrsache
401UNAUTHORIZEDKeine Anmeldung in der Anfrage.
401INVALID_CREDENTIALSSchlüssel unbekannt oder widerrufen.
401TOKEN_EXPIREDDas Token ist älter als eine Stunde.
401CREDENTIALS_EXPIREDDer Zugang hat sein Ablaufdatum erreicht.
401CREDENTIALS_DISABLEDDer Zugang ist gesperrt.
403FEATURE_NOT_ENABLEDEchtbetrieb für Ihr Konto noch nicht freigeschaltet.
403INSUFFICIENT_SCOPEDem Zugang fehlt das Recht für diesen Aufruf.
429RATE_LIMITEDZu viele Anfragen — oder zu viele abgewiesene Anmeldungen von Ihrer Adresse.

Alle Codes stehen unter Fehler und Grenzen.