Catalogo
Fornitori, prodotti, opzioni, unità e foto.
Flusso di creazione
Prepara il prodotto con status: "INACTIVE", completa disponibilità e prezzi, poi attivalo. Il default di creazione è ACTIVE. Opzioni e unità non hanno uno status modificabile.
| Passo | Endpoint | Corpo minimo |
|---|---|---|
| Fornitore | POST /suppliers | {"name":"Operatore","timezone":"Europe/Rome","locale":"it-IT"} |
| Prodotto | POST /products | {"supplierId":"…","name":"Tour","status":"INACTIVE"} |
| Opzione | POST /products/{id}/options | {"name":"Mattina","durationMinutes":60,"pricingPer":"UNIT"} |
| Unità | POST /options/{id}/units | {"type":"ADULT","name":"Adulto","restrictions":{"paxCount":1}} |
Salva l’id di ogni risposta. La prima opzione diventa predefinita; le successive possono impostare isDefault: true. reference è generata dal nome e può cambiare quando rinomini: non usarla come chiave primaria.
Campi e letture
Il fornitore contiene lingua, fuso e contatti pubblici. Il prodotto può sovrascrivere timezone e locale; null ripristina l’eredità. L’opzione definisce durata, cutoff e restrizioni; le unità definiscono categoria e composizione.
Per le quantità usa restrictions.minQuantity/maxQuantity sulle unità e minUnits/maxUnits sull’opzione. L’oggetto restrictions dell’opzione deve contenere entrambi, anche con null.
GET e POST prodotto includono opzioni, periodi e metadati foto. PATCH prodotto restituisce solo il prodotto: rileggi con GET per le relazioni.
Foto
POST /products/{id}/photos riceve contentType e data base64 senza prefisso data URI. Formati JPEG, PNG e WebP; massimo 14.000.000 caratteri base64.
GET /products/{id}/photos/{photoId} è pubblico e restituisce l’immagine. Dopo una sostituzione aggiungi ?v=<updatedAt> all’URL per aggiornare la cache. Il PUT di riordino richiede tutti gli id.
Eliminazione
Prodotti e opzioni con prenotazioni attive restituiscono 409. Un’unità usata da prenotazioni attive viene ritirata e conservata nello storico. Un fornitore si archivia solo dopo aver rimosso prodotti, risorse e connessioni attive. Per interrompere le vendite conservando il catalogo usa INACTIVE.