Zum Hauptinhalt springen

Webhook-Ereignisse

RxScale sendet Webhooks für die folgenden Ereignistypen:
EreignistypBeschreibung
pharmacy_order_createdEine neue Apothekenbestellung wurde erstellt und Ihrer Apotheke zugewiesen
pharmacy_order_updatedDer Status einer bestehenden Apothekenbestellung hat sich geändert
pharmacy_sku_stock_updatedDer Lagerbestand einer Apotheken-SKU hat sich geändert

HTTP-Header

Jede Webhook-Anfrage enthält die folgenden HTTP-Header:
HeaderBeschreibung
Content-TypeImmer application/json
X-Webhook-EventDer Ereignistyp (z.B. pharmacy_order_created)
X-Webhook-SignatureHMAC-SHA256-Signatur des Anfrageinhalts (siehe Sicherheit)
Falls Sie beim Erstellen des Abonnements einen benutzerdefinierten Header konfiguriert haben, wird dieser ebenfalls mitgesendet.

pharmacy_order_created

Wird gesendet, wenn eine neue Apothekenbestellung erstellt und Ihrer Apotheke zugewiesen wird. Mögliche status-Werte: init, waiting for pharmacy, pending review, in-progress, ready_for_pickup, completed

Payload-Beispiel

{
  "event_type": "pharmacy_order_created",
  "timestamp": 1711900000,
  "payload_version": "1",
  "data": {
    "uid": "po-abc123",
    "status": "init",
    "name": "#1001",
    "data": {},
    "external_status": "OPEN",
    "created_at": 1711899000,
    "updated_at": 1711899000,
    "deleted_at": null,
    "pharmacy": {
      "uid": "ph-xyz",
      "display_name": "City Pharmacy"
    },
    "order": {
      "uid": "ord-123",
      "delivery_address": {
        "first_name": "Max",
        "last_name": "Mustermann",
        "street": "Hauptstr.",
        "house_number": "1",
        "zip_code": "10115",
        "city": "Berlin",
        "country": "Germany",
        "additional_address": null
      },
      "invoice_address": {
        "first_name": "Max",
        "last_name": "Mustermann",
        "street": "Hauptstr.",
        "house_number": "1",
        "zip_code": "10115",
        "city": "Berlin",
        "country": "Germany",
        "additional_address": null
      }
    },
    "delivery_type": {
      "uid": "dt-001",
      "display_name": "Standard Shipping",
      "identifier": "standard"
    },
    "order_items": [
      {
        "uid": "oi-789",
        "amount": 1,
        "sku": {
          "uid": "sku-456",
          "display_name": "Medication X 100mg",
          "pzn": "12345678",
          "product_uid": "prod-789",
          "product_display_name": "Medication X",
          "product_handle": "medication-x"
        },
        "pharmacy_sku": {
          "uid": "psku-456",
          "external_id": "EXT-001",
          "price": 1299,
          "stock": 50
        }
      }
    ],
    "patient_data": {
      "uid": "pat-123",
      "display_name": "Max Mustermann",
      "email": "max@example.com",
      "date_of_birth": "15.06.1990",
      "phone_number": "+49 170 1234567"
    },
    "doctor_data": {
      "uid": "doc-456",
      "display_name": "Dr. Schmidt"
    },
    "prescription_file": {
      "filename": "prescription_001.pdf",
      "content_base64": "JVBERi0xLjQK..."
    }
  }
}

Feldreferenz

