Custom fields

The system supports creating an unlimited number of custom fields that can be used to extend various objects with additional, user-defined data. Custom fields can have different data types, such as:

  • text

  • select

  • checkboxes

  • multiselect

  • (and other supported input types)

For field types that require predefined choices (e.g., select, checkboxes, multiselect), the API allows you to define any number of selectable options.

Each custom field must be assigned to exactly one supported object type. Custom fields can be attached to the following objects:

  • Booking

  • Person

  • ApplicationForm

  • Waiver

  • BookingInquiry

  • Product

Once defined, custom field values are stored directly inside the corresponding object, under the JSON attribute custom_fields. This attribute contains a key–value structure representing the custom field identifiers and their assigned values.

This mechanism enables flexible data modeling and the ability to tailor object structures to specific business needs without modifying the core schema.

When a CustomField is deleted, all previously saved values associated with that field remain stored within the objects’ custom_fields JSON attribute. The system does not automatically remove or modify these legacy values, ensuring that historical data remains intact unless explicitly updated or cleaned up by the client.

Endpoint

Fetch all custom fields

get

Fetch all custom fields

Query parameters
limitinteger · int32 · min: 1 · max: 100Optional

Number of activity logs to return

Default: 10
pageinteger · int32 · min: 1Optional

Page number

Default: 1
sort_byobject · enumOptional

Sorts the results based on the passed field. All possible values can be appended with ",asc" or ",desc"

Possible values:
idstring[]Optional

Filter by custom field ID(s)

bind_tostring · enumOptional

Filter by the entity the custom field is bound to

Possible values:
typestring · enumOptional

Filter by custom field type

Possible values:
Responses
200

A list of custom fields

application/json
get
/custom_fields
GET /private/custom_fields HTTP/1.1
Host: api.bookinglayer.io
Accept: */*
200

A list of custom fields

[
  {
    "years_past": 1,
    "bind_to": "person",
    "updated_at": "2000-01-23T04:56:07.000+00:00",
    "translations": {
      "de": {
        "label": "label",
        "helper_text": "helper_text"
      },
      "en": {
        "label": "label",
        "helper_text": "helper_text"
      }
    },
    "years_future": 6,
    "options": [
      {
        "is_enabled": true,
        "updated_at": "2000-01-23T04:56:07.000+00:00",
        "translations": {
          "de": {
            "label": "label"
          },
          "en": {
            "label": "label"
          }
        },
        "created_at": "2000-01-23T04:56:07.000+00:00",
        "id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
        "backoffice_title": "Google",
        "position": 0,
        "deleted_at": "2000-01-23T04:56:07.000+00:00"
      },
      {
        "is_enabled": true,
        "updated_at": "2000-01-23T04:56:07.000+00:00",
        "translations": {
          "de": {
            "label": "label"
          },
          "en": {
            "label": "label"
          }
        },
        "created_at": "2000-01-23T04:56:07.000+00:00",
        "id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
        "backoffice_title": "Google",
        "position": 0,
        "deleted_at": "2000-01-23T04:56:07.000+00:00"
      }
    ],
    "created_at": "2000-01-23T04:56:07.000+00:00",
    "id": "where_did_you_find_us_65b91fdb78781",
    "backoffice_title": "Where did you find us?",
    "type": "text",
    "deleted_at": "2000-01-23T04:56:07.000+00:00"
  }
]

Fetch a single custom field

get

Fetch a single custom field

Path parameters
idstringRequired

Custom field ID

Responses
200

A single custom field

application/json
get
/custom_fields/{custom_field_id}
GET /private/custom_fields/{custom_field_id} HTTP/1.1
Host: api.bookinglayer.io
Accept: */*
{
  "years_past": 1,
  "bind_to": "person",
  "updated_at": "2000-01-23T04:56:07.000+00:00",
  "translations": {
    "de": {
      "label": "label",
      "helper_text": "helper_text"
    },
    "en": {
      "label": "label",
      "helper_text": "helper_text"
    }
  },
  "years_future": 6,
  "options": [
    {
      "is_enabled": true,
      "updated_at": "2000-01-23T04:56:07.000+00:00",
      "translations": {
        "de": {
          "label": "label"
        },
        "en": {
          "label": "label"
        }
      },
      "created_at": "2000-01-23T04:56:07.000+00:00",
      "id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
      "backoffice_title": "Google",
      "position": 0,
      "deleted_at": "2000-01-23T04:56:07.000+00:00"
    },
    {
      "is_enabled": true,
      "updated_at": "2000-01-23T04:56:07.000+00:00",
      "translations": {
        "de": {
          "label": "label"
        },
        "en": {
          "label": "label"
        }
      },
      "created_at": "2000-01-23T04:56:07.000+00:00",
      "id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
      "backoffice_title": "Google",
      "position": 0,
      "deleted_at": "2000-01-23T04:56:07.000+00:00"
    }
  ],
  "created_at": "2000-01-23T04:56:07.000+00:00",
  "id": "where_did_you_find_us_65b91fdb78781",
  "backoffice_title": "Where did you find us?",
  "type": "text",
  "deleted_at": "2000-01-23T04:56:07.000+00:00"
}

Delete a single custom field

delete

Delete a single custom field

Path parameters
idstringRequired

Custom field ID

Responses
200

Custom field deleted

application/json
delete
/custom_fields/{custom_field_id}
DELETE /private/custom_fields/{custom_field_id} HTTP/1.1
Host: api.bookinglayer.io
Accept: */*
[
  {
    "years_past": 1,
    "bind_to": "person",
    "updated_at": "2000-01-23T04:56:07.000+00:00",
    "translations": {
      "de": {
        "label": "label",
        "helper_text": "helper_text"
      },
      "en": {
        "label": "label",
        "helper_text": "helper_text"
      }
    },
    "years_future": 6,
    "options": [
      {
        "is_enabled": true,
        "updated_at": "2000-01-23T04:56:07.000+00:00",
        "translations": {
          "de": {
            "label": "label"
          },
          "en": {
            "label": "label"
          }
        },
        "created_at": "2000-01-23T04:56:07.000+00:00",
        "id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
        "backoffice_title": "Google",
        "position": 0,
        "deleted_at": "2000-01-23T04:56:07.000+00:00"
      },
      {
        "is_enabled": true,
        "updated_at": "2000-01-23T04:56:07.000+00:00",
        "translations": {
          "de": {
            "label": "label"
          },
          "en": {
            "label": "label"
          }
        },
        "created_at": "2000-01-23T04:56:07.000+00:00",
        "id": "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
        "backoffice_title": "Google",
        "position": 0,
        "deleted_at": "2000-01-23T04:56:07.000+00:00"
      }
    ],
    "created_at": "2000-01-23T04:56:07.000+00:00",
    "id": "where_did_you_find_us_65b91fdb78781",
    "backoffice_title": "Where did you find us?",
    "type": "text",
    "deleted_at": "2000-01-23T04:56:07.000+00:00"
  }
]

Last updated