v1Resources/Custom Fields

Custom Fields

Define and manage the custom-field schema for locations and clients in your agency, and read or write the values stored against a specific entity. The field schema itself is agency-wide; per-entity values are still restricted to the clients a scoped key is authorized for.

Returns the custom-field schema defined for the given entity type (location or client), ordered the way they display in the UI.

List custom field definitions

get/api/v1/custom-fields/definitions
custom-fields:read
Query parameters
entityTypestring (location | client)required
Which entity type's schema to list: "location" or "client".
Response
dataarray of objectoptional
idstringoptional
Unique identifier for the custom field definition.
entityTypestring (location | client)optional
The entity type this definition applies to: "location" or "client".
keystringoptional
Immutable slug identifying this field, derived from its label at creation. Use this to reference the field when setting values.
labelstringoptional
The custom field's display label.
typestring (text | number | date | single_select | multi_select)optional
The field's value type.
requiredbooleanoptional
Whether the field is marked required. This isn't enforced by the API — it's a UI hint only.
optionsarray of stringoptional
The field's selectable options, for single_select and multi_select fields. Null for other types.
createdBystringoptional
Who created this field definition: "user" or "agent".
ordernumberoptional
The field's display order relative to other definitions for the same entity type, lowest first.
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
429Too many requests. Retry after the number of seconds in the Retry-After header.
get/api/v1/custom-fields/definitions
Your API key
entityType *
{
  "data": [
    {
      "id": "cm_def_abc123",
      "entityType": "location",
      "key": "parking_notes",
      "label": "Parking notes",
      "type": "text",
      "required": false,
      "options": null,
      "createdBy": "user",
      "order": 0
    }
  ]
}
v1Resources/Custom Fields/postCreate a custom field definition

Adds a new custom field to the schema for the given entity type. The field's key is derived from its label and is immutable afterward; select-type fields require at least one option.

Create a custom field definition

post/api/v1/custom-fields/definitions
custom-fields:write
Request body
entityTypestring (location | client)required
The entity type this field applies to: "location" or "client".
labelstringrequired
The custom field's display label.
typestring (text | number | date | single_select | multi_select)required
The field's value type: text, number, date, single_select, or multi_select.
requiredbooleanoptional
Whether the field should be marked required. Optional; defaults to false.
optionsarray of stringoptional
The field's selectable options. Required (at least one) for single_select and multi_select fields; ignored for other types.
Response
dataobjectoptional
definitionobjectoptional
idstringoptional
Unique identifier for the custom field definition.
entityTypestring (location | client)optional
The entity type this definition applies to: "location" or "client".
keystringoptional
Immutable slug identifying this field, derived from its label at creation. Use this to reference the field when setting values.
labelstringoptional
The custom field's display label.
typestring (text | number | date | single_select | multi_select)optional
The field's value type.
requiredbooleanoptional
Whether the field is marked required. This isn't enforced by the API — it's a UI hint only.
optionsarray of stringoptional
The field's selectable options, for single_select and multi_select fields. Null for other types.
createdBystringoptional
Who created this field definition: "user" or "agent".
ordernumberoptional
The field's display order relative to other definitions for the same entity type, lowest first.
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
422The request is missing a required parameter or is otherwise malformed.
429Too many requests. Retry after the number of seconds in the Retry-After header.
post/api/v1/custom-fields/definitions
Your API key
Request body*
{
  "data": {
    "definition": {
      "id": "cm_def_abc123",
      "entityType": "location",
      "key": "parking_notes",
      "label": "Parking notes",
      "type": "text",
      "required": false,
      "options": null,
      "createdBy": "user",
      "order": 0
    }
  }
}
v1Resources/Custom Fields/patchUpdate a custom field definition

Edits a custom field definition's label, required flag, options, or display order. The field's type and key can't be changed after creation.

Update a custom field definition

