v0.9.1

bookings

Spostare o ridimensionare una partenza

Sposta tutte le prenotazioni aperte (ON_HOLD, PENDING, CONFIRMED) di optionId alla partenza startAt (UTC) verso to (ora locale nel fuso del prodotto/fornitore) con durata durationMinutes (minimo 30); stessa ora di partenza = solo cambio durata. Operazione atomica: capacità, risorse e blocchi sono riverificati per ogni prenotazione e un errore annulla tutto. bookings deve elencare esattamente le prenotazioni aperte con l'updatedAt letto: qualsiasi differenza produce 409 (rileggere e riprovare), quindi una ripetizione è sicura. Il prezzo resta quello venduto. 409 anche per capacità insufficiente, partenza già iniziata, prenotazioni da canale o altra partenza con prenotazioni allo stesso orario; 400 per orario nel passato, periodo bloccato o cambio durata su un'opzione senza calendario ricorrente (lo spostamento resta possibile). La vecchia partenza viene chiusa; l'annullamento è la stessa chiamata con gli orari invertiti. I canali non vendono orari fuori calendario.


https://api.takoconnect.com
POST/api/v1/departures/move
Authorization
Body
curl -X POST "https://api.takoconnect.com/api/v1/departures/move" \
  -H "Authorization: Bearer $TAKO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "optionId": "option-id",
  "startAt": "2030-06-15T08:00:00.000Z",
  "to": {
    "localDate": "2030-06-15",
    "localTime": "11:30"
  },
  "durationMinutes": 120,
  "bookings": [
    {
      "id": "booking-id",
      "updatedAt": "2030-06-01T12:00:00.000Z"
    }
  ]
}'
{
  "startAt": "2030-06-15T08:00:00.000Z",
  "endAt": "2030-06-15T08:00:00.000Z",
  "bookings": [
    {
      "id": "entity-id",
      "tenantId": "tenant-id",
      "uuid": "uu-id",
      "supplierId": "supplier-id",
      "sourceChannelConnectionId": "source-channel-connection-id",
      "productId": "product-id",
      "optionId": "option-id",
      "source": "source",
      "externalId": "external-id",
      "status": "ON_HOLD",
      "startAt": "2030-06-15T08:00:00.000Z",
      "endAt": "2030-06-15T08:00:00.000Z",
      "expiresAt": "2030-06-15T08:00:00.000Z",
      "customer": {},
      "notes": "notes",
      "cancellationReason": "cancellationReason",
      "idempotencyKey": "idempotencyKey",
      "pricingSnapshot": {
        "schemaVersion": 1,
        "pricingPer": "UNIT",
        "currency": "EUR",
        "currencyPrecision": 0,
        "retail": 0,
        "unitPricing": [
          {
            "unitId": "unit-id",
            "quantity": 0,
            "retail": 0,
            "unitRetail": 0,
            "name": "name",
            "type": "type",
            "paxCount": 0
          }
        ]
      },
      "resourceUsageSnapshot": {
        "schemaVersion": 1,
        "items": [
          {
            "resourceId": "resource-id",
            "name": "name",
            "capacityPlaces": 0,
            "resourceQuantity": 0
          }
        ]
      },
      "participants": {},
      "paidAt": "2030-06-15T08:00:00.000Z",
      "createdAt": "2030-06-15T08:00:00.000Z",
      "updatedAt": "2030-06-15T08:00:00.000Z",
      "unitItems": [
        {
          "id": "entity-id",
          "bookingId": "booking-id",
          "unitId": "unit-id",
          "quantity": 0,
          "metadata": {}
        }
      ]
    }
  ]
}

Autorizzazione

AuthorizationBearer <token>

Chiave tenant emessa dalla dashboard o da POST /api-keys, usata come Bearer token.

Scope richiesti: bookings:write

In: header

Body

Content-Type: application/json

optionIdstring

minLength 1

startAtdatetime

date-time

toobject

Mostra proprietà

localDatedate

date

localTimestring

durationMinutesinteger

min 30

bookingsobject[]

Mostra proprietà

idstring

minLength 1

updatedAtdatetime

date-time

Risposte

201object

Operazione riuscita. Lo schema descrive il JSON restituito.

Mostra schema

startAtdatetime

date-time

endAtdatetime

date-time

bookingsobject[]

Mostra proprietà

idstring

tenantIdstring

uuidstring

supplierIdstring

sourceChannelConnectionIdstring | null

productIdstring

optionIdstring

sourcestring

externalIdstring | null

statusenum

ON_HOLDPENDINGCONFIRMEDCANCELLEDREJECTEDEXPIRED

startAtdatetime

date-time

endAtdatetime | null

date-time

expiresAtdatetime | null

date-time

customerany

Valore JSON libero; non usare per dedurre campi strutturati non documentati.

notesstring | null

cancellationReasonstring | null

idempotencyKeystring | null

pricingSnapshotobject | null

Mostra proprietà

schemaVersionenum | enum

pricingPerenum

UNITRESOURCEBOOKING

currencystring

currencyPrecisioninteger

retailinteger

Importo nelle unità minori della valuta: EUR 1250 = 12,50 EUR.

min 0

unitPricingobject[]

Mostra proprietà

unitIdstring

quantityinteger

retailinteger

Importo nelle unità minori della valuta: EUR 1250 = 12,50 EUR.

min 0

unitRetail?integer

Importo nelle unità minori della valuta: EUR 1250 = 12,50 EUR.

min 0

name?string

type?string

paxCount?integer

resourceUsageSnapshotobject | null

Mostra proprietà

schemaVersionenum

1

itemsobject[]

Mostra proprietà

resourceIdstring

namestring

capacityPlacesinteger

resourceQuantity?integer

participantsany

Valore JSON libero; non usare per dedurre campi strutturati non documentati.

paidAtdatetime | null

date-time

createdAtdatetime

date-time

updatedAtdatetime

date-time

unitItemsobject[]

Mostra proprietà

idstring

bookingIdstring

unitIdstring

quantityinteger

metadataany

Valore JSON libero; non usare per dedurre campi strutturati non documentati.

400object

Validazione o regola di dominio non soddisfatta; correggere la richiesta.

401object

Credenziale assente, revocata, scaduta o non valida.

403object

Scope, ruolo o tipo di credenziale non consentito.

404object

Risorsa assente o non accessibile nel perimetro risolto.

409object

Conflitto di stato, capacità, versione o riferimenti; rileggere lo stato e correggere.

413object

Corpo JSON oltre il limite di 15 MB.

500object

Errore interno. Prima di ripetere una mutazione verificarne l'esito.

SuccessivoElencare i webhook del gestionaleGET