1.2 Authentifizierung & Request-Format
Authentifizierung & Request‑Format
Übersicht
Die API verwendet JWT (JSON Web Tokens) für die Authentifizierung. Alle produktiven Integrationen müssen JWT verwenden. Jeder Request muss entweder ein gültiges Access‑Token im HTTP‑Header Authorization: Bearer <access_token> enthalten oder (nur für multipart/form-data Uploads, wenn Header‑Auth nicht möglich) das Feld access_token im JSON‑Objekt data mitsenden.
Antworten folgen einem einheitlichen Envelope:
{
"status": "success",
"data": { ... }
}
oder
{
"status": "error",
"error_code": "<code>",
"error_reason": "..."
}
Fehlercode 5 (ERROR_TOKEN) signalisiert Probleme mit Token (fehlend, ungültig, widerrufen oder abgelaufen).
1) JWT — empfohlen (Access + Refresh)
- Initialer Login:
- Aktion:
auth_login - Methode: POST
- Beschreibung: Authentifizieren mit E‑Mail & Passwort, Rückgabe von
access_token(Kurzlebig) undrefresh_token(länger gültig). - Beispiel Request (body.data = URL-kodiertes JSON / bei POST als data-Parameter):
- Aktion:
{
"email": "user@example.com",
"password": "secret",
"os": "android"
}
- Erfolg (Beispiel):
{
"status": "success",
"data": {
"access_token": "<jwt.access.token>",
"expires_in": 3600,
"refresh_token": "<long.refresh.token>",
"refresh_expires_in": 5184000,
"user": {
"id": 555,
"email": "user@example.com",
"name": "Max",
"lastname": "Mustermann",
"type": "driver"
}
}
}
-
Verwendung des Access‑Tokens:
- Setze im HTTP Header:
Authorization: Bearer <access_token> - Alternativ (nur wenn Header nicht möglich, z.B. manche multipart Uploads):
Im data‑Objekt:
{ "access_token": "<jwt.access.token>", ... } - Wichtig: Lege das Token nie in der URL (Query string).
- Setze im HTTP Header:
-
Token‑Erneuerung:
- Aktion:
auth_refresh - Body:
- Aktion:
{ "refresh_token": "<refresh.token>" }
-
Erfolg liefert neues
access_tokenundexpires_in. -
Ungültiger/abgelaufener/widerrufener Refresh → Fehlercode 5 (ERROR_TOKEN).
-
Logout / Widerruf:
- Aktion:
auth_logout - Erfordert Auth (Bearer Header oder access_token in data).
- Optional:
{ "refresh_token": "<refresh.token>" }— wird dann gezielt widerrufen. - Ohne refresh_token werden alle Refresh‑Tokens des Benutzers gelöscht (globaler Logout).
- Aktion:
2) Request‑Format (action + data)
-
Basis‑Schema:
- Jeder Request ruft die zentrale URL auf:
https://<env>.fahrservicemeybaum.de/api.htm - Parameter:
action(string, Pflicht): Name der API‑Aktion, z. B.orders,order_create,auth_login.data(JSON, Pflicht): JSON‑Objekt mit Payload; muss URL‑kodiert übermittelt werden, wenn als Query-Parameter genutzt.
- Jeder Request ruft die zentrale URL auf:
-
HTTP‑Methoden:
- GET: action & data können als URL‑Parameter übergeben werden:
GET /api.htm?action=<action>&data=<url_kodiertes_json> - POST: action und data im Request‑Body (z. B. application/x-www-form-urlencoded oder multipart/form-data für Datei‑Uploads). Bei JSON‑APIs ist das data‑Feld weiterhin das JSON‑Objekt (url‑kodiert oder als form‑Feld).
- GET: action & data können als URL‑Parameter übergeben werden:
-
Header:
- Empfohlen:
Accept: application/jsonAccept-Charset: utf-8 - Authentifizierung:
Authorization: Bearer <access_token>
- Empfohlen:
-
Kodierung & Sicherheit:
- UTF‑8 für alle Inhalte.
- Das gesamte
data‑Objekt muss URL‑kodiert übergeben werden, wenn es in der URL steht. - Alle Aufrufe sind über HTTPS durchzuführen.
- Tokens dürfen nicht in URLs (Querystring) transportiert.
-
Multipart / Datei‑Uploads:
- Bei Uploads (multipart/form-data) kann das access_token in
datagesetzt werden, falls es nicht möglich ist, Header zu setzen. - Für idempotente Uploads werden optionale Felder unterstützt:
idempotency_key(string, max 64)filesize(integer, bytes)
- Wenn
idempotency_keymit einer existierenden Upload‑Session übereinstimmt, liefert die API die bereits gespeicherte image_id und markiertduplicate = 1.
- Bei Uploads (multipart/form-data) kann das access_token in
3) Fehlercodes (relevant für Auth)
4— ERROR_AUTH: Falsche Zugangsdaten bei auth_login.5— ERROR_TOKEN: Token fehlt, ungültig, widerrufen oder abgelaufen.6— ERROR_ACCESS_DENIED: Zugriff verweigert (z. B. Rollenberechtigungen).3— ERROR_DATA_JSON_DECODE:dataist kein gültiges JSON.1— ERROR_NO_ACTION: Unbekannte oder fehlende Aktion.2— ERROR_EXTERNAL: Business/Validations‑Fehler.
Hinweis: Bei Fehlercode 5 rufe zuerst auth_refresh mit dem Refresh‑Token auf; bei Erfolg wiederhole die ursprüngliche Aktion mit neuem Access‑Token.
4) Praktische Beispiele (Kurz)
-
auth_login (POST):
POST /api.htm?action=auth_logindata={ "email":"test@domain.de", "password":"secret", "os":"android" } -
Aufruf einer Aktion mit Header‑JWT (GET):
GET /api.htm?action=orders&data={}Header:Authorization: Bearer <access_token>Accept: application/json -
Upload (multipart/form-data) mit access_token im data‑Feld:
POST /api.htm?action=order_upload_imageHeader:Authorization: Bearer <access_token>// wenn möglichContent-Type: multipart/form-dataForm‑Felder:data = { "order_id":9070, "title":"Beleg", "access_token":"<access_token>" }
No comments to display
No comments to display