---
title: "List Custom Field Options"
method: GET
path: "/v2/teams/{team_id}/custom-field-options"
tags: ["Custom Field API"]
---

# List Custom Field Options

`GET /v2/teams/{team_id}/custom-field-options`

List the available custom field definitions for a team and ticket type. Returns field definitions with empty values. Use this to discover field keys before setting values on tickets.

## Path parameters

- `team_id` string, required — The ID of the team to list custom field options for.

## Query parameters

- `ticketType` 'TICKET_TYPE_UNSPECIFIED' | 'TICKET_TYPE_REQUEST' | 'TICKET_TYPE_TASK' | 'TICKET_TYPE_MAJOR_INCIDENT' | 'TICKET_TYPE_CONVERSATION' | 'TICKET_TYPE_JOURNEY' | 'TICKET_TYPE_JOURNEY_CONVERSATION' | 'TICKET_TYPE_INCIDENT' | 'TICKET_TYPE_CHANGE' | 'TICKET_TYPE_CUSTOM'
- `ticketSubtype` string — Required for CHANGE tickets — each subtype (normal, standard, emergency, custom) has its own field schema. Omit for non-change types.

## Response `200`

Success

- SvhelpPublicapiListCustomFieldOptionsResponse
  - `data` SvhelpModelsCustomFieldValuesResult
    - `activeCustomFields` SvhelpModelsCustomFieldValue[]
      - `fieldValue` SvstoreEntityFieldValue — EntityFieldValue represents a concrete field value on a specific entity. Used for both current values (on Entity.field_values) and historical values (in field value history responses).
        - `id` string — The EAV row id. NOT populated on entity read paths (Entity.field_values: search / list / get / create / update) since the v4 slim document_json dropped it — it has no consumer there. It IS populated on the listEntityFieldValueHistory RPC, which reads EAV rows directly.
        - `entityId` string
        - `fieldId` string
        - `fieldKey` string
        - `fieldName` string
        - `dataType` 'DATA_TYPE_UNSPECIFIED' | 'TEXT' | 'NUMBER' | 'BOOL' | 'TIMESTAMP' | 'ENUM' | 'ENTITY_REF' | 'USER_REF' | 'UNIQUE' | 'MULTI_SELECT' | 'FILE'
        - `value` union — `Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value.
          - number
          - string
          - boolean
          - object
        - `setByUserId` string, nullable — Attribution: who/what set this field value. Stored in the slim document_json and populated on ALL entity read paths (search / list / get / create / update) as well as field-value history.
        - `setByAppInstanceId` string, nullable
        - `createdAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
        - `deletedAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
        - `pinned` boolean — When true, ingestion cannot overwrite this user-set value. Stored in the slim document_json and populated on ALL entity read paths.
      - `field` SvstoreEntityTypeField
        - `id` string
        - `entityTypeId` string
        - `key` string
        - `name` string
        - `dataType` 'DATA_TYPE_UNSPECIFIED' | 'TEXT' | 'NUMBER' | 'BOOL' | 'TIMESTAMP' | 'ENUM' | 'ENTITY_REF' | 'USER_REF' | 'UNIQUE' | 'MULTI_SELECT' | 'FILE'
        - `createdAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
        - `updatedAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
        - `createdByUserId` string
        - `updatedByUserId` string
        - `enumOptions` SvstoreEnumOption[]
          - `id` string
          - `value` string
          - `displayName` string
          - `displayOrder` integer
        - `isKeyField` boolean — Whether this field's value drives the entity's key (dedup identifier). Must be a UNIQUE data type field. At most one per entity type.
        - `isNameField` boolean — Whether this field's value drives the entity's display name.
        - `refEntityTypeId` string, nullable — For ENTITY_REF fields: the entity type ID that this field references.
        - `description` string, nullable
        - `sourceEntityTypeId` string, nullable — If set, this field is inherited from the specified entity type. Empty means the field is defined directly on this entity type.
        - `sectionId` string, nullable — Visual grouping for the entity detail UI. Unset means the field renders in the implicit "Overview" tab.
    - `deprecatedCustomFields` SvhelpModelsCustomFieldValue[]
      - `fieldValue` SvstoreEntityFieldValue — EntityFieldValue represents a concrete field value on a specific entity. Used for both current values (on Entity.field_values) and historical values (in field value history responses).
        - `id` string — The EAV row id. NOT populated on entity read paths (Entity.field_values: search / list / get / create / update) since the v4 slim document_json dropped it — it has no consumer there. It IS populated on the listEntityFieldValueHistory RPC, which reads EAV rows directly.
        - `entityId` string
        - `fieldId` string
        - `fieldKey` string
        - `fieldName` string
        - `dataType` 'DATA_TYPE_UNSPECIFIED' | 'TEXT' | 'NUMBER' | 'BOOL' | 'TIMESTAMP' | 'ENUM' | 'ENTITY_REF' | 'USER_REF' | 'UNIQUE' | 'MULTI_SELECT' | 'FILE'
        - `value` union — `Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value.
          - number
          - string
          - boolean
          - object
        - `setByUserId` string, nullable — Attribution: who/what set this field value. Stored in the slim document_json and populated on ALL entity read paths (search / list / get / create / update) as well as field-value history.
        - `setByAppInstanceId` string, nullable
        - `createdAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
        - `deletedAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
        - `pinned` boolean — When true, ingestion cannot overwrite this user-set value. Stored in the slim document_json and populated on ALL entity read paths.
      - `field` SvstoreEntityTypeField
        - `id` string
        - `entityTypeId` string
        - `key` string
        - `name` string
        - `dataType` 'DATA_TYPE_UNSPECIFIED' | 'TEXT' | 'NUMBER' | 'BOOL' | 'TIMESTAMP' | 'ENUM' | 'ENTITY_REF' | 'USER_REF' | 'UNIQUE' | 'MULTI_SELECT' | 'FILE'
        - `createdAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
        - `updatedAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
        - `createdByUserId` string
        - `updatedByUserId` string
        - `enumOptions` SvstoreEnumOption[]
          - `id` string
          - `value` string
          - `displayName` string
          - `displayOrder` integer
        - `isKeyField` boolean — Whether this field's value drives the entity's key (dedup identifier). Must be a UNIQUE data type field. At most one per entity type.
        - `isNameField` boolean — Whether this field's value drives the entity's display name.
        - `refEntityTypeId` string, nullable — For ENTITY_REF fields: the entity type ID that this field references.
        - `description` string, nullable
        - `sourceEntityTypeId` string, nullable — If set, this field is inherited from the specified entity type. Empty means the field is defined directly on this entity type.
        - `sectionId` string, nullable — Visual grouping for the entity detail UI. Unset means the field renders in the implicit "Overview" tab.
    - `activeCustomFieldGroups` SvhelpModelsCustomFieldGroup[] — Active custom fields organized by section (svstore entity_field_section). Always populated and consistent with `active_custom_fields`: the union of every group's custom_fields equals active_custom_fields (modulo order). Group ordering: the section-unset catch-all group (if any) first, then sections by creation order. Use this when rendering one container per group on the UI; use `active_custom_fields` when a flat list is sufficient.
      - `section` SvstoreEntityFieldSection — EntityFieldSection is a per-entity-type visual grouping for field bindings — rendered as tabs on the entity detail UI ("General", "Purchasing", "Compliance"). Bindings without a section_id render in an implicit "Overview" tab. Sections are materialized down the inheritance chain just like fields: when an ancestor defines a section it is mirrored onto every descendant with source_entity_type_id pointing back.
        - `id` string
        - `entityTypeId` string
        - `name` string
        - `sourceEntityTypeId` string, nullable — If set, this section is mirrored from the specified ancestor type. Empty means the section is defined directly on this entity type.
        - `createdAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
        - `updatedAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
        - `createdByUserId` string
        - `updatedByUserId` string
      - `customFields` SvhelpModelsCustomFieldValue[]
        - `fieldValue` SvstoreEntityFieldValue — EntityFieldValue represents a concrete field value on a specific entity. Used for both current values (on Entity.field_values) and historical values (in field value history responses).
          - `id` string — The EAV row id. NOT populated on entity read paths (Entity.field_values: search / list / get / create / update) since the v4 slim document_json dropped it — it has no consumer there. It IS populated on the listEntityFieldValueHistory RPC, which reads EAV rows directly.
          - `entityId` string
          - `fieldId` string
          - `fieldKey` string
          - `fieldName` string
          - `dataType` 'DATA_TYPE_UNSPECIFIED' | 'TEXT' | 'NUMBER' | 'BOOL' | 'TIMESTAMP' | 'ENUM' | 'ENTITY_REF' | 'USER_REF' | 'UNIQUE' | 'MULTI_SELECT' | 'FILE'
          - `value` union — `Value` represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of these variants. Absence of any variant indicates an error. The JSON representation for `Value` is JSON value.
            - number
            - string
            - boolean
            - object
          - `setByUserId` string, nullable — Attribution: who/what set this field value. Stored in the slim document_json and populated on ALL entity read paths (search / list / get / create / update) as well as field-value history.
          - `setByAppInstanceId` string, nullable
          - `createdAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
          - `deletedAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
          - `pinned` boolean — When true, ingestion cannot overwrite this user-set value. Stored in the slim document_json and populated on ALL entity read paths.
        - `field` SvstoreEntityTypeField
          - `id` string
          - `entityTypeId` string
          - `key` string
          - `name` string
          - `dataType` 'DATA_TYPE_UNSPECIFIED' | 'TEXT' | 'NUMBER' | 'BOOL' | 'TIMESTAMP' | 'ENUM' | 'ENTITY_REF' | 'USER_REF' | 'UNIQUE' | 'MULTI_SELECT' | 'FILE'
          - `createdAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
          - `updatedAt` string, date-time — A timestamp in RFC 3339 format (e.g., "2025-01-15T01:30:15Z").
          - `createdByUserId` string
          - `updatedByUserId` string
          - `enumOptions` SvstoreEnumOption[]
            - `id` string
            - `value` string
            - `displayName` string
            - `displayOrder` integer
          - `isKeyField` boolean — Whether this field's value drives the entity's key (dedup identifier). Must be a UNIQUE data type field. At most one per entity type.
          - `isNameField` boolean — Whether this field's value drives the entity's display name.
          - `refEntityTypeId` string, nullable — For ENTITY_REF fields: the entity type ID that this field references.
          - `description` string, nullable
          - `sourceEntityTypeId` string, nullable — If set, this field is inherited from the specified entity type. Empty means the field is defined directly on this entity type.
          - `sectionId` string, nullable — Visual grouping for the entity detail UI. Unset means the field renders in the implicit "Overview" tab.

## Other responses

- `default` — Error

---

[API](https://skmtc.net/serval/apis/serval-public-api.md) · [All operations](https://skmtc.net/serval/apis/serval-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/serval/serval-public-api/versions/0549515e9384/schema)
