Fehler & Sicherheit¶
HTTP-Statuscodes¶
| Code | Bedeutung |
|---|---|
400 |
Validierungsfehler (fehlendes Feld, ungültige shop_id, usw.) |
401 |
Fehlender/ungültiger API-Schlüssel oder Bearer-Token |
403 |
Org-Mismatch oder fehlender Integrations-Bereich |
404 |
Ressource nicht gefunden |
500 |
Serverfehler |
Fehler-Body-Format¶
Erweiterte Fehler:
Manche Unauthorized-Antworten nutzen dieses Format:
Sicherheitsmodell¶
Schutz der Requests¶
| Schritt | Schutz |
|---|---|
| API-Schlüssel | Erforderlich für Token-Tausch und v1 order-requests |
| JWT | Bearer-Token auf allen v2-Routen |
| Org-Pfad | URL {orgId} muss org_id im Token entsprechen |
| Bereiche | Integrations-JWT pro Route begrenzt |
Wichtige Regel¶
Niemals Org-A-Schlüssel für Org-B-URLs verwenden. Requests werden abgelehnt, wenn der Schlüssel nicht zur Organisation im Pfad gehört.
Token-Lebensdauer¶
Integrations-JWTs laufen nach 1 Stunde ab. Erneut /auth/token aufrufen. Nicht länger als expires_in cachen.
Geheimnisse¶
| Geheimnis | Speicherung |
|---|---|
| PharmaOne API-Schlüssel | Secret Manager / Env — nie in Git |
| Webhook-Signing-Secret | Einmal bei Abonnement-Anlage |
| JWT | Nur im Speicher — als Bearer-Credential behandeln |
Manager-UI-Konfiguration¶
Diese Einstellungen werden in PharmaOne Manager verwaltet (nicht über PharmaOne API-Schlüssel):
| Zweck | Wo in Manager |
|---|---|
| API-Schlüssel anlegen / widerrufen | Org Settings → Integrations → External API keys |
| Webhook-Abonnements | Org Settings → Integrations → Webhook subscriptions |
| Webhook-Test | Webhook-Abonnement → Send test event |
Sicherheits-Checkliste für Integratoren¶
- Nur HTTPS (Produktions-Hosts erzwingen TLS).
- API-Schlüssel in Secrets, nicht im Quellcode.
- Webhook
X-PharmaOne-Signaturebei jeder Zustellung prüfen. - Idempotenz-Keys (
external_reference,external_id) für Retries. - Nur benötigten Zugriff anfordern (siehe Bereiche).
- Nach Go-Live Smoke-Test: Token tauschen, dann einen Lese-Endpunkt aufrufen.
Audit & Protokollierung¶
- Bestandsanpassungen schreiben Historie mit Akteur und Grund.
- Webhook-Zustellungen mit HTTP-Status und Retry-Zähler protokolliert.
- Bestellstatus-Änderungen über externe API können abonnierte Webhook-Ereignisse auslösen.