API ReferenceCustom Fields
All endpoints

Custom Fields

Manages custom-field definitions and their values on incidents.

GET/api/v1/custom-fieldsList custom fields

#

Returns one page sorted by sort_order, creation time, and custom-field ID. By default, the response excludes archived definitions.

Operation ID
listCustomFields
Prerequisites
None
Retry guidance
This operation is repeat-safe. Respect Retry-After and use bounded retries. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

bash
curl --request GET \
  --url 'https://{company}.api.tellagen.com/api/v1/custom-fields' \
  --header 'Authorization: Bearer <token>'

Success: 200

Returns custom-field definitions and pagination fields.

Success response JSON
json
{
  "fields": [
    {
      "id": 50,
      "revision": 2,
      "company_id": 7,
      "name": "Affected Users",
      "slug": "affected_users",
      "field_type": "number",
      "description": "Number of users impacted",
      "default_value": 0,
      "config": {
        "min": 0,
        "precision": 0
      },
      "required": false,
      "sort_order": 1,
      "category": "impact",
      "visibility_level": "prominent",
      "show_on_creation": true,
      "required_on_creation": false,
      "auto_add_to_layout": true,
      "created_at": "2025-01-10T09:00:00Z",
      "updated_at": "2025-01-10T09:00:00Z"
    }
  ],
  "pagination": {
    "limit": 50,
    "has_more": true,
    "next_cursor": "opaque-server-cursor"
  }
}
Request and response contract

Query parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Query parameters
FieldTypeRequiredDescription
limitintegerNoThe maximum number of items in one page. The default is 50, and the maximum is 100.

Minimum: 1. · Maximum: 100. · Default: 50.

cursorstringNoThe next_cursor value from the previous page. Clients treat this value as opaque and do not create, inspect, or change it.

Minimum length: 1 characters. · Maximum length: 4096 characters.

include_archivedbooleanNoControls whether the response includes archived custom fields. The default is false.

Default: false.

Response 200

Returns custom-field definitions and pagination fields.

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response fields
FieldTypeReturnedDescription
fieldsobject[]AlwaysThe custom-field definitions in this page.
fields[].idintegerAlwaysThe positive numeric ID of the custom-field definition.

Minimum: 1.

fields[].revisionintegerAlwaysThe resource version for concurrency control.

Minimum: 1.

fields[].company_idintegerAlwaysThe ID of the workspace that owns the definition.

Minimum: 1.

fields[].namestringAlwaysThe display name of the custom field.
fields[].slugstringAlwaysThe permanent key used to identify the custom field.
fields[].field_typestringAlwaysThe value type for this custom field.
Possible values: "string""number""boolean""date""time""datetime""monetary""json""select""multi_select"
fields[].descriptionstringOptionalThe workspace description of the custom field.
fields[].default_valueanyOptionalThe default field value. Its type depends on field_type.
fields[].configobjectOptionalThe validation and option configuration for field_type.
fields[].requiredbooleanAlwaysIndicates whether each incident must retain a value for this field.
fields[].sort_orderintegerAlwaysThe display position of the custom field.
fields[].categorystringAlwaysThe workspace category for the custom field.
Possible values: "context""impact""analysis""external""custom"
fields[].visibility_levelstringAlwaysThe configured display prominence for the custom field.
Possible values: "always""prominent""standard""collapsed"
fields[].show_on_creationbooleanAlwaysIndicates whether the incident creation form shows this field.
fields[].required_on_creationbooleanAlwaysIndicates whether a create-incident request must supply this field.
fields[].auto_add_to_layoutbooleanAlwaysIndicates whether Tellagen adds this field to new incident layouts.
fields[].external_sourcestringOptionalThe source identifier for a custom field in the external category.
fields[].archived_atstring (RFC 3339)OptionalThe definition archive time. This field is absent for an active definition.
fields[].created_atstring (RFC 3339)AlwaysThe definition creation time.
fields[].updated_atstring (RFC 3339)AlwaysThe time of the latest definition change.
paginationobjectAlwaysPagination details for a collection response.
pagination.limitintegerAlwaysThe maximum number of items requested for this page.

Minimum: 1. · Maximum: 100.

pagination.has_morebooleanAlwaysIndicates whether another page is available.
pagination.next_cursorstringOptionalThe opaque cursor for the next page. This field is absent on the final page.
Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

POST/api/v1/custom-fieldsCreate custom field

#

