Machine-translated. Polish is the canonical documentation.

For developers

From an API key to a shop order: menu, config, slots, checkout, result and status. Plus the secret-key path.

Partner API v1 connects a shop or a till to Delieta. The key identifies the company: a request never names companyId or tenantSlug. You give amounts in whole grosze, and the only currency is PLN. There are two variants: a shop (publishable key, on the shop's server side) and your own system (secret key).

Issue a key

In the panel: Settings → For developers. The key text is shown once. Format: dlt_live_… or dlt_test_…. You send it as Authorization: Bearer … or x-delieta-api-key: ….

  • A publishable key is exactly catalog:read + checkout:create. The shop holds it on the server side, not in the browser.
  • A secret key additionally gets orders:write, eta:quote, reservations:write or catering:write. It stays on a server, never as NEXT_PUBLIC_.
  • A test key reads the same products as live and computes quotes, but every write is refused with test_key_readonly. To create orders you need dlt_live_….

Shop: from menu to status

The shop loop is six reads and writes, all with the publishable key:

  1. GET /api/v1/menu — the products of the company the key belongs to.
  2. GET /api/v1/shop-config — brand, hours, modules, ordering rules.
  3. GET /api/v1/checkout/slots — when the shop will take an order.
  4. POST /api/v1/checkout — a cart { itemId, quantity, options? }; Delieta computes prices. Needs Idempotency-Key.
  5. GET /api/v1/checkout/result — the online payment outcome for the confirmation page.
  6. GET /api/v1/orders/{id}/status — where the order is, for the tracking page.

The client sends what, never how much. An online payment answers with a url, cash answers at once with a trackingUrl; you hand that address to the guest. Read the shop's state (modules, ordering, hours, closures) from shop-config, do not guess. Reservations, inquiries and catering are separate operations described in Partner API.

Your own system: quote and order

A till or partner channel uses a secret key and calls:

  1. POST /api/v1/quotes — a window of minutes to an address (eta:quote). Always a range, never a guarantee.
  2. POST /api/v1/orders — an order with the prices you provide (orders:write). Idempotency-Key is required.
  3. GET /api/v1/orders/{id} — reads the order's progress (orders:write), counted against the read limit.

The 201 response includes order.trackingUrl: the link you pass to the customer (the /o/… page). Do not create a second tracking address. When the company requires acceptance, the order starts in the pending_acceptance state; someone in the kitchen or the time limit changes the state, not your backend.

Shop contract and webhooks

The shop's backend is the @delieta/shop-runtime package, not files in the shop's repository: that is what the shop contract describes. The only thing Delieta sends to the shop is a signed refresh signal, described in Webhooks. There are no order-status webhooks — you read the status with a GET.

The full description, in line with GET /api/v1/openapi: Partner API.