/versionpublikAPI-version (ingen nyckel)
curl -sS "https://vbkvldzmjycapdlkoawr.supabase.co/functions/v1/open-api/v1/version"Partner API
Publik REST API för partners: meny, öppna notor och stängd försäljning per outlet. Autentisering med outlet-nycklar — inte device-JWT eller personal-PIN.
Alla skyddade anrop kräver en giltig outlet-nyckel. Skicka antingen:
Authorization: Bearer modr_live_…eller
Authorization: Bearer modr_test_…Alternativ header:X-Api-Key: modr_test_…
Ogiltig eller återkallad nyckel ger 401. Nycklar lagras hashade; prefix och last4 visas i Backoffice.
Samma Supabase-projekt för live och test. Använd modr_test_-nycklar mot en test-outlet under utveckling. Separat sandbox-projekt kommer senare.
modr_test_ — sandbox / lägre rate limitmodr_live_ — produktionFast fönster per minut per nyckel. Överskridning ger 429 med Retry-After.
modr_test_ — 60 req/min (default)modr_live_ — 120 req/min (default)Response headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset
Skicka valfritt X-Correlation-Id. Samma värde returneras i svaret och ingår i felpayload — använd det vid support.
Alla paths är relativa till base URL ovan.
/versionpublikAPI-version (ingen nyckel)
curl -sS "https://vbkvldzmjycapdlkoawr.supabase.co/functions/v1/open-api/v1/version"/environmentNyckelns miljö och outlet-bindning
curl -sS "https://vbkvldzmjycapdlkoawr.supabase.co/functions/v1/open-api/v1/environment" \
-H "Authorization: Bearer modr_test_…"/productsPublicerad meny / katalog
curl -sS "https://vbkvldzmjycapdlkoawr.supabase.co/functions/v1/open-api/v1/products" \
-H "Authorization: Bearer modr_test_…"/checksLista öppna notor
curl -sS "https://vbkvldzmjycapdlkoawr.supabase.co/functions/v1/open-api/v1/checks?limit=50" \
-H "Authorization: Bearer modr_test_…"/checksSkapa öppen nota (ingen betalning)
curl -sS -X POST "https://vbkvldzmjycapdlkoawr.supabase.co/functions/v1/open-api/v1/checks" \
-H "Authorization: Bearer modr_test_…" \
-H "Content-Type: application/json" \
-d '{"name":"Online 1","lines":[{"productId":"<id>","qty":1}]}'/checks/{id}Hämta en öppen nota
curl -sS "https://vbkvldzmjycapdlkoawr.supabase.co/functions/v1/open-api/v1/checks/<checkId>" \
-H "Authorization: Bearer modr_test_…"/salesStängd försäljning (closed_checks)
curl -sS "https://vbkvldzmjycapdlkoawr.supabase.co/functions/v1/open-api/v1/sales?limit=50" \
-H "Authorization: Bearer modr_test_…"Konfigurera HTTPS-URL och events i Backoffice. Leveranser loggas; v1 gör ett synkront försök och sparar rad för retry.
check.createdcheck.updatedsale.createdHeaders: X-Modr-Timestamp, X-Modr-Signature, X-Modr-Event
HMAC-SHA256 hex av{timestamp}.{rawBody} med webhook-secret.
# verify (pseudo)
expected = hmac_sha256(secret, timestamp + "." + rawBody)
assert expected == X-Modr-SignatureJSON-fel har konsekvent form:
{
"code": "unauthorized",
"message": "Missing API key …",
"correlationId": "…"
}Betala/terminal, refund, kontant, Z/X/fiskal, personal-PIN, device link och manager override ingår inte i Open API v1.