Creates a custom-field definition. If slug is omitted, the API creates it from name. Before creation, the API validates config and default_value against field_type.

Operation ID
createCustomField
Retry guidance
Do not retry automatically after an uncertain outcome. Read the resource state and follow this operation’s recovery guidance. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

bash
curl --request POST \
  --url 'https://{company}.api.tellagen.com/api/v1/custom-fields' \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Affected Users",
  "field_type": "number",
  "description": "Number of users impacted",
  "category": "impact",
  "visibility_level": "prominent",
  "show_on_creation": true,
  "config": {
    "min": 0,
    "precision": 0
  }
}'

Success: 201

Returns the created custom-field definition.

Success response JSON
json
{
  "field": {
    "id": 50,
    "revision": 1,
    "company_id": 7,
    "name": "Affected Users",
    "slug": "affected_users",
    "field_type": "number",
    "description": "Number of users impacted",
    "default_value": null,
    "config": {
      "min": 0,
      "precision": 0
    },
    "required": false,
    "sort_order": 0,
    "category": "impact",
    "visibility_level": "prominent",
    "show_on_creation": true,
    "required_on_creation": false,
    "auto_add_to_layout": false,
    "created_at": "2025-01-30T12:00:00Z",
    "updated_at": "2025-01-30T12:00:00Z"
  }
}
Request and response contract

Request body

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Request body fields
FieldTypeRequiredDescription
namestringYesThe field name. The length must be from 1 through 64 characters.

Minimum length: 1 characters. · Maximum length: 64 characters.

slugstringNoA permanent URL-safe key. If the request omits slug, the API creates it from name.
field_typestringYesThe value type.
Allowed values: "string""number""boolean""date""time""datetime""monetary""json""select""multi_select"
descriptionstringNoThe workspace description of the custom field.
default_valueanyNoThe default field value. Its type must match field_type.
configobjectConditionalValidation options for field_type. String fields accept max_length. Number fields accept min, max, and precision. Monetary fields also accept currency or currencies. Select fields accept options and allow_custom. The API rejects unsupported keys.

Required when The accepted keys and value shapes depend on field_type.

requiredbooleanNoControls whether each incident must retain a value. If this value is true, the API rejects JSON null and requests to unset the value.
categorystringNoThe workspace category.
Allowed values: "context""impact""analysis""external""custom"
visibility_levelstringNoThe display prominence.
Allowed values: "always""prominent""standard""collapsed"
show_on_creationbooleanNoControls whether the incident creation form shows this field.
required_on_creationbooleanNoControls whether a create-incident request must supply this field. A true value requires show_on_creation to be true.
auto_add_to_layoutbooleanNoControls whether Tellagen adds this field to new incident layouts.
external_sourcestringConditionalThe source identifier for category external. This field is required for that category and is not valid for other categories.

Required when Required when category is "external".

Response 201

Returns the created custom-field definition.

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response fields
FieldTypeReturnedDescription
fieldobjectAlwaysThe complete public definition of a custom field.
field.idintegerAlwaysThe positive numeric ID of the custom-field definition.

Minimum: 1.

field.revisionintegerAlwaysThe resource version for concurrency control.

Minimum: 1.

field.company_idintegerAlwaysThe ID of the workspace that owns the definition.

Minimum: 1.

field.namestringAlwaysThe display name of the custom field.
field.slugstringAlwaysThe permanent key used to identify the custom field.
field.field_typestringAlwaysThe value type for this custom field.
Possible values: "string""number""boolean""date""time""datetime""monetary""json""select""multi_select"
field.descriptionstringOptionalThe workspace description of the custom field.
field.default_valueanyOptionalThe default field value. Its type depends on field_type.
field.configobjectOptionalThe validation and option configuration for field_type.
field.requiredbooleanAlwaysIndicates whether each incident must retain a value for this field.
field.sort_orderintegerAlwaysThe display position of the custom field.
field.categorystringAlwaysThe workspace category for the custom field.
Possible values: "context""impact""analysis""external""custom"
field.visibility_levelstringAlwaysThe configured display prominence for the custom field.
Possible values: "always""prominent""standard""collapsed"
field.show_on_creationbooleanAlwaysIndicates whether the incident creation form shows this field.
field.required_on_creationbooleanAlwaysIndicates whether a create-incident request must supply this field.
field.auto_add_to_layoutbooleanAlwaysIndicates whether Tellagen adds this field to new incident layouts.
field.external_sourcestringOptionalThe source identifier for a custom field in the external category.
field.archived_atstring (RFC 3339)OptionalThe definition archive time. This field is absent for an active definition.
field.created_atstring (RFC 3339)AlwaysThe definition creation time.
field.updated_atstring (RFC 3339)AlwaysThe time of the latest definition change.

