v0.3.0

Risorse e disponibilità

Capacità autoritativa per risorsa, calendario ricorrente, override e blocchi.


Risorse

Una risorsa ha quantity e capacityPerResource: quattro veicoli da due posti producono otto posti totali. Risorsa e opzione collegata devono appartenere allo stesso fornitore.

curl -X POST "$TAKO_API_URL/api/v1/options/{optionId}/resource-requirements" \
  -H "Authorization: Bearer $TAKO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "resourceId": "resource-id",
  "quantity": 1,
  "maxQuantity": null
}'

Il collegamento è un upsert: richiamarlo aggiorna quantity/maxQuantity. maxQuantity limita il numero di risorse del pool utilizzabili dall’opzione nello slot.

Calendario ricorrente

curl -X POST "$TAKO_API_URL/api/v1/options/{optionId}/availability-periods" \
  -H "Authorization: Bearer $TAKO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "startMonthDay": "04-01",
  "endMonthDay": "10-31",
  "weekdays": [
    1,
    2,
    3,
    4,
    5,
    6
  ],
  "startTimes": [
    "09:00",
    "15:00"
  ],
  "label": "Stagione estiva"
}'

Date annuali MM-DD inclusive; 12-01 → 02-28 attraversa Capodanno. Giorni da 0 (domenica) a 6 (sabato); orari locali nel fuso del prodotto/fornitore. Gli slot vengono materializzati quando leggi la disponibilità o crei una prenotazione: non devi precaricare ogni giorno. La DELETE disattiva il periodo senza annullare le prenotazioni.

Override e blocchi

curl -X POST "$TAKO_API_URL/api/v1/resources/{resourceId}/inventory" \
  -H "Authorization: Bearer $TAKO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "slots": [
    {
      "startAt": "2030-06-15T07:00:00Z",
      "capacity": 8
    }
  ]
}'
curl -X POST "$TAKO_API_URL/api/v1/availability-blocks" \
  -H "Authorization: Bearer $TAKO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "productId": "product-id",
  "startAt": "2030-06-15T00:00:00Z",
  "endAt": "2030-06-16T00:00:00Z"
}'

capacity è capacità totale in posti, non disponibilità residua. In alternativa quantity indica il numero di risorse: non inviare entrambi. L’upsert non cambia reserved; 409 sotto il riservato. Cambiare la dimensione del pool aggiorna tutti gli slot, sovrascrivendo anche gli override.

Il blocco chiude nuove partenze del prodotto in [startAt,endAt) e conserva le prenotazioni esistenti.

Lettura

GET /availability restituisce startAt, endAt, cutoffAt, available, capacity, vacancies, maxUnits, manual e risorse residue. Non riserva capacità e non restituisce prezzi. Usa intervalli limitati alle date necessarie.

Il flag available ignora il booking cutoff; la creazione con startAt lo verifica. Un risultato disponibile non garantisce l’accettazione della prenotazione: fanno fede validazione e transazione di creazione.