Update Existing Custom Field for Leads crm.lead.userfield.update

Scope: crm

Who can execute the method: CRM administrator

The method crm.lead.userfield.update updates an existing custom field for leads.

Method Parameters

Required parameters are marked with *

Name
type

Description

id*
integer

Identifier of the custom field.

The identifier can be obtained using the methods crm.lead.userfield.add and crm.lead.userfield.list

fields*
object

Object in the format:

{
            field_1: value_1,
            field_2: value_2,
            ...,
            field_n: value_n,
        }
        
  • field_n — name of the field
  • value_n — new value of the field

The list of available fields is described below.

An incorrect field in fields will be ignored.

Only those fields that need to be changed should be passed in fields

Parameter fields

Required parameters are marked with *

Parameter
type

Description

MANDATORY
boolean

Is the field mandatory? Possible values:

  • Y — yes
  • N — no

SHOW_FILTER
boolean

Should the field be shown in the filter? Possible values:

  • Y — yes
  • N — no

XML_ID
string

External code

SETTINGS
object

Additional parameters for the field. Each field type USER_TYPE_ID has its own set of available settings, which are described below.

The field only overwrites the values that are passed

LIST
uf_enum_element[]

List of possible values for the custom field of type enumeration, described below

SORT
integer

Sort index. Must be greater than zero

SHOW_IN_LIST
boolean

Should the custom field be shown in the list?

This parameter does not affect anything within crm.

Possible values:

  • Y — yes
  • N — no

EDIT_IN_LIST
boolean

Allow user editing? Possible values:

  • Y — yes
  • N — no
    The value N is not supported by all field types within crm

IS_SEARCHABLE
boolean

Are the field values searchable?

This parameter does not affect anything within crm.

Possible values:

  • Y — yes
  • N — no

LIST_FILTER_LABEL
string|lang_map

Filter label in the list.

When passing a string, it is set for each language.

For languages where no value is explicitly specified, it will be recorded as ''.

The field completely overwrites the previous value

LIST_COLUMN_LABEL
string|lang_map

Header in the list.

When passing a string, it is set for each language.

For languages where no value is explicitly specified, it will be recorded as ''.

The field completely overwrites the previous value

EDIT_FORM_LABEL
string|lang_map

Label in the edit form.

When passing a string, it is set for each language.

For languages where no value is explicitly specified, it will be recorded as ''.

The field completely overwrites the previous value

ERROR_MESSAGE
string|lang_map

Error message

HELP_MESSAGE
string|lang_map

Help

Parameter SETTINGS

Each type of custom field has its own set of additional settings. This method only supports those described below.

Name
type

Description

DEFAULT_VALUE
string

Default value

ROWS
integer

Number of rows in the input field. Must be greater than 0

Name
type

Description

DEFAULT_VALUE
integer

Default value

Name
type

Description

DEFAULT_VALUE
double

Default value

PRECISION
integer

Number precision. Must be greater than or equal to 0

Name
type

Description

DEFAULT_VALUE
integer

Default value, where 1 — yes, 0 — no.

Possible values:

  • >= 1 -> 1
  • <= 0 -> 0

DISPLAY
string

Appearance. Possible values:

  • CHECKBOX — checkbox
  • RADIO — radio buttons
  • DROPDOWN — dropdown list

Name
type

Description

DEFAULT_VALUE
object

Default value.
Object format:

{
            VALUE: datetime|date,
            TYPE: 'NONE'|'NOW'|'FIXED',
        }
        

where:

  • VALUE — default value of type datetime or date
  • TYPE — type of default value:
    • NONE — do not set a default value
    • NOW — use the current time/date
    • FIXED — use the time/date from VALUE

Name
type

Description

DISPLAY
string

Appearance. Possible values:

  • LIST — list
  • UI — input list
  • CHECKBOX — checkboxes
  • DIALOG — entity selection dialog

LIST_HEIGHT

Height of the list. Must be greater than 0.

Available only when DISPLAY = LIST or DISPLAY = UI

Name
type

Description

IBLOCK_TYPE_ID
string

Identifier of the information block type

IBLOCK_ID
string

Identifier of the information block

DEFAULT_VALUE
string