Response headers

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response headers
FieldTypeReturnedDescription
Tellagen-Resource-VersionintegerAlwaysThe positive resource version for If-Tellagen-Resource-Version in the next API-key PATCH request.

Minimum: 1.

Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

GET/api/v1/custom-fields/{id}Get custom field

#

Returns one custom-field definition by its positive numeric ID. A definition remains available by ID after it is archived.

Operation ID
getCustomField
Prerequisites
None
Retry guidance
This operation is repeat-safe. Respect Retry-After and use bounded retries. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

bash
curl --request GET \
  --url 'https://{company}.api.tellagen.com/api/v1/custom-fields/{id}' \
  --header 'Authorization: Bearer <token>'

Success: 200

Returns the custom-field definition.

Success response JSON
json
{
  "field": {
    "id": 50,
    "revision": 2,
    "company_id": 7,
    "name": "Affected Users",
    "slug": "affected_users",
    "field_type": "number",
    "description": "Number of users impacted",
    "default_value": 0,
    "config": {
      "min": 0,
      "precision": 0
    },
    "required": false,
    "sort_order": 1,
    "category": "impact",
    "visibility_level": "prominent",
    "show_on_creation": true,
    "required_on_creation": false,
    "auto_add_to_layout": true,
    "created_at": "2025-01-10T09:00:00Z",
    "updated_at": "2025-01-10T09:00:00Z"
  }
}
Request and response contract

Path parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Path parameters
FieldTypeRequiredDescription
idintegerYesA positive numeric custom-field ID returned by this API.

Minimum: 1.

Response 200

Returns the custom-field definition.

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response fields
FieldTypeReturnedDescription
fieldobjectAlwaysThe complete public definition of a custom field.
field.idintegerAlwaysThe positive numeric ID of the custom-field definition.

Minimum: 1.

field.revisionintegerAlwaysThe resource version for concurrency control.

Minimum: 1.

field.company_idintegerAlwaysThe ID of the workspace that owns the definition.

Minimum: 1.

field.namestringAlwaysThe display name of the custom field.
field.slugstringAlwaysThe permanent key used to identify the custom field.
field.field_typestringAlwaysThe value type for this custom field.
Possible values: "string""number""boolean""date""time""datetime""monetary""json""select""multi_select"
field.descriptionstringOptionalThe workspace description of the custom field.
field.default_valueanyOptionalThe default field value. Its type depends on field_type.
field.configobjectOptionalThe validation and option configuration for field_type.
field.requiredbooleanAlwaysIndicates whether each incident must retain a value for this field.
field.sort_orderintegerAlwaysThe display position of the custom field.
field.categorystringAlwaysThe workspace category for the custom field.
Possible values: "context""impact""analysis""external""custom"
field.visibility_levelstringAlwaysThe configured display prominence for the custom field.
Possible values: "always""prominent""standard""collapsed"
field.show_on_creationbooleanAlwaysIndicates whether the incident creation form shows this field.
field.required_on_creationbooleanAlwaysIndicates whether a create-incident request must supply this field.
field.auto_add_to_layoutbooleanAlwaysIndicates whether Tellagen adds this field to new incident layouts.
field.external_sourcestringOptionalThe source identifier for a custom field in the external category.
field.archived_atstring (RFC 3339)OptionalThe definition archive time. This field is absent for an active definition.
field.created_atstring (RFC 3339)AlwaysThe definition creation time.
field.updated_atstring (RFC 3339)AlwaysThe time of the latest definition change.

Response headers

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response headers
FieldTypeReturnedDescription
Tellagen-Resource-VersionintegerAlwaysThe positive resource version for If-Tellagen-Resource-Version in the next API-key PATCH request.

Minimum: 1.

Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

PATCH/api/v1/custom-fields/{id}Update custom field

#

Updates an active custom-field definition. The API combines supplied and stored values before validation. This validation includes the stored default_value. Omitted fields stay unchanged.

Operation ID
updateCustomField
Retry guidance
Read the current resource and reconcile changes before retrying with its current version. A stale version returns 412. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

