Datenmodelle & Schemas
Kanonische JSON-Strukturen für die PharmaOne API, Webhooks und den Externen Telemedizin-Connector.
Dieselben Definitionen gibt es an zwei Stellen:
Schema-Index
Allgemein
| Schema |
Beschreibung |
Error |
API-Fehlerbody (error, optional message) |
TokenResponse |
JWT von POST /auth/token |
PaginationOffset |
limit, offset, total |
PaginationPage |
page, pageSize, total, totalPages |
Shops & Produkte
| Schema |
Beschreibung |
Shop |
Shop-Listeneintrag |
ShopProduct |
Produkt im Shop-Katalog |
ProductListResponse |
Paginierte Produktliste |
ProductUpdate |
Body für PUT /products/{p1Id} |
AddToInventoryRequest |
Katalogprodukt zum Org-Bestand |
ShopProductAttach |
Produkt einem Shop zuweisen |
ShopProductDetach |
Produkt vom Shop entfernen |
ShopProductOverrides |
Shop-spezifische Overrides |
Bestand
| Schema |
Beschreibung |
InventoryRow |
Org-Bestandszeile |
InventoryListResponse |
Wrapper für GET /inventory |
InventoryAdjustRequest |
Bestandsanpassung |
InventoryAdjustResponse |
{ status, id } |
InventoryLogEntry |
Einzelner Log-Eintrag |
Bestellungen
| Schema |
Beschreibung |
OrderSummary |
Bestellung in der Liste |
OrderDetail |
Vollständige Bestellung mit Positionen |
OrderItem |
Position in Detail (quantity) |
OrderListResponse |
Paginierte Bestellungen |
OrderUpsert |
Bestellung anlegen/upserten |
OrderUpsertItem |
Position beim Upsert — qty |
OrderStatusPatch |
Status-Patch-Body |
OrderStatusPatchResponse |
Ergebnis des Status-Patches |
Bestellanfragen
| Schema |
Beschreibung |
OrderRequestEnvelope |
Äußere Hülle |
OrderRequestPayload |
Innerer Payload (shop_id Pflicht) |
OrderRequestLineItem |
Position — quantity |
OrderRequestResponse |
{ id, status, message, external_reference } |
Rezepte
| Schema |
Beschreibung |
Prescription |
Rezept-Zusammenfassung |
PrescriptionListResponse |
Paginierte Liste |
PrescriptionIngestRequest |
Vollständiger Ingest-Body (Title-Case-Keys) |
PrescriptionIngestResponse |
{ id, upsert: "ok" } |
Berichte
| Schema |
Beschreibung |
ReportStatsResponse |
Dashboard-Statistiken |
ReportPrescriptionStats |
Rezeptanzahlen nach Status |
ReportTopCustomer |
Top-Kunde |
ReportProductPerformanceResponse |
Produktperformance mit Vergleich |
ReportProductPerformanceRow |
Einzelne Produktzeile |
ReportProductSalesResponse |
Umsatz nach Produkt und Status |
ReportProductSalesRow |
Produkt-Umsatzaufschlüsselung |
ReportProductSalesStatusRow |
Status-Zähler innerhalb einer Produktzeile |
ReportPharmaoneResponse |
Monatlicher Servicegebühren-Bericht |
ReportPharmaoneRow |
Eine Org/Monat-Zeile |
Webhooks (ausgehend)
| Schema |
Beschreibung |
WebhookEvent |
Body, den PharmaOne an Ihre URL sendet |
Dokumentierter Pfad: POST /webhooks/pharmaone auf Ihrem Server (nicht Manager). Siehe Webhooks.
Externer Telemedizin-Connector
| Schema |
Beschreibung |
ExternalTelemedicineOrderRequest |
Hülle für Shop POST /api/v1/external-order |
ExternalOrderRequestPayload |
Innerer Payload — kein shop_id nötig |
Dokumentierter Pfad: POST /api/v1/external-order auf Ihrer Shop-Domain. Siehe Externer Telemedizin-Connector.
Wichtige Feldunterschiede
| Kontext |
Mengenfeld |
Shop-ID |
POST /orders (Upsert) |
qty |
Pflicht im Body |
POST /order-requests |
quantity |
Pflicht in payload |
| Shop external-order |
quantity |
Entfällt (aus Shop-URL) |
PrescriptionIngestRequest
Nutzt Title-Case JSON-Keys (Shop-Fragebogenformat). Beispiele:
| Key |
Typ |
Hinweise |
Customer Email |
string |
Kundenkontakt |
Customer First Name |
string |
|
Customer Last Name |
string |
|
Order Total Amount |
number |
|
Receipt Pdf Base64 |
string |
HTTPS-URL zum Rezept-PDF |
Id Card Front Url |
string |
Ausweis-URL |
Product 1 Pharma One Product Id |
string |
Bis zu 3 Produkt-Slots |
Questionnaire Indication |
string |
Fragebogenfelder |
Shop Id |
string |
Optional bei Query shop_id |
Weitere Felder stehen im OpenAPI-Schema. Unbekannte Keys werden akzeptiert und gespeichert.
WebhookEvent
{
"id": "uuid",
"org_id": "org1",
"event_type": "order_status_updated",
"title": "Order status updated",
"description": "Order ORD_… updated",
"metadata": {
"order_id": "ORD_…",
"old_status": "awaiting_packing",
"new_status": "ready_pickup"
},
"created_at": "2026-06-05T12:00:00Z"
}
Header: X-PharmaOne-Event, X-PharmaOne-Delivery-Id, X-PharmaOne-Signature.
OpenAPI-YAML (alle Schemas unter components/schemas) über den API-Explorer oder direkt von der Docs-Instanz.
Schema-Namen stimmen mit dieser Seite und Swagger UI überein.