Skip to content
Last updated

Participant info

Some activities in the Musement catalog require participant info: mandatory information about each person in the booking.

This page covers three endpoints for managing participant information:

Get participant schema

While each activity provides a preview of participant info at /activities/{activityUuid}/participants-info/schema, the requested info may change for a cart item. The definitive participant info for a cart item is available by making the following request:

curl -X GET '{baseUrl}/carts/{cartUuid}/items/{cartItemUuid}/participants/schema' \
-H 'Accept: application/json+schema' \
-H 'Accept-Language: en' \
-H 'X-Musement-Application: {applicationValue}' \
-H 'X-Musement-Version: 3.4.0' \
-H 'Authorization: Bearer {accessToken}'

Request headers

HeaderRequiredDescription
AcceptNoUse application/json+schema to receive JSON Schema format
Accept-LanguageNoLocale code (e.g., en, it, de) for translated field labels

Response

Cart items with participant info will return a JSON schema with the title cart_item_participants_info:

{
  "title": "cart_item_participants_info",
  "type": "object",
  "properties": {
    "participants": {
      "type": "array",
      "title": "participants",
      "items": {
        "title": "prototype",
        "type": "object",
        "properties": {
          "salutation": {
            "type": "string",
            "title": "Salutation",
            "enum": ["Mr", "Mrs", "Ms"],
            "propertyOrder": 1
          },
          "firstname": {
            "type": "string",
            "title": "First name",
            "propertyOrder": 2
          },
          "lastname": {
            "type": "string",
            "title": "Last name",
            "propertyOrder": 3
          },
          "date_of_birth": {
            "type": "string",
            "title": "Date of birth",
            "format": "date",
            "propertyOrder": 4
          },
          "email": {
            "type": "string",
            "title": "Email",
            "format": "email",
            "propertyOrder": 5
          }
        },
        "required": [
          "salutation",
          "firstname",
          "lastname",
          "date_of_birth",
          "email"
        ]
      },
      "minItems": 2,
      "maxItems": 2,
      "propertyOrder": 1
    }
  },
  "required": [
    "participants"
  ]
}

The minItems and maxItems values match the cart item quantity. If a cart item contains a quantity of two, then two sets of participant information must be collected.

Available participant fields

The schema may include any combination of the following fields, depending on the activity's requirements:

FieldTypeFormatDescription
salutationstringenumTitle/salutation. Values: Mr, Mrs, Ms
firstnamestringtextParticipant's first name
lastnamestringtextParticipant's last name
date_of_birthstringdate (Y-m-d)Date of birth
passportstringtextPassport number
passport_expiry_datestringdate (Y-m-d)Passport expiration date
emailstringemailEmail address
nationalitystringtextNationality
medical_notesstringtextMedical notes or conditions
addressstringtextPhysical address
fan_cardstringtextFan card number (optional field)
weightnumberfloatWeight in kilograms
phone_numberstringtextPhone number

Custom participant questions

Some activities from third-party providers (Bokun, Regiondo, MatchingBot, TuiSupplierPlatform) may include additional custom questions in the schema. These appear as extra properties alongside the standard fields and should be submitted with the participant data.

Error responses

StatusDescription
403Unauthorized access to the cart
404Cart not found, cart item not found, no product linked to cart item, cart item quantity is zero, or no participant requirements configured

If the response returns a 404 status code, no participant info is required for the cart item.

Update participants

Submit participant info for a cart item by making the following request:

curl -X PUT '{baseUrl}/carts/{cartUuid}/items/{cartItemUuid}/participants' \
-H 'X-Musement-Application: {applicationValue}' \
-H 'X-Musement-Version: 3.4.0' \
-H 'Authorization: Bearer {accessToken}' \
-H 'Content-Type: application/json' \
--data-raw '[
  {
    "salutation": "Mr",
    "firstname": "John",
    "lastname": "Doe",
    "date_of_birth": "1990-05-15",
    "email": "john.doe@example.com",
    "phone_number": "+1234567890"
  },
  {
    "salutation": "Mrs",
    "firstname": "Jane",
    "lastname": "Doe",
    "date_of_birth": "1992-08-22",
    "email": "jane.doe@example.com",
    "phone_number": "+0987654321"
  }
]'

Request body

The request body must be a JSON array of participant objects. The number of participants must exactly match the cart item quantity.

Field formats

FieldFormatExample
salutationOne of: Mr, Mrs, Ms"Mr"
date_of_birthY-m-d"1990-05-15"
passport_expiry_dateY-m-d"2030-12-31"
emailValid email address"user@example.com"
weightNumeric (float)75.5

Response

A successful request returns a 200 status code with an array of the saved participant objects:

[
  {
    "salutation": "Mr",
    "firstname": "John",
    "lastname": "Doe",
    "date_of_birth": "1990-05-15",
    "passport": null,
    "passport_expiry_date": null,
    "email": "john.doe@example.com",
    "nationality": null,
    "medical_notes": null,
    "address": null,
    "fan_card": null,
    "weight": null,
    "phone_number": "+1234567890"
  },
  {
    "salutation": "Mrs",
    "firstname": "Jane",
    "lastname": "Doe",
    "date_of_birth": "1992-08-22",
    "passport": null,
    "passport_expiry_date": null,
    "email": "jane.doe@example.com",
    "nationality": null,
    "medical_notes": null,
    "address": null,
    "fan_card": null,
    "weight": null,
    "phone_number": "+0987654321"
  }
]

Error responses

StatusDescription
400Validation errors (missing required fields, invalid format, wrong participant count)
403Unauthorized access to the cart
404Cart not found, cart item not found, or participant info not required for this item
423Cart is locked by an order (payment already processed)

Example 400 error response for validation errors:

{
  "code": 400,
  "message": "You must specify exactly 2 participant(s)"
}

Get participants

Retrieve the submitted participant information for a cart item:

curl -X GET '{baseUrl}/carts/{cartUuid}/items/{cartItemUuid}/participants' \
-H 'X-Musement-Application: {applicationValue}' \
-H 'X-Musement-Version: 3.4.0' \
-H 'Authorization: Bearer {accessToken}'

Response

Returns an array of participant objects. If no participants have been set, returns an empty array [].

[
  {
    "salutation": "Mr",
    "firstname": "John",
    "lastname": "Doe",
    "date_of_birth": "1990-05-15",
    "passport": null,
    "passport_expiry_date": null,
    "email": "john.doe@example.com",
    "nationality": null,
    "medical_notes": null,
    "address": null,
    "fan_card": null,
    "weight": null,
    "phone_number": "+1234567890"
  }
]

Response fields

FieldTypeDescription
salutationstringTitle/salutation
firstnamestringFirst name
lastnamestringLast name
date_of_birthstringDate of birth in Y-m-d format
passportstringPassport number
passport_expiry_datestringPassport expiration date in Y-m-d format
emailstringEmail address
nationalitystringNationality
medical_notesstringMedical notes
addressstringPhysical address
fan_cardstringFan card number
weightfloatWeight in kilograms
phone_numberstringPhone number

Custom answers from third-party providers are inlined in the response (since API version 3.4.0).

Error responses

StatusDescription
403Unauthorized access to the cart
404Cart not found or cart item not found

Form generation

Since the requested participant details can vary by activity, we recommend using the react-jsonschema-form tool to create user-friendly forms from the schema endpoint's response. The tool features a live playground where you can paste Musement API responses and see the resulting form in real time.