Use the Tellagen-Resource-Version header from a GET of this resource for <resource-version>.

bash
curl --request PATCH \
  --url 'https://{company}.api.tellagen.com/api/v1/custom-fields/{id}' \
  --header 'Authorization: Bearer <token>' \
  --header 'If-Tellagen-Resource-Version: <resource-version>' \
  --header 'Content-Type: application/json' \
  --data '{
  "required": true,
  "sort_order": 2
}'

Success: 200

Returns the updated custom-field definition.

Success response JSON
json
{
  "field": {
    "id": 50,
    "revision": 3,
    "company_id": 7,
    "name": "Affected Users",
    "slug": "affected_users",
    "field_type": "number",
    "description": "Number of users impacted",
    "config": {
      "min": 0,
      "precision": 0
    },
    "required": true,
    "sort_order": 2,
    "category": "impact",
    "visibility_level": "prominent",
    "show_on_creation": true,
    "required_on_creation": false,
    "auto_add_to_layout": true,
    "created_at": "2025-01-10T09:00:00Z",
    "updated_at": "2025-01-30T12:00:00Z"
  }
}
Request and response contract

Path parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Path parameters
FieldTypeRequiredDescription
idintegerYesA positive numeric custom-field ID returned by this API.

Minimum: 1.

Request headers

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Request headers
FieldTypeRequiredDescription
If-Tellagen-Resource-VersionintegerYesThe current positive resource version from the latest response. API-key PATCH requests must send this value.

Minimum: 1.

Request body

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Request body fields
FieldTypeRequiredDescription
namestringNoThe field name. The length must be from 1 through 64 characters.

Minimum length: 1 characters. · Maximum length: 64 characters.

descriptionstringNoThe replacement field description.
default_valueanyNoThe replacement default value. Its type must match field_type.
configobjectNoThe replacement validation and option configuration for field_type.
requiredbooleanNoControls whether each incident must retain a value for this field.
sort_orderintegerNoThe new display position of the custom field.
categorystringNoThe workspace category.
Allowed values: "context""impact""analysis""external""custom"
visibility_levelstringNoThe display prominence.
Allowed values: "always""prominent""standard""collapsed"
show_on_creationbooleanNoControls whether the incident creation form shows this field.
required_on_creationbooleanNoControls whether a create-incident request must supply this field.
auto_add_to_layoutbooleanNoControls whether Tellagen adds this field to new incident layouts.
external_sourcestringNoThe replacement source identifier for category external.

Response 200

Returns the updated custom-field definition.

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response fields
FieldTypeReturnedDescription
fieldobjectAlwaysThe complete public definition of a custom field.
field.idintegerAlwaysThe positive numeric ID of the custom-field definition.

Minimum: 1.

field.revisionintegerAlwaysThe resource version for concurrency control.

Minimum: 1.

field.company_idintegerAlwaysThe ID of the workspace that owns the definition.

Minimum: 1.

field.namestringAlwaysThe display name of the custom field.
field.slugstringAlwaysThe permanent key used to identify the custom field.
field.field_typestringAlwaysThe value type for this custom field.
Possible values: "string""number""boolean""date""time""datetime""monetary""json""select""multi_select"
field.descriptionstringOptionalThe workspace description of the custom field.
field.default_valueanyOptionalThe default field value. Its type depends on field_type.
field.configobjectOptionalThe validation and option configuration for field_type.
field.requiredbooleanAlwaysIndicates whether each incident must retain a value for this field.
field.sort_orderintegerAlwaysThe display position of the custom field.
field.categorystringAlwaysThe workspace category for the custom field.
Possible values: "context""impact""analysis""external""custom"
field.visibility_levelstringAlwaysThe configured display prominence for the custom field.
Possible values: "always""prominent""standard""collapsed"
field.show_on_creationbooleanAlwaysIndicates whether the incident creation form shows this field.
field.required_on_creationbooleanAlwaysIndicates whether a create-incident request must supply this field.
field.auto_add_to_layoutbooleanAlwaysIndicates whether Tellagen adds this field to new incident layouts.
field.external_sourcestringOptionalThe source identifier for a custom field in the external category.
field.archived_atstring (RFC 3339)OptionalThe definition archive time. This field is absent for an active definition.
field.created_atstring (RFC 3339)AlwaysThe definition creation time.
field.updated_atstring (RFC 3339)AlwaysThe time of the latest definition change.

