SkillhabitDocs

Custom Fields

Manage customer-defined user custom fields and their choice metadata.

GET
/custom-fields

Returns all custom fields for the customer.

AuthorizationBearer <token>

A JSON Web Token

In: header

Response Body

application/json

curl -X GET "https://example.com/custom-fields"
{  "customFields": [    {      "customFieldId": "22576317-111e-4373-9d27-b04469f360d3",      "id": "22576317-111e-4373-9d27-b04469f360d3",      "type": "CHOICE",      "name": "Department",      "choices": [        {          "choiceId": "8a9064d1-2226-41e1-b203-33a42063c251",          "name": "Sales"        }      ]    }  ]}
POST
/custom-fields

Create a custom field; max 10 per customer. Body must include type: CHOICE, TEXT, or MULTI_SELECT; CHOICE and MULTI_SELECT require choices.

AuthorizationBearer <token>

A JSON Web Token

In: header

Request Body

application/json

Custom field definition. Required: name, type (CHOICE, TEXT, or MULTI_SELECT). For CHOICE and MULTI_SELECT, choices array with name is required (choiceId is generated). Optional: description, isHidden, isLocked, isOptional.

TypeScript Definitions

Use the request body type in TypeScript.

Custom field definition. Required: name, type (CHOICE, TEXT, or MULTI_SELECT). For CHOICE and MULTI_SELECT, choices array with name is required (choiceId is generated). Optional: description, isHidden, isLocked, isOptional.

Response Body

application/json

application/json

curl -X POST "https://example.com/custom-fields" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "type": "CHOICE"  }'
Empty
DELETE
/custom-fields/{customFieldId}

Delete a custom field. Returns 403 if the field is in use.

AuthorizationBearer <token>

A JSON Web Token

In: header

Path Parameters

customFieldId*string

Custom field id to delete.

Response Body

application/json

curl -X DELETE "https://example.com/custom-fields/22576317-111e-4373-9d27-b04469f360d3"
Empty
PUT
/custom-fields/{customFieldId}

Update an existing custom field. Returns 403 if the field is in use. For CHOICE and MULTI_SELECT: pass choiceId for existing choices (so they are updated); omit choiceId only for new choices (system will generate).

AuthorizationBearer <token>

A JSON Web Token

In: header

Path Parameters

customFieldId*string

Custom field id to update.

Request Body

application/json

Custom field definition. Required: name, type; CHOICE and MULTI_SELECT require choices. For each choice: include choiceId for existing choices; omit choiceId only for new choices (system generates it).

TypeScript Definitions

Use the request body type in TypeScript.

Custom field update request. Required: name and type. For CHOICE and MULTI_SELECT, choices must include choiceId for existing choices and omit it only for new choices.

Response Body

application/json

application/json

curl -X PUT "https://example.com/custom-fields/22576317-111e-4373-9d27-b04469f360d3" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "type": "CHOICE"  }'
Empty