bymundi API

trip.itinerary.updated

A trip's itinerary changed — one event per burst of edits. data is the TRIP; read the tree with GET /trips/{tripId}/itinerary.

Needs: trips:read on the subscription's key · Subject: trip

Envelope

{
  "id": "evt_…",
  "type": "trip.itinerary.updated",
  "timestamp": "2027-05-01T09:00:00Z",
  "subject": {
    "object": "trip",
    "id": "<id>",
    "tripId": "<tripId>"
  },
  "changed": [
    "title"
  ],
  "data": {}
}

data

data is the trip exactly as Get a trip returns it, read at delivery time with the subscription key's permissions.

Field Type Required Description
object "trip" yes
id uuid yes
code string yes
title string yes
startDate string | null yes
endDate string | null yes
publication "draft" | "published" yes
commercialState "nueva" | "propuesta_enviada" | "aceptada" | "reserva_provisional" | "reservada" | "rechazada" | "cancelada" yes
travelers integer yes
ownerId uuid | null yes
design object | null yes
design.version 1 yes
design.originCity string yes
design.stops object[] yes max 60 items
design.stops[].id string yes
design.stops[].city string yes
design.stops[].nights integer yes 0–365
design.stops[].transferBefore object | null yes
design.stops[].escala boolean default false
design.stops[].place object default {"placeId":"","lat":null,"lng":null,"formattedAddress":""}
design.returnCity string | null yes
design.returnTransfer object | null yes
design.returnTransfer.id string yes
design.returnTransfer.departDate string | null yes
design.returnTransfer.arriveDate string | null yes
design.returnTransfer.days integer 0–30, default 0
design.returnTransfer.departTime string default ""
design.returnTransfer.arriveTime string default ""
design.returnTransfer.flight object default {"flightNo":"","airline":"","fromAirport":"","toAirport":"","source":"","fetchedAt":"","scheduleValidFor":""}
design.originPlace object default {"placeId":"","lat":null,"lng":null,"formattedAddress":""}
design.originPlace.placeId string default ""
design.originPlace.lat number | null default null
design.originPlace.lng number | null default null
design.originPlace.formattedAddress string default ""
design.returnPlace object default {"placeId":"","lat":null,"lng":null,"formattedAddress":""}
design.returnPlace.placeId string default ""
design.returnPlace.lat number | null default null
design.returnPlace.lng number | null default null
design.returnPlace.formattedAddress string default ""
presentation object yes
presentation.logoUrl uri | null
presentation.brandColor string | null
presentation.fontFamily "inter" | "montserrat" | "poppins" | "lora" | "playfair" | "source-sans" | null
presentation.headerMedia object | null
presentation.headerMedia.type "image" | "video" yes
presentation.headerMedia.url uri yes
profile object yes
profile.pace "relajado" | "equilibrado" | "intenso" | null default null
profile.profiles "primera_vez" | "repetidor" | "familia_ninos" | "pareja" | "grupo" | "senior" | "movilidad_reducida" | "cultural" | "gastronomico" | "naturaleza" | "fotografia" | "otaku" | "compras" | "presupuesto_ajustado" | "premium"[] default []
profile.mobility "normal" | "reducida" default "normal"
profile.avoid string[] default []
profile.notes string default ""
coverImageUrl string | null yes
coverage object | null yes
coverage.state "sin_cobros" | "pago_parcial" | "pagado" yes
coverage.percent integer yes
coverage.overpaid boolean yes
metadata object yes
appUrl string | null yes
publicUrl string | null yes
createdAt string yes
updatedAt string yes

Verify the signature before trusting the body: Webhooks guide.