Skip to main content

Custom Fields

Read your custom field definitions, and choose which items a booking or participant question is asked for.

Endpointโ€‹

GET /v1/settings/custom-fields

Authenticationโ€‹

Requires an API key with the settings:read scope.

Query Parametersโ€‹

ParameterTypeDefaultDescription
modelstring-Filter by model type: booking, booking_participant, product, experience, staff, customer, quote
product_ids[]integer[]-Only return the booking and booking_participant fields asked for a booking holding these rentals. Other models are returned unfiltered.
experience_ids[]integer[]-Same, for experiences. Pass both to match a booking that holds rentals and experiences.

Responseโ€‹

Success (200 OK)โ€‹

{
"data": [
{
"id": 1,
"model": "booking",
"label": "License Number",
"field_type": "text",
"is_required": true,
"show_in_pos": true,
"show_for": "product-category",
"show_for_ids": [4, 7],
"sort_order": 1,
"created_at": "2025-01-01T00:00:00+00:00",
"updated_at": "2025-01-01T00:00:00+00:00"
},
{
"id": 2,
"model": "product",
"label": "Serial Number",
"field_type": "text",
"is_required": false,
"show_in_pos": true,
"show_for": null,
"show_for_ids": null,
"sort_order": 1,
"created_at": "2025-01-01T00:00:00+00:00",
"updated_at": "2025-01-01T00:00:00+00:00"
},
{
"id": 3,
"model": "customer",
"label": "Member Since",
"field_type": "date",
"is_required": false,
"sort_order": 1,
"created_at": "2025-01-01T00:00:00+00:00",
"updated_at": "2025-01-01T00:00:00+00:00"
}
],
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-01-15T12:00:00+00:00"
}
}

Response Fieldsโ€‹

FieldTypeDescription
idintegerUnique identifier
modelstringModel type this field applies to
labelstringDisplay label for the field
field_typestringField input type
is_requiredbooleanWhether the field is required
show_in_posbooleanFor booking and booking_participant fields: when false, the field is collected only on the customer-facing booking widget and is hidden from staff-facing surfaces (POS and the mobile app). Always true for other models.
show_forstring or nullFor booking and booking_participant fields: which items the question is asked for (see Show for). null for other models, which are always asked.
show_for_idsinteger[] or nullThe rentals, experiences or categories picked when show_for is a specific choice. Empty for the all choices.
sort_orderintegerDisplay order
created_atstringISO 8601 datetime
updated_atstringISO 8601 datetime

Model Typesโ€‹

ModelDescription
bookingFields for bookings
booking_participantPer-participant fields (e.g. t-shirt size, age confirmation)
productFields for products
experienceFields for experiences
staffFields for staff members
customerFields for customers

Field Typesโ€‹

TypeDescription
textSingle-line text input
textareaMulti-line text input
numberNumeric input
dateDate picker
datetimeDate and time picker

Show forโ€‹

A booking or booking_participant field is asked only when the booking holds at least one item it covers. Fields created before this setting existed are all.

ValueAsked when the booking has
allAnything, including store-only and service bookings
all-productsAny rental
all-experiencesAny experience
product-categoryA rental in one of the show_for_ids categories, or in a subcategory of one
productOne of the show_for_ids rentals
experience-categoryAn experience in one of the show_for_ids categories, or in a subcategory of one
experienceOne of the show_for_ids experiences

A required field is only required on bookings it is asked for. A booking keeps showing any answer it already holds, even if its items change later.

Update Show forโ€‹

PATCH /v1/settings/custom-fields/{id}

Requires an API key with the settings:write scope. Only booking and booking_participant fields accept it.

FieldTypeDescription
show_forstringOne of the Show for values. Left out, the current choice is kept.
show_for_idsinteger[]The items picked for a specific choice. Required, with at least one of your own ids, when show_for is a specific choice.
curl -X PATCH "https://app.equipdash.com/api/v1/settings/custom-fields/1" \
-H "Authorization: Bearer eqd_live_abc123xyz789..." \
-H "Content-Type: application/json" \
-d '{"show_for": "product-category", "show_for_ids": [4, 7]}'

Returns the updated field in the same shape as the list above. A specific choice with no valid ids returns 422 and changes nothing.

Custom Field Valuesโ€‹

Custom field values are included in the response when retrieving individual resources (products, experiences, bookings, customers, staff). See the respective endpoint documentation for details.

Errorsโ€‹

StatusCodeDescription
401authentication_requiredNo API key provided
401invalid_api_keyInvalid API key
403insufficient_scopeAPI key lacks settings:read (or settings:write for PATCH) scope
404not_foundPATCH on a field that is not yours
422validation_errorUnknown show_for, a non-booking field, or a specific choice with nothing picked

Example Requestsโ€‹

Get all custom fields:

curl -X GET "https://app.equipdash.com/api/v1/settings/custom-fields" \
-H "Authorization: Bearer eqd_live_abc123xyz789..."

Get the booking questions for a booking with rental 12 and experience 3:

curl -X GET "https://app.equipdash.com/api/v1/settings/custom-fields?model=booking&product_ids[]=12&experience_ids[]=3" \
-H "Authorization: Bearer eqd_live_abc123xyz789..."

Get custom fields for products only:

curl -X GET "https://app.equipdash.com/api/v1/settings/custom-fields?model=product" \
-H "Authorization: Bearer eqd_live_abc123xyz789..."