[{"data":1,"prerenderedAt":1453},["ShallowReactive",2],{"navigation":3,"-docs-examples-webhook-cli-node":459,"-docs-examples-webhook-cli-node-description":1442},[4],{"title":5,"path":6,"stem":7,"children":8,"page":47},"Docs","\u002Fdocs","docs",[9,78,351],{"title":10,"path":11,"stem":12,"children":13,"restApiVersion":15,"category":15,"description":15,"badge":15},"Начало работы","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started\u002F1.index",[14,17,48,63],{"title":10,"path":11,"stem":12,"restApiVersion":15,"category":15,"description":16,"badge":15},null,"Краткое руководство по работе с SDK для REST API Bitrix24",{"title":18,"path":19,"stem":20,"children":21,"page":47},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation",[22,27,32,37,42],{"title":23,"path":24,"stem":25,"restApiVersion":15,"category":15,"description":26,"badge":15},"Vue","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fvue","docs\u002F1.getting-started\u002F2.installation\u002F1.vue","Руководство по установке Bitrix24 JS SDK в приложениях Vue.",{"title":28,"path":29,"stem":30,"restApiVersion":15,"category":15,"description":31,"badge":15},"Nuxt","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fnuxt","docs\u002F1.getting-started\u002F2.installation\u002F2.nuxt","Руководство по установке Bitrix24 JS SDK в приложениях Nuxt.",{"title":33,"path":34,"stem":35,"restApiVersion":15,"category":15,"description":36,"badge":15},"React","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Freact","docs\u002F1.getting-started\u002F2.installation\u002F3.react","Руководство по установке Bitrix24 JS SDK в приложениях React.",{"title":38,"path":39,"stem":40,"restApiVersion":15,"category":15,"description":41,"badge":15},"Node.js","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fnodejs","docs\u002F1.getting-started\u002F2.installation\u002F4.nodejs","Руководство по установке Bitrix24 JS SDK в приложениях Node.js.",{"title":43,"path":44,"stem":45,"restApiVersion":15,"category":15,"description":46,"badge":15},"UMD","\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fumd","docs\u002F1.getting-started\u002F2.installation\u002F5.umd","Руководство по использованию UMD-версии Bitrix24 JS SDK в ваших приложениях.",false,{"title":49,"restApiVersion":15,"category":15,"description":15,"badge":15,"shadow":47,"path":50,"stem":51,"children":52,"page":47},"Migration","\u002Fdocs\u002Fgetting-started\u002Fmigration","docs\u002F1.getting-started\u002F3.migration",[53,58],{"title":54,"path":55,"stem":56,"restApiVersion":15,"category":15,"description":57,"badge":15},"v0 → v1","\u002Fdocs\u002Fgetting-started\u002Fmigration\u002Fv1","docs\u002F1.getting-started\u002F3.migration\u002F1.v1","Подробное руководство по миграции приложения с Bitrix24 JS SDK v0 на Bitrix24 JS SDK v1.",{"title":59,"path":60,"stem":61,"restApiVersion":15,"category":15,"description":62,"badge":15},"v2 → v3","\u002Fdocs\u002Fgetting-started\u002Fmigration\u002Fv3","docs\u002F1.getting-started\u002F3.migration\u002F2.v3","Как уйти с устаревшей REST-поверхности, которая удаляется в Bitrix24 JS SDK 3.0.0.",{"title":64,"restApiVersion":15,"category":15,"description":15,"badge":15,"path":65,"stem":66,"children":67,"page":47},"AI-инструменты","\u002Fdocs\u002Fgetting-started\u002Fai","docs\u002F1.getting-started\u002F7.ai",[68,73],{"title":69,"path":70,"stem":71,"restApiVersion":15,"category":15,"description":72,"badge":15},"Навыки","\u002Fdocs\u002Fgetting-started\u002Fai\u002Fskills","docs\u002F1.getting-started\u002F7.ai\u002F1.skills","Узкоспециализированные skill-файлы для AI-агентов разработчика, работающих с @bitrix24\u002Fb24jssdk.",{"title":74,"path":75,"stem":76,"restApiVersion":15,"category":15,"description":77,"badge":15},"LLMs.txt","\u002Fdocs\u002Fgetting-started\u002Fai\u002Fllms-txt","docs\u002F1.getting-started\u002F7.ai\u002F2.llms-txt","Как сделать, чтобы AI-инструменты вроде Cursor, Windsurf, GitHub Copilot, ChatGPT и Claude понимали методы, инструменты и лучшие практики Bitrix24 JS SDK.",{"title":79,"path":80,"stem":81,"children":82,"restApiVersion":15,"category":15,"description":15,"badge":15},"Работа с REST API","\u002Fdocs\u002Fworking-with-the-rest-api","docs\u002F2.working-with-the-rest-api\u002F0.index",[83,86,93,98,103,107,112,116,121,126,130,135,140,145,150,155,160,165,170,175,179,184,189,194,200,205,210,215,220,225,230,235,240,245,251,256,261,267,272,277,282,287,293,299,305,310,315,320,326,331,336,341,346],{"title":84,"path":80,"stem":81,"restApiVersion":15,"category":15,"description":85,"badge":15},"Введение","Обзор возможностей SDK для работы с REST API Bitrix24",{"title":87,"path":88,"stem":89,"restApiVersion":90,"category":91,"description":92,"badge":15},"Call","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcall-rest-api-ver2","docs\u002F2.working-with-the-rest-api\u002F1.call-rest-api-ver2","rest-api-ver2","actions","Метод для вызовов REST API Bitrix24 версии 2.",{"title":87,"path":94,"stem":95,"restApiVersion":96,"category":91,"description":97,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcall-rest-api-ver3","docs\u002F2.working-with-the-rest-api\u002F1.call-rest-api-ver3","rest-api-ver3","Метод для вызовов REST API Bitrix24 версии 3.",{"title":99,"path":100,"stem":101,"restApiVersion":90,"category":91,"description":102,"badge":15},"CallList","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcall-list-rest-api-ver2","docs\u002F2.working-with-the-rest-api\u002F2.call-list-rest-api-ver2","Метод для быстрого получения всех данных из list-методов REST API Bitrix24 версии 2.",{"title":99,"path":104,"stem":105,"restApiVersion":96,"category":91,"description":106,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcall-list-rest-api-ver3","docs\u002F2.working-with-the-rest-api\u002F2.call-list-rest-api-ver3","Метод для быстрого получения всех данных из list-методов REST API Bitrix24 версии 3.",{"title":108,"path":109,"stem":110,"restApiVersion":90,"category":91,"description":111,"badge":15},"FetchList","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ffetch-list-rest-api-ver2","docs\u002F2.working-with-the-rest-api\u002F2.fetch-list-rest-api-ver2","Возвращает AsyncGenerator, позволяющий обрабатывать данные из list-методов REST API Bitrix24 версии 2 по мере поступления, не загружая весь массив в память сразу. Особенно полезно при работе с очень большими объёмами данных.",{"title":108,"path":113,"stem":114,"restApiVersion":96,"category":91,"description":115,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Ffetch-list-rest-api-ver3","docs\u002F2.working-with-the-rest-api\u002F2.fetch-list-rest-api-ver3","Возвращает AsyncGenerator, позволяющий обрабатывать данные из list-методов REST API Bitrix24 версии 3 по мере поступления, не загружая весь массив в память сразу. Особенно полезно при работе с очень большими объёмами данных.",{"title":117,"path":118,"stem":119,"restApiVersion":15,"category":117,"description":120,"badge":15},"B24Hook","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhook","docs\u002F2.working-with-the-rest-api\u002F20.hook","Серверная точка входа для работы с REST API Bitrix24 через входящий вебхук (постоянный токен).",{"title":122,"path":123,"stem":124,"restApiVersion":90,"category":91,"description":125,"badge":15},"Batch","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fbatch-rest-api-ver2","docs\u002F2.working-with-the-rest-api\u002F3.batch-rest-api-ver2","Метод для выполнения пакетных запросов к REST API Bitrix24 версии 2. Позволяет выполнить до 50 команд в одном API-вызове.",{"title":122,"path":127,"stem":128,"restApiVersion":96,"category":91,"description":129,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fbatch-rest-api-ver3","docs\u002F2.working-with-the-rest-api\u002F3.batch-rest-api-ver3","Метод для выполнения пакетных запросов к REST API Bitrix24 версии 3. Позволяет выполнить до 50 команд в одном API-вызове.",{"title":84,"path":131,"stem":132,"restApiVersion":15,"category":133,"description":134,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe","docs\u002F2.working-with-the-rest-api\u002F30.frame","B24Frame","Предназначен для управления приложениями Bitrix24, работающими внутри placement-iframe. Наследуется от AbstractB24 и предоставляет менеджеры для аутентификации, обмена сообщениями с родительским окном, слайдеров, диалогов, placement и опций.",{"title":136,"path":137,"stem":138,"restApiVersion":15,"category":133,"description":139,"badge":15},"Инициализация","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-initialize-b24-frame","docs\u002F2.working-with-the-rest-api\u002F30.frame-initialize-b24-frame","Функция предназначена для инициализации B24Frame",{"title":141,"path":142,"stem":143,"restApiVersion":15,"category":133,"description":144,"badge":15},"Авторизация","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-auth","docs\u002F2.working-with-the-rest-api\u002F31.frame-auth","Предназначен для управления аутентификацией в приложениях Bitrix24. Обрабатывает данные аутентификации, полученные от родительского окна, и предоставляет методы для их обновления и получения.",{"title":146,"path":147,"stem":148,"restApiVersion":15,"category":133,"description":149,"badge":15},"Диалог","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-dialog","docs\u002F2.working-with-the-rest-api\u002F31.frame-dialog","Оборачивает системные диалоги BX24 (выбор пользователя, выбор прав доступа, выбор CRM-сущности), чтобы их можно было открывать изнутри iframe приложения Bitrix24.",{"title":151,"path":152,"stem":153,"restApiVersion":15,"category":133,"description":154,"badge":15},"Опции","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-options","docs\u002F2.working-with-the-rest-api\u002F31.frame-options","Используется для управления настройками приложения и пользователя в приложении Bitrix24. Позволяет инициализировать данные, получать и устанавливать опции через сообщения родительскому окну.",{"title":156,"path":157,"stem":158,"restApiVersion":15,"category":133,"description":159,"badge":15},"Родительское окно","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-parent","docs\u002F2.working-with-the-rest-api\u002F31.frame-parent","Предоставляет методы для управления родительским окном приложения в Bitrix24, включая изменение размера окна, управление прокруткой, инициацию звонков и открытие мессенджера.",{"title":161,"path":162,"stem":163,"restApiVersion":15,"category":133,"description":164,"badge":15},"Placement","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-placement","docs\u002F2.working-with-the-rest-api\u002F31.frame-placement","Используется для управления placement виджетов в приложении Bitrix24.",{"title":166,"path":167,"stem":168,"restApiVersion":15,"category":133,"description":169,"badge":15},"Слайдер","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fframe-slider","docs\u002F2.working-with-the-rest-api\u002F31.frame-slider","Предоставляет методы для работы со слайдерами в приложении Bitrix24. Позволяет открывать и закрывать слайдеры, а также управлять их содержимым.",{"title":171,"path":172,"stem":173,"restApiVersion":90,"category":91,"description":174,"badge":15},"BatchByChunk","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fbatch-by-chunk-rest-api-ver2","docs\u002F2.working-with-the-rest-api\u002F4.batch-by-chunk-rest-api-ver2","Метод для выполнения пакетных запросов с автоматическим разбиением на чанки для любого числа команд. Автоматически делит большие наборы команд на батчи по 50 и выполняет их последовательно. Используйте только массивы кортежей или массивы объектов.",{"title":171,"path":176,"stem":177,"restApiVersion":96,"category":91,"description":178,"badge":15},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fbatch-by-chunk-rest-api-ver3","docs\u002F2.working-with-the-rest-api\u002F4.batch-by-chunk-rest-api-ver3","Метод для выполнения пакетных запросов к REST API Bitrix24 версии 3 с автоматическим разбиением на чанки для любого числа команд. Автоматически делит большие наборы команд на батчи по 50 и выполняет их последовательно. Используйте только массивы кортежей или массивы объектов.",{"title":180,"path":181,"stem":182,"restApiVersion":15,"category":180,"description":183,"badge":15},"B24OAuth","\u002Fdocs\u002Fworking-with-the-rest-api\u002Foauth","docs\u002F2.working-with-the-rest-api\u002F40.oauth","Серверная точка входа для работы с REST API Bitrix24 по access token OAuth 2.0 (с автоматическим обновлением).",{"title":185,"path":186,"stem":187,"restApiVersion":15,"category":15,"description":188,"badge":15},"Выбор метода","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fchoosing-the-right-method","docs\u002F2.working-with-the-rest-api\u002F5.choosing-the-right-method","Руководство по выбору между Call, CallList, FetchList, Batch и BatchByChunk в REST API v2 и v3.",{"title":190,"path":191,"stem":192,"restApiVersion":15,"category":15,"description":193,"badge":15},"Фильтрация","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ffiltering","docs\u002F2.working-with-the-rest-api\u002F5.filtering","Справочник по построению параметров фильтра в Bitrix24 REST API v2 (префиксные операторы) и v3 (массив троек), включая формат дат и правило отбрасывания order.",{"title":195,"path":196,"stem":197,"restApiVersion":15,"category":198,"description":199,"badge":15},"B24HelperManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper","docs\u002F2.working-with-the-rest-api\u002F50.helper","Helper","Агрегирующий менеджер, который загружает данные профиля, приложения, оплаты, лицензии, валют и опций одним батч-запросом REST, а также подключает Pull-клиент.",{"title":201,"path":202,"stem":203,"restApiVersion":15,"category":198,"description":204,"badge":15},"useB24Helper","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-use-b24-helper","docs\u002F2.working-with-the-rest-api\u002F51.helper-use-b24-helper","Основанный на замыкании composable, который владеет единственным экземпляром B24HelperManager и предоставляет хелперы жизненного цикла (init \u002F destroy \u002F связка с Pull-клиентом).",{"title":206,"path":207,"stem":208,"restApiVersion":15,"category":198,"description":209,"badge":15},"ProfileManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-profile-manager","docs\u002F2.working-with-the-rest-api\u002F52.helper-profile-manager","Разобранный ответ REST-метода `profile`: id, имя, фамилия, пол, фото, часовой пояс, флаг администратора.",{"title":211,"path":212,"stem":213,"restApiVersion":15,"category":198,"description":214,"badge":15},"AppManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-app-manager","docs\u002F2.working-with-the-rest-api\u002F53.helper-app-manager","Разобранный ответ REST-метода `app.info`: id приложения, код, версия, статус, флаг установки.",{"title":216,"path":217,"stem":218,"restApiVersion":15,"category":198,"description":219,"badge":15},"PaymentManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-payment-manager","docs\u002F2.working-with-the-rest-api\u002F54.helper-payment-manager","Статус оплаты приложения Bitrix24 — извлекается из `app.info`.",{"title":221,"path":222,"stem":223,"restApiVersion":15,"category":198,"description":224,"badge":15},"LicenseManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-license-manager","docs\u002F2.working-with-the-rest-api\u002F55.helper-license-manager","Информация о лицензии Bitrix24 из `app.info` — и автоматическая перенастройка менеджера ограничений под соответствующий тарифный план.",{"title":226,"path":227,"stem":228,"restApiVersion":15,"category":198,"description":229,"badge":15},"CurrencyManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-currency-manager","docs\u002F2.working-with-the-rest-api\u002F56.helper-currency-manager","Каталог валют, кэшируемый в памяти — базовая валюта, форматтеры для каждой валюты и форматтер числа в строку.",{"title":231,"path":232,"stem":233,"restApiVersion":15,"category":198,"description":234,"badge":15},"OptionsManager","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fhelper-options-manager","docs\u002F2.working-with-the-rest-api\u002F57.helper-options-manager","Типизированный доступ к `app.option.get` \u002F `user.option.get`, плюс save(), который батчит `*.option.set` с необязательным Pull-уведомлением.",{"title":236,"path":237,"stem":238,"restApiVersion":15,"category":15,"description":239,"badge":15},"Ошибки","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ferrors","docs\u002F2.working-with-the-rest-api\u002F6.errors","Справочник кодов SdkError и AjaxError, выбрасываемых SDK, плюс коды ошибок REST Bitrix24, которые через них проявляются.",{"title":241,"path":242,"stem":243,"restApiVersion":15,"category":241,"description":244,"badge":15},"Pull","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fpull","docs\u002F2.working-with-the-rest-api\u002F60.pull","Поток сообщений в реальном времени от Bitrix24 к вашему приложению — WebSocket как основной канал, long-polling как запасной. Только для фрейма.",{"title":246,"path":247,"stem":248,"restApiVersion":15,"category":249,"description":250,"badge":15},"Logger","\u002Fdocs\u002Fworking-with-the-rest-api\u002Flogger","docs\u002F2.working-with-the-rest-api\u002F66.logger","logger","Логгер, вдохновлённый PHP Monolog, предоставляет структурированную систему логирования с поддержкой каналов, обработчиков, процессоров и форматтеров. Реализация следует принципам PSR-3 и паттерну цепочки ответственности.",{"title":252,"path":253,"stem":254,"restApiVersion":15,"category":249,"description":255,"badge":15},"Telegram","\u002Fdocs\u002Fworking-with-the-rest-api\u002Flogger-telegram","docs\u002F2.working-with-the-rest-api\u002F66.logger-telegram","Отправка логов в Telegram",{"title":257,"path":258,"stem":259,"restApiVersion":15,"category":15,"description":260,"badge":15},"Обнаружение v3-методов","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fdiscovering-v3-methods","docs\u002F2.working-with-the-rest-api\u002F7.discovering-v3-methods","Используйте rest.documentation.openapi, чтобы получить собственный машиночитаемый список всех доступных методов REST API v3 портала — источник истины, на который SDK опирается вместо захардкоженного allowlist. Особенно полезно для AI-агентов и кодогенерации.",{"title":262,"path":263,"stem":264,"restApiVersion":15,"category":265,"description":266,"badge":15},"AjaxResult","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcore-ajax-result","docs\u002F2.working-with-the-rest-api\u002F70.core-ajax-result","Core","Специализированный Result, возвращаемый каждым REST-хелпером. Предоставляет `isMore() \u002F getNext() \u002F getTotal() \u002F getStatus()` для постраничных ответов и неизменяемые данные.",{"title":268,"path":269,"stem":270,"restApiVersion":15,"category":265,"description":271,"badge":15},"Http","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcore-http","docs\u002F2.working-with-the-rest-api\u002F70.core-http","Низкоуровневый интерфейс транспорта, возвращаемый `b24.getHttpClient(version)`. Прямой доступ к axios-клиентам, параметрам ограничений, статистике и сбросу.",{"title":273,"path":274,"stem":275,"restApiVersion":15,"category":265,"description":276,"badge":15},"B24LangList","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcore-lang-list","docs\u002F2.working-with-the-rest-api\u002F70.core-lang-list","Enum языков интерфейса облачного Bitrix24 плюс карта локалей BCP-47.",{"title":278,"path":279,"stem":280,"restApiVersion":15,"category":265,"description":281,"badge":15},"RequestIdGenerator","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcore-request-id-generator","docs\u002F2.working-with-the-rest-api\u002F70.core-request-id-generator","Реализация `IRequestIdGenerator` по умолчанию. Генерирует request id в формате UUID v7 и предоставляет имена HTTP-заголовка \u002F query-параметра, используемые SDK.",{"title":283,"path":284,"stem":285,"restApiVersion":15,"category":265,"description":286,"badge":15},"Result","\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcore-result","docs\u002F2.working-with-the-rest-api\u002F70.core-result","Обобщённый результат операции с флагом успеха, данными и картой ошибок. Аналог \\\\Bitrix\\\\Main\\\\Result из Bitrix Framework.",{"title":288,"path":289,"stem":290,"restApiVersion":15,"category":291,"description":292,"badge":15},"Лимитеры","\u002Fdocs\u002Fworking-with-the-rest-api\u002Flimiters","docs\u002F2.working-with-the-rest-api\u002F77.limiters","limiters","Система ограничений предоставляет комплексный механизм управления частотой запросов, временем выполнения операций и адаптивными задержками.",{"title":294,"path":295,"stem":296,"restApiVersion":15,"category":297,"description":298,"badge":15},"Логирование и редактирование","\u002Fdocs\u002Fworking-with-the-rest-api\u002Flogging","docs\u002F2.working-with-the-rest-api\u002F78.logging","logging","Что SDK редактирует автоматически до того, как информация о запросе попадёт в логгер или AjaxError, что он не редактирует, и как подключить кастомный логгер через setLogger(...) без повторного появления утечек учётных данных.",{"title":300,"path":301,"stem":302,"restApiVersion":15,"category":303,"description":304,"badge":15},"Browser","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-browser","docs\u002F2.working-with-the-rest-api\u002F80.tools-browser","tools","Дешёвый детектор user-agent \u002F платформы \u002F возможностей. Полезен для runtime-ветвлений во фронтенд-коде.",{"title":306,"path":307,"stem":308,"restApiVersion":15,"category":303,"description":309,"badge":15},"Text","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-text","docs\u002F2.working-with-the-rest-api\u002F80.tools-text","Утилиты для текста и дат — UUID v4 \u002F v7, кодирование \u002F декодирование HTML-сущностей, преобразования типов, хелперы регистра, `toDateTime` \u002F `toB24Format` на Luxon, форматирование чисел и конструктор query-строки.",{"title":311,"path":312,"stem":313,"restApiVersion":15,"category":303,"description":314,"badge":15},"Type","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-type","docs\u002F2.working-with-the-rest-api\u002F80.tools-type","Runtime type guards — строки, числа, обычные объекты, массивы, DOM-узлы, Blob, FormData, формы JSON-RPC сообщений.",{"title":316,"path":317,"stem":318,"restApiVersion":15,"category":303,"description":319,"badge":15},"useFormatter","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-use-formatters","docs\u002F2.working-with-the-rest-api\u002F80.tools-use-formatters","Composable, возвращающий общие экземпляры `FormatterNumbers` и `FormatterIban`, преднастроенные спецификациями стран.",{"title":321,"path":322,"stem":323,"restApiVersion":15,"category":324,"description":325,"badge":15},"IResult","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftypes-iresult","docs\u002F2.working-with-the-rest-api\u002F90.types-iresult","Types","Обобщённый интерфейс результата операции. Реализуется `Result\u003CT>` и (транзитивно) `AjaxResult\u003CT>`.",{"title":327,"path":328,"stem":329,"restApiVersion":15,"category":324,"description":330,"badge":15},"TypeB24","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftypes-type-b24","docs\u002F2.working-with-the-rest-api\u002F90.types-type-b24","Публичный контракт, реализуемый каждым классом-точкой входа (B24Frame, B24Hook, B24OAuth). Единый источник истины для поверхности SDK.",{"title":332,"path":333,"stem":334,"restApiVersion":15,"category":265,"description":335,"badge":15},"Телеметрия","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftelemetry","docs\u002F2.working-with-the-rest-api\u002F95.telemetry","Query-параметры request id, версии SDK и типа SDK, добавляемые к каждому REST-вызову Bitrix24.",{"title":337,"path":338,"stem":339,"restApiVersion":15,"category":265,"description":340,"badge":15},"Коды ошибок","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ferror-codes","docs\u002F2.working-with-the-rest-api\u002F96.error-codes","Каталог кодов ошибок, которые распознаёт SDK — разделённых на «hard» (выбрасываются) и «soft» (возвращаются как AjaxError внутри AjaxResult).",{"title":342,"path":343,"stem":344,"restApiVersion":15,"category":303,"description":345,"badge":15},"HealthCheck","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-health-check","docs\u002F2.working-with-the-rest-api\u002Ftools-health-check","Метод для проверки доступности REST API Bitrix24. Выполняет простой запрос к REST API для проверки работоспособности сервиса.",{"title":347,"path":348,"stem":349,"restApiVersion":15,"category":303,"description":350,"badge":15},"Ping","\u002Fdocs\u002Fworking-with-the-rest-api\u002Ftools-ping","docs\u002F2.working-with-the-rest-api\u002Ftools-ping","Метод для измерения скорости ответа REST API Bitrix24. Выполняет тестовый запрос и возвращает время ответа в миллисекундах.",{"title":352,"path":353,"stem":354,"children":355,"restApiVersion":15,"category":15,"description":15,"badge":15},"Примеры","\u002Fdocs\u002Fexamples","docs\u002F99.examples\u002F0.index",[356,358,364,369,374,379,384,389,394,399,404,409,414,419,424,429,434,439,444,449,454],{"title":84,"path":353,"stem":354,"restApiVersion":15,"category":15,"description":357,"badge":15},"Рецепты, сочетающие SDK с реалистичными сценариями — аналитика CRM, массовые рассылки, AI-ассистенты, установка по OAuth и не только. Каждый рецепт — отдельный файл, удобный для копирования.",{"title":359,"path":360,"stem":361,"restApiVersion":15,"category":362,"description":363,"badge":15},"Аналитика CRM","\u002Fdocs\u002Fexamples\u002Fcrm-analytics","docs\u002F99.examples\u002F1.crm-analytics","examples","Стримит все сделки через actions.v2.fetchList.make, группирует по стадиям, печатает отчёт по воронке (количество, конверсия %, средний чек, win rate).",{"title":365,"path":366,"stem":367,"restApiVersion":15,"category":362,"description":368,"badge":15},"Сделки → CSV","\u002Fdocs\u002Fexamples\u002Fdashboard-deals-csv","docs\u002F99.examples\u002F1.dashboard-deals-csv","Стримит каждую сделку CRM, подходящую под фильтр по дате, в CSV-файл через вебхук и FetchListV2.",{"title":370,"path":371,"stem":372,"restApiVersion":15,"category":15,"description":373,"badge":15},"Список сущностей","\u002Fdocs\u002Fexamples\u002Fentity-list","docs\u002F99.examples\u002F10.entity-list","Рендерит постраничный список сущностей Bitrix24 с компонентами B24UI и SDK-действием callList.",{"title":375,"path":376,"stem":377,"restApiVersion":15,"category":362,"description":378,"badge":15},"Обработка ошибок","\u002Fdocs\u002Fexamples\u002Ferror-handling","docs\u002F99.examples\u002F10.error-handling","Демонстрирует четыре слоя ошибок (SdkError \u002F AjaxError \u002F сетевые \u002F soft) и настройки hardErrorCodes \u002F softErrorCodes \u002F retryOnNetworkError у менеджера ограничений.",{"title":380,"path":381,"stem":382,"restApiVersion":15,"category":362,"description":383,"badge":15},"Регистрация событий","\u002Fdocs\u002Fexamples\u002Fevent-registration","docs\u002F99.examples\u002F11.event-registration","CLI-инструмент — список, привязка и отвязка исходящих событий вебхуков Bitrix24 через event.get \u002F event.bind \u002F event.unbind. В паре с рецептом обработчика вебхуков.",{"title":385,"path":386,"stem":387,"restApiVersion":15,"category":362,"description":388,"badge":15},"Установка OAuth","\u002Fdocs\u002Fexamples\u002Foauth-install","docs\u002F99.examples\u002F12.oauth-install","Express-сервер, который обрабатывает события ONAPPINSTALL \u002F ONAPPUPDATE \u002F ONAPPUNINSTALL для маркетплейс-приложения Bitrix24, сохраняет токены по порталам и создаёт клиент B24OAuth по требованию с callback обновления, подключённым к хранилищу.",{"title":390,"path":391,"stem":392,"restApiVersion":15,"category":362,"description":393,"badge":15},"Скелет frame-приложения","\u002Fdocs\u002Fexamples\u002Fframe-app-skeleton","docs\u002F99.examples\u002F2.frame-app-skeleton","Минимально жизнеспособное iframe-приложение Bitrix24: рукопожатие init, установка заголовка, сохранение состояния приложения, открытие слайдера, чистое закрытие.",{"title":395,"path":396,"stem":397,"restApiVersion":15,"category":362,"description":398,"badge":15},"Массовые рассылки","\u002Fdocs\u002Fexamples\u002Fmass-messaging","docs\u002F99.examples\u002F2.mass-messaging","Фильтрует контакты в CRM, персонализирует шаблон, отправляет IM-уведомления ответственным менеджерам.",{"title":400,"path":401,"stem":402,"restApiVersion":15,"category":15,"description":403,"badge":15},"Мастер установки","\u002Fdocs\u002Fexamples\u002Fapp-installation-wizard","docs\u002F99.examples\u002F20.app-installation-wizard","Многошаговый процесс установки, который создаёт пользовательские поля, регистрирует placement-ы, финализирует установку и празднует конфетти.",{"title":405,"path":406,"stem":407,"restApiVersion":15,"category":362,"description":408,"badge":15},"Автоматизация задач","\u002Fdocs\u002Fexamples\u002Ftask-automation","docs\u002F99.examples\u002F3.task-automation","Опрашивает стадии сделок каждые 60 с. При отслеживаемом переходе создаёт задачу с описанием, дедлайном и приоритетом.",{"title":410,"path":411,"stem":412,"restApiVersion":15,"category":362,"description":413,"badge":15},"Вебхук CLI","\u002Fdocs\u002Fexamples\u002Fwebhook-cli-node","docs\u002F99.examples\u002F3.webhook-cli-node","Node-скрипт на 30 строк, который аутентифицируется на портале Bitrix24 через входящий вебхук и печатает вызывающего пользователя — полезно как первое, что вы запускаете после создания вебхука.",{"title":415,"path":416,"stem":417,"restApiVersion":15,"category":15,"description":418,"badge":15},"Экспорт Node + Hook","\u002Fdocs\u002Fexamples\u002Fnode-hook-company-export","docs\u002F99.examples\u002F30.node-hook-company-export","Экспорт компаний Bitrix24 в CSV-файл из чистого Node.js-скрипта через B24Hook.",{"title":420,"path":421,"stem":422,"restApiVersion":15,"category":362,"description":423,"badge":15},"Массовое обновление","\u002Fdocs\u002Fexamples\u002Fbulk-update-deals","docs\u002F99.examples\u002F4.bulk-update-deals","Переносит тысячи сделок CRM на новую стадию через BatchByChunkV2 — автоматическое разбиение на чанки, обработка частичных ошибок и одна строка прогресса.",{"title":425,"path":426,"stem":427,"restApiVersion":15,"category":362,"description":428,"badge":15},"Синхронизация ERP","\u002Fdocs\u002Fexamples\u002Ferp-sync","docs\u002F99.examples\u002F4.erp-sync","Двусторонняя синхронизация контактов между Bitrix24 и внешней ERP. Сопоставление по ИНН (основное) или email (запасное). Cron каждый час.",{"title":430,"path":431,"stem":432,"restApiVersion":15,"category":362,"description":433,"badge":15},"Файлы Диска","\u002Fdocs\u002Fexamples\u002Fdisk-files","docs\u002F99.examples\u002F5.disk-files","Список хранилищ и содержимого папок, создание подпапок, просмотр файлов. Загрузка файлов (multipart) намеренно вне области.",{"title":435,"path":436,"stem":437,"restApiVersion":15,"category":362,"description":438,"badge":15},"Подписка на Pull","\u002Fdocs\u002Fexamples\u002Fpull-subscribe-frame","docs\u002F99.examples\u002F5.pull-subscribe-frame","Открыть живой канал из frame-приложения Bitrix24 и реагировать на push-события через useB24Helper + Pull-клиент.",{"title":440,"path":441,"stem":442,"restApiVersion":15,"category":362,"description":443,"badge":15},"Telegram-бот","\u002Fdocs\u002Fexamples\u002Ftelegram-bot","docs\u002F99.examples\u002F6.telegram-bot","Опрашивает новые сделки CRM каждые две минуты; уведомляет Telegram-чат HTML-карточкой.",{"title":445,"path":446,"stem":447,"restApiVersion":15,"category":362,"description":448,"badge":15},"Обработчик вебхуков","\u002Fdocs\u002Fexamples\u002Fwebhook-handler","docs\u002F99.examples\u002F7.webhook-handler","Express-сервер, который принимает исходящие события Bitrix24, подгружает детали через REST, маршрутизирует по имени события. Всегда возвращает 200.",{"title":450,"path":451,"stem":452,"restApiVersion":15,"category":362,"description":453,"badge":15},"AI-ассистент","\u002Fdocs\u002Fexamples\u002Fai-assistant","docs\u002F99.examples\u002F8.ai-assistant","Загружает сделку и её дела, спрашивает у GPT-4o лучшее следующее действие, создаёт задачу, привязанную к сделке, с приоритетом и дедлайном.",{"title":455,"path":456,"stem":457,"restApiVersion":15,"category":362,"description":458,"badge":15},"Веб-поиск + LLM","\u002Fdocs\u002Fexamples\u002Fweb-search-llm","docs\u002F99.examples\u002F9.web-search-llm","Двухшаговый RAG: запрос к любому провайдеру веб-поиска, прогон результата через ваш LLM с цитатами [N], публикация ответа комментарием в таймлайн CRM на сделке.",{"id":460,"title":461,"audited":462,"badge":15,"body":463,"category":362,"description":413,"extension":1431,"links":1432,"meta":1438,"navigation":1439,"path":411,"restApiVersion":15,"seo":1440,"stem":412,"__hash__":1441},"docs\u002Fdocs\u002F99.examples\u002F3.webhook-cli-node.md","Рецепт: smoke-тест вебхука в CLI","2026-05-05",{"type":464,"value":465,"toc":1422},"minimark",[466,473,478,490,494,513,562,566,572,1240,1244,1278,1309,1313,1352,1356,1389,1393,1418],[467,468,469],"warning",{},[470,471,472],"p",{},"Мы всё ещё дорабатываем эту страницу. Некоторых данных здесь может не хватать — скоро дополним.",[474,475,477],"h2",{"id":476},"goal","Цель",[470,479,480,481,485,486,489],{},"Убедиться, что только что созданный входящий вебхук Bitrix24 доступен, аутентифицирован и авторизован на ожидаемые scope — прежде чем встраивать его во что-то большее. Скрипт вызывает ",[482,483,484],"code",{},"profile"," и ",[482,487,488],{},"app.info",", печатает ответы и завершается с ненулевым кодом при любой ошибке.",[474,491,493],{"id":492},"stack-prerequisites","Стек и предпосылки",[495,496,497,501,506],"ul",{},[498,499,500],"li",{},"Node.js 20+, ESM",[498,502,503],{},[482,504,505],{},"@bitrix24\u002Fb24jssdk@^1.0.0",[498,507,508,509,512],{},"URL вебхука хотя бы с дефолтным scope. Задайте его как ",[482,510,511],{},"B24_HOOK",".",[514,515,520],"pre",{"className":516,"code":517,"language":518,"meta":519,"style":519},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add @bitrix24\u002Fb24jssdk\nexport B24_HOOK=\"https:\u002F\u002Fyour-portal.bitrix24.com\u002Frest\u002F1\u002Fxxxxxxxxxxxxxxxx\u002F\"\n","bash","",[482,521,522,538],{"__ignoreMap":519},[523,524,527,531,535],"span",{"class":525,"line":526},"line",1,[523,528,530],{"class":529},"sBMFI","pnpm",[523,532,534],{"class":533},"sfazB"," add",[523,536,537],{"class":533}," @bitrix24\u002Fb24jssdk\n",[523,539,541,545,549,553,556,559],{"class":525,"line":540},2,[523,542,544],{"class":543},"spNyl","export",[523,546,548],{"class":547},"sTEyZ"," B24_HOOK",[523,550,552],{"class":551},"sMK4o","=",[523,554,555],{"class":551},"\"",[523,557,558],{"class":533},"https:\u002F\u002Fyour-portal.bitrix24.com\u002Frest\u002F1\u002Fxxxxxxxxxxxxxxxx\u002F",[523,560,561],{"class":551},"\"\n",[474,563,565],{"id":564},"full-example","Полный пример",[470,567,568,571],{},[482,569,570],{},"scripts\u002Fb24-ping.mjs",":",[514,573,577],{"className":574,"code":575,"language":576,"meta":519,"style":519},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { B24Hook, SdkError } from '@bitrix24\u002Fb24jssdk'\n\nconst hookUrl = process.env.B24_HOOK\nif (!hookUrl) {\n  console.error('B24_HOOK is not set')\n  process.exit(2)\n}\n\nconst b24 = B24Hook.fromWebhookUrl(hookUrl)\n\ntry {\n  const profile = await b24.actions.v2.call.make({ method: 'profile' })\n  const appInfo = await b24.actions.v2.call.make({ method: 'app.info' })\n\n  const me = profile.getData().result\n  const app = appInfo.getData().result\n\n  console.log(`portal:    ${app.DOMAIN}`)\n  console.log(`as user:   #${me.ID} ${me.NAME ?? ''} ${me.LAST_NAME ?? ''}`)\n  console.log(`scope:     ${app.SCOPE?.join?.(',') ?? app.SCOPE ?? '(none)'}`)\n  console.log('webhook is alive')\n}\ncatch (error) {\n  if (error instanceof SdkError) {\n    console.error(`SDK error [${error.cause?.name ?? 'unknown'}]: ${error.message}`)\n  }\n  else {\n    console.error(error)\n  }\n  process.exit(1)\n}\n","js",[482,578,579,612,618,642,660,687,706,712,717,737,742,751,808,856,861,886,908,913,947,1008,1073,1093,1098,1109,1128,1185,1191,1199,1214,1219,1235],{"__ignoreMap":519},[523,580,581,585,588,591,594,597,600,603,606,609],{"class":525,"line":526},[523,582,584],{"class":583},"s7zQu","import",[523,586,587],{"class":551}," {",[523,589,590],{"class":547}," B24Hook",[523,592,593],{"class":551},",",[523,595,596],{"class":547}," SdkError",[523,598,599],{"class":551}," }",[523,601,602],{"class":583}," from",[523,604,605],{"class":551}," '",[523,607,608],{"class":533},"@bitrix24\u002Fb24jssdk",[523,610,611],{"class":551},"'\n",[523,613,614],{"class":525,"line":540},[523,615,617],{"emptyLinePlaceholder":616},true,"\n",[523,619,621,624,627,629,632,634,637,639],{"class":525,"line":620},3,[523,622,623],{"class":543},"const",[523,625,626],{"class":547}," hookUrl ",[523,628,552],{"class":551},[523,630,631],{"class":547}," process",[523,633,512],{"class":551},[523,635,636],{"class":547},"env",[523,638,512],{"class":551},[523,640,641],{"class":547},"B24_HOOK\n",[523,643,645,648,651,654,657],{"class":525,"line":644},4,[523,646,647],{"class":583},"if",[523,649,650],{"class":547}," (",[523,652,653],{"class":551},"!",[523,655,656],{"class":547},"hookUrl) ",[523,658,659],{"class":551},"{\n",[523,661,663,666,668,672,676,679,682,684],{"class":525,"line":662},5,[523,664,665],{"class":547},"  console",[523,667,512],{"class":551},[523,669,671],{"class":670},"s2Zo4","error",[523,673,675],{"class":674},"swJcz","(",[523,677,678],{"class":551},"'",[523,680,681],{"class":533},"B24_HOOK is not set",[523,683,678],{"class":551},[523,685,686],{"class":674},")\n",[523,688,690,693,695,698,700,704],{"class":525,"line":689},6,[523,691,692],{"class":547},"  process",[523,694,512],{"class":551},[523,696,697],{"class":670},"exit",[523,699,675],{"class":674},[523,701,703],{"class":702},"sbssI","2",[523,705,686],{"class":674},[523,707,709],{"class":525,"line":708},7,[523,710,711],{"class":551},"}\n",[523,713,715],{"class":525,"line":714},8,[523,716,617],{"emptyLinePlaceholder":616},[523,718,720,722,725,727,729,731,734],{"class":525,"line":719},9,[523,721,623],{"class":543},[523,723,724],{"class":547}," b24 ",[523,726,552],{"class":551},[523,728,590],{"class":547},[523,730,512],{"class":551},[523,732,733],{"class":670},"fromWebhookUrl",[523,735,736],{"class":547},"(hookUrl)\n",[523,738,740],{"class":525,"line":739},10,[523,741,617],{"emptyLinePlaceholder":616},[523,743,745,748],{"class":525,"line":744},11,[523,746,747],{"class":583},"try",[523,749,750],{"class":551}," {\n",[523,752,754,757,760,763,766,769,771,773,775,778,780,783,785,788,790,793,796,798,800,802,804,806],{"class":525,"line":753},12,[523,755,756],{"class":543},"  const",[523,758,759],{"class":547}," profile",[523,761,762],{"class":551}," =",[523,764,765],{"class":583}," await",[523,767,768],{"class":547}," b24",[523,770,512],{"class":551},[523,772,91],{"class":547},[523,774,512],{"class":551},[523,776,777],{"class":547},"v2",[523,779,512],{"class":551},[523,781,782],{"class":547},"call",[523,784,512],{"class":551},[523,786,787],{"class":670},"make",[523,789,675],{"class":674},[523,791,792],{"class":551},"{",[523,794,795],{"class":674}," method",[523,797,571],{"class":551},[523,799,605],{"class":551},[523,801,484],{"class":533},[523,803,678],{"class":551},[523,805,599],{"class":551},[523,807,686],{"class":674},[523,809,811,813,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850,852,854],{"class":525,"line":810},13,[523,812,756],{"class":543},[523,814,815],{"class":547}," appInfo",[523,817,762],{"class":551},[523,819,765],{"class":583},[523,821,768],{"class":547},[523,823,512],{"class":551},[523,825,91],{"class":547},[523,827,512],{"class":551},[523,829,777],{"class":547},[523,831,512],{"class":551},[523,833,782],{"class":547},[523,835,512],{"class":551},[523,837,787],{"class":670},[523,839,675],{"class":674},[523,841,792],{"class":551},[523,843,795],{"class":674},[523,845,571],{"class":551},[523,847,605],{"class":551},[523,849,488],{"class":533},[523,851,678],{"class":551},[523,853,599],{"class":551},[523,855,686],{"class":674},[523,857,859],{"class":525,"line":858},14,[523,860,617],{"emptyLinePlaceholder":616},[523,862,864,866,869,871,873,875,878,881,883],{"class":525,"line":863},15,[523,865,756],{"class":543},[523,867,868],{"class":547}," me",[523,870,762],{"class":551},[523,872,759],{"class":547},[523,874,512],{"class":551},[523,876,877],{"class":670},"getData",[523,879,880],{"class":674},"()",[523,882,512],{"class":551},[523,884,885],{"class":547},"result\n",[523,887,889,891,894,896,898,900,902,904,906],{"class":525,"line":888},16,[523,890,756],{"class":543},[523,892,893],{"class":547}," app",[523,895,762],{"class":551},[523,897,815],{"class":547},[523,899,512],{"class":551},[523,901,877],{"class":670},[523,903,880],{"class":674},[523,905,512],{"class":551},[523,907,885],{"class":547},[523,909,911],{"class":525,"line":910},17,[523,912,617],{"emptyLinePlaceholder":616},[523,914,916,918,920,923,925,928,931,934,937,939,942,945],{"class":525,"line":915},18,[523,917,665],{"class":547},[523,919,512],{"class":551},[523,921,922],{"class":670},"log",[523,924,675],{"class":674},[523,926,927],{"class":551},"`",[523,929,930],{"class":533},"portal:    ",[523,932,933],{"class":551},"${",[523,935,936],{"class":547},"app",[523,938,512],{"class":551},[523,940,941],{"class":547},"DOMAIN",[523,943,944],{"class":551},"}`",[523,946,686],{"class":674},[523,948,950,952,954,956,958,960,963,965,968,970,973,976,979,981,983,986,989,992,994,996,998,1001,1003,1006],{"class":525,"line":949},19,[523,951,665],{"class":547},[523,953,512],{"class":551},[523,955,922],{"class":670},[523,957,675],{"class":674},[523,959,927],{"class":551},[523,961,962],{"class":533},"as user:   #",[523,964,933],{"class":551},[523,966,967],{"class":547},"me",[523,969,512],{"class":551},[523,971,972],{"class":547},"ID",[523,974,975],{"class":551},"}",[523,977,978],{"class":551}," ${",[523,980,967],{"class":547},[523,982,512],{"class":551},[523,984,985],{"class":547},"NAME ",[523,987,988],{"class":551},"??",[523,990,991],{"class":551}," ''}",[523,993,978],{"class":551},[523,995,967],{"class":547},[523,997,512],{"class":551},[523,999,1000],{"class":547},"LAST_NAME ",[523,1002,988],{"class":551},[523,1004,1005],{"class":551}," ''}`",[523,1007,686],{"class":674},[523,1009,1011,1013,1015,1017,1019,1021,1024,1026,1028,1030,1033,1036,1039,1041,1043,1045,1047,1049,1052,1054,1056,1058,1061,1063,1065,1068,1071],{"class":525,"line":1010},20,[523,1012,665],{"class":547},[523,1014,512],{"class":551},[523,1016,922],{"class":670},[523,1018,675],{"class":674},[523,1020,927],{"class":551},[523,1022,1023],{"class":533},"scope:     ",[523,1025,933],{"class":551},[523,1027,936],{"class":547},[523,1029,512],{"class":551},[523,1031,1032],{"class":547},"SCOPE",[523,1034,1035],{"class":551},"?.",[523,1037,1038],{"class":670},"join",[523,1040,1035],{"class":551},[523,1042,675],{"class":547},[523,1044,678],{"class":551},[523,1046,593],{"class":533},[523,1048,678],{"class":551},[523,1050,1051],{"class":547},") ",[523,1053,988],{"class":551},[523,1055,893],{"class":547},[523,1057,512],{"class":551},[523,1059,1060],{"class":547},"SCOPE ",[523,1062,988],{"class":551},[523,1064,605],{"class":551},[523,1066,1067],{"class":533},"(none)",[523,1069,1070],{"class":551},"'}`",[523,1072,686],{"class":674},[523,1074,1076,1078,1080,1082,1084,1086,1089,1091],{"class":525,"line":1075},21,[523,1077,665],{"class":547},[523,1079,512],{"class":551},[523,1081,922],{"class":670},[523,1083,675],{"class":674},[523,1085,678],{"class":551},[523,1087,1088],{"class":533},"webhook is alive",[523,1090,678],{"class":551},[523,1092,686],{"class":674},[523,1094,1096],{"class":525,"line":1095},22,[523,1097,711],{"class":551},[523,1099,1101,1104,1107],{"class":525,"line":1100},23,[523,1102,1103],{"class":583},"catch",[523,1105,1106],{"class":547}," (error) ",[523,1108,659],{"class":551},[523,1110,1112,1115,1117,1119,1122,1124,1126],{"class":525,"line":1111},24,[523,1113,1114],{"class":583},"  if",[523,1116,650],{"class":674},[523,1118,671],{"class":547},[523,1120,1121],{"class":551}," instanceof",[523,1123,596],{"class":529},[523,1125,1051],{"class":674},[523,1127,659],{"class":551},[523,1129,1131,1134,1136,1138,1140,1142,1145,1147,1149,1151,1154,1156,1159,1161,1163,1166,1169,1172,1174,1176,1178,1181,1183],{"class":525,"line":1130},25,[523,1132,1133],{"class":547},"    console",[523,1135,512],{"class":551},[523,1137,671],{"class":670},[523,1139,675],{"class":674},[523,1141,927],{"class":551},[523,1143,1144],{"class":533},"SDK error [",[523,1146,933],{"class":551},[523,1148,671],{"class":547},[523,1150,512],{"class":551},[523,1152,1153],{"class":547},"cause",[523,1155,1035],{"class":551},[523,1157,1158],{"class":547},"name ",[523,1160,988],{"class":551},[523,1162,605],{"class":551},[523,1164,1165],{"class":533},"unknown",[523,1167,1168],{"class":551},"'}",[523,1170,1171],{"class":533},"]: ",[523,1173,933],{"class":551},[523,1175,671],{"class":547},[523,1177,512],{"class":551},[523,1179,1180],{"class":547},"message",[523,1182,944],{"class":551},[523,1184,686],{"class":674},[523,1186,1188],{"class":525,"line":1187},26,[523,1189,1190],{"class":551},"  }\n",[523,1192,1194,1197],{"class":525,"line":1193},27,[523,1195,1196],{"class":583},"  else",[523,1198,750],{"class":551},[523,1200,1202,1204,1206,1208,1210,1212],{"class":525,"line":1201},28,[523,1203,1133],{"class":547},[523,1205,512],{"class":551},[523,1207,671],{"class":670},[523,1209,675],{"class":674},[523,1211,671],{"class":547},[523,1213,686],{"class":674},[523,1215,1217],{"class":525,"line":1216},29,[523,1218,1190],{"class":551},[523,1220,1222,1224,1226,1228,1230,1233],{"class":525,"line":1221},30,[523,1223,692],{"class":547},[523,1225,512],{"class":551},[523,1227,697],{"class":670},[523,1229,675],{"class":674},[523,1231,1232],{"class":702},"1",[523,1234,686],{"class":674},[523,1236,1238],{"class":525,"line":1237},31,[523,1239,711],{"class":551},[474,1241,1243],{"id":1242},"run-it","Запуск",[514,1245,1247],{"className":516,"code":1246,"language":518,"meta":519,"style":519},"node scripts\u002Fb24-ping.mjs\n# portal:    your-portal.bitrix24.com\n# as user:   #1 Anna Ivanova\n# scope:     crm,user,im\n# webhook is alive\n",[482,1248,1249,1257,1263,1268,1273],{"__ignoreMap":519},[523,1250,1251,1254],{"class":525,"line":526},[523,1252,1253],{"class":529},"node",[523,1255,1256],{"class":533}," scripts\u002Fb24-ping.mjs\n",[523,1258,1259],{"class":525,"line":540},[523,1260,1262],{"class":1261},"sHwdD","# portal:    your-portal.bitrix24.com\n",[523,1264,1265],{"class":525,"line":620},[523,1266,1267],{"class":1261},"# as user:   #1 Anna Ivanova\n",[523,1269,1270],{"class":525,"line":644},[523,1271,1272],{"class":1261},"# scope:     crm,user,im\n",[523,1274,1275],{"class":525,"line":662},[523,1276,1277],{"class":1261},"# webhook is alive\n",[470,1279,1280,1281,1284,1285,1287,1288,650,1291,1294,1295,1298,1299,1302,1303,1308],{},"Скопированный с опечаткой URL вебхука падает с 401, обёрнутым в ",[482,1282,1283],{},"SdkError",", и скрипт завершается с кодом ",[482,1286,1232],{},". Сетевой сбой автоматически повторяется встроенным ",[482,1289,1290],{},"RateLimiter",[482,1292,1293],{},"maxRetries"," по умолчанию ",[482,1296,1297],{},"3",", настраивается через ",[482,1300,1301],{},"restrictionParams.maxRetries"," — см. ",[1304,1305,1307],"a",{"href":1306},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Flimiters\u002F","Система ограничений",") до того, как ошибка всплывёт.",[474,1310,1312],{"id":1311},"how-it-works","Как это работает",[495,1314,1315,1325,1343],{},[498,1316,1317,1320,1321,1324],{},[482,1318,1319],{},"B24Hook.fromWebhookUrl()"," валидирует форму URL и извлекает id пользователя, секретный токен и хост портала из пути. Всё, что не похоже на ",[482,1322,1323],{},"https:\u002F\u002F\u003Chost>\u002Frest\u002F\u003CuserId>\u002F\u003Ctoken>\u002F",", выбрасывает синхронно — устойчиво к опечаткам.",[498,1326,1327,1330,1331,1334,1335,1338,1339,1342],{},[482,1328,1329],{},"actions.v2.call.make({ method })"," — современный вызов одного метода. Возвращает ",[482,1332,1333],{},"Promise\u003CAjaxResult>","; ",[482,1336,1337],{},".getData().result"," — то, что Bitrix24 поместил под ",[482,1340,1341],{},"result"," для этого метода.",[498,1344,1345,1346,1348,1349,1351],{},"Ошибки возвращаются как ",[482,1347,1283],{}," с нижележащей ошибкой axios в ",[482,1350,1153],{},". Перехват класса позволяет отличить ошибки SDK от багов вызывающего кода.",[474,1353,1355],{"id":1354},"limitations","Ограничения",[495,1357,1358,1365,1376],{},[498,1359,1360,1361,1364],{},"У входящих вебхуков жёсткий лимит частоты (2 RPS на пользователя на портал на момент написания). Для чего-то большего, чем smoke-тест, настройте ",[482,1362,1363],{},"restrictionParams"," — см. рецепт с дашбордом.",[498,1366,1367,1368,1370,1371,1375],{},"Метод ",[482,1369,484],{}," возвращает пользователя, ",[1372,1373,1374],"strong",{},"под которым"," создан вебхук, а не того, кто запускает скрипт. Имперсонации нет.",[498,1377,1378,1379,1382,1383,1385,1386,1388],{},"Этот рецепт намеренно избегает ",[482,1380,1381],{},"try { … } finally { b24.destroy() }"," — у ",[482,1384,117],{}," нет шага destroy. У ",[482,1387,133],{}," есть; это отдельный путь кода.",[474,1390,1392],{"id":1391},"see-also","См. также",[495,1394,1395,1402,1409],{},[498,1396,1397,1401],{},[1304,1398,1400],{"href":1399},"\u002Fdocs\u002Fexamples\u002Fdashboard-deals-csv\u002F","Рецепт: экспорт сделок в CSV"," — та же авторизация, реальная нагрузка.",[498,1403,1404,1408],{},[1304,1405,1407],{"href":1406},"\u002Fdocs\u002Fexamples\u002Fbulk-update-deals\u002F","Рецепт: массовое обновление сделок"," — та же авторизация, нагрузка на запись.",[498,1410,1411,1417],{},[1304,1412,1414],{"href":1413},"\u002Fdocs\u002Fworking-with-the-rest-api\u002Fcall-rest-api-ver2\u002F",[482,1415,1416],{},"CallV2.make()"," — полный справочник метода.",[1419,1420,1421],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":519,"searchDepth":540,"depth":540,"links":1423},[1424,1425,1426,1427,1428,1429,1430],{"id":476,"depth":540,"text":477},{"id":492,"depth":540,"text":493},{"id":564,"depth":540,"text":565},{"id":1242,"depth":540,"text":1243},{"id":1311,"depth":540,"text":1312},{"id":1354,"depth":540,"text":1355},{"id":1391,"depth":540,"text":1392},"md",[1433,1436],{"label":117,"iconName":1434,"to":1435},"GitHubIcon","https:\u002F\u002Fgithub.com\u002Fbitrix24\u002Fb24jssdk\u002Fblob\u002Fmain\u002Fpackages\u002Fjssdk\u002Fsrc\u002Fhook\u002Fb24.ts",{"label":1283,"iconName":1434,"to":1437},"https:\u002F\u002Fgithub.com\u002Fbitrix24\u002Fb24jssdk\u002Fblob\u002Fmain\u002Fpackages\u002Fjssdk\u002Fsrc\u002Fcore\u002Fsdk-error.ts",{},{"title":410},{"title":461,"description":413},"woAiWd80Ffg7sNMm3AWk1KfgnFmLscNQOjo6_MtZNkk",{"data":1443,"body":1444},{},{"type":1445,"children":1446},"root",[1447],{"type":1448,"tag":470,"props":1449,"children":1450},"element",{},[1451],{"type":1452,"value":413},"text",1783080212898]