Get a trip's itinerary
GET/v1/trips/{tripId}/itinerary
Returns the trip's itinerary as a flat list of blocks in rank order; parentId builds the tree (agenda → dia → activities, and so on). Block types and data fields are the app's own (dia, actividad, texto, …). Each block carries its version: an update or delete sends it back as expectedVersion.
Permissions: trips:read · Kind: read · Cost: 1 unit
Path parameters
| Field | Type | Required | Description |
|---|---|---|---|
tripId |
uuid | yes |
Query parameters
None.
Response 200
| Field | Type | Required | Description |
|---|---|---|---|
object |
"itinerary" | yes | |
tripId |
uuid | yes | |
title |
string | yes | |
publication |
"draft" | "published" | yes | |
hasDesignedRoute |
boolean | yes | |
blocks |
object[] | yes | |
blocks[].object |
"block" | yes | |
blocks[].id |
uuid | yes | |
blocks[].type |
"titulo" | "texto" | "imagen" | "agenda" | "dia" | "caja" | "desplegable" | "seccion" | "capitulo" | "derivado" | "actividad" | "alojamiento" | "vuelo" | "comida" | "transporte" | "tren" | "crucero" | "informacion" | "galeria" | "video" | "mapa" | "html" | "itinerario" | yes | |
blocks[].parentId |
uuid | null | yes | |
blocks[].rank |
string | yes | |
blocks[].data |
object | yes | |
blocks[].layout |
object | yes | |
blocks[].layout.colSpan |
1 | 2 | 3 | default 3 | |
blocks[].layout.hidden |
boolean | Hide this block (and its children) from the traveler. | |
blocks[].version |
integer | yes | |
blocks[].source |
object | null | yes | |
blocks[].source.kind |
string | yes | |
blocks[].source.key |
string | yes |
Errors
Errors are problem details. Besides the refusals described above, any call like this one can return:
invalid_request— Invalid requestunauthorized— Missing or invalid API keyinsufficient_scope— Missing permissionrate_limited— Rate limit reachednot_found— Not found