FeldTypBeschreibung
data.uidstringUID der Apothekenbestellung
data.statusstringAktueller Bestellstatus
data.namestring oder nullLesbarer Bestellname (z.B. #1001)
data.dataobjectBenutzerdefinierte Daten der Bestellung
data.external_statusstringExterner Status-Bezeichner
data.created_atintegerUnix-Zeitstempel der Erstellung
data.updated_atintegerUnix-Zeitstempel der letzten Aktualisierung
data.deleted_atinteger oder nullUnix-Zeitstempel der Löschung oder null
data.pharmacyobjectApothekenzusammenfassung mit uid und display_name
data.orderobjectÜbergeordnete Bestellung mit uid, delivery_address und invoice_address
data.delivery_typeobject oder nullVersandart mit uid, display_name und identifier
data.order_itemsarrayArtikel der Bestellung
data.order_items[].skuobjectSKU-Informationen inkl. pzn, product_uid, product_display_name, product_handle
data.order_items[].pharmacy_skuobject oder nullApothekenspezifische SKU-Daten mit uid, external_id, price (Cent), stock
data.patient_dataobject oder nullPatienteninformationen mit uid, display_name, email, date_of_birth, phone_number
data.doctor_dataobject oder nullArzt, der das Rezept signiert hat, mit uid und display_name
data.prescription_fileobject oder nullSigniertes Rezept-PDF mit filename und content_base64

pharmacy_order_updated

Wird gesendet, wenn sich der Status einer bestehenden Apothekenbestellung ändert. Die Payload-Struktur ist identisch mit pharmacy_order_created. Das Feld status enthält den neuen Status.

Payload-Beispiel

{
  "event_type": "pharmacy_order_updated",
  "timestamp": 1711910000,
  "payload_version": "1",
  "data": {
    "uid": "po-abc123",
    "status": "in-progress",
    "name": "#1001",
    "data": {},
    "external_status": "IN_PROGRESS",
    "created_at": 1711899000,
    "updated_at": 1711910000,
    "deleted_at": null,
    "pharmacy": {
      "uid": "ph-xyz",
      "display_name": "City Pharmacy"
    },
    "order": {
      "uid": "ord-123",
      "delivery_address": {
        "first_name": "Max",
        "last_name": "Mustermann",
        "street": "Hauptstr.",
        "house_number": "1",
        "zip_code": "10115",
        "city": "Berlin",
        "country": "Germany",
        "additional_address": null
      },
      "invoice_address": {
        "first_name": "Max",
        "last_name": "Mustermann",
        "street": "Hauptstr.",
        "house_number": "1",
        "zip_code": "10115",
        "city": "Berlin",
        "country": "Germany",
        "additional_address": null
      }
    },
    "delivery_type": {
      "uid": "dt-001",
      "display_name": "Standard Shipping",
      "identifier": "standard"
    },
    "order_items": [
      {
        "uid": "oi-789",
        "amount": 1,
        "sku": {
          "uid": "sku-456",
          "display_name": "Medication X 100mg",
          "pzn": "12345678",
          "product_uid": "prod-789",
          "product_display_name": "Medication X",
          "product_handle": "medication-x"
        },
        "pharmacy_sku": {
          "uid": "psku-456",
          "external_id": "EXT-001",
          "price": 1299,
          "stock": 50
        }
      }
    ],
    "patient_data": {
      "uid": "pat-123",
      "display_name": "Max Mustermann",
      "email": "max@example.com",
      "date_of_birth": "15.06.1990",
      "phone_number": "+49 170 1234567"
    },
    "doctor_data": {
      "uid": "doc-456",
      "display_name": "Dr. Schmidt"
    },
    "prescription_file": {
      "filename": "prescription_001.pdf",
      "content_base64": "JVBERi0xLjQK..."
    }
  }
}

Webhooks auf Organisationsebene

Wenn das Webhook-Abonnement über die Management API (auf Organisationsebene) erstellt wurde, enthalten Bestellereignisse ein zusätzliches fulfillment-Objekt:
{
  "event_type": "pharmacy_order_updated",
  "timestamp": 1711910000,
  "payload_version": "1",
  "data": {
    "uid": "po-abc123",
    "status": "in-progress",
    "...": "... gleiche Felder wie oben ...",
    "fulfillment": {
      "uid": "fo-abc123",
      "external_id": "EXT-FO-001",
      "order": {
        "uid": "ord-123",
        "shop_order": {
          "uid": "so-456",
          "external_id": "SHOP-789"
        }
      }
    }
  }
}
FeldTypBeschreibung
data.fulfillment.uidstringUID der Fulfillment-Bestellung
data.fulfillment.external_idstring oder nullExterner Bezeichner der Fulfillment-Bestellung
data.fulfillment.order.uidstringUID der übergeordneten Bestellung
data.fulfillment.order.shop_order.uidstringUID der Shop-Bestellung
data.fulfillment.order.shop_order.external_idstring oder nullExterner Bezeichner der Shop-Bestellung
Das fulfillment-Feld ist nur in Webhook-Zustellungen auf Organisationsebene enthalten. Webhooks auf Apothekenebene enthalten dieses Feld nicht.

pharmacy_sku_stock_updated

Wird gesendet, wenn sich der Lagerbestand einer Apotheken-SKU ändert.

Payload-Beispiel

{
  "event_type": "pharmacy_sku_stock_updated",
  "timestamp": 1711900000,
  "payload_version": "1",
  "data": {
    "uid": "psku-abc123",
    "pharmacy_uid": "ph-xyz",
    "sku_uid": "sku-456",
    "external_id": "EXT-001",
    "price": 1299,
    "stock": 45,
    "markup": 0,
    "priority": 0,
    "type": "default",
    "created_at": 1711800000,
    "updated_at": 1711900000,
    "deleted_at": null,
    "sku": {
      "uid": "sku-456",
      "display_name": "Medication X 100mg",
      "pzn": "12345678",
      "product_uid": "prod-789",
      "product_display_name": "Medication X",
      "product_handle": "medication-x"
    }
  }
}

Feldreferenz

FeldTypBeschreibung
data.uidstringUID der Apotheken-SKU
data.pharmacy_uidstringUID der Apotheke
data.sku_uidstringUID der SKU
data.external_idstring oder nullExterner Bezeichner in Ihrem eigenen System
data.priceintegerPreis in Cent
data.stockintegerAktueller Lagerbestand
data.markupintegerAufschlagswert
data.priorityintegerPrioritätsstufe
data.typestringTyp der Apotheken-SKU
data.created_atintegerUnix-Zeitstempel der Erstellung
data.updated_atintegerUnix-Zeitstempel der letzten Aktualisierung
data.deleted_atinteger oder nullUnix-Zeitstempel der Löschung oder null
data.skuobjectVerschachtelte SKU- und Produktinformationen
data.sku.uidstringUID der SKU
data.sku.display_namestringAnzeigename der SKU
data.sku.pznstringPharmazentralnummer (PZN)
data.sku.product_uidstringUID des übergeordneten Produkts
data.sku.product_display_namestring oder nullAnzeigename des übergeordneten Produkts
data.sku.product_handlestring oder nullURL-Handle/Slug des übergeordneten Produkts