For AI agents: markdown of this page — /docs-content-en/entities/catalog-product-properties/fields.md documentation index — /llms.txt
Property fields
GET /v1/catalog-product-properties/fields
Returns the product property field reference with types and the "read-only" flag, and the operations available in a batch request.
Examples
curl — personal key
curl "https://vibecode.bitrix24.com/v1/catalog-product-properties/fields" \
-H "X-Api-Key: YOUR_API_KEY"
curl — OAuth application
curl "https://vibecode.bitrix24.com/v1/catalog-product-properties/fields" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/v1/catalog-product-properties/fields', {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { success, data } = await res.json()
console.log('Fields:', Object.keys(data.fields).length)
JavaScript — OAuth application
const res = await fetch('https://vibecode.bitrix24.com/v1/catalog-product-properties/fields', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data } = await res.json()
Response fields
data.fields is an object whose key matches the field name, and whose value contains type (the field type) and readonly (true — the field cannot be passed on create or update). data.batch lists the operations available in a batch request.
| Field | Type | RO | Description |
|---|---|---|---|
id |
number | yes | Property identifier. This is the NNN in the propertyNNN key of a catalog product |
iblockId |
number | no¹ | Catalog ID. List: GET /v1/catalogs. Required on create |
name |
string | no | Property display name. Required on create |
propertyType |
string | no² | Base type: N number, S string, L list, F file, E element binding, G section binding. Required on create |
code |
string | no | Symbolic code: Latin letters, digits, underscore, first character not a digit |
active |
boolean | no | Whether the property is active |
sort |
number | no | Sort index |
defaultValue |
string | no | Default value |
userType |
string | no² | User type, for example directory, DateTime, Money, HTML |
userTypeSettings |
object | no | User type settings |
listType |
string | no | List appearance: L dropdown, C checkboxes |
multiple |
boolean | no | Multiple value |
multipleCnt |
number | no | Number of inputs for multiple values |
rowCount |
number | no | Number of input rows |
colCount |
number | no | Number of input columns |
withDescription |
boolean | no | Field with a value description |
searchable |
boolean | no | Participates in search |
filtrable |
boolean | no | Available for the filter |
isRequired |
boolean | no | Required to fill in |
linkIblockId |
number | no | Linked catalog ID for binding types |
fileType |
string | no | Allowed file extensions for type F |
xmlId |
string | no | External identifier |
hint |
string | no | Field hint |
timestampX |
datetime | yes | Last modification date |
¹ iblockId is writable on create only (createOnly) — in the reference it comes back with readonly: false and createOnly: true.
² propertyType and userType are writable on create only (createOnly) — in the reference they come back with readonly: false and createOnly: true, and on PATCH they are rejected with READONLY_FIELD.
| Field | Type | Description |
|---|---|---|
success |
boolean | Always true on success |
data.fields.<name>.type |
string | Field type: number, string, boolean, object, datetime |
data.fields.<name>.readonly |
boolean | true — the field is filled by the system and is not accepted on create and update |
data.fields.<name>.createOnly |
boolean | true — the field is accepted on create only — on PATCH it is rejected with READONLY_FIELD (present on iblockId, propertyType, userType) |
data.batch |
string[] | Property operations available in a batch request: create, update, delete |
Response example
{
"success": true,
"data": {
"fields": {
"id": { "type": "number", "readonly": true },
"iblockId": { "type": "number", "readonly": false, "createOnly": true },
"name": { "type": "string", "readonly": false },
"propertyType": { "type": "string", "readonly": false, "createOnly": true },
"code": { "type": "string", "readonly": false },
"active": { "type": "boolean", "readonly": false },
"sort": { "type": "number", "readonly": false },
"defaultValue": { "type": "string", "readonly": false },
"userType": { "type": "string", "readonly": false, "createOnly": true },
"userTypeSettings": { "type": "object", "readonly": false },
"listType": { "type": "string", "readonly": false },
"multiple": { "type": "boolean", "readonly": false },
"multipleCnt": { "type": "number", "readonly": false },
"rowCount": { "type": "number", "readonly": false },
"colCount": { "type": "number", "readonly": false },
"withDescription": { "type": "boolean", "readonly": false },
"searchable": { "type": "boolean", "readonly": false },
"filtrable": { "type": "boolean", "readonly": false },
"isRequired": { "type": "boolean", "readonly": false },
"linkIblockId": { "type": "number", "readonly": false },
"fileType": { "type": "string", "readonly": false },
"xmlId": { "type": "string", "readonly": false },
"hint": { "type": "string", "readonly": false },
"timestampX": { "type": "datetime", "readonly": true }
},
"batch": ["create", "update", "delete"]
}
}
Error response example
403 — no scope:
{
"success": false,
"error": {
"code": "SCOPE_DENIED",
"message": "This endpoint requires 'catalog' scope"
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 403 | SCOPE_DENIED |
The API key does not have the catalog scope |
| 401 | MISSING_API_KEY |
The X-Api-Key header was not passed |
Full list of common API errors — Errors.
Known specifics
The property type is immutable. propertyType and userType are chosen on create. A PATCH that includes either is rejected with 400 READONLY_FIELD — the base type of an existing property does not change.
A property is bound to a catalog (iblockId). The catalog is chosen on create. Changing it via update is not supported. A PATCH that changes iblockId is rejected with 400 READONLY_FIELD.
Relation to product fields. List-type properties (L) come back on a catalog product in fields of the form propertyNNN, where NNN is the property id. This reference turns the id into a name and type so you can build an id → name map and label propertyNNN values.
User type settings. The userTypeSettings field is an object whose contents depend on the userType value. It is passed in full on create and update.