Default value

DISPLAY
string

Appearance. Possible values:

  • DIALOG — dialog
  • UI — input list
  • LIST — list
  • CHECKBOX — checkboxes

LIST_HEIGHT
integer

Height of the list. Must be greater than 0

ACTIVE_FILTER
boolean

Should elements with the active flag be shown? Possible values:

  • Y — yes
  • N — no

Name
type

Description

ENTITY_TYPE
string

Identifier of the reference type.

Use crm.status.entity.types to find possible values

Name
type

Description

LEAD
boolean

Is the binding to Leads enabled? Possible values:

  • Y — yes
  • N — no

CONTACT
boolean

Is the binding to Contacts enabled? Possible values:

  • Y — yes
  • N — no

COMPANY
boolean

Is the binding to Companies enabled? Possible values:

  • Y — yes
  • N — no

DEAL
boolean

Is the binding to Deals enabled? Possible values:

  • Y — yes
  • N — no

Parameter LIST

Name
type

Description

VALUE
string

Value of the list element.

List elements with an empty or missing VALUE will be ignored

SORT
integer

Sort index. Must be greater than or equal to 0

DEF
boolean

Is the list element the default value? Possible values:

  • Y — yes
  • N — no

For multiple fields, multiple DEF = Y are allowed. For non-multiple fields, the first passed list element with DEF = Y will be considered default

XML_ID
string

External code of the value. Must be unique within the elements of the custom field

Code Examples

How to Use Examples in Documentation

Example of Updating a String Type Custom Field

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"id":536,"fields":{"MANDATORY":"N","SHOW_FILTER":"N","SETTINGS":{"DEFAULT_VALUE":"Hello, World! Default value (changed)","ROWS":10},"SORT":2000,"EDIT_IN_LIST":"N","LIST_FILTER_LABEL":"Hello, World! Filter (changed)","LIST_COLUMN_LABEL":{"en":"Hello, World! Column (changed)","de":"Hallo, Welt! Spalte (geändert)"},"EDIT_FORM_LABEL":{"en":"Hello, World! Edit (changed)","de":"Hallo, Welt! Bearbeiten (geändert)"},"ERROR_MESSAGE":{"en":"Hello, World! Error (changed)","de":"Hallo, Welt! Fehler (geändert)"},"HELP_MESSAGE":{"en":"Hello, World! Help (changed)","de":"Hallo, Welt! Hilfe (geändert)"}}}' \
        https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/crm.lead.userfield.update
        
curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"id":536,"fields":{"MANDATORY":"N","SHOW_FILTER":"N","SETTINGS":{"DEFAULT_VALUE":"Hello, World! Default value (changed)","ROWS":10},"SORT":2000,"EDIT_IN_LIST":"N","LIST_FILTER_LABEL":"Hello, World! Filter (changed)","LIST_COLUMN_LABEL":{"en":"Hello, World! Column (changed)","de":"Hallo, Welt! Spalte (geändert)"},"EDIT_FORM_LABEL":{"en":"Hello, World! Edit (changed)","de":"Hallo, Welt! Bearbeiten (geändert)"},"ERROR_MESSAGE":{"en":"Hello, World! Error (changed)","de":"Hallo, Welt! Fehler (geändert)"},"HELP_MESSAGE":{"en":"Hello, World! Help (changed)","de":"Hallo, Welt! Hilfe (geändert)"}},"auth":"**put_access_token_here**"}' \
        https://**put_your_bitrix24_address**/rest/crm.lead.userfield.update
        
