Erscheinungsbild
Authentifizierung
Jeder Request außer dem Login selbst braucht einen API-Token. Du holst ihn einmal und verwendest ihn dauerhaft wieder.
1. Token holen
bash
curl -X POST "https://demo.aircargobook.com/users/login.json" \
-H "User-Agent: MyApplication / 1.0.0" \
-d "auth[user]=me@example.com" \
-d "auth[password]=geheim"Antwort:
json
{
"status": "success",
"auth": {
"email": "me@example.com",
"token": "8f14e45fceea167a5a36dedd4bea2543",
"language": "deu"
}
}auth.token ist dein API-Token.
Login prüfen
Ein fehlgeschlagener Login antwortet ebenfalls mit HTTP 200 — dann allerdings mit "status": "error" und ohne auth-Block.
Prüfe deshalb, dass auth.token vorhanden und nicht leer ist. Das ist der verlässliche Test.
Der Login ist einer der wenigen Endpunkte, bei denen
statustatsächlich etwas aussagt. Bei den meisten anderen steht es auch bei Erfolg auf"error"— verlass dich dort nicht darauf, siehe Konventionen.
Als JSON geht es genauso:
bash
curl -X POST "https://demo.aircargobook.com/users/login.json" \
-H "Content-Type: application/json" \
-d '{"auth": {"user": "me@example.com", "password": "geheim"}}'2. Token verwenden
Der empfohlene Weg ist der Authorization-Header. Das Schema heißt ApplePass — historisch bedingt, aber es muss genau so lauten:
bash
curl "https://demo.aircargobook.com/freights/view/12345.json" \
-H "Authorization: ApplePass 8f14e45fceea167a5a36dedd4bea2543" \
-H "User-Agent: MyApplication / 1.0.0"Alternativ als Query-Parameter — praktisch für schnelle Tests:
bash
curl "https://demo.aircargobook.com/freights/view/12345.json?auth_token=8f14e45..."Query-Parameter nicht produktiv nutzen
?auth_token= landet in Server-Logs, Proxy-Logs und Browser-Referrern. Für alles, was dauerhaft läuft, den Header verwenden.
Der Token läuft nicht ab
Es gibt kein Refresh, kein Ablaufdatum und keine Rotation. Daraus folgt:
Rufe /users/login.json nicht vor jedem Request auf. Hole den Token einmal, lege ihn als Secret ab (Umgebungsvariable, Secrets Manager, Vault) und verwende ihn wieder. Ein Login pro API-Aufruf ist die häufigste Fehlkonfiguration und belastet beide Seiten ohne Nutzen.
Behandle den Token wie ein Passwort. Er ist unbefristet gültig und an einen Benutzer mit allen dessen Rechten gebunden. Nicht ins Repository, nicht ins Frontend, nicht in Logs. Wenn er kompromittiert wurde, melde dich bei support@aircargobook.com — wir setzen einen neuen. Der alte wird dabei ungültig.
Dein Benutzer braucht eine Firma
Frachten werden immer der Firma zugeordnet, zu der dein Benutzer gehört (route.company). Ein Benutzer ohne Firmenzuordnung kann keine Frachten anlegen.
Du kannst auch nicht im Namen einer anderen Firma anlegen — es gibt keinen Parameter dafür. Wenn deine Integration Frachten für mehrere Firmen erzeugen soll, brauchst du pro Firma einen eigenen Benutzer und damit einen eigenen Token.
Fehlerbilder
| Symptom | Ursache |
|---|---|
401, {"status": "error"} | Token fehlt, ist falsch, oder stammt aus der anderen Umgebung |
200 mit HTML-Body | .json an der URL vergessen |
3xx auf eine HTML-Seite | Token gültig, aber keine Berechtigung für diese Aktion |
| Fracht wird angelegt, gehört aber der falschen Firma | Token gehört zu einem Benutzer in einer anderen Firma |
Weiter
- Environments — Demo vs. Produktion
- Fracht anlegen — der erste echte Request
