# Open Channel configuration fieldsGET /v1/openline-configs/fields
Returns the schema of fields available for filtering and sorting, as well as the full registry of fields in the list, get, and search responses.
# Examples# curl — personal key
Terminal
Copy
curl "https://vibecode.bitrix24.com/v1/openline-configs/fields" \
-H "X-Api-Key: YOUR_API_KEY"
# curl — OAuth application
Terminal
Copy
curl "https://vibecode.bitrix24.com/v1/openline-configs/fields" \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN"
# JavaScript — personal key
javascript
Copy
const res = await fetch('https://vibecode.bitrix24.com/v1/openline-configs/fields', {
headers: {
'X-Api-Key': 'YOUR_API_KEY',
},
})
const { success, data } = await res.json()
console.log('Schema fields:', Object.keys(data.fields))
# JavaScript — OAuth application
javascript
Copy
const res = await fetch('https://vibecode.bitrix24.com/v1/openline-configs/fields', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { success, data } = await res.json()
# Response fieldsThe /fields endpoint returns data.fields — a description of all fields in the list, get, and search responses: each field carries type, readonly, a label, and a description. Field names are in camelCase . The full set in get is 95 fields, in list/search — 91 (without the 4 operator queue fields). data additionally contains aggregatable and batch.
# Field schema (data.fields)/fields returns the full field set — each with type, readonly, label, and description. Filtering (filter), sorting (sort), and grouping (groupBy) operate on these camelCase names. Below are the core fields most often used in sort and filter:
Field
Type
RO
Description
id
number
yes
Configuration identifier
name
string
Open Channel name
active
boolean
Whether the channel is active
queueType
string
Distribution algorithm: all — to all operators at once, evenly — evenly, strictly — strictly in the queue order
workTimeFrom
string
Start of working hours (for example, "8" or "9.30")
workTimeTo
string
End of working hours
data additionally specifies:
aggregatable — fields available for groupBy: ["active", "queueType"]
batch — the set of batch operations declared for this entity in the /fields response: empty array []
# Full response field registry (list / get / search)In get the data object contains 95 fields (all camelCase), in list/search — 91 (without the 4 fields marked "get only": queue, queueFull, queueUsersFields, queueOnline).
# Core
Field
Type
RO
Source
Description
id
number
yes
everywhere
Configuration identifier
name
string
everywhere
Open Channel name
active
boolean
everywhere
Channel is active (true/false)
temporary
string
everywhere
Temporary channel: "Y" / "N"
xmlId
string|null
everywhere
External identifier
languageId
string|null
everywhere
Channel language (for example, "en"). null if the language is not set
# Queue and operators
Field
Type
RO
Source
Description
queueType
string
everywhere
Distribution algorithm: all — to all operators at once, evenly — evenly, strictly — strictly in the queue order
queueTime
string
everywhere
Wait time in the queue (seconds)
noAnswerTime
string
everywhere
Time without an operator response before switching (seconds)
checkAvailable
string
everywhere
Check operator availability: "Y" / "N"
maxChat
string|null
everywhere
Maximum number of simultaneous chats per operator ("0" — no limit). null if not set
typeMaxChat
string|null
everywhere
Chat-limit counting type: answered — only accepted, total — all. null if not set
queue
string[]
yes
get only
Array of operator IDs in the queue (strings)
queueFull
object
yes
get only
Operator objects with the fields ID, SORT, USER_ID, DEPARTMENT_ID, USER_NAME, USER_WORK_POSITION, USER_AVATAR, USER_AVATAR_ID
queueUsersFields
object
yes
get only
Operator profile data: USER_NAME, USER_WORK_POSITION, USER_AVATAR, USER_AVATAR_ID
queueOnline
string
yes
get only
Whether any operators are online at the moment: "Y" / "N"
# CRM integration
Field
Type
RO
Source
Description
crm
string
everywhere
Enable CRM integration: "Y" / "N"
crmCreate
string
everywhere
Type of CRM record created on the first inquiry: deal, lead, contact, company
crmCreateSecond
string
everywhere
Record type on repeat inquiries (numeric type identifier)
crmCreateThird
string
everywhere
Record type on the third and subsequent inquiries: "Y" / "N"
crmForward
string
everywhere
Forward the inquiry to the responsible person from CRM: "Y" / "N"
crmChatTracker
string
everywhere
Enable the chat tracker in CRM: "Y" / "N"
crmTransferChange
string
everywhere
Change the responsible person when transferring the chat: "Y" / "N"
crmSource
string
everywhere
CRM record source: create — create, any other value — take from history
# Welcome message
Field
Type
RO
Source
Description
welcomeMessage
string
everywhere
Show the welcome message: "Y" / "N"
welcomeMessageText
string
everywhere
Welcome text (supports BB code)
watchTyping
string
everywhere
Show the typing indicator: "Y" / "N"
sendWelcomeEachSession
string
everywhere
Send the welcome on every new session: "Y" / "N"
# Welcome bot
Field
Type
RO
Source
Description
welcomeBotEnable
string
everywhere
Enable the welcome bot: "Y" / "N"
welcomeBotId
string
everywhere
Bot ID. List: GET /v1/bots
welcomeBotTime
string
everywhere
Bot response wait time (seconds)
welcomeBotJoin
string
everywhere
When the bot joins: always — always, other values per configuration
welcomeBotLeft
string
everywhere
When the bot leaves the chat: queue — after queueing, other values per configuration
# Working hours
Field
Type
RO
Source
Description
workTimeEnable
string
everywhere
Enable the working-hours schedule: "Y" / "N"
workTimeFrom
string
everywhere
Start of the working day (for example, "8", "9.30")
workTimeTo
string
everywhere
End of the working day
workTimeTimezone
string
everywhere
Time zone (for example, "UTC")
workTimeHolidays
string[]
everywhere
Holiday non-working days in "DD.MM" format (for example, ["1.01","7.01"])
workTimeDayoff
string[]
everywhere
Days off of the week: "MO", "TU", "WE", "TH", "FR", "SA", "SU"
# Non-working-hours, no-answer, and close scenariosThree groups of four fields each — scenario, form, bot, text:
Field
Type
RO
Source
Description
workTimeDayoffRule
string
everywhere
Action on a day off: text — message, form — form, bot — bot, none — nothing
workTimeDayoffFormId
string
everywhere
ID of the form for non-working hours
workTimeDayoffBotId
string
everywhere
ID of the bot for non-working hours. List: GET /v1/bots
workTimeDayoffText
string
everywhere
Message text during non-working hours (supports BB code)
noAnswerRule
string
everywhere
Action on no answer: text, form, bot, none
noAnswerFormId
string
everywhere
ID of the form on no answer
noAnswerBotId
string
everywhere
ID of the bot on no answer. List: GET /v1/bots
noAnswerText
string
everywhere
Message text on no answer
closeRule
string
everywhere
Action on chat close: text, form, bot, none
closeFormId
string
everywhere
ID of the form on close
closeBotId
string
everywhere
ID of the bot on close. List: GET /v1/bots
closeText
string
everywhere
Message text on close
fullCloseTime
string
everywhere
Time until the chat is fully closed (seconds)
confirmClose
string
everywhere
Ask for confirmation when closing the chat: "Y" / "N"
showNotificationRedirect
string|null
everywhere
Show a notification on redirect: "Y" / "N" / null
# Auto-close on inactivity
Field
Type
RO
Source
Description
autoCloseRule
string
everywhere
Action when the inactivity time expires: text, form, bot, none
autoCloseFormId
string
everywhere
ID of the form on auto-close
autoCloseBotId
string
everywhere
ID of the bot on auto-close. List: GET /v1/bots
autoCloseTime
string
everywhere
Time until the chat auto-closes (seconds)
autoCloseText
string|null
everywhere
Text on auto-close. An unset value comes back as null
autoExpireTime
string
everywhere
Session expiration time on inactivity (seconds)
# Quality rating
Field
Type
RO
Source
Description
voteMessage
string
everywhere
Enable the rating request: "Y" / "N"
voteTimeLimit
string
everywhere
Time limit for the rating (seconds, "0" — no limit)
voteBeforeFinish
string
everywhere
Request the rating before finishing the chat: "Y" / "N"
voteClosingDelay
string
everywhere
Delay closing after the rating: "Y" / "N"
voteMessage1Text
string
everywhere
Rating request text (simple messages with buttons)
voteMessage1Like
string
everywhere
Response on a positive rating
voteMessage1Dislike
string
everywhere
Response on a negative rating
voteMessage2Text
string
everywhere
Rating request text (text mode, 1/0)
voteMessage2Like
string
everywhere
Response on 1 (positive)
voteMessage2Dislike
string
everywhere
Response on 0 (negative)
# Agreements and categories
Field
Type
RO
Source
Description
agreementMessage
string
everywhere
Request consent to the terms: "Y" / "N"
agreementId
string
everywhere
ID of the terms document
categoryEnable
string
everywhere
Enable inquiry categorization: "Y" / "N"
categoryId
string
everywhere
ID of the default category
Field
Type
RO
Source
Description
useWelcomeForm
string
everywhere
Show a form before queueing: "Y" / "N"
welcomeFormId
string
everywhere
ID of the wait form
welcomeFormDelay
string
everywhere
Delay showing the form: "Y" / "N"
ignoreWelcomeFormResponsible
string
everywhere
Skip the form for the responsible person from CRM: "Y" / "N"
# Operator and session
Field
Type
RO
Source
Description
operatorData
string
everywhere
Operator data in the chat: profile — full profile
defaultOperatorData
array
everywhere
Default data when no operators are present. An empty set comes back as []
sessionPriority
string
everywhere
Session priority ("0" — standard)
quickAnswersIblockId
string
everywhere
ID of the information block with quick answers
# KPI
Field
Type
RO
Source
Description
kpiFirstAnswerTime
string
everywhere
First-response time target (seconds)
kpiFirstAnswerAlert
string
everywhere
Send an alert when the first-response KPI is breached: "Y" / "N"
kpiFirstAnswerList
string[]
everywhere
List of recipient IDs for the first-response KPI alert. An empty set comes back as []
kpiFirstAnswerText
string|null
everywhere
Alert text template (supports #OPERATOR#, #DIALOG#). null if not set
kpiFurtherAnswerTime
string
everywhere
Subsequent-response time target (seconds)
kpiFurtherAnswerAlert
string
everywhere
Send an alert when the subsequent-response KPI is breached: "Y" / "N"
kpiFurtherAnswerList
string[]
everywhere
List of recipient IDs for the alert. An empty set comes back as []
kpiFurtherAnswerText
string|null
everywhere
Alert text template. null if not set
kpiCheckOperatorActivity
string
everywhere
Monitor operator activity: "Y" / "N"
sendNotificationEmptyQueue
string
everywhere
Notify on an empty queue: "Y" / "N"
# Service
Field
Type
RO
Source
Description
dateCreate
object
yes
everywhere
Creation date — comes back as an empty object {}
dateModify
object
yes
everywhere
Last-modification date — comes back as an empty object {}
modifyUserId
string
yes
everywhere
ID of the user who made the last change. Lookup: GET /v1/users
# Response exampleA few representative fields are shown. The full set is larger — 95 fields in get, 91 in list/search.
JSON
Copy
{
"success": true,
"data": {
"fields": {
"id": { "type": "number", "readonly": true, "label": "ID", "description": "Configuration identifier." },
"name": { "type": "string", "readonly": false, "label": "Line name", "description": "Open line name." },
"active": { "type": "boolean", "readonly": false, "label": "Line active", "description": "Line is active (true/false)." },
"queueType": { "type": "string", "readonly": false, "label": "Distribution algorithm", "description": "Distribution algorithm: all — to everyone at once, evenly — evenly, strictly — strictly by queue order." },
"crmCreate": { "type": "string", "readonly": false, "label": "CRM record to create", "description": "Type of CRM record created on first contact: deal, lead, contact, company." },
"welcomeMessage": { "type": "string", "readonly": false, "label": "Show welcome", "description": "Show welcome message: Y/N." },
"workTimeFrom": { "type": "string", "readonly": false, "label": "Work day start", "description": "Work day start (for example 8, 9.30)." }
},
"aggregatable": ["active", "queueType"],
"batch": []
}
}
# Error response example403 — no scope:
JSON
Copy
{
"success": false,
"error": {
"code": "SCOPE_DENIED",
"message": "Access denied. Required scope: imopenlines"
}
}
# Errors
HTTP
Code
Description
401
TOKEN_MISSING
The API key was not passed
403
SCOPE_DENIED
The API key lacks the imopenlines scope
Full list of common API errors — Errors .
# Known specificsA single set of names — camelCase. All fields in the list/get/search responses come back in camelCase. The /fields endpoint (data.fields) describes each field with type, readonly, label, and description. filter, sort, groupBy operate on these names. 91 fields total in list/search, 95 in get (the 4 operator queue fields are added). On write (create/update) camelCase is the canonical case. UPPER_SNAKE_CASE names are also accepted for backward compatibility. Boolean fields accept true/false on write (coerced to "Y"/"N").
Numeric fields come as strings. queueTime, noAnswerTime, autoCloseTime, maxChat, kpiFirstAnswerTime, and others — strings ("60", "180"). The exceptions are id (number) and active (boolean): these two fields are transformed by the Vibecode API schema.
dateCreate and dateModify are always empty objects {}. Bitrix24 does not pass date values through these fields.
# See also