v0.3.0

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.

PassoEndpointCorpo minimo
FornitorePOST /suppliers{"name":"Operatore","timezone":"Europe/Rome","locale":"it-IT"}
ProdottoPOST /products{"supplierId":"…","name":"Tour","status":"INACTIVE"}
OpzionePOST /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.