Response headers

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response headers
FieldTypeReturnedDescription
Tellagen-Resource-VersionintegerAlwaysThe positive resource version for If-Tellagen-Resource-Version in the next API-key PATCH request.

Minimum: 1.

Errors and recovery (9)

Error responses (9)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
412
The resource changed after the client obtained its If-Tellagen-Resource-Version value.
428
An API-key PATCH request did not include the required If-Tellagen-Resource-Version header.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

DELETE/api/v1/custom-fields/{id}Archive custom field

#

Archives a custom-field definition. A repeated request returns 204 without changing the archive time or resource version. Existing incident values remain available as historical data. Values for an archived definition cannot be added, changed, or removed.

Operation ID
archiveCustomField
Retry guidance
Do not retry automatically after an uncertain outcome. Read the resource state and follow this operation’s recovery guidance. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

bash
curl --request DELETE \
  --url 'https://{company}.api.tellagen.com/api/v1/custom-fields/{id}' \
  --header 'Authorization: Bearer <token>'

Success: 204

No response body. Do not try to parse this response as JSON.

Request and response contract

Path parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Path parameters
FieldTypeRequiredDescription
idintegerYesA positive numeric custom-field ID returned by this API.

Minimum: 1.

Returns 204 with no body.

Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

POST/api/v1/custom-fields/{id}/restoreRestore custom field

#

Restores an archived custom-field definition and returns the active definition. A repeated request returns the active definition without changing its resource version. The API retains existing incident values.

Operation ID
restoreCustomField
Retry guidance
Do not retry automatically after an uncertain outcome. Read the resource state and follow this operation’s recovery guidance. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

bash
curl --request POST \
  --url 'https://{company}.api.tellagen.com/api/v1/custom-fields/{id}/restore' \
  --header 'Authorization: Bearer <token>'

Success: 200

Returns the complete active custom-field definition.

Success response JSON
json
{
  "field": {
    "id": 50,
    "revision": 3,
    "company_id": 7,
    "name": "Affected Users",
    "slug": "affected_users",
    "field_type": "number",
    "description": "Number of users impacted",
    "config": {
      "min": 0,
      "precision": 0
    },
    "required": true,
    "sort_order": 2,
    "category": "impact",
    "visibility_level": "prominent",
    "show_on_creation": true,
    "required_on_creation": false,
    "auto_add_to_layout": true,
    "created_at": "2025-01-10T09:00:00Z",
    "updated_at": "2025-01-30T12:00:00Z"
  }
}
Request and response contract

Path parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Path parameters
FieldTypeRequiredDescription
idintegerYesA positive numeric custom-field ID returned by this API.

Minimum: 1.

Response 200

Returns the complete active custom-field definition.

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response fields
FieldTypeReturnedDescription
fieldobjectAlwaysThe complete public definition of a custom field.
field.idintegerAlwaysThe positive numeric ID of the custom-field definition.

Minimum: 1.

field.revisionintegerAlwaysThe resource version for concurrency control.

Minimum: 1.

field.company_idintegerAlwaysThe ID of the workspace that owns the definition.

Minimum: 1.

field.namestringAlwaysThe display name of the custom field.
field.slugstringAlwaysThe permanent key used to identify the custom field.
field.field_typestringAlwaysThe value type for this custom field.
Possible values: "string""number""boolean""date""time""datetime""monetary""json""select""multi_select"
field.descriptionstringOptionalThe workspace description of the custom field.
field.default_valueanyOptionalThe default field value. Its type depends on field_type.
field.configobjectOptionalThe validation and option configuration for field_type.
field.requiredbooleanAlwaysIndicates whether each incident must retain a value for this field.
field.sort_orderintegerAlwaysThe display position of the custom field.
field.categorystringAlwaysThe workspace category for the custom field.
Possible values: "context""impact""analysis""external""custom"
field.visibility_levelstringAlwaysThe configured display prominence for the custom field.
Possible values: "always""prominent""standard""collapsed"
field.show_on_creationbooleanAlwaysIndicates whether the incident creation form shows this field.
field.required_on_creationbooleanAlwaysIndicates whether a create-incident request must supply this field.
field.auto_add_to_layoutbooleanAlwaysIndicates whether Tellagen adds this field to new incident layouts.
field.external_sourcestringOptionalThe source identifier for a custom field in the external category.
field.archived_atstring (RFC 3339)OptionalThe definition archive time. This field is absent for an active definition.
field.created_atstring (RFC 3339)AlwaysThe definition creation time.
field.updated_atstring (RFC 3339)AlwaysThe time of the latest definition change.