patch/api/v1/custom-fields/definitions
custom-fields:write
Request body
definitionIdstringrequired
ID of the custom field definition to update.
labelstringoptional
The custom field's display label.
requiredbooleanoptional
Whether the field should be marked required. Optional; defaults to false.
optionsarray of stringoptional
The field's selectable options. Required (at least one) for single_select and multi_select fields; ignored for other types.
ordernumberoptional
New display order for this definition relative to others of the same entity type.
Response
dataobjectoptional
definitionobjectoptional
idstringoptional
Unique identifier for the custom field definition.
entityTypestring (location | client)optional
The entity type this definition applies to: "location" or "client".
keystringoptional
Immutable slug identifying this field, derived from its label at creation. Use this to reference the field when setting values.
labelstringoptional
The custom field's display label.
typestring (text | number | date | single_select | multi_select)optional
The field's value type.
requiredbooleanoptional
Whether the field is marked required. This isn't enforced by the API — it's a UI hint only.
optionsarray of stringoptional
The field's selectable options, for single_select and multi_select fields. Null for other types.
createdBystringoptional
Who created this field definition: "user" or "agent".
ordernumberoptional
The field's display order relative to other definitions for the same entity type, lowest first.
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
404The resource wasn't found, or doesn't belong to your agency.
422The request is missing a required parameter or is otherwise malformed.
429Too many requests. Retry after the number of seconds in the Retry-After header.
patch/api/v1/custom-fields/definitions
Your API key
Request body*
{
  "data": {
    "definition": {
      "id": "cm_def_abc123",
      "entityType": "location",
      "key": "parking_notes",
      "label": "Parking notes",
      "type": "text",
      "required": true,
      "options": null,
      "createdBy": "user",
      "order": 0
    }
  }
}
v1Resources/Custom Fields/deleteArchive a custom field definition

Archives a custom field definition so it no longer appears in the schema or accepts new values. Values already stored under its key are left untouched. An unknown or already-archived definitionId is a no-op, not an error.

Archive a custom field definition

delete/api/v1/custom-fields/definitions
custom-fields:write
Query parameters
definitionIdstringrequired
ID of the custom field definition to archive.
Response
dataobjectoptional
archivedbooleanoptional
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
429Too many requests. Retry after the number of seconds in the Retry-After header.
delete/api/v1/custom-fields/definitions
Your API key
definitionId *
{
  "data": {
    "archived": true
  }
}
v1Resources/Custom Fields/getGet an entity's custom field values

Returns the custom-field values stored on one location or client, keyed by field key.

Get an entity's custom field values

get/api/v1/custom-fields/values
custom-fields:read
Query parameters
entityTypestring (location | client)required
The entity's type: "location" or "client".
entityIdstringrequired
ID of the location or client to read values for.
Response
dataobjectoptional
valuesobjectoptional
The entity's custom field values, keyed by field key. A value is a string, a number, an array of strings (for multi_select), or absent when unset.
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
404The resource wasn't found, or doesn't belong to your agency.
429Too many requests. Retry after the number of seconds in the Retry-After header.
get/api/v1/custom-fields/values
Your API key
entityType *
entityId *
{
  "data": {
    "values": {
      "parking_notes": "Free lot behind the building."
    }
  }
}
v1Resources/Custom Fields/putSet a custom field value

Sets one custom-field value on a location or client. Pass null (or an empty value) to clear the field. The value is validated against the field's definition — for example, a select field's value must be one of its defined options.

Set a custom field value

put/api/v1/custom-fields/values
custom-fields:write
Request body
entityTypestring (location | client)required
The entity type this field applies to: "location" or "client".
entityIdstringrequired
ID of the location or client to set the value on.
keystringrequired
Key of the custom field definition to set, as returned in its key property.
valueobjectrequired
The value to store. Must be present in the request body, but may be null or empty to clear the field. Validated against the field's type and options.
Response
dataobjectoptional
valuesobjectoptional
The entity's custom field values, keyed by field key. A value is a string, a number, an array of strings (for multi_select), or absent when unset.
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
404The resource wasn't found, or doesn't belong to your agency.
422The request is missing a required parameter or is otherwise malformed.
429Too many requests. Retry after the number of seconds in the Retry-After header.
put/api/v1/custom-fields/values
Your API key
Request body*
{
  "data": {
    "values": {
      "parking_notes": "Free lot behind the building."
    }
  }
}