try
        {
            const response = await $b24.callMethod(
                'crm.lead.userfield.update',
                {
                    id: 536,
                    fields: {
                        MANDATORY: 'N',
                        SHOW_FILTER: 'N',
                        SETTINGS: {
                            DEFAULT_VALUE: 'Hello, World! Default value (changed)',
                            ROWS: 10,
                        },
                        SORT: 2000,
                        EDIT_IN_LIST: 'N',
                        LIST_FILTER_LABEL: 'Hello, World! Filter (changed)',
                        LIST_COLUMN_LABEL: {
                            en: 'Hello, World! Column (changed)',
                            de: 'Hallo, Welt! Spalte (geändert)',
                        },
                        EDIT_FORM_LABEL: {
                            en: 'Hello, World! Edit (changed)',
                            de: 'Hallo, Welt! Bearbeiten (geändert)',
                        },
                        ERROR_MESSAGE: {
                            en: 'Hello, World! Error (changed)',
                            de: 'Hallo, Welt! Fehler (geändert)',
                        },
                        HELP_MESSAGE: {
                            en: 'Hello, World! Help (changed)',
                            de: 'Hallo, Welt! Hilfe (geändert)',
                        },
                    },
                }
            );
        
            console.info(response.getData().result);
        }
        catch (error)
        {
            console.error(error);
        }
        
try {
            $result = $serviceBuilder
                ->getCRMScope()
                ->leadUserfield()
                ->update(
                    536,
                    [
                        'MANDATORY' => 'N',
                        'SHOW_FILTER' => 'N',
                        'SETTINGS' => [
                            'DEFAULT_VALUE' => 'Hello, World! Default value (changed)',
                            'ROWS' => 10,
                        ],
                        'SORT' => 2000,
                        'EDIT_IN_LIST' => 'N',
                        'LIST_FILTER_LABEL' => 'Hello, World! Filter (changed)',
                    ]
                );
        
            print($result->isSuccess() ? 'Updated' : 'Failed');
        } catch (Throwable $e) {
            print('Error: ' . $e->getMessage());
        }
        
BX24.callMethod(
            'crm.lead.userfield.update',
            {
                id: 536,
                fields: {
                    MANDATORY: 'N',
                    SHOW_FILTER: 'N',
                    SETTINGS: {
                        DEFAULT_VALUE: 'Hello, World! Default value (changed)',
                        ROWS: 10,
                    },
                    SORT: 2000,
                    EDIT_IN_LIST: 'N',
                    LIST_FILTER_LABEL: 'Hello, World! Filter (changed)',
                },
            },
            (result) => {
                result.error()
                    ? console.error(result.error())
                    : console.info(result.data());
            }
        );
        
require_once('crest.php');
        
        $result = CRest::call(
            'crm.lead.userfield.update',
            [
                'id' => 536,
                'fields' => [
                    'MANDATORY' => 'N',
                    'SHOW_FILTER' => 'N',
                    'SETTINGS' => [
                        'DEFAULT_VALUE' => 'Hello, World! Default value (changed)',
                        'ROWS' => 10,
                    ],
                    'SORT' => 2000,
                    'EDIT_IN_LIST' => 'N',
                    'LIST_FILTER_LABEL' => 'Hello, World! Filter (changed)',
                ]
            ]
        );
        
        echo '<PRE>';
        print_r($result);
        echo '</PRE>';
        

Response Handling

HTTP Status: 200

{
            "result": true,
            "time": {
                "start": 1753790234.592207,
                "finish": 1753790234.762644,
                "duration": 0.17043709754943848,
                "processing": 0.11566615104675293,
                "date_start": "2025-07-29T14:57:14+02:00",
                "date_finish": "2025-07-29T14:57:14+02:00",
                "operating_reset_at": 1753790834,
                "operating": 0.11564803123474121
            }
        }
        

Returned Data

Name
type

Description

result
boolean

Root element of the response, contains true in case of success

time
time

Information about the request execution time

Error Handling

HTTP Status: 400

{
            "error": "",
            "error_description": "Access denied."
        }
        

Name
type

Description

error
string

String error code. It may consist of digits, Latin letters, and underscores

error_description
error_description

Textual description of the error. The description is not intended to be shown to the end user in its raw form

Possible Error Codes

Code

Description

Value

400

Parameter 'fields' must be array

The passed fields is not an object

400

ID is not defined or invalid

The passed id is less than zero or not passed at all

403

Access denied

Occurs when:

  • the user does not have administrative rights
  • the user attempts to modify a custom field not linked to leads

ERROR_NOT_FOUND

The entity with ID 'id' is not found

The custom field with the passed id does not exist

ERROR_CORE

List item with value XML_ID='XML_ID' already exists

The passed XML_ID for the list item must be unique within the elements of the custom field

Continue Learning