> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rxscale.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Rezepte & Behandlungen

> Rezept- und Behandlungs-Checkouts über die Public API erstellen

# Rezepte & Behandlungen

Erstellen Sie Checkout-Sitzungen für Rezepte oder Behandlungen. Diese Endpoints übernehmen die Rezeptvalidierung, die Checkout-Erstellung und geben eine Checkout-URL oder einen Bestellentwurf zurück, über den der Patient seinen Kauf abschließen kann.

## Rezept-Checkout erstellen

Laden Sie ein oder mehrere signierte Rezepte (als Base64-kodierte PDFs) zusammen mit Positionen und Patientendaten hoch, um einen Checkout zu erstellen.

```bash theme={null}
POST /v2/public-api/prescriptions/{shop_identifier}
```

<ParamField path="shop_identifier" type="string" required>
  Eindeutiger Bezeichner für den Shop
</ParamField>

**Erforderliche Berechtigung:** `create_prescription_checkout`

### Anfragekörper

```json theme={null}
{
  "reserved_draft_order_id": "123",
  "prescriptions": [
    {
      "id": "my-prescription-001",
      "pdf_base64": "JVBERi0xLjQK..."
    }
  ],
  "lines": [
    {
      "sku_uid": "sku-456",
      "quantity": 1,
      "prescription_id": "my-prescription-001"
    }
  ],
  "patient_data": {
    "first_name": "Max",
    "last_name": "Mustermann",
    "date_of_birth": 631152000,
    "gender": "male"
  },
  "buyerIdentity": {
    "email": "max.mustermann@example.com",
    "phone": "+4917612345678",
    "countryCode": "DE",
    "customerAccessToken": "shopify-customer-access-token"
  },
  "checkout_type": "draft_order",
  "prepaid": false,
  "external_order_id": "order-123",
  "delivery": {
    "delivery_type": "pickup",
    "delivery_price": 499
  },
  "transaction": {
    "transaction_id": "txn-123",
    "transaction_amount": 4299
  },
  "billing_address": {
    "first_name": "Max",
    "last_name": "Mustermann",
    "address1": "Hauptstraße 42",
    "city": "Berlin",
    "province": "",
    "country_code": "DE",
    "zip": "10115"
  },
  "shipping_address": {
    "first_name": "Max",
    "last_name": "Mustermann",
    "address1": "Hauptstraße 42",
    "city": "Berlin",
    "province": "",
    "country_code": "DE",
    "zip": "10115"
  }
}
```

| Feld                                | Typ     | Erforderlich | Beschreibung                                                                                                                                                                                                                        |
| ----------------------------------- | ------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `reserved_draft_order_id`           | string  | Nein         | Shopify Legacy-DraftOrder-ID aus dem Produkte-Reservierungsendpoint. Wenn gesetzt, aktualisiert RxScale diesen Bestellentwurf, statt einen neuen Checkout zu erstellen                                                              |
| `prescriptions`                     | array   | Nein         | Liste der Rezeptobjekte mit `id` und `pdf_base64`                                                                                                                                                                                   |
| `prescriptions[].id`                | string  | Ja           | Ihre interne ID für dieses Rezept (wird zur Verknüpfung mit Positionen verwendet)                                                                                                                                                   |
| `prescriptions[].pdf_base64`        | string  | Ja           | Base64-kodiertes PDF des signierten Rezepts                                                                                                                                                                                         |
| `lines`                             | array   | Nein         | Positionen für den Checkout                                                                                                                                                                                                         |
| `lines[].sku_uid`                   | string  | Ja           | SKU-UID aus dem Produktkatalog                                                                                                                                                                                                      |
| `lines[].quantity`                  | integer | Ja           | Zu bestellende Menge                                                                                                                                                                                                                |
| `lines[].prescription_id`           | string  | Nein         | Verknüpft die Position mit einem Rezept über dessen `id`                                                                                                                                                                            |
| `patient_data`                      | object  | Ja           | Demografische Patientendaten                                                                                                                                                                                                        |
| `patient_data.first_name`           | string  | Ja           | Vorname des Patienten                                                                                                                                                                                                               |
| `patient_data.last_name`            | string  | Ja           | Nachname des Patienten                                                                                                                                                                                                              |
| `patient_data.date_of_birth`        | integer | Ja           | Geburtsdatum als Unix-Zeitstempel                                                                                                                                                                                                   |
| `patient_data.gender`               | string  | Ja           | Geschlecht des Patienten (`male`, `female`, `divers`)                                                                                                                                                                               |
| `buyerIdentity`                     | object  | Bedingt      | Shopify-Cart-Buyer-Identity. Erforderlich, wenn `checkout_type` `draft_order_without_checkout_request` ist; wird für `checkout_link`-Carts und Checkout-Anfragen für Bestellentwürfe verwendet                                      |
| `buyerIdentity.email`               | string  | Nein         | E-Mail-Adresse des Käufers                                                                                                                                                                                                          |
| `buyerIdentity.phone`               | string  | Nein         | Telefonnummer des Käufers                                                                                                                                                                                                           |
| `buyerIdentity.countryCode`         | string  | Nein         | Shopify-Ländercode des Käufers                                                                                                                                                                                                      |
| `buyerIdentity.customerAccessToken` | string  | Nein         | Shopify-Storefront-Customer-Access-Token. Wenn er mit `checkout_type: "checkout_link"` gesendet wird, verknüpft Shopify den Cart mit dem Kundenkonto                                                                                |
| `checkout_type`                     | string  | Nein         | Checkout-Typ: `checkout_link`, `draft_order` (Standard) oder `draft_order_without_checkout_request`                                                                                                                                 |
| `prepaid`                           | boolean | Nein         | Gibt an, ob die Bestellung bereits extern bezahlt wurde. Standardwert ist `false`; der Wert wird als Shopify-Bestellattribut `prepaid=true` oder `prepaid=false` angehängt. Das Feld ändert das Verhalten von `checkout_type` nicht |
| `external_order_id`                 | string  | Nein         | Ihre externe Bestell-ID. Wenn gesetzt, hängt RxScale sie als Shopify-Bestellattribut `external_order_id` an                                                                                                                         |
| `delivery`                          | object  | Nein         | Lieferdaten, die als Attribute an die Shopify-Bestellung angehängt werden                                                                                                                                                           |
| `delivery.delivery_type`            | string  | Nein         | Lieferart. Der Store-Betreiber ordnet diesen Wert seinen eigenen Versandmethoden zu                                                                                                                                                 |
| `delivery.delivery_price`           | integer | Nein         | Lieferpreis, der als Attribut an die Shopify-Bestellung angehängt wird                                                                                                                                                              |
| `transaction`                       | object  | Nein         | Transaktionsdaten, die als Attribute an die Shopify-Bestellung angehängt werden                                                                                                                                                     |
| `transaction.transaction_id`        | string  | Nein         | Transaktions-ID, die als Attribut an die Shopify-Bestellung angehängt wird                                                                                                                                                          |
| `transaction.transaction_amount`    | integer | Nein         | Transaktionsbetrag, der als Attribut an die Shopify-Bestellung angehängt wird                                                                                                                                                       |
| `billing_address`                   | object  | Nein         | Rechnungsadresse, die an den Shopify-Bestellentwurf angehängt wird. Wird ignoriert, wenn `checkout_type` `checkout_link` ist                                                                                                        |
| `billing_address.first_name`        | string  | Nein         | Vorname des Empfängers                                                                                                                                                                                                              |
| `billing_address.last_name`         | string  | Nein         | Nachname des Empfängers                                                                                                                                                                                                             |
| `billing_address.address1`          | string  | Nein         | Einzeilige Straßenadresse inklusive Hausnummer                                                                                                                                                                                      |
| `billing_address.city`              | string  | Nein         | Stadt                                                                                                                                                                                                                               |
| `billing_address.province`          | string  | Nein         | Bundesland, Provinz oder Region. Gesetzt für Länder wie IE; wird als leerer String für Länder wie DE gesendet                                                                                                                       |
| `billing_address.country_code`      | string  | Nein         | ISO-Ländercode                                                                                                                                                                                                                      |
| `billing_address.zip`               | string  | Nein         | Postleitzahl                                                                                                                                                                                                                        |
| `shipping_address`                  | object  | Nein         | Lieferadresse, die an den Shopify-Bestellentwurf angehängt wird. Wird ignoriert, wenn `checkout_type` `checkout_link` ist                                                                                                           |
| `shipping_address.first_name`       | string  | Nein         | Vorname des Empfängers                                                                                                                                                                                                              |
| `shipping_address.last_name`        | string  | Nein         | Nachname des Empfängers                                                                                                                                                                                                             |
| `shipping_address.address1`         | string  | Nein         | Einzeilige Straßenadresse inklusive Hausnummer                                                                                                                                                                                      |
| `shipping_address.city`             | string  | Nein         | Stadt                                                                                                                                                                                                                               |
| `shipping_address.province`         | string  | Nein         | Bundesland, Provinz oder Region. Gesetzt für Länder wie IE; wird als leerer String für Länder wie DE gesendet                                                                                                                       |
| `shipping_address.country_code`     | string  | Nein         | ISO-Ländercode                                                                                                                                                                                                                      |
| `shipping_address.zip`              | string  | Nein         | Postleitzahl                                                                                                                                                                                                                        |

<Note>
  `buyerIdentity.customerAccessToken` gilt nur, wenn `checkout_type` auf `checkout_link` gesetzt ist, da Shopify dieses Feld für Storefront-Carts verwendet. Es verknüpft kein Kundenkonto mit Shopify-Bestellentwürfen.
</Note>

<Note>
  Senden Sie `buyerIdentity`, wenn Sie `checkout_type: "draft_order_without_checkout_request"` verwenden. RxScale lehnt die Anfrage ohne dieses Feld ab, weil keine Shopify-Checkout-Anfrage gesendet wird, über die Kundendaten später erfasst werden könnten.
</Note>

### Checkout-Typen

Das Feld `checkout_type` steuert, wie die Bestellung in Shopify erstellt wird:

| Wert                                   | Beschreibung                                                                                                                                                                                   |
| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `draft_order`                          | Erstellt einen Shopify-Bestellentwurf und sendet eine Checkout-Anfrage an den Kunden (Standard)                                                                                                |
| `checkout_link`                        | Gibt einen Shopify-Checkout-Link zurück, über den der Kunde die Zahlung direkt abschließen kann                                                                                                |
| `draft_order_without_checkout_request` | Erstellt einen Shopify-Bestellentwurf, ohne eine Checkout-Anfrage an den Kunden zu senden. Erfordert `buyerIdentity`, weil Kundendaten nicht über eine Shopify-Checkout-Anfrage erfasst werden |

<Note>
  Wenn `reserved_draft_order_id` gesetzt ist, wird `checkout_type` ignoriert. RxScale speichert die signierten Rezepte und ergänzt `_prescription_uid`-Metadaten an den passenden reservierten Draft-Order-Positionen. Die Zuordnung erfolgt über die Shopify-Variante aus `sku_uid`; doppelte `sku_uid`-Werte werden abgelehnt, weil sie nicht eindeutig sind. Der reservierte Bestellentwurf muss zum Telemedizin-Anbieter gehören, der mit dem API-Schlüssel verknüpft ist.
</Note>

### Beispielanfrage

```bash theme={null}
curl -X POST "https://api.rxscale.com/v2/public-api/prescriptions/my-shop" \
  -H "X-API-Key: your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "reserved_draft_order_id": "123",
    "prescriptions": [
      {
        "id": "rx-001",
        "pdf_base64": "JVBERi0xLjQK..."
      }
    ],
    "lines": [
      {
        "sku_uid": "sku-456",
        "quantity": 1,
        "prescription_id": "rx-001"
      }
    ],
    "patient_data": {
      "first_name": "Max",
      "last_name": "Mustermann",
      "date_of_birth": 631152000,
      "gender": "male"
    },
    "buyerIdentity": {
      "email": "max.mustermann@example.com",
      "phone": "+4917612345678",
      "countryCode": "DE",
      "customerAccessToken": "shopify-customer-access-token"
    },
    "prepaid": false,
    "external_order_id": "order-123",
    "delivery": {
      "delivery_type": "pickup",
      "delivery_price": 499
    },
    "transaction": {
      "transaction_id": "txn-123",
      "transaction_amount": 4299
    },
    "billing_address": {
      "first_name": "Max",
      "last_name": "Mustermann",
      "address1": "Hauptstraße 42",
      "city": "Berlin",
      "province": "",
      "country_code": "DE",
      "zip": "10115"
    },
    "shipping_address": {
      "first_name": "Max",
      "last_name": "Mustermann",
      "address1": "Hauptstraße 42",
      "city": "Berlin",
      "province": "",
      "country_code": "DE",
      "zip": "10115"
    }
  }'
```

### Antwort

```json theme={null}
{
  "status": "success",
  "prescriptions": [
    {
      "id": "rx-001",
      "prescription_uid": "px-abc123"
    }
  ]
}
```

Die Antwort ordnet Ihre Rezept-IDs den RxScale-Rezept-UIDs zu. Verwenden Sie diese UIDs, um den Bestellstatus über den [Bestellungen-Endpoint](/de/api-reference/public/orders) abzufragen.

Wenn `reserved_draft_order_id` verwendet wird, erstellt RxScale keinen neuen Checkout und keinen neuen Bestellentwurf. Der vorhandene reservierte Bestellentwurf wird aktualisiert und kann nach der Zahlung den normalen Shopify-Bestell- und Fulfillment-Prozess durchlaufen.

## Behandlungs-Checkout erstellen

Erstellen Sie einen Checkout für behandlungsbasierte Bestellungen (kein Rezept erforderlich).

```bash theme={null}
POST /v2/public-api/treatments/{shop_identifier}
```

<ParamField path="shop_identifier" type="string" required>
  Eindeutiger Bezeichner für den Shop
</ParamField>

**Erforderliche Berechtigung:** `create_treatment_checkout`

### Anfragekörper

```json theme={null}
{
  "lines": [
    {
      "sku_uid": "sku-789",
      "quantity": 1,
      "anamnesis_id": "anam-001"
    }
  ],
  "buyerIdentity": {
    "email": "max.mustermann@example.com",
    "phone": "+4917612345678",
    "countryCode": "DE",
    "customerAccessToken": "shopify-customer-access-token"
  },
  "checkout_type": "draft_order"
}
```

| Feld                                | Typ     | Erforderlich | Beschreibung                                                                                                                                                                                   |
| ----------------------------------- | ------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `lines`                             | array   | Ja           | Positionen für den Checkout                                                                                                                                                                    |
| `lines[].sku_uid`                   | string  | Ja           | SKU-UID aus dem Produktkatalog                                                                                                                                                                 |
| `lines[].quantity`                  | integer | Ja           | Zu bestellende Menge                                                                                                                                                                           |
| `lines[].anamnesis_id`              | string  | Nein         | Anamnese-ID zur Verknüpfung mit einem Patientenfragebogen                                                                                                                                      |
| `buyerIdentity`                     | object  | Bedingt      | Shopify-Cart-Buyer-Identity. Erforderlich, wenn `checkout_type` `draft_order_without_checkout_request` ist; wird für `checkout_link`-Carts und Checkout-Anfragen für Bestellentwürfe verwendet |
| `buyerIdentity.email`               | string  | Nein         | E-Mail-Adresse des Käufers                                                                                                                                                                     |
| `buyerIdentity.phone`               | string  | Nein         | Telefonnummer des Käufers                                                                                                                                                                      |
| `buyerIdentity.countryCode`         | string  | Nein         | Shopify-Ländercode des Käufers                                                                                                                                                                 |
| `buyerIdentity.customerAccessToken` | string  | Nein         | Shopify-Storefront-Customer-Access-Token. Wenn er mit `checkout_type: "checkout_link"` gesendet wird, verknüpft Shopify den Cart mit dem Kundenkonto                                           |
| `checkout_type`                     | string  | Nein         | Checkout-Typ: `checkout_link`, `draft_order` (Standard) oder `draft_order_without_checkout_request`                                                                                            |

<Note>
  `buyerIdentity.customerAccessToken` gilt nur, wenn `checkout_type` auf `checkout_link` gesetzt ist, da Shopify dieses Feld für Storefront-Carts verwendet. Es verknüpft kein Kundenkonto mit Shopify-Bestellentwürfen.
</Note>

<Note>
  Senden Sie `buyerIdentity`, wenn Sie `checkout_type: "draft_order_without_checkout_request"` verwenden. RxScale lehnt die Anfrage ohne dieses Feld ab, weil keine Shopify-Checkout-Anfrage gesendet wird, über die Kundendaten später erfasst werden könnten.
</Note>

Siehe [Checkout-Typen](#checkout-typen) oben für Details zu den einzelnen Optionen.

### Beispielanfrage

```bash theme={null}
curl -X POST "https://api.rxscale.com/v2/public-api/treatments/my-shop" \
  -H "X-API-Key: your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "lines": [
      {
        "sku_uid": "sku-789",
        "quantity": 1
      }
    ],
    "buyerIdentity": {
      "email": "max.mustermann@example.com",
      "phone": "+4917612345678",
      "countryCode": "DE",
      "customerAccessToken": "shopify-customer-access-token"
    }
  }'
```

### Antwort

```json theme={null}
{
  "status": "success",
  "checkout_url": "https://shop.example.com/checkout/abc123"
}
```