Response headers

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response headers
FieldTypeReturnedDescription
Tellagen-Resource-VersionintegerAlwaysThe positive resource version for If-Tellagen-Resource-Version in the next API-key PATCH request.

Minimum: 1.

Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

GET/api/v1/incidents/{id}/custom-fieldsList incident custom-field values

#

Returns one page sorted by field sort_order, custom-field ID, and value-row ID. Values from archived definitions remain available as historical incident data.

Operation ID
listIncidentCustomFieldValues
Prerequisites
None
Retry guidance
This operation is repeat-safe. Respect Retry-After and use bounded retries. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

bash
curl --request GET \
  --url 'https://{company}.api.tellagen.com/api/v1/incidents/{id}/custom-fields' \
  --header 'Authorization: Bearer <token>'

Success: 200

Returns custom-field values and pagination fields.

Success response JSON
json
{
  "values": [
    {
      "id": 1,
      "incident_id": 1,
      "custom_field_id": 50,
      "value": 1500,
      "created_at": "2025-01-30T12:05:00Z",
      "updated_at": "2025-01-30T12:05:00Z"
    }
  ],
  "pagination": {
    "limit": 50,
    "has_more": false
  }
}
Request and response contract

Path parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Path parameters
FieldTypeRequiredDescription
idintegerYesA positive numeric incident ID returned by this API. The permanent incident reference is suitable for stored references and external links.

Minimum: 1.

Query parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Query parameters
FieldTypeRequiredDescription
limitintegerNoThe maximum number of items in one page. The default is 50, and the maximum is 100.

Minimum: 1. · Maximum: 100. · Default: 50.

cursorstringNoThe next_cursor value from the previous page. Clients treat this value as opaque and do not create, inspect, or change it.

Minimum length: 1 characters. · Maximum length: 4096 characters.

Response 200

Returns custom-field values and pagination fields.

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response fields
FieldTypeReturnedDescription
valuesobject[]AlwaysThe custom-field values in this page.
values[].idintegerAlwaysThe positive numeric ID of the stored value.

Minimum: 1.

values[].incident_idintegerAlwaysThe positive numeric ID of the incident.

Minimum: 1.

values[].custom_field_idintegerAlwaysThe positive numeric ID of the custom-field definition.

Minimum: 1.

values[].valueanyOptionalThe stored field value. Its type depends on field_type.
values[].created_atstring (RFC 3339)AlwaysThe initial value storage time.
values[].updated_atstring (RFC 3339)AlwaysThe time of the latest value change.
paginationobjectAlwaysPagination details for a collection response.
pagination.limitintegerAlwaysThe maximum number of items requested for this page.

Minimum: 1. · Maximum: 100.

pagination.has_morebooleanAlwaysIndicates whether another page is available.
pagination.next_cursorstringOptionalThe opaque cursor for the next page. This field is absent on the final page.
Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

PATCH/api/v1/incidents/{id}/custom-fieldsPartially update incident custom-field values

#

Updates one or more custom-field values for an incident. The request must contain at least one { field_id, value } item. Each value must match its field type and configured limits or options. A required field rejects JSON null. Omitted fields stay unchanged. An unchanged value does not update timestamps or create severity, event, or changelog changes. API v1 still accepts deprecated PUT requests for this path. The next major API version will not accept PUT.

Operation ID
updateIncidentCustomFieldValues
Retry guidance
Do not retry automatically after an uncertain outcome. Read the resource state and follow this operation’s recovery guidance. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

bash
curl --request PATCH \
  --url 'https://{company}.api.tellagen.com/api/v1/incidents/{id}/custom-fields' \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "values": [
    {
      "field_id": 50,
      "value": 1500
    },
    {
      "field_id": 51,
      "value": "enterprise"
    }
  ]
}'

Success: 200

Returns all custom-field values for the incident after the update.

Success response JSON
json
{
  "values": [
    {
      "id": 1,
      "incident_id": 1,
      "custom_field_id": 50,
      "value": 1500,
      "created_at": "2025-01-30T12:05:00Z",
      "updated_at": "2025-01-30T12:10:00Z"
    },
    {
      "id": 2,
      "incident_id": 1,
      "custom_field_id": 51,
      "value": "enterprise",
      "created_at": "2025-01-30T12:10:00Z",
      "updated_at": "2025-01-30T12:10:00Z"
    }
  ]
}
Request and response contract

