Base URL & identificazione del negozio
Envelope
Tutte le risposte JSON hanno la stessa busta:Errori
Sugli errorierror_code porta un codice macchina stabile e data di solito è null. Il
frontend deve fare switch su error_code, non mostrare error (inglese, solo per debug).
- Alcuni rifiuti mettono in
datai dettagli che servono a spiegarli: per esempiocheckout.min_order_not_metportamin_order_total,subtotalecurrency. - Validazione (422):
error_codevalevalidation.failede la risposta ha in piùdetail, la lista dei campi errati (il campo è l’ultimo elemento diloc). - Rate limit (429): la risposta è
{"detail": "..."}, senza la busta.
Paginazione
Le liste accettanopage e page_size e restituiscono meta:
Internazionalizzazione
Molti endpoint di contenuto accettano?lang=it|en|sq (o l’header Accept-Language) e
restituiscono i campi già risolti nella lingua richiesta, con fallback alla lingua di
default del negozio.
Immagini
I percorsi immagine sono relativi (/uploads/products/xyz.webp): preponi l’origin del
negozio → https://<dominio>/uploads/.... In produzione sono servite via CDN/redirect
firmato, quindi usa l’URL così com’è restituito.
Multi-tenant in breve
Ogni negozio è un tenant isolato. La chiave publishable e il dominio determinano il tenant per le chiamate storefront; il claimtenant_id del token staff lo determina per la
Admin API. Non c’è modo, con credenziali di un negozio, di vedere i dati di un altro.