Maschinell übersetzt. Polnisch ist die kanonische Fassung.

Für Entwickler

Vom API-Schlüssel zur Shop-Bestellung: Menü, Konfiguration, Zeitfenster, Kasse, Ergebnis und Status. Dazu der Weg mit dem geheimen Schlüssel.

Die Partner-API v1 verbindet einen Shop oder eine Kasse mit Delieta. Der Schlüssel bezeichnet die Firma: Eine Anfrage nennt nie companyId oder tenantSlug. Beträge geben Sie in ganzen Grosze an, die einzige Währung ist PLN. Es gibt zwei Varianten: einen Shop (veröffentlichbarer Schlüssel, auf der Serverseite des Shops) und ein eigenes System (geheimer Schlüssel).

Schlüssel ausstellen

Im Panel: Einstellungen → Für Entwickler. Den Schlüsseltext sehen Sie einmal. Format: dlt_live_… oder dlt_test_…. Sie senden ihn als Authorization: Bearer … oder x-delieta-api-key: ….

  • Ein veröffentlichbarer Schlüssel ist genau catalog:read + checkout:create. Der Shop hält ihn serverseitig, nicht im Browser.
  • Ein geheimer Schlüssel bekommt zusätzlich orders:write, eta:quote, reservations:write oder catering:write. Er bleibt auf einem Server, nie als NEXT_PUBLIC_.
  • Ein Test-Schlüssel liest dieselben Produkte wie live und berechnet Angebote, aber jeder Schreibzugriff wird mit test_key_readonly abgelehnt. Zum Anlegen von Bestellungen brauchen Sie dlt_live_….

Shop: vom Menü zum Status

Die Shop-Schleife besteht aus sechs Lese- und Schreibzugriffen, alle mit dem veröffentlichbaren Schlüssel:

  1. GET /api/v1/menu — die Produkte der Firma, zu der der Schlüssel gehört.
  2. GET /api/v1/shop-config — Marke, Öffnungszeiten, Module, Bestellregeln.
  3. GET /api/v1/checkout/slots — wann der Shop eine Bestellung annimmt.
  4. POST /api/v1/checkout — ein Warenkorb { itemId, quantity, options? }; Delieta berechnet die Preise. Braucht Idempotency-Key.
  5. GET /api/v1/checkout/result — das Ergebnis der Online-Zahlung für die Bestätigungsseite.
  6. GET /api/v1/orders/{id}/status — wo die Bestellung ist, für die Tracking-Seite.

Der Client sendet was, nie wie viel. Eine Online-Zahlung antwortet mit einer url, Barzahlung sofort mit einer trackingUrl; diese Adresse geben Sie dem Gast. Lesen Sie den Zustand des Shops (modules, ordering, hours, closures) aus shop-config, raten Sie nicht. Reservierungen, Anfragen und Catering sind eigene Operationen, beschrieben in der Partner-API.

Eigenes System: Angebot und Bestellung

Eine Kasse oder ein Partnerkanal nutzt einen geheimen Schlüssel und ruft auf:

  1. POST /api/v1/quotes — ein Zeitfenster in Minuten zu einer Adresse (eta:quote). Immer eine Spanne, nie eine Garantie.
  2. POST /api/v1/orders — eine Bestellung mit den von Ihnen angegebenen Preisen (orders:write). Idempotency-Key ist Pflicht.
  3. GET /api/v1/orders/{id} — liest den Bestellverlauf (orders:write), zählt zum Leselimit.

Die 201-Antwort enthält order.trackingUrl: den Link, den Sie an den Kunden weitergeben (die /o/…-Seite). Legen Sie keine zweite Tracking-Adresse an. Verlangt die Firma Annahme, beginnt die Bestellung im Zustand pending_acceptance; den Zustand ändert jemand in der Küche oder das Zeitlimit, nicht Ihr Backend.

Shop-Vertrag und Webhooks

Das Backend des Shops ist das Paket @delieta/shop-runtime, nicht Dateien im Repository des Shops: Das beschreibt der Shop-Vertrag. Das Einzige, was Delieta an den Shop sendet, ist ein signiertes Aktualisierungssignal, beschrieben in Webhooks. Webhooks für den Bestellstatus gibt es nicht — den Status lesen Sie per GET.

Die vollständige Beschreibung, abgestimmt mit GET /api/v1/openapi: Partner-API.