Path parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Path parameters
FieldTypeRequiredDescription
idintegerYesA positive numeric incident ID returned by this API. The permanent incident reference is suitable for stored references and external links.

Minimum: 1.

Request body

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Request body fields
FieldTypeRequiredDescription
valuesobject[]YesA non-empty array of { field_id, value } objects. Each field_id must be unique. The API validates each value against field_type and its configuration. Supported types include strings, numbers, booleans, dates, times, monetary objects, JSON values, and configured selections.

Minimum items: 1.

values[].field_idintegerYesThe positive ID of the custom-field definition.

Minimum: 1.

values[].valueanyYesThe new field value. Its type must match field_type.

Response 200

Returns all custom-field values for the incident after the update.

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response fields
FieldTypeReturnedDescription
valuesobject[]AlwaysAll current custom-field values for the incident.
values[].idintegerAlwaysThe positive numeric ID of the stored value.

Minimum: 1.

values[].incident_idintegerAlwaysThe positive numeric ID of the incident.

Minimum: 1.

values[].custom_field_idintegerAlwaysThe positive numeric ID of the custom-field definition.

Minimum: 1.

values[].valueanyOptionalThe stored field value. Its type depends on field_type.
values[].created_atstring (RFC 3339)AlwaysThe initial value storage time.
values[].updated_atstring (RFC 3339)AlwaysThe time of the latest value change.
Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

DELETE/api/v1/incidents/{id}/custom-fields/{fieldId}Unset one incident custom-field value

#

Removes one stored custom-field value from an incident. A required field cannot be unset. If the incident has no stored value, the request still succeeds without a change.

Operation ID
unsetIncidentCustomFieldValue
Retry guidance
Do not retry automatically after an uncertain outcome. Read the resource state and follow this operation’s recovery guidance. Retry rules

Example request

Replace {company}, <token>, and any other placeholders with your values.

bash
curl --request DELETE \
  --url 'https://{company}.api.tellagen.com/api/v1/incidents/{id}/custom-fields/{fieldId}' \
  --header 'Authorization: Bearer <token>'

Success: 200

Returns all remaining custom-field values for the incident.

Success response JSON
json
{
  "values": [
    {
      "id": 2,
      "incident_id": 1,
      "custom_field_id": 51,
      "value": "enterprise",
      "created_at": "2025-01-30T12:10:00Z",
      "updated_at": "2025-01-30T12:10:00Z"
    }
  ]
}
Request and response contract

Path parameters

Nested fields apply when their parent is supplied. Optional does not imply nullable. Read each field’s clearing rules.

Path parameters
FieldTypeRequiredDescription
idintegerYesA positive numeric incident ID returned by this API. The permanent incident reference is suitable for stored references and external links.

Minimum: 1.

fieldIdintegerYesA positive numeric custom-field ID returned by this API.

Minimum: 1.

Response 200

Returns all remaining custom-field values for the incident.

Always means present when the parent object exists. A present field can be null. Child fields apply to each array item.

Response fields
FieldTypeReturnedDescription
valuesobject[]AlwaysAll current custom-field values for the incident.
values[].idintegerAlwaysThe positive numeric ID of the stored value.

Minimum: 1.

values[].incident_idintegerAlwaysThe positive numeric ID of the incident.

Minimum: 1.

values[].custom_field_idintegerAlwaysThe positive numeric ID of the custom-field definition.

Minimum: 1.

values[].valueanyOptionalThe stored field value. Its type depends on field_type.
values[].created_atstring (RFC 3339)AlwaysThe initial value storage time.
values[].updated_atstring (RFC 3339)AlwaysThe time of the latest value change.
Errors and recovery (7)

Error responses (7)

400
The API rejected the request because its syntax or one of its values is invalid.
401
The request does not contain valid authentication.
403
Authentication succeeded, but the caller lacks the required API scope or workspace permission.
404
The requested resource does not exist or is not available to the caller.
409
The request conflicts with the current resource state. idempotency_key_reused means that the key belongs to different request content. idempotency_in_progress means that an identical request is still in progress. idempotency_outcome_unknown means that an earlier request may have completed, but its result could not be stored and must not be retried automatically.
429
The workspace exceeded an active request limit.
500
An internal server error prevented completion of the request.

Read this resource as Markdown · OpenAPI contract