{
  "openapi": "3.1.0",
  "info": {
    "title": "Stardrift API",
    "description": "Read and edit the authenticated user's trips, itineraries, recorded bookings, and saved lists. Private records are owner-scoped. MCP tool names are documented separately from these HTTP operations.",
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://stardrift.ai/api"
    }
  ],
  "paths": {
    "/v1/forwarding-address": {
      "get": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Get Forwarding Address",
        "description": "The user's private forward-to address, minted on first request.\n\nSession-or-token so the web/mobile connections screens and the MCP share\none route. Read scope suffices even though the first call writes: the\ntoken is the user's own credential, not booking data.",
        "operationId": "get_forwarding_address_v1_forwarding_address_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForwardingAddressResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/bookings": {
      "get": {
        "tags": [
          "mcp-server"
        ],
        "summary": "List Bookings",
        "description": "The user's bookings \u2014 imported from email (Gmail scan, forwarded\nconfirmations, in-chat paste) and sold first-party \u2014 in the exact shape\nthe in-app Bookings page renders, so a flight comes back with its\ncard_data and its editable ExtractedFlight.",
        "operationId": "list_bookings_v1_bookings_get",
        "parameters": [
          {
            "name": "booking_type",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "flight",
                    "hotel",
                    "rail",
                    "road",
                    "car_rental",
                    "event"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Booking Type"
            }
          },
          {
            "name": "trip_id",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Trip Id"
            }
          },
          {
            "name": "from_date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "title": "From Date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/trips": {
      "get": {
        "tags": [
          "mcp-server"
        ],
        "summary": "List Trips",
        "operationId": "list_trips_v1_trips_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/TripSummary"
                  },
                  "type": "array",
                  "title": "Response List Trips V1 Trips Get"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Create Trip",
        "description": "Create a new draft trip with `num_days` blank days, ready for\nadd_place/add_day_note.\n\nMirrors the in-app create path: a Trip plus its primary conversation link, then an empty\nplan. Returns the trip summary, including the new trip_id.",
        "operationId": "create_trip_v1_trips_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTripRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TripSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/trips/{trip_id}/plan": {
      "get": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Get Plan",
        "operationId": "get_plan_v1_trips__trip_id__plan_get",
        "parameters": [
          {
            "name": "trip_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Trip Id"
            }
          },
          {
            "name": "include_booking_links",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false,
              "title": "Include Booking Links"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PlanResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/trips/{trip_id}/places": {
      "post": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Add Place",
        "operationId": "add_place_v1_trips__trip_id__places_post",
        "parameters": [
          {
            "name": "trip_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Trip Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddPlaceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddPlaceResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/trips/{trip_id}/days/{day_number}/notes": {
      "post": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Add Day Note",
        "operationId": "add_day_note_v1_trips__trip_id__days__day_number__notes_post",
        "parameters": [
          {
            "name": "day_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "title": "Day Number"
            }
          },
          {
            "name": "trip_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Trip Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddNoteRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Add Day Note V1 Trips  Trip Id  Days  Day Number  Notes Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/trips/{trip_id}/days/{day_number}/entries/{entry_id}": {
      "patch": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Update Entry",
        "description": "Correct a place annotation, note text, or local time in place.\n\nOmitted fields are preserved; null clears note/time. Changing a time also\nreorders the entry because a plan is an ordered document.",
        "operationId": "update_entry_v1_trips__trip_id__days__day_number__entries__entry_id__patch",
        "parameters": [
          {
            "name": "entry_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Entry Id"
            }
          },
          {
            "name": "day_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "title": "Day Number"
            }
          },
          {
            "name": "trip_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Trip Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateEntryResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Remove Entry",
        "description": "Remove one entry from a day \u2014 the inverse of add_place / add_day_note.\n\nThe removal is `apply_plan_actions` + `RemoveEntryAction` \u2014 the same pair\nthe LLM edit path uses (`plan/edit_subagent.py`, `stream_processing.py`),\nrather than a second implementation of \"filter the day's entries\". Note the\nweb does NOT go through this: it removes client-side in\n`lib/plan-mutations.ts` and PUTs the whole plan. What the two share is\n`EditablePlan.save`, which mirrors that PUT's validate-then-save.\n\nNothing else is needed here: `item_refs` is a read-time derived index that\n`PlanRepository.assemble_content` reconstitutes as `[]` on every load.\n\nRemoveEntryAction filters, so removing an entry that isn't there succeeds\nsilently \u2014 that would report a deletion which never happened, so a missing\nentry_id 404s instead.\n\nThe itinerary activity is deliberately left in place: another day may\nreference it, and an orphaned activity is invisible rather than wrong.",
        "operationId": "remove_entry_v1_trips__trip_id__days__day_number__entries__entry_id__delete",
        "parameters": [
          {
            "name": "entry_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Entry Id"
            }
          },
          {
            "name": "day_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "title": "Day Number"
            }
          },
          {
            "name": "trip_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Trip Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemoveEntryResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/trips/{trip_id}/days/{day_number}/entries/{entry_id}/move": {
      "post": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Move Entry",
        "description": "Move a place or note without resolving its place again.",
        "operationId": "move_entry_v1_trips__trip_id__days__day_number__entries__entry_id__move_post",
        "parameters": [
          {
            "name": "entry_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Entry Id"
            }
          },
          {
            "name": "day_number",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "title": "Day Number"
            }
          },
          {
            "name": "trip_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Trip Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MoveEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateEntryResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/trips/{trip_id}/stays": {
      "post": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Add Stay To Trip",
        "description": "Record a booked stay \u2014 it lands in Bookings, not as a place card.\n\nA hotel added through add_place_to_guide becomes an attraction: no dates, no\nconfirmation number, and it never appears alongside the flights and other\nreservations. This is the same `add_stay` the in-app Add-stay flow calls, so\nthe stay is geocoded, canonical-stamped, date-synced and enqueued for\nenrichment identically \u2014 only the authentication differs.",
        "operationId": "add_stay_to_trip_v1_trips__trip_id__stays_post",
        "parameters": [
          {
            "name": "trip_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Trip Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddStayRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddStayResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/trips/{trip_id}/stays/{stay_id}": {
      "patch": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Update Stay On Trip",
        "description": "Change a booking in place \u2014 dates, price, or its confirmation number.\n\nWithout this a stay could be recorded and never corrected: the confirmation\nnumber could only be set at creation, and a booking whose dates moved had no\npath back short of leaving a stale one behind, since removing was not\npossible either.",
        "operationId": "update_stay_on_trip_v1_trips__trip_id__stays__stay_id__patch",
        "parameters": [
          {
            "name": "trip_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Trip Id"
            }
          },
          {
            "name": "stay_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Stay Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStayRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Update Stay On Trip V1 Trips  Trip Id  Stays  Stay Id  Patch"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Remove Stay From Trip",
        "description": "Drop a booking from the trip.",
        "operationId": "remove_stay_from_trip_v1_trips__trip_id__stays__stay_id__delete",
        "parameters": [
          {
            "name": "trip_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Trip Id"
            }
          },
          {
            "name": "stay_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Stay Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/trips/{trip_id}/events": {
      "post": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Add Event To Trip",
        "description": "Record something scheduled that isn't a booking \u2014 a wedding, a concert.\n\nadd_place_to_guide would make it an attraction, which is what a place the\nuser might visit is, not something happening at a time they are expected at.\nAn event carries its own start and end, and its venue is geocoded to a pin\nwhen one resolves. This is the same `add_event` the in-app Add-event flow\ncalls; only the authentication differs.",
        "operationId": "add_event_to_trip_v1_trips__trip_id__events_post",
        "parameters": [
          {
            "name": "trip_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Trip Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddEventRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddEventResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/saved/import": {
      "post": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Import Social Post",
        "description": "Import an Instagram post/reel or TikTok video into a new saved list.\n\nThe same import the iOS share extension starts; the share extension's own\nroute takes only its `saved:import` token, which OAuth clients never hold.",
        "operationId": "import_social_post_v1_saved_import_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SocialImportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImportStartedOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/trips/{trip_id}/publish": {
      "post": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Publish Trip",
        "operationId": "publish_trip_v1_trips__trip_id__publish_post",
        "parameters": [
          {
            "name": "trip_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Trip Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublishRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TripSummary"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/search/flights": {
      "post": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Search Flights",
        "operationId": "search_flights_v1_search_flights_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FlightSearchInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object",
                  "title": "Response Search Flights V1 Search Flights Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/search/hotels": {
      "post": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Search Hotels",
        "operationId": "search_hotels_v1_search_hotels_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HotelSearchInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object",
                  "title": "Response Search Hotels V1 Search Hotels Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/search/{search_id}": {
      "get": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Get Search Results",
        "operationId": "get_search_results_v1_search__search_id__get",
        "parameters": [
          {
            "name": "search_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Search Id"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 30,
              "minimum": 1,
              "default": 10,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Get Search Results V1 Search  Search Id  Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/trips/{trip_id}/search-results": {
      "post": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Add Search Result",
        "operationId": "add_search_result_v1_trips__trip_id__search_results_post",
        "parameters": [
          {
            "name": "trip_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Trip Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SelectSearchResult"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true,
                  "title": "Response Add Search Result V1 Trips  Trip Id  Search Results Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/v1/trips/{trip_id}/search-results/{item_id}": {
      "delete": {
        "tags": [
          "mcp-server"
        ],
        "summary": "Remove Search Result",
        "operationId": "remove_search_result_v1_trips__trip_id__search_results__item_id__delete",
        "parameters": [
          {
            "name": "trip_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Trip Id"
            }
          },
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Item Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/saved/place-autocomplete": {
      "get": {
        "tags": [
          "saved"
        ],
        "summary": "Place Autocomplete",
        "description": "Google Places autocomplete powering the Saved \"Add a place\" search.",
        "operationId": "place_autocomplete_saved_place_autocomplete_get",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 2,
              "title": "Query"
            }
          },
          {
            "name": "lat",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Lat"
            }
          },
          {
            "name": "lng",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ],
              "title": "Lng"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PlaceSuggestion"
                  },
                  "title": "Response Place Autocomplete Saved Place Autocomplete Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/saved/add-place": {
      "post": {
        "tags": [
          "saved"
        ],
        "summary": "Add Place By Id",
        "description": "Save a place by id \u2014 optionally to a list. Idempotent per (place, list).\n\nTHE contract is a canonical place ULID (`canonical_places.id`) \u2014 the\nspine identity every surface joins on; saves resolve entirely from the\nspine with zero paid fetches, and dedup by canonical place_id.\n\nA Google place_id is also accepted as the LEGACY autocomplete path (the\npicker hands us a gpid before any canonical row exists); that path still\nends canonical \u2014 the resolver mints/links the row and stamps\n`item.place_id` \u2014 it just pays the Google fetch to get there.",
        "operationId": "add_place_by_id_saved_add_place_post",
        "parameters": [
          {
            "name": "x-client-id",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Client-Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddPlaceByIdRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedItemOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/saved/{item_id}": {
      "patch": {
        "tags": [
          "saved"
        ],
        "summary": "Update Saved Item",
        "operationId": "update_saved_item_saved__item_id__patch",
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          },
          {
            "name": "x-client-id",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Client-Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateItemRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedItemOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "saved"
        ],
        "summary": "Unsave Place",
        "operationId": "unsave_place_saved__item_id__delete",
        "parameters": [
          {
            "name": "item_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Item Id"
            }
          },
          {
            "name": "x-client-id",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Client-Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/saved/lists": {
      "get": {
        "tags": [
          "saved"
        ],
        "summary": "List Lists",
        "operationId": "list_lists_saved_lists_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/SavedListOut"
                  },
                  "type": "array",
                  "title": "Response List Lists Saved Lists Get"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "saved"
        ],
        "summary": "Create List",
        "operationId": "create_list_saved_lists_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateListRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedListOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/saved/lists/{list_id}/contents": {
      "get": {
        "tags": [
          "saved"
        ],
        "summary": "Get List Contents",
        "operationId": "get_list_contents_saved_lists__list_id__contents_get",
        "parameters": [
          {
            "name": "list_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "List Id"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0,
              "title": "Offset"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 200,
              "minimum": 1,
              "default": 100,
              "title": "Limit"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedListContentsOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/saved/lists/{list_id}": {
      "patch": {
        "tags": [
          "saved"
        ],
        "summary": "Update List",
        "operationId": "update_list_saved_lists__list_id__patch",
        "parameters": [
          {
            "name": "list_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "List Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateListRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedListOut"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/saved/lists/{list_id}/sections": {
      "post": {
        "tags": [
          "saved"
        ],
        "summary": "Create Section",
        "operationId": "create_section_saved_lists__list_id__sections_post",
        "parameters": [
          {
            "name": "list_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "List Id"
            }
          },
          {
            "name": "x-client-id",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Client-Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSectionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedSection"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/saved/lists/{list_id}/sections/{section_id}": {
      "patch": {
        "tags": [
          "saved"
        ],
        "summary": "Update Section",
        "operationId": "update_section_saved_lists__list_id__sections__section_id__patch",
        "parameters": [
          {
            "name": "list_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "List Id"
            }
          },
          {
            "name": "section_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Section Id"
            }
          },
          {
            "name": "x-client-id",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Client-Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSectionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedSection"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "saved"
        ],
        "summary": "Delete Section",
        "operationId": "delete_section_saved_lists__list_id__sections__section_id__delete",
        "parameters": [
          {
            "name": "list_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "List Id"
            }
          },
          {
            "name": "section_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Section Id"
            }
          },
          {
            "name": "x-client-id",
            "in": "header",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "title": "X-Client-Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AddEventRequest": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "start_datetime": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Datetime"
          },
          "end_datetime": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Datetime"
          },
          "venue_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Venue Name"
          },
          "address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address"
          },
          "place_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Place Id"
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "City"
          },
          "total_price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Price"
          },
          "currency": {
            "type": "string",
            "title": "Currency",
            "default": "USD"
          },
          "confirmation_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmation Number"
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "AddEventRequest"
      },
      "AddEventResponse": {
        "properties": {
          "activity_id": {
            "type": "string",
            "title": "Activity Id"
          },
          "activity": {
            "additionalProperties": true,
            "type": "object",
            "title": "Activity"
          },
          "warnings": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Warnings",
            "default": []
          }
        },
        "type": "object",
        "required": [
          "activity_id",
          "activity"
        ],
        "title": "AddEventResponse"
      },
      "AddNoteRequest": {
        "properties": {
          "content": {
            "type": "string",
            "title": "Content"
          },
          "time": {
            "anyOf": [
              {
                "type": "string",
                "format": "time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Time"
          }
        },
        "type": "object",
        "required": [
          "content"
        ],
        "title": "AddNoteRequest"
      },
      "AddPlaceByIdRequest": {
        "properties": {
          "place_id": {
            "type": "string",
            "title": "Place Id"
          },
          "list_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "List Id"
          },
          "skip_enrichment": {
            "type": "boolean",
            "title": "Skip Enrichment",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "place_id"
        ],
        "title": "AddPlaceByIdRequest"
      },
      "AddPlaceRequest": {
        "properties": {
          "day_number": {
            "type": "integer",
            "minimum": 1.0,
            "title": "Day Number"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "search_query": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Search Query"
          },
          "time": {
            "anyOf": [
              {
                "type": "string",
                "format": "time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Time"
          },
          "note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          }
        },
        "type": "object",
        "required": [
          "day_number",
          "name"
        ],
        "title": "AddPlaceRequest"
      },
      "AddPlaceResponse": {
        "properties": {
          "item_id": {
            "type": "string",
            "title": "Item Id"
          },
          "entry_id": {
            "type": "string",
            "title": "Entry Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "rating": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rating"
          },
          "latitude": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latitude"
          },
          "longitude": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Longitude"
          },
          "plan_version": {
            "type": "integer",
            "title": "Plan Version"
          }
        },
        "type": "object",
        "required": [
          "item_id",
          "entry_id",
          "name",
          "rating",
          "latitude",
          "longitude",
          "plan_version"
        ],
        "title": "AddPlaceResponse"
      },
      "AddStayRequest": {
        "properties": {
          "address": {
            "type": "string",
            "title": "Address"
          },
          "place_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Place Id"
          },
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "check_in_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Check In Date"
          },
          "check_out_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Check Out Date"
          },
          "check_in_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Check In Time"
          },
          "check_out_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Check Out Time"
          },
          "total_price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Price"
          },
          "currency": {
            "type": "string",
            "title": "Currency",
            "default": "USD"
          },
          "confirmation_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmation Number"
          }
        },
        "type": "object",
        "required": [
          "address"
        ],
        "title": "AddStayRequest"
      },
      "AddStayResponse": {
        "properties": {
          "stay_id": {
            "type": "string",
            "title": "Stay Id"
          },
          "hotel": {
            "additionalProperties": true,
            "type": "object",
            "title": "Hotel"
          }
        },
        "type": "object",
        "required": [
          "stay_id",
          "hotel"
        ],
        "title": "AddStayResponse"
      },
      "AttractionDisplayData": {
        "properties": {
          "from_email": {
            "type": "boolean",
            "title": "From Email",
            "default": false
          },
          "gmail_link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gmail Link"
          },
          "import_kind": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "email",
                  "image",
                  "text"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Import Kind"
          },
          "import_link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Import Link"
          },
          "import_sources": {
            "items": {
              "$ref": "#/components/schemas/ImportSource"
            },
            "type": "array",
            "title": "Import Sources"
          },
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "place_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Place Id"
          },
          "latitude": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latitude"
          },
          "longitude": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Longitude"
          },
          "thumbnail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail"
          },
          "thumbnail_thumbhash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Thumbhash"
          },
          "rating": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rating"
          },
          "num_reviews": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Num Reviews"
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category"
          },
          "address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address"
          },
          "city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "City"
          },
          "state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "State"
          },
          "country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Country"
          },
          "source_reference": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SourceReference"
              },
              {
                "type": "null"
              }
            ]
          },
          "activity_details": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Activity Details"
          },
          "activity_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Activity Type"
          },
          "start_datetime": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Datetime"
          },
          "end_datetime": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Datetime"
          },
          "venue_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Venue Name"
          },
          "seat_info": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Seat Info"
          },
          "quantity": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Quantity"
          },
          "booking_source": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Booking Source"
          },
          "confirmation_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmation Number"
          },
          "total_price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Price"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          },
          "is_booked": {
            "type": "boolean",
            "title": "Is Booked",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "title": "AttractionDisplayData",
        "description": "Pre-formatted attraction data for AttractionCard component."
      },
      "AwardPayment": {
        "properties": {
          "amount": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Amount",
            "description": "Number of miles/points used (e.g., 800, 25000)"
          },
          "unit": {
            "type": "string",
            "enum": [
              "miles",
              "points"
            ],
            "title": "Unit",
            "description": "'miles' or 'points'"
          },
          "account": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Account",
            "description": "Loyalty account identifier if shown (e.g., 'MileagePlus XXXXX205', 'Bonvoy XXXX1234')"
          }
        },
        "type": "object",
        "required": [
          "unit"
        ],
        "title": "AwardPayment",
        "description": "Payment made with loyalty miles/points."
      },
      "BookingLink": {
        "properties": {
          "link": {
            "type": "string",
            "title": "Link"
          },
          "label": {
            "type": "string",
            "title": "Label"
          },
          "price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Price"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          },
          "primary": {
            "type": "boolean",
            "title": "Primary",
            "default": false
          },
          "fare_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fare Name"
          },
          "free_carry_on": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Free Carry On"
          },
          "free_checked_bags": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Free Checked Bags"
          }
        },
        "type": "object",
        "required": [
          "link",
          "label"
        ],
        "title": "BookingLink",
        "description": "A booking link with optional pricing and baggage info."
      },
      "BookingReview": {
        "properties": {
          "question": {
            "type": "string",
            "enum": [
              "which_trip",
              "is_this_yours"
            ],
            "title": "Question"
          },
          "travelers": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Travelers",
            "default": []
          },
          "nudge": {
            "type": "boolean",
            "title": "Nudge",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "question"
        ],
        "title": "BookingReview"
      },
      "BookingsResponse": {
        "properties": {
          "bookings": {
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/FlightBookingItem"
                },
                {
                  "$ref": "#/components/schemas/HotelBookingItem"
                },
                {
                  "$ref": "#/components/schemas/RailBookingItem"
                },
                {
                  "$ref": "#/components/schemas/RoadBookingItem"
                },
                {
                  "$ref": "#/components/schemas/CarRentalBookingItem"
                },
                {
                  "$ref": "#/components/schemas/EventBookingItem"
                }
              ],
              "discriminator": {
                "propertyName": "booking_type",
                "mapping": {
                  "car_rental": "#/components/schemas/CarRentalBookingItem",
                  "event": "#/components/schemas/EventBookingItem",
                  "flight": "#/components/schemas/FlightBookingItem",
                  "hotel": "#/components/schemas/HotelBookingItem",
                  "rail": "#/components/schemas/RailBookingItem",
                  "road": "#/components/schemas/RoadBookingItem"
                }
              }
            },
            "type": "array",
            "title": "Bookings"
          }
        },
        "type": "object",
        "required": [
          "bookings"
        ],
        "title": "BookingsResponse"
      },
      "CarRentalBookingItem": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "event_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Event Date"
          },
          "created_at": {
            "type": "string",
            "title": "Created At"
          },
          "confirmation_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmation Number"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "cancelled"
            ],
            "title": "Status",
            "default": "active"
          },
          "gmail_link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gmail Link"
          },
          "import_kind": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "email",
                  "image",
                  "text"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Import Kind"
          },
          "import_link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Import Link"
          },
          "import_sources": {
            "items": {
              "$ref": "#/components/schemas/ImportSource"
            },
            "type": "array",
            "title": "Import Sources"
          },
          "source": {
            "type": "string",
            "enum": [
              "email_import",
              "first_party"
            ],
            "title": "Source",
            "default": "email_import"
          },
          "trip_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trip Id"
          },
          "trip_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trip Title"
          },
          "review": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BookingReview"
              },
              {
                "type": "null"
              }
            ]
          },
          "travellers": {
            "items": {
              "$ref": "#/components/schemas/Traveller"
            },
            "type": "array",
            "title": "Travellers"
          },
          "booking_type": {
            "type": "string",
            "const": "car_rental",
            "title": "Booking Type",
            "default": "car_rental"
          },
          "card_data": {
            "$ref": "#/components/schemas/CarRentalCardData"
          }
        },
        "type": "object",
        "required": [
          "id",
          "event_date",
          "created_at",
          "confirmation_number",
          "card_data"
        ],
        "title": "CarRentalBookingItem"
      },
      "CarRentalCardData": {
        "properties": {
          "vendor": {
            "type": "string",
            "title": "Vendor"
          },
          "pickup_location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pickup Location"
          },
          "pickup_city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pickup City"
          },
          "pickup_datetime": {
            "type": "string",
            "format": "date-time",
            "title": "Pickup Datetime"
          },
          "dropoff_location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dropoff Location"
          },
          "dropoff_city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dropoff City"
          },
          "dropoff_datetime": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dropoff Datetime"
          },
          "vehicle_class": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Vehicle Class"
          },
          "driver_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Driver Name"
          },
          "total_price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Price"
          },
          "currency": {
            "type": "string",
            "title": "Currency",
            "default": "USD"
          },
          "__index": {
            "type": "integer",
            "title": "Index"
          },
          "__tool_call_id": {
            "type": "string",
            "title": "Tool Call Id"
          },
          "message_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Message Id"
          },
          "confirmation_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmation Number"
          },
          "is_booked": {
            "type": "boolean",
            "title": "Is Booked",
            "default": false
          },
          "is_user_import": {
            "type": "boolean",
            "title": "Is User Import",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "vendor",
          "pickup_datetime",
          "__index",
          "__tool_call_id"
        ],
        "title": "CarRentalCardData",
        "description": "Car rental card data for the frontend CarRentalCard component."
      },
      "CashDisplay": {
        "properties": {
          "type": {
            "type": "string",
            "const": "cash",
            "title": "Type",
            "default": "cash"
          },
          "price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Price"
          },
          "currency": {
            "type": "string",
            "title": "Currency",
            "default": "USD"
          }
        },
        "type": "object",
        "title": "CashDisplay",
        "description": "Frontend format for cash pricing."
      },
      "CreateListRequest": {
        "properties": {
          "title": {
            "type": "string",
            "title": "Title"
          },
          "source": {
            "type": "string",
            "enum": [
              "manual",
              "chat",
              "tiktok",
              "ig",
              "shared"
            ],
            "title": "Source",
            "default": "manual"
          },
          "source_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Url"
          },
          "city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "City"
          },
          "cover_image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cover Image Url"
          },
          "intro": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Intro"
          },
          "visibility": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "public",
                  "private"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Visibility"
          }
        },
        "type": "object",
        "required": [
          "title"
        ],
        "title": "CreateListRequest"
      },
      "CreateSectionRequest": {
        "properties": {
          "title": {
            "type": "string",
            "title": "Title"
          },
          "blurb": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Blurb"
          },
          "item_ids": {
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "type": "array",
            "title": "Item Ids",
            "default": []
          }
        },
        "type": "object",
        "required": [
          "title"
        ],
        "title": "CreateSectionRequest"
      },
      "CreateTripRequest": {
        "properties": {
          "title": {
            "type": "string",
            "title": "Title"
          },
          "num_days": {
            "type": "integer",
            "maximum": 60.0,
            "minimum": 1.0,
            "title": "Num Days",
            "default": 1
          }
        },
        "type": "object",
        "required": [
          "title"
        ],
        "title": "CreateTripRequest"
      },
      "DepartureArrivalDisplay": {
        "properties": {
          "time": {
            "type": "string",
            "format": "date-time",
            "title": "Time"
          },
          "airport": {
            "type": "string",
            "title": "Airport"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Timezone"
          },
          "latitude": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latitude"
          },
          "longitude": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Longitude"
          }
        },
        "type": "object",
        "required": [
          "time",
          "airport"
        ],
        "title": "DepartureArrivalDisplay",
        "description": "Frontend format for departure/arrival points.\n\n`timezone` (IANA) and the coordinates come from the airport catalog when\nthe journey endpoint itself has none, so a consumer can compute the offset\ncrossed and the direction flown without its own airport table."
      },
      "EventBookingItem": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "event_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Event Date"
          },
          "created_at": {
            "type": "string",
            "title": "Created At"
          },
          "confirmation_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmation Number"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "cancelled"
            ],
            "title": "Status",
            "default": "active"
          },
          "gmail_link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gmail Link"
          },
          "import_kind": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "email",
                  "image",
                  "text"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Import Kind"
          },
          "import_link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Import Link"
          },
          "import_sources": {
            "items": {
              "$ref": "#/components/schemas/ImportSource"
            },
            "type": "array",
            "title": "Import Sources"
          },
          "source": {
            "type": "string",
            "enum": [
              "email_import",
              "first_party"
            ],
            "title": "Source",
            "default": "email_import"
          },
          "trip_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trip Id"
          },
          "trip_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trip Title"
          },
          "review": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BookingReview"
              },
              {
                "type": "null"
              }
            ]
          },
          "travellers": {
            "items": {
              "$ref": "#/components/schemas/Traveller"
            },
            "type": "array",
            "title": "Travellers"
          },
          "booking_type": {
            "type": "string",
            "const": "event",
            "title": "Booking Type",
            "default": "event"
          },
          "card_data": {
            "$ref": "#/components/schemas/AttractionDisplayData"
          }
        },
        "type": "object",
        "required": [
          "id",
          "event_date",
          "created_at",
          "confirmation_number",
          "card_data"
        ],
        "title": "EventBookingItem"
      },
      "ExtractedFlight": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "one-way",
              "round-trip"
            ],
            "title": "Type",
            "default": "one-way"
          },
          "outbound_segments": {
            "items": {
              "$ref": "#/components/schemas/ExtractedFlightSegment"
            },
            "type": "array",
            "minItems": 1,
            "title": "Outbound Segments",
            "description": "Segments going TO the destination"
          },
          "return_segments": {
            "items": {
              "$ref": "#/components/schemas/ExtractedFlightSegment"
            },
            "type": "array",
            "title": "Return Segments",
            "description": "Segments coming BACK from destination (empty for one-way)"
          },
          "price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Price",
            "description": "Total cash price if mentioned (null if fully award-booked)"
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "title": "Currency",
            "description": "ISO 4217 currency code (e.g., USD, EUR, JPY)",
            "default": "USD"
          },
          "award": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/AwardPayment"
              },
              {
                "type": "null"
              }
            ],
            "description": "Loyalty miles/points payment, if applicable"
          },
          "confirmation_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmation Number"
          },
          "booking_reference": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Booking Reference",
            "description": "Airline PNR / record locator (6-char alphanumeric, e.g., 'ABCDEF'). Different from confirmation_number which may be an OTA/agent booking code."
          },
          "eticket_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Eticket Number",
            "description": "E-ticket number (typically 13 digits, e.g., '0012345678901')"
          },
          "fare_class": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fare Class",
            "description": "Fare/booking class letter (e.g., 'Y', 'B', 'J', 'W')"
          },
          "checked_bags": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Checked Bags",
            "description": "Number of checked bags included or purchased"
          },
          "carry_on_bags": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Carry On Bags",
            "description": "Number of carry-on bags included"
          },
          "check_in_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Check In Url",
            "description": "Online check-in URL if present in the email"
          },
          "oag_enriched_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Oag Enriched At",
            "description": "ISO timestamp when OAG enrichment was applied"
          },
          "passenger_count": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Passenger Count",
            "description": "Number of adult passengers on this booking (e.g., 2 passengers)"
          },
          "passenger_names": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Passenger Names",
            "description": "Names of passengers if listed (e.g., ['John Smith', 'Jane Smith'])"
          },
          "children": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Children",
            "description": "Number of child passengers (aged 2-11)"
          },
          "infants": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Infants",
            "description": "Number of infant passengers (under 2)"
          }
        },
        "type": "object",
        "required": [
          "outbound_segments"
        ],
        "title": "ExtractedFlight",
        "description": "Complete flight booking extracted from user message.\n\nFor one-way: all segments in outbound_segments, return_segments empty\nFor round-trip: outbound_segments has flights TO destination,\n                return_segments has flights BACK from destination"
      },
      "ExtractedFlightSegment": {
        "properties": {
          "departure_airport": {
            "type": "string",
            "title": "Departure Airport",
            "description": "3-letter IATA code (e.g., 'SFO')"
          },
          "arrival_airport": {
            "type": "string",
            "title": "Arrival Airport",
            "description": "3-letter IATA code (e.g., 'JFK')"
          },
          "departure_datetime": {
            "type": "string",
            "format": "date-time",
            "title": "Departure Datetime",
            "description": "Departure date and time (local time, no timezone)"
          },
          "arrival_datetime": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Arrival Datetime",
            "description": "Arrival date and time (local time, no timezone)"
          },
          "duration_minutes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Duration Minutes",
            "description": "Flight duration in minutes if mentioned (e.g., '16h 35m' = 995)"
          },
          "flight_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Flight Number",
            "description": "Flight number (e.g., 'UA123')"
          },
          "airline": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Airline",
            "description": "Airline name"
          },
          "cabin_class": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cabin Class",
            "description": "Cabin class (e.g., 'Economy', 'Premium Economy', 'Business', 'First')"
          },
          "seats": {
            "items": {
              "$ref": "#/components/schemas/SeatAssignment"
            },
            "type": "array",
            "title": "Seats",
            "description": "One entry per passenger who has a seat on this leg. Never repeat a leg per passenger."
          },
          "aircraft_type_iata": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Aircraft Type Iata",
            "description": "IATA aircraft type code (e.g., '77W', '320')"
          },
          "aircraft_type_icao": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Aircraft Type Icao",
            "description": "ICAO aircraft type code (e.g., 'B77W', 'A320')"
          },
          "tail_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tail Number",
            "description": "Aircraft registration number (e.g., 'N12345')"
          },
          "departure_terminal": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Departure Terminal",
            "description": "Departure terminal (e.g., 'T1', 'B')"
          },
          "arrival_terminal": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Arrival Terminal",
            "description": "Arrival terminal"
          },
          "departure_country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Departure Country",
            "description": "Departure country ISO code (e.g., 'US')"
          },
          "arrival_country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Arrival Country",
            "description": "Arrival country ISO code (e.g., 'GB')"
          },
          "distance_km": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Distance Km",
            "description": "Great-circle distance in kilometers"
          },
          "number_of_stops": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Number Of Stops",
            "description": "Number of intermediate stops (0 for non-stop)"
          },
          "flight_state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Flight State",
            "description": "Flight state from OAG (e.g., 'Scheduled', 'InGate', 'Cancelled')"
          },
          "pre_oag_departure_datetime": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pre Oag Departure Datetime",
            "description": "The ticket's own departure time, recorded the first time OAG touches this segment and never overwritten \u2014 the recovery value if an enrichment adjusts wrongly."
          },
          "pre_oag_arrival_datetime": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pre Oag Arrival Datetime",
            "description": "The ticket's own arrival time; see pre_oag_departure_datetime."
          },
          "departure_datetime_utc": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Departure Datetime Utc",
            "description": "Authoritative departure instant from OAG, timezone-aware UTC. The naive departure_datetime stays local wall-clock at the airport."
          },
          "arrival_datetime_utc": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Arrival Datetime Utc",
            "description": "Authoritative arrival instant from OAG, timezone-aware UTC. The naive arrival_datetime stays local wall-clock at the airport."
          }
        },
        "type": "object",
        "required": [
          "departure_airport",
          "arrival_airport",
          "departure_datetime"
        ],
        "title": "ExtractedFlightSegment",
        "description": "Single flight leg extracted from user message."
      },
      "FlightBookingItem": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "event_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Event Date"
          },
          "created_at": {
            "type": "string",
            "title": "Created At"
          },
          "confirmation_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmation Number"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "cancelled"
            ],
            "title": "Status",
            "default": "active"
          },
          "gmail_link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gmail Link"
          },
          "import_kind": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "email",
                  "image",
                  "text"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Import Kind"
          },
          "import_link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Import Link"
          },
          "import_sources": {
            "items": {
              "$ref": "#/components/schemas/ImportSource"
            },
            "type": "array",
            "title": "Import Sources"
          },
          "source": {
            "type": "string",
            "enum": [
              "email_import",
              "first_party"
            ],
            "title": "Source",
            "default": "email_import"
          },
          "trip_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trip Id"
          },
          "trip_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trip Title"
          },
          "review": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BookingReview"
              },
              {
                "type": "null"
              }
            ]
          },
          "travellers": {
            "items": {
              "$ref": "#/components/schemas/Traveller"
            },
            "type": "array",
            "title": "Travellers"
          },
          "booking_type": {
            "type": "string",
            "const": "flight",
            "title": "Booking Type",
            "default": "flight"
          },
          "card_data": {
            "$ref": "#/components/schemas/FlightCardData"
          },
          "edit_data": {
            "$ref": "#/components/schemas/ExtractedFlight"
          }
        },
        "type": "object",
        "required": [
          "id",
          "event_date",
          "created_at",
          "confirmation_number",
          "card_data",
          "edit_data"
        ],
        "title": "FlightBookingItem"
      },
      "FlightCardData": {
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "one-way",
              "round-trip",
              "multi-city"
            ],
            "title": "Type"
          },
          "journeys": {
            "items": {
              "$ref": "#/components/schemas/JourneyDisplay"
            },
            "type": "array",
            "title": "Journeys"
          },
          "cash_details": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CashDisplay"
              },
              {
                "type": "null"
              }
            ]
          },
          "cabin_class": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cabin Class"
          },
          "booking_links": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/BookingLink"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Booking Links"
          },
          "adults": {
            "type": "integer",
            "title": "Adults",
            "default": 1
          },
          "children": {
            "type": "integer",
            "title": "Children",
            "default": 0
          },
          "booking_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Booking Token"
          },
          "departure_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Departure Token"
          },
          "return_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Return Date"
          },
          "__index": {
            "type": "integer",
            "title": "Index"
          },
          "__tool_call_id": {
            "type": "string",
            "title": "Tool Call Id"
          },
          "message_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Message Id"
          },
          "booking_links_status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Booking Links Status"
          },
          "confirmation_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmation Number"
          },
          "is_booked": {
            "type": "boolean",
            "title": "Is Booked",
            "default": false
          },
          "is_user_import": {
            "type": "boolean",
            "title": "Is User Import",
            "default": false
          },
          "travellers": {
            "items": {
              "$ref": "#/components/schemas/Traveller"
            },
            "type": "array",
            "title": "Travellers"
          },
          "user_edited": {
            "type": "boolean",
            "title": "User Edited",
            "default": false
          },
          "award_details": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Award Details"
          }
        },
        "type": "object",
        "required": [
          "type",
          "journeys",
          "__index",
          "__tool_call_id"
        ],
        "title": "FlightCardData",
        "description": "Flight card data for frontend - wraps Journey with card metadata.\n\nThis is the serialization format sent to the frontend FlightCard component.\nIt converts from the internal Journey model to the frontend contract."
      },
      "FlightLeg": {
        "properties": {
          "departure_id": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "title": "Departure Id"
          },
          "arrival_id": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "title": "Arrival Id"
          },
          "date": {
            "type": "string",
            "format": "date",
            "title": "Date"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "departure_id",
          "arrival_id",
          "date"
        ],
        "title": "FlightLeg"
      },
      "FlightSearchInput": {
        "properties": {
          "adults": {
            "type": "integer",
            "maximum": 9.0,
            "minimum": 1.0,
            "title": "Adults",
            "default": 1
          },
          "currency": {
            "type": "string",
            "enum": [
              "ALL",
              "DZD",
              "ARS",
              "AMD",
              "AWG",
              "AUD",
              "AZN",
              "BSD",
              "BHD",
              "BYN",
              "BMD",
              "BAM",
              "BRL",
              "GBP",
              "BGN",
              "XPF",
              "CAD",
              "CLP",
              "CNY",
              "COP",
              "CRC",
              "CUP",
              "CZK",
              "DKK",
              "DOP",
              "EGP",
              "EUR",
              "GEL",
              "HKD",
              "HUF",
              "ISK",
              "INR",
              "IDR",
              "IRR",
              "ILS",
              "JMD",
              "JPY",
              "JOD",
              "KZT",
              "KWD",
              "LBP",
              "MKD",
              "MYR",
              "MXN",
              "MDL",
              "MAD",
              "TWD",
              "NZD",
              "NOK",
              "OMR",
              "PKR",
              "PAB",
              "PEN",
              "PHP",
              "PLN",
              "QAR",
              "RON",
              "RUB",
              "SAR",
              "RSD",
              "SGD",
              "ZAR",
              "KRW",
              "SEK",
              "CHF",
              "THB",
              "TRY",
              "USD",
              "UAH",
              "AED",
              "VND"
            ],
            "title": "Currency",
            "default": "USD"
          },
          "legs": {
            "items": {
              "$ref": "#/components/schemas/FlightLeg"
            },
            "type": "array",
            "maxItems": 4,
            "minItems": 1,
            "title": "Legs"
          },
          "trip_type": {
            "type": "string",
            "enum": [
              "one_way",
              "roundtrip",
              "multi_city"
            ],
            "title": "Trip Type",
            "default": "one_way"
          },
          "children": {
            "type": "integer",
            "maximum": 8.0,
            "minimum": 0.0,
            "title": "Children",
            "default": 0
          },
          "travel_class": {
            "type": "string",
            "enum": [
              "economy",
              "premium_economy",
              "business",
              "first"
            ],
            "title": "Travel Class",
            "default": "economy"
          },
          "max_price": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Price"
          },
          "max_stops": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 2.0,
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Stops"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "legs"
        ],
        "title": "FlightSearchInput"
      },
      "ForwardingAddressResponse": {
        "properties": {
          "address": {
            "type": "string",
            "title": "Address"
          }
        },
        "type": "object",
        "required": [
          "address"
        ],
        "title": "ForwardingAddressResponse"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "HotelBookingItem": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "event_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Event Date"
          },
          "created_at": {
            "type": "string",
            "title": "Created At"
          },
          "confirmation_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmation Number"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "cancelled"
            ],
            "title": "Status",
            "default": "active"
          },
          "gmail_link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gmail Link"
          },
          "import_kind": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "email",
                  "image",
                  "text"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Import Kind"
          },
          "import_link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Import Link"
          },
          "import_sources": {
            "items": {
              "$ref": "#/components/schemas/ImportSource"
            },
            "type": "array",
            "title": "Import Sources"
          },
          "source": {
            "type": "string",
            "enum": [
              "email_import",
              "first_party"
            ],
            "title": "Source",
            "default": "email_import"
          },
          "trip_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trip Id"
          },
          "trip_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trip Title"
          },
          "review": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BookingReview"
              },
              {
                "type": "null"
              }
            ]
          },
          "travellers": {
            "items": {
              "$ref": "#/components/schemas/Traveller"
            },
            "type": "array",
            "title": "Travellers"
          },
          "booking_type": {
            "type": "string",
            "const": "hotel",
            "title": "Booking Type",
            "default": "hotel"
          },
          "card_data": {
            "$ref": "#/components/schemas/HotelCardData"
          }
        },
        "type": "object",
        "required": [
          "id",
          "event_date",
          "created_at",
          "confirmation_number",
          "card_data"
        ],
        "title": "HotelBookingItem"
      },
      "HotelCardData": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Price"
          },
          "price_display": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Price Display"
          },
          "price_before_taxes": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Price Before Taxes"
          },
          "total_price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Price"
          },
          "total_price_display": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Price Display"
          },
          "rating": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rating"
          },
          "reviews": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reviews"
          },
          "hotel_class": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hotel Class"
          },
          "link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Link"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "check_in_time": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Check In Time"
          },
          "check_out_time": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Check Out Time"
          },
          "amenities": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Amenities"
          },
          "essential_info": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Essential Info"
          },
          "latitude": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latitude"
          },
          "longitude": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Longitude"
          },
          "location_rating": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Location Rating"
          },
          "nearby_places": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Nearby Places"
          },
          "currency": {
            "type": "string",
            "title": "Currency",
            "default": "USD"
          },
          "property_token": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Property Token"
          },
          "thumbnail": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail"
          },
          "thumbnail_thumbhash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Thumbnail Thumbhash"
          },
          "price_tier": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Price Tier"
          },
          "source": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source"
          },
          "feed": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "b2c",
                  "cug"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Feed"
          },
          "hotel_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Hotel Id"
          },
          "rooms": {
            "items": {
              "$ref": "#/components/schemas/RoomOption"
            },
            "type": "array",
            "title": "Rooms"
          },
          "__index": {
            "type": "integer",
            "title": "Index"
          },
          "__tool_call_id": {
            "type": "string",
            "title": "Tool Call Id"
          },
          "message_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Message Id"
          },
          "check_in_date": {
            "type": "string",
            "title": "Check In Date"
          },
          "check_out_date": {
            "type": "string",
            "title": "Check Out Date"
          },
          "adults": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Adults",
            "default": 2
          },
          "children": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Children",
            "default": 0
          },
          "children_ages": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Children Ages"
          },
          "booking_links": {
            "items": {
              "$ref": "#/components/schemas/BookingLink"
            },
            "type": "array",
            "title": "Booking Links"
          },
          "booking_links_status": {
            "type": "string",
            "title": "Booking Links Status",
            "default": "ready"
          },
          "additional_images": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Additional Images"
          },
          "additional_images_thumbhashes": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "type": "array",
            "title": "Additional Images Thumbhashes"
          },
          "reviews_breakdown": {
            "items": {},
            "type": "array",
            "title": "Reviews Breakdown"
          },
          "sample_reviews": {
            "items": {},
            "type": "array",
            "title": "Sample Reviews"
          },
          "address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Address"
          },
          "confirmation_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmation Number"
          },
          "is_booked": {
            "type": "boolean",
            "title": "Is Booked",
            "default": false
          },
          "taxes_and_fees": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Taxes And Fees"
          },
          "is_user_import": {
            "type": "boolean",
            "title": "Is User Import",
            "default": false
          },
          "source_reference": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/SourceReference"
              },
              {
                "type": "null"
              }
            ]
          },
          "place_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Place Id"
          }
        },
        "type": "object",
        "required": [
          "name",
          "__index",
          "__tool_call_id",
          "check_in_date",
          "check_out_date"
        ],
        "title": "HotelCardData",
        "description": "Hotel card data for frontend - extends HotelOptionOutput with card metadata.\n\nThis is the serialization format sent to the frontend HotelCard component.\nIt converts from HotelOptionOutput (cached tool result) plus enrichment data."
      },
      "HotelSearchInput": {
        "properties": {
          "adults": {
            "type": "integer",
            "maximum": 9.0,
            "minimum": 1.0,
            "title": "Adults",
            "default": 1
          },
          "currency": {
            "type": "string",
            "enum": [
              "ALL",
              "DZD",
              "ARS",
              "AMD",
              "AWG",
              "AUD",
              "AZN",
              "BSD",
              "BHD",
              "BYN",
              "BMD",
              "BAM",
              "BRL",
              "GBP",
              "BGN",
              "XPF",
              "CAD",
              "CLP",
              "CNY",
              "COP",
              "CRC",
              "CUP",
              "CZK",
              "DKK",
              "DOP",
              "EGP",
              "EUR",
              "GEL",
              "HKD",
              "HUF",
              "ISK",
              "INR",
              "IDR",
              "IRR",
              "ILS",
              "JMD",
              "JPY",
              "JOD",
              "KZT",
              "KWD",
              "LBP",
              "MKD",
              "MYR",
              "MXN",
              "MDL",
              "MAD",
              "TWD",
              "NZD",
              "NOK",
              "OMR",
              "PKR",
              "PAB",
              "PEN",
              "PHP",
              "PLN",
              "QAR",
              "RON",
              "RUB",
              "SAR",
              "RSD",
              "SGD",
              "ZAR",
              "KRW",
              "SEK",
              "CHF",
              "THB",
              "TRY",
              "USD",
              "UAH",
              "AED",
              "VND"
            ],
            "title": "Currency",
            "default": "USD"
          },
          "query": {
            "type": "string",
            "maxLength": 250,
            "minLength": 2,
            "title": "Query"
          },
          "check_in_date": {
            "type": "string",
            "format": "date",
            "title": "Check In Date"
          },
          "check_out_date": {
            "type": "string",
            "format": "date",
            "title": "Check Out Date"
          },
          "children_ages": {
            "items": {
              "type": "integer",
              "maximum": 17.0,
              "minimum": 0.0
            },
            "type": "array",
            "maxItems": 8,
            "title": "Children Ages"
          },
          "guest_nationality": {
            "type": "string",
            "pattern": "^[A-Z]{2}$",
            "title": "Guest Nationality",
            "default": "US"
          },
          "min_price": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Min Price"
          },
          "max_price": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Price"
          },
          "sort_by": {
            "type": "string",
            "enum": [
              "lowest_price",
              "highest_rating",
              "most_reviews"
            ],
            "title": "Sort By",
            "default": "highest_rating"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "query",
          "check_in_date",
          "check_out_date"
        ],
        "title": "HotelSearchInput"
      },
      "ImportSource": {
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "email",
              "image",
              "text"
            ],
            "title": "Kind"
          },
          "link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Link"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "kind",
          "created_at"
        ],
        "title": "ImportSource",
        "description": "One source that fed an imported booking \u2014 an `email_import_items` row.\n`link` is the Gmail deep link or the image's API path; None for a forward\nand for pasted text."
      },
      "ImportStartedOut": {
        "properties": {
          "list_id": {
            "type": "string",
            "format": "uuid",
            "title": "List Id"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "already_imported": {
            "type": "boolean",
            "title": "Already Imported",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "list_id",
          "status"
        ],
        "title": "ImportStartedOut"
      },
      "ImportedRailCardData": {
        "properties": {
          "departure_datetime": {
            "type": "string",
            "format": "date-time",
            "title": "Departure Datetime"
          },
          "arrival_datetime": {
            "type": "string",
            "format": "date-time",
            "title": "Arrival Datetime"
          },
          "duration_seconds": {
            "type": "integer",
            "title": "Duration Seconds"
          },
          "duration_display": {
            "type": "string",
            "title": "Duration Display"
          },
          "departure_id": {
            "type": "string",
            "title": "Departure Id"
          },
          "arrival_id": {
            "type": "string",
            "title": "Arrival Id"
          },
          "train_names": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Train Names"
          },
          "num_transfers": {
            "type": "integer",
            "title": "Num Transfers",
            "default": 0
          },
          "coach_price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Coach Price"
          },
          "currency": {
            "type": "string",
            "title": "Currency",
            "default": "USD"
          },
          "travel_legs": {
            "items": {
              "$ref": "#/components/schemas/ImportedRailLeg"
            },
            "type": "array",
            "title": "Travel Legs"
          },
          "booking_date": {
            "type": "string",
            "title": "Booking Date"
          },
          "booking_links": {
            "items": {
              "$ref": "#/components/schemas/BookingLink"
            },
            "type": "array",
            "title": "Booking Links"
          },
          "confirmation_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmation Number"
          },
          "is_booked": {
            "type": "boolean",
            "title": "Is Booked",
            "default": false
          },
          "is_user_import": {
            "type": "boolean",
            "title": "Is User Import",
            "default": true
          },
          "ground_mode": {
            "type": "string",
            "title": "Ground Mode",
            "default": "rail"
          }
        },
        "type": "object",
        "required": [
          "departure_datetime",
          "arrival_datetime",
          "duration_seconds",
          "duration_display",
          "departure_id",
          "arrival_id",
          "booking_date"
        ],
        "title": "ImportedRailCardData",
        "description": "Flat RailOption-shaped card payload for an imported rail journey.\n\nThe frontend RailCard component renders the RailOption shape\n(travel_legs, departure_datetime, \u2026), NOT the nested RailCardData \u2014\nsending RailCardData hits the component's empty-travel_legs guard and\nrenders nothing. This model is the single typed source of that flat\nshape; both the chat hydration dict and GET /bookings use it."
      },
      "ImportedRailLeg": {
        "properties": {
          "train_id": {
            "type": "string",
            "title": "Train Id"
          },
          "route": {
            "type": "string",
            "title": "Route",
            "default": ""
          },
          "departure_id": {
            "type": "string",
            "title": "Departure Id"
          },
          "arrival_id": {
            "type": "string",
            "title": "Arrival Id"
          },
          "departure_time": {
            "type": "string",
            "title": "Departure Time"
          },
          "arrival_time": {
            "type": "string",
            "title": "Arrival Time"
          },
          "duration": {
            "type": "string",
            "title": "Duration"
          },
          "operator_logo": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Operator Logo"
          }
        },
        "type": "object",
        "required": [
          "train_id",
          "departure_id",
          "arrival_id",
          "departure_time",
          "arrival_time",
          "duration"
        ],
        "title": "ImportedRailLeg",
        "description": "One travel leg of an imported rail journey, in the flat RailOption\nshape the frontend RailCard renders (times as HH:MM strings)."
      },
      "JourneyDisplay": {
        "properties": {
          "direction": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "outbound",
                  "return"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Direction"
          },
          "segments": {
            "items": {
              "$ref": "#/components/schemas/SegmentDisplay"
            },
            "type": "array",
            "title": "Segments"
          },
          "total_duration_in_minutes": {
            "type": "integer",
            "title": "Total Duration In Minutes"
          },
          "departure_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Departure Date"
          },
          "arrival_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Arrival Date"
          }
        },
        "type": "object",
        "required": [
          "segments",
          "total_duration_in_minutes"
        ],
        "title": "JourneyDisplay",
        "description": "Frontend format for a journey leg."
      },
      "MichelinDistinction": {
        "properties": {
          "tier": {
            "type": "string",
            "enum": [
              "stars",
              "bib_gourmand",
              "selected"
            ],
            "title": "Tier"
          },
          "stars": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Stars"
          },
          "green_star": {
            "type": "boolean",
            "title": "Green Star",
            "default": false
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url"
          },
          "cuisine": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cuisine"
          }
        },
        "type": "object",
        "required": [
          "tier"
        ],
        "title": "MichelinDistinction",
        "description": "A place's Michelin Guide distinction, structured. Canonical rationale \u2014\nthe TS mirror and the renderers point here rather than restating it.\n\nRides alongside `michelin_award` rather than replacing it: that field is a\npre-rendered label (\"\u2605\u2605\u2605\"), and a label cannot drive iconography. An award\nstring we don't recognise yields NO distinction (we never paint a mark we\ncan't justify) while still surfacing verbatim in `michelin_award`, so a\nnew tier degrades to text rather than disappearing."
      },
      "MoveEntryRequest": {
        "properties": {
          "to_day_number": {
            "type": "integer",
            "minimum": 1.0,
            "title": "To Day Number"
          }
        },
        "type": "object",
        "required": [
          "to_day_number"
        ],
        "title": "MoveEntryRequest"
      },
      "PlaceSuggestion": {
        "properties": {
          "place_id": {
            "type": "string",
            "title": "Place Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "address": {
            "type": "string",
            "title": "Address"
          },
          "types": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Types"
          }
        },
        "type": "object",
        "required": [
          "place_id",
          "name",
          "address"
        ],
        "title": "PlaceSuggestion"
      },
      "PlanResponse": {
        "properties": {
          "trip_id": {
            "type": "string",
            "format": "uuid",
            "title": "Trip Id"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "days": {
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array",
            "title": "Days"
          },
          "activities": {
            "additionalProperties": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "object",
            "title": "Activities"
          },
          "plan_version": {
            "type": "integer",
            "title": "Plan Version"
          },
          "journeys": {
            "additionalProperties": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "object",
            "title": "Journeys"
          },
          "stays": {
            "additionalProperties": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "object",
            "title": "Stays"
          }
        },
        "type": "object",
        "required": [
          "trip_id",
          "title",
          "days",
          "activities",
          "plan_version"
        ],
        "title": "PlanResponse"
      },
      "PublishRequest": {
        "properties": {
          "visibility": {
            "type": "string",
            "enum": [
              "draft",
              "private",
              "public"
            ],
            "title": "Visibility"
          },
          "slug": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[a-z0-9][a-z0-9-]{0,99}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          }
        },
        "type": "object",
        "required": [
          "visibility"
        ],
        "title": "PublishRequest"
      },
      "RailBookingItem": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "event_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Event Date"
          },
          "created_at": {
            "type": "string",
            "title": "Created At"
          },
          "confirmation_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmation Number"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "cancelled"
            ],
            "title": "Status",
            "default": "active"
          },
          "gmail_link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gmail Link"
          },
          "import_kind": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "email",
                  "image",
                  "text"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Import Kind"
          },
          "import_link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Import Link"
          },
          "import_sources": {
            "items": {
              "$ref": "#/components/schemas/ImportSource"
            },
            "type": "array",
            "title": "Import Sources"
          },
          "source": {
            "type": "string",
            "enum": [
              "email_import",
              "first_party"
            ],
            "title": "Source",
            "default": "email_import"
          },
          "trip_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trip Id"
          },
          "trip_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trip Title"
          },
          "review": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BookingReview"
              },
              {
                "type": "null"
              }
            ]
          },
          "travellers": {
            "items": {
              "$ref": "#/components/schemas/Traveller"
            },
            "type": "array",
            "title": "Travellers"
          },
          "booking_type": {
            "type": "string",
            "const": "rail",
            "title": "Booking Type",
            "default": "rail"
          },
          "card_data": {
            "$ref": "#/components/schemas/ImportedRailCardData"
          }
        },
        "type": "object",
        "required": [
          "id",
          "event_date",
          "created_at",
          "confirmation_number",
          "card_data"
        ],
        "title": "RailBookingItem"
      },
      "RemoveEntryResponse": {
        "properties": {
          "entry_id": {
            "type": "string",
            "title": "Entry Id"
          },
          "plan_version": {
            "type": "integer",
            "title": "Plan Version"
          }
        },
        "type": "object",
        "required": [
          "entry_id",
          "plan_version"
        ],
        "title": "RemoveEntryResponse"
      },
      "RoadBookingItem": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "event_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Event Date"
          },
          "created_at": {
            "type": "string",
            "title": "Created At"
          },
          "confirmation_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmation Number"
          },
          "status": {
            "type": "string",
            "enum": [
              "active",
              "cancelled"
            ],
            "title": "Status",
            "default": "active"
          },
          "gmail_link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Gmail Link"
          },
          "import_kind": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "email",
                  "image",
                  "text"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Import Kind"
          },
          "import_link": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Import Link"
          },
          "import_sources": {
            "items": {
              "$ref": "#/components/schemas/ImportSource"
            },
            "type": "array",
            "title": "Import Sources"
          },
          "source": {
            "type": "string",
            "enum": [
              "email_import",
              "first_party"
            ],
            "title": "Source",
            "default": "email_import"
          },
          "trip_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trip Id"
          },
          "trip_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Trip Title"
          },
          "review": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/BookingReview"
              },
              {
                "type": "null"
              }
            ]
          },
          "travellers": {
            "items": {
              "$ref": "#/components/schemas/Traveller"
            },
            "type": "array",
            "title": "Travellers"
          },
          "booking_type": {
            "type": "string",
            "const": "road",
            "title": "Booking Type",
            "default": "road"
          },
          "card_data": {
            "$ref": "#/components/schemas/RoadCardData"
          }
        },
        "type": "object",
        "required": [
          "id",
          "event_date",
          "created_at",
          "confirmation_number",
          "card_data"
        ],
        "title": "RoadBookingItem"
      },
      "RoadCardData": {
        "properties": {
          "operator": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Operator"
          },
          "pickup_city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pickup City"
          },
          "pickup_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Pickup Address"
          },
          "pickup_datetime": {
            "type": "string",
            "format": "date-time",
            "title": "Pickup Datetime"
          },
          "dropoff_city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dropoff City"
          },
          "dropoff_address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dropoff Address"
          },
          "dropoff_datetime": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dropoff Datetime"
          },
          "duration_minutes": {
            "type": "integer",
            "title": "Duration Minutes",
            "default": 0
          },
          "total_price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Price"
          },
          "currency": {
            "type": "string",
            "title": "Currency",
            "default": "USD"
          },
          "passenger_names": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Passenger Names"
          },
          "__index": {
            "type": "integer",
            "title": "Index"
          },
          "__tool_call_id": {
            "type": "string",
            "title": "Tool Call Id"
          },
          "message_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Message Id"
          },
          "confirmation_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmation Number"
          },
          "is_booked": {
            "type": "boolean",
            "title": "Is Booked",
            "default": false
          },
          "is_user_import": {
            "type": "boolean",
            "title": "Is User Import",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "pickup_datetime",
          "__index",
          "__tool_call_id"
        ],
        "title": "RoadCardData",
        "description": "Road transport card data for the frontend RoadCard component.\n\nFlat single-ride shape: road journeys are always one leg with one\nRoadSegment (a round trip is two separate journeys)."
      },
      "RoomOption": {
        "properties": {
          "offer_id": {
            "type": "string",
            "title": "Offer Id"
          },
          "room_name": {
            "type": "string",
            "title": "Room Name"
          },
          "mapped_room_id": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Mapped Room Id"
          },
          "bed_summary": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Bed Summary"
          },
          "size_sqft": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Size Sqft"
          },
          "max_occupancy": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Occupancy"
          },
          "board_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Board Type"
          },
          "board_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Board Name"
          },
          "refundable": {
            "type": "boolean",
            "title": "Refundable",
            "default": false
          },
          "cancel_until": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cancel Until"
          },
          "price_per_night": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Price Per Night"
          },
          "total_price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Price"
          },
          "initial_price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Initial Price"
          },
          "taxes_included": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Taxes Included"
          },
          "currency": {
            "type": "string",
            "title": "Currency",
            "default": "USD"
          },
          "photos": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Photos"
          },
          "amenities": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Amenities"
          },
          "why": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Why"
          }
        },
        "type": "object",
        "required": [
          "offer_id",
          "room_name"
        ],
        "title": "RoomOption",
        "description": "A single bookable room-rate option for a hotel (Nuitee LiteAPI).\n\n`total_price` and `price_per_night` are ALL-IN \u2014 `retailRate.total` plus\nLiteAPI's mandatory excluded fees. No\nfield here holds the pre-fee number, deliberately: it is not a price anyone\nmay be shown.\n\nThe static-content fields (`bed_summary`/`size_sqft`/`photos`/`amenities`)\ncome from the `/data/hotel` room join at hydration time and are empty at\nsearch time."
      },
      "SavedItemOut": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "list_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "List Id"
          },
          "place_ref": {
            "type": "string",
            "title": "Place Ref"
          },
          "place_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Place Id"
          },
          "caption": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Caption"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category"
          },
          "city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "City"
          },
          "state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "State"
          },
          "country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Country"
          },
          "lat": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lat"
          },
          "lng": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Lng"
          },
          "image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image Url"
          },
          "image_thumbhash": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image Thumbhash"
          },
          "rating": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rating"
          },
          "num_reviews": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Num Reviews"
          },
          "tabelog_tier": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tabelog Tier"
          },
          "michelin": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/MichelinDistinction"
              },
              {
                "type": "null"
              }
            ]
          },
          "source": {
            "type": "string",
            "title": "Source"
          },
          "source_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Url"
          },
          "is_shared": {
            "type": "boolean",
            "title": "Is Shared"
          },
          "review_state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Review State"
          },
          "created_at": {
            "type": "string",
            "title": "Created At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "list_id",
          "place_ref",
          "place_id",
          "caption",
          "name",
          "category",
          "city",
          "state",
          "country",
          "lat",
          "lng",
          "image_url",
          "rating",
          "num_reviews",
          "source",
          "source_url",
          "is_shared",
          "review_state",
          "created_at"
        ],
        "title": "SavedItemOut"
      },
      "SavedListContentsOut": {
        "properties": {
          "list": {
            "$ref": "#/components/schemas/SavedListOut"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/SavedItemOut"
            },
            "type": "array",
            "title": "Items"
          },
          "next_offset": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Offset"
          }
        },
        "type": "object",
        "required": [
          "list",
          "items"
        ],
        "title": "SavedListContentsOut"
      },
      "SavedListOut": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "source": {
            "type": "string",
            "title": "Source"
          },
          "source_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Url"
          },
          "source_author": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Author"
          },
          "city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "City"
          },
          "cover_image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cover Image Url"
          },
          "item_count": {
            "type": "integer",
            "title": "Item Count"
          },
          "is_shared": {
            "type": "boolean",
            "title": "Is Shared"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "failed_reason": {
            "anyOf": [
              {
                "type": "string",
                "const": "post_unavailable"
              },
              {
                "type": "null"
              }
            ],
            "title": "Failed Reason"
          },
          "created_at": {
            "type": "string",
            "title": "Created At"
          },
          "updated_at": {
            "type": "string",
            "title": "Updated At"
          },
          "visibility": {
            "type": "string",
            "enum": [
              "public",
              "private"
            ],
            "title": "Visibility"
          },
          "slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "public_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Public Url"
          },
          "routes": {
            "items": {
              "$ref": "#/components/schemas/SavedRouteOut"
            },
            "type": "array",
            "title": "Routes",
            "default": []
          },
          "intro": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Intro"
          },
          "sections": {
            "items": {
              "$ref": "#/components/schemas/SavedSection"
            },
            "type": "array",
            "title": "Sections",
            "default": []
          }
        },
        "type": "object",
        "required": [
          "id",
          "title",
          "source",
          "source_url",
          "source_author",
          "city",
          "cover_image_url",
          "item_count",
          "is_shared",
          "status",
          "created_at",
          "updated_at",
          "visibility",
          "slug",
          "public_url"
        ],
        "title": "SavedListOut"
      },
      "SavedRouteOut": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "list_id": {
            "type": "string",
            "format": "uuid",
            "title": "List Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "activity": {
            "type": "string",
            "title": "Activity"
          },
          "status": {
            "type": "string",
            "title": "Status"
          },
          "chains": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Chains"
          },
          "length_m": {
            "type": "integer",
            "title": "Length M"
          },
          "ascent_m": {
            "type": "integer",
            "title": "Ascent M"
          },
          "descent_m": {
            "type": "integer",
            "title": "Descent M"
          },
          "min_elev_m": {
            "type": "number",
            "title": "Min Elev M"
          },
          "max_elev_m": {
            "type": "number",
            "title": "Max Elev M"
          },
          "profile": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Profile"
          },
          "tag_lengths": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tag Lengths"
          },
          "osm_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Osm Name"
          },
          "claimed_length_km": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Claimed Length Km"
          },
          "claimed_ascent_m": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Claimed Ascent M"
          },
          "place_item_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "Place Item Id"
          }
        },
        "type": "object",
        "required": [
          "id",
          "list_id",
          "name",
          "activity",
          "status",
          "chains",
          "length_m",
          "ascent_m",
          "descent_m",
          "min_elev_m",
          "max_elev_m"
        ],
        "title": "SavedRouteOut",
        "description": "A resolved trail/ride the list's reel is about. Geometry is Google\nencoded polylines (`chains`, main line first) \u2014 clients decode with their\nexisting polyline utils. Only resolved rows are served; `low_confidence`\nmeans the geometry contradicts the creator's claimed stats (likely a\nsuperset/sibling route) and the client should present it tentatively."
      },
      "SavedSection": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "blurb": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Blurb"
          },
          "item_ids": {
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "type": "array",
            "title": "Item Ids",
            "default": []
          }
        },
        "type": "object",
        "required": [
          "id",
          "title"
        ],
        "title": "SavedSection",
        "description": "`item_ids` is both membership and display order; stale ids drop on read."
      },
      "SeatAssignment": {
        "properties": {
          "passenger": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Passenger",
            "description": "The passenger this seat belongs to, spelled exactly as in passenger_names; null when the seat is shown with no name"
          },
          "seat": {
            "type": "string",
            "title": "Seat",
            "description": "Seat like '14A', '2K'"
          }
        },
        "type": "object",
        "required": [
          "seat"
        ],
        "title": "SeatAssignment"
      },
      "SegmentDisplay": {
        "properties": {
          "kind": {
            "type": "string",
            "const": "flight",
            "title": "Kind",
            "default": "flight"
          },
          "type": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "outbound",
                  "return"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Type"
          },
          "departure": {
            "$ref": "#/components/schemas/DepartureArrivalDisplay"
          },
          "arrival": {
            "$ref": "#/components/schemas/DepartureArrivalDisplay"
          },
          "length_in_minutes": {
            "type": "integer",
            "title": "Length In Minutes"
          },
          "flight_number": {
            "type": "string",
            "title": "Flight Number"
          },
          "airline": {
            "type": "string",
            "title": "Airline"
          },
          "airline_logo": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Airline Logo"
          },
          "aircraft": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Aircraft"
          },
          "travel_class": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Travel Class"
          },
          "starlink_verdict": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "yes",
                  "probably_yes",
                  "probably_no",
                  "no"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Starlink Verdict"
          },
          "starlink_reasoning": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Starlink Reasoning"
          }
        },
        "type": "object",
        "required": [
          "departure",
          "arrival",
          "length_in_minutes",
          "flight_number",
          "airline"
        ],
        "title": "SegmentDisplay",
        "description": "Frontend format for a flight segment."
      },
      "SelectSearchResult": {
        "properties": {
          "search_id": {
            "type": "string",
            "format": "uuid",
            "title": "Search Id"
          },
          "result_index": {
            "type": "integer",
            "minimum": 0.0,
            "title": "Result Index"
          }
        },
        "type": "object",
        "required": [
          "search_id",
          "result_index"
        ],
        "title": "SelectSearchResult"
      },
      "SocialImportRequest": {
        "properties": {
          "url": {
            "type": "string",
            "title": "Url"
          },
          "visibility": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "public",
                  "private"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Visibility"
          }
        },
        "type": "object",
        "required": [
          "url"
        ],
        "title": "SocialImportRequest"
      },
      "SourceReference": {
        "properties": {
          "tool_call_id": {
            "type": "string",
            "title": "Tool Call Id"
          },
          "result_index": {
            "type": "integer",
            "title": "Result Index"
          },
          "source": {
            "type": "string",
            "enum": [
              "api",
              "user_import",
              "user_manual",
              "user_booking"
            ],
            "title": "Source",
            "default": "api"
          }
        },
        "type": "object",
        "required": [
          "tool_call_id",
          "result_index"
        ],
        "title": "SourceReference",
        "description": "Reference to a cached tool result for tracking itinerary item sources.\n\n``source`` distinguishes provenance: ``api`` (an AI/tool search result),\n``user_import`` (parsed from the user's email \u2014 renders a \"From email\"\nbadge and the imageless cost-breakdown card), ``user_manual`` (added by\nhand via the \"Add stay\" form \u2014 a normal image-carrying card, no badge), and\n``user_booking``.\n\n``user_booking`` is deliberately NOT ``user_import``: the item did not come\nfrom the user's inbox, and a \"From email\" badge on a booking we took money\nfor would be a lie. Frontends branch only on ``user_import``, so the new\nvalue falls through to the ordinary card."
      },
      "Traveller": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name"
          },
          "seats": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Seats"
          }
        },
        "type": "object",
        "required": [
          "name",
          "seats"
        ],
        "title": "Traveller"
      },
      "TripSummary": {
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "title": "Id"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "slug": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slug"
          },
          "visibility": {
            "type": "string",
            "title": "Visibility"
          },
          "is_published": {
            "type": "boolean",
            "title": "Is Published"
          },
          "start_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Start Date"
          },
          "end_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "End Date"
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "title",
          "slug",
          "visibility",
          "is_published"
        ],
        "title": "TripSummary"
      },
      "UpdateEntryRequest": {
        "properties": {
          "note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          },
          "time": {
            "anyOf": [
              {
                "type": "string",
                "format": "time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Time"
          },
          "content": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Content"
          }
        },
        "type": "object",
        "title": "UpdateEntryRequest",
        "description": "Fields to change on an existing entry. Omit one to leave it alone.\n\nBoth are nullable because null is a real value here \u2014 it clears. So the\nvalue can't tell \"leave alone\" from \"set to null\"; `model_fields_set` is\nwhat distinguishes them, which is why the handler reads that rather than\nchecking for None."
      },
      "UpdateEntryResponse": {
        "properties": {
          "entry_id": {
            "type": "string",
            "title": "Entry Id"
          },
          "plan_version": {
            "type": "integer",
            "title": "Plan Version"
          }
        },
        "type": "object",
        "required": [
          "entry_id",
          "plan_version"
        ],
        "title": "UpdateEntryResponse"
      },
      "UpdateItemRequest": {
        "properties": {
          "caption": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Caption"
          },
          "list_id": {
            "anyOf": [
              {
                "type": "string",
                "format": "uuid"
              },
              {
                "type": "null"
              }
            ],
            "title": "List Id"
          },
          "section_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Section Id"
          }
        },
        "type": "object",
        "title": "UpdateItemRequest"
      },
      "UpdateListRequest": {
        "properties": {
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "City"
          },
          "cover_image_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cover Image Url"
          },
          "source_author": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Source Author"
          },
          "visibility": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "public",
                  "private"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Visibility"
          },
          "intro": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Intro"
          }
        },
        "type": "object",
        "title": "UpdateListRequest"
      },
      "UpdateSectionRequest": {
        "properties": {
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title"
          },
          "blurb": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Blurb"
          },
          "item_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "format": "uuid"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Item Ids"
          }
        },
        "type": "object",
        "title": "UpdateSectionRequest"
      },
      "UpdateStayRequest": {
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Name"
          },
          "check_in_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Check In Date"
          },
          "check_out_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Check Out Date"
          },
          "check_in_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Check In Time"
          },
          "check_out_time": {
            "anyOf": [
              {
                "type": "string",
                "format": "time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Check Out Time"
          },
          "total_price": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Price"
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency"
          },
          "confirmation_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Confirmation Number"
          },
          "is_booked": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Is Booked"
          }
        },
        "type": "object",
        "title": "UpdateStayRequest",
        "description": "Fields to change on an existing stay. Omit one to leave it alone.\n\nA check-in or check-out time sent as an explicit null is cleared; every\nother field sent as null is left alone, matching UpdateStayAction."
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          },
          "input": {
            "title": "Input"
          },
          "ctx": {
            "type": "object",
            "title": "Context"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      }
    }
  }
}
