bymundi API

Add a traveler

The add_traveler MCP tool: add a traveler.

add_traveler · writes · reaches people outside bymundi

REST: POST /v1/trips/{tripId}/travelers

What the model reads

Adds one passenger to a trip — last, or at position (0 = first). Send what you know; the rest stays empty and shows as missing. Refused when the trip's travelers headcount is full (raise it with update_trip) or when a not-yet-accepted trip has no passengers. On a booked (reservada) trip a new email receives the app-access email. undo_change removes the passenger again within 30 days.

Permissions: travelers:write. Undo: the result names a change id; undo_change reverts it.

Input

Field Type Required Description
tripId uuid yes
position integer 0 = first on the booking. Past the end = last. 0–39
title "mr" | "mrs" | "ms" | "mstr" | "miss" | null Form of address; the app derives one from sex and age when empty.
firstName string | null
lastName1 string | null Surname(s) as on the passport — the app asks for both surnames here.
lastName2 string | null A second surname stored separately (older passengers); usually null.
birthDate string | null
sex "m" | "f" | null
nationality string | null
docType "dni" | "nie" | "passport" | "other" | null
docNumber string | null
docExpiry string | null
docCountry string | null The country that issued the document.
email email | null
phone string | null
address object | null
address.line1 string | null yes
address.line2 string | null yes
address.postalCode string | null yes
address.city string | null yes
address.region string | null yes
address.country string | null yes
taxId string | null

Input schema (JSON)

{
  "type": "object",
  "properties": {
    "tripId": {
      "type": "string",
      "format": "uuid"
    },
    "position": {
      "type": "integer",
      "minimum": 0,
      "maximum": 39,
      "description": "0 = first on the booking. Past the end = last."
    },
    "title": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "mr",
            "mrs",
            "ms",
            "mstr",
            "miss"
          ]
        },
        {
          "type": "null"
        }
      ],
      "description": "Form of address; the app derives one from sex and age when empty."
    },
    "firstName": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 80
        },
        {
          "type": "null"
        }
      ]
    },
    "lastName1": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 80
        },
        {
          "type": "null"
        }
      ],
      "description": "Surname(s) as on the passport — the app asks for both surnames here."
    },
    "lastName2": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 80
        },
        {
          "type": "null"
        }
      ],
      "description": "A second surname stored separately (older passengers); usually null."
    },
    "birthDate": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        {
          "type": "null"
        }
      ]
    },
    "sex": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "m",
            "f"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "nationality": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[A-Z]{2}$"
        },
        {
          "type": "null"
        }
      ]
    },
    "docType": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "dni",
            "nie",
            "passport",
            "other"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "docNumber": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 40
        },
        {
          "type": "null"
        }
      ]
    },
    "docExpiry": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        {
          "type": "null"
        }
      ]
    },
    "docCountry": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[A-Z]{2}$"
        },
        {
          "type": "null"
        }
      ],
      "description": "The country that issued the document."
    },
    "email": {
      "anyOf": [
        {
          "type": "string",
          "format": "email",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ]
    },
    "phone": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 40
        },
        {
          "type": "null"
        }
      ]
    },
    "address": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "line1": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 120
                },
                {
                  "type": "null"
                }
              ]
            },
            "line2": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 120
                },
                {
                  "type": "null"
                }
              ]
            },
            "postalCode": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 20
                },
                {
                  "type": "null"
                }
              ]
            },
            "city": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 80
                },
                {
                  "type": "null"
                }
              ]
            },
            "region": {
              "anyOf": [
                {
                  "type": "string",
                  "maxLength": 80
                },
                {
                  "type": "null"
                }
              ]
            },
            "country": {
              "anyOf": [
                {
                  "type": "string",
                  "pattern": "^[A-Z]{2}$"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "required": [
            "line1",
            "line2",
            "postalCode",
            "city",
            "region",
            "country"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "taxId": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 20
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "tripId"
  ],
  "additionalProperties": false
}