[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-entities\u002Frequisite-links":3,"docs-tabs-entities\u002Frequisite-links":6},{"content":4,"lastmod":5},"# Связи реквизитов\n\nУказывает, какой реквизит компании (и при необходимости — какой банковский счёт) использовать в счёте, предложении или сделке. Нужно компаниям, у которых несколько реквизитов. У связи нет отдельного числового `id`: она задаётся парой значений — тип владельца `entityTypeId` и его ID `entityId`. Для сделки `entityTypeId` равен `2`, для счёта — `31`.\n\nБитрикс24 API: `crm.requisite.link.*`\nСкоуп: `crm`\n\n## Операции\n\n- [Зарегистрировать связь](.\u002Frequisite-links\u002Fregister.md) — `POST \u002Fv1\u002Frequisite-links`\n- [Список связей](.\u002Frequisite-links\u002Flist.md) — `GET \u002Fv1\u002Frequisite-links`\n- [Получить связь](.\u002Frequisite-links\u002Fget.md) — `GET \u002Fv1\u002Frequisite-links\u002F:entityTypeId\u002F:entityId`\n- [Обновить связь](.\u002Frequisite-links\u002Fupdate.md) — `PATCH \u002Fv1\u002Frequisite-links\u002F:entityTypeId\u002F:entityId`\n- [Удалить связь](.\u002Frequisite-links\u002Funregister.md) — `DELETE \u002Fv1\u002Frequisite-links\u002F:entityTypeId\u002F:entityId`\n- [Поиск связей](.\u002Frequisite-links\u002Fsearch.md) — `POST \u002Fv1\u002Frequisite-links\u002Fsearch`\n- [Поля связи](.\u002Frequisite-links\u002Ffields.md) — `GET \u002Fv1\u002Frequisite-links\u002Ffields`\n\n## Ключевые поля\n\n| Поле | Описание |\n|------|---------|\n| `entityTypeId` | Тип владельца связи: `2` — сделка, `31` — счёт |\n| `entityId` | ID владельца (сделки, счёта) |\n| `requisiteId` | ID привязываемого реквизита; `0` — не привязывать |\n| `bankDetailId` | ID привязываемого банковского реквизита; `0` — не привязывать |\n| `mcRequisiteId` \u002F `mcBankDetailId` | Реквизит и банковский реквизит вашей компании; `0` — не привязывать |\n\nПолный список полей — [`GET \u002Fv1\u002Frequisite-links\u002Ffields`](.\u002Frequisite-links\u002Ffields.md).\n\n## Что нужно знать перед работой\n\n1. **У связи нет отдельного числового `id`.** Связь определяется парой значений владельца — `entityTypeId` и `entityId`. Получение и удаление используют их в пути; регистрация передаёт их в теле.\n2. **Регистрация требует все шесть полей.** `entityTypeId`, `entityId`, `requisiteId`, `bankDetailId`, `mcRequisiteId`, `mcBankDetailId` — передавайте `0` для тех, что не нужно привязывать.\n3. **Ответы — в исходных именах Битрикс24.** Список, поиск и получение возвращают `ENTITY_TYPE_ID`, `REQUISITE_ID` и т. д.; значения id приходят строками.\n4. **Реквизит должен принадлежать клиенту сделки.** Привязать реквизит к сделке можно, только если у сделки выбран контакт или компания, которому этот реквизит принадлежит.\n\n## Связанные сущности\n\n| Сущность | Эндпоинт | Назначение |\n|----------|----------|-----------|\n| Реквизиты | `GET \u002Fv1\u002Frequisites` | Источник `requisiteId` для связи. |\n| Банковские реквизиты | `GET \u002Fv1\u002Fbank-details` | Источник `bankDetailId` для связи. |\n| Шаблоны реквизитов | `GET \u002Fv1\u002Frequisite-presets` | Шаблон набора полей реквизита. |\n\n## Типичный сценарий\n\n1. Получить реквизит компании-клиента: [`GET \u002Fv1\u002Frequisites?filter[entityTypeId]=4&filter[entityId]=15`](.\u002Frequisites\u002Flist.md).\n2. Получить его банковский реквизит: [`GET \u002Fv1\u002Fbank-details`](.\u002Fbank-details\u002Flist.md).\n3. Зарегистрировать связь на счёт или сделку: [`POST \u002Fv1\u002Frequisite-links`](.\u002Frequisite-links\u002Fregister.md) с `requisiteId` и `bankDetailId`.\n\n## Лимиты\n\n| Лимит | Значение |\n|-------|----------|\n| Максимум записей на запрос | 5000 (`limit ≤ 5000`) |\n| Авто-пагинация | включается при `limit > 50` |\n| Batch-запросы | до 50 операций в [`POST \u002Fv1\u002Fbatch`](\u002Fdocs\u002Fbatch) |\n| Rate limit | общий для Vibe API — см. [Лимиты и оптимизация](\u002Fdocs\u002Foptimization) |\n\n## Смотрите также\n\n- [Entity API](\u002Fdocs\u002Fentity-api)\n- [Синтаксис фильтрации](\u002Fdocs\u002Ffiltering)\n- [Batch](\u002Fdocs\u002Fbatch)\n- [Справочник сущностей](\u002Fdocs\u002Fentities-index)\n","2026-06-17",{"requisite-links\u002Fregister.md":7,"requisite-links\u002Flist.md":8,"requisite-links\u002Fget.md":9,"requisite-links\u002Fupdate.md":10,"requisite-links\u002Funregister.md":11,"requisite-links\u002Fsearch.md":12,"requisite-links\u002Ffields.md":13},"\n## Зарегистрировать связь реквизита\n\n`POST \u002Fv1\u002Frequisite-links`\n\nСоздаёт или обновляет привязку реквизита к сущности-владельцу. Если связь для указанной пары `(entityTypeId, entityId)` уже существует, она перезаписывается.\n\n## Поля запроса (body)\n\n| Поле | Тип | Обяз. | Описание |\n|------|-----|:-----:|---------|\n| `entityTypeId` | number | да | Тип владельца связи: `2` — сделка, `31` — счёт. Список: `GET \u002Fv1\u002Frequisite-links\u002Ffields` |\n| `entityId` | number | да | ID сущности-владельца. Источник: `GET \u002Fv1\u002Fdeals` или `GET \u002Fv1\u002Finvoices` |\n| `requisiteId` | number | да | ID реквизита клиента. Источник: `GET \u002Fv1\u002Frequisites`. Передайте `0`, чтобы не привязывать |\n| `bankDetailId` | number | да | ID банковского реквизита клиента. Источник: `GET \u002Fv1\u002Fbank-details`. Передайте `0`, чтобы не привязывать |\n| `mcRequisiteId` | number | да | ID реквизита вашей компании. Источник: `GET \u002Fv1\u002Frequisites`. Передайте `0`, чтобы не привязывать |\n| `mcBankDetailId` | number | да | ID банковского реквизита вашей компании. Источник: `GET \u002Fv1\u002Fbank-details`. Передайте `0`, чтобы не привязывать |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"entityTypeId\": 2,\n    \"entityId\": 3773,\n    \"requisiteId\": 45,\n    \"bankDetailId\": 12,\n    \"mcRequisiteId\": 3,\n    \"mcBankDetailId\": 7\n  }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"entityTypeId\": 2,\n    \"entityId\": 3773,\n    \"requisiteId\": 45,\n    \"bankDetailId\": 12,\n    \"mcRequisiteId\": 3,\n    \"mcBankDetailId\": 7\n  }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    entityTypeId: 2,\n    entityId: 3773,\n    requisiteId: 45,\n    bankDetailId: 12,\n    mcRequisiteId: 3,\n    mcBankDetailId: 7,\n  }),\n})\n\nconst { success, data } = await res.json()\nconsole.log('Зарегистрирована связь для entityId:', data.entityId)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    entityTypeId: 2,\n    entityId: 3773,\n    requisiteId: 45,\n    bankDetailId: 12,\n    mcRequisiteId: 3,\n    mcBankDetailId: 7,\n  }),\n})\n\nconst { success, data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data` | object | Результат регистрации |\n| `data.entityTypeId` | number | Переданный тип сущности |\n| `data.entityId` | number | Переданный ID сущности |\n| `data.registered` | boolean | Всегда `true` при успехе |\n\n## Пример ответа\n\nHTTP-статус: `201 Created`\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"entityTypeId\": 2,\n    \"entityId\": 3773,\n    \"registered\": true\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n400 — отсутствуют обязательные поля:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"MISSING_FIELDS\",\n    \"message\": \"POST \u002Fv1\u002Frequisite-links requires entityTypeId, entityId, requisiteId, bankDetailId, mcRequisiteId and mcBankDetailId in the body (use 0 for ids you don't want to link). Missing: requisiteId, bankDetailId, mcRequisiteId, mcBankDetailId. Raw UPPER_SNAKE names from \u002Fv1\u002Frequisite-links\u002Ffields (ENTITY_TYPE_ID, …) are accepted too.\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `MISSING_FIELDS` | Не переданы один или несколько из шести обязательных полей |\n| 422 | `BITRIX_ERROR` | Битрикс24 отклонил операцию — например, реквизит не принадлежит клиенту сделки |\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `crm`. Требуемое сообщение: `This endpoint requires 'crm' scope` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Передавать `0` для неиспользуемых связей.** Все шесть полей обязательны в теле запроса. Если реквизит или банковский реквизит привязывать не нужно, передайте `0`.\n\n**Реквизит должен принадлежать клиенту сделки.** Чтобы зарегистрировать связь для сделки, у неё должен быть выбран контакт или компания — владелец реквизита. Без выбранного клиента привязка возвращает `422 BITRIX_ERROR`.\n\n## Смотрите также\n\n- [Поля связи](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Ffields)\n- [Удалить связь](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Funregister)\n- [Список связей](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Flist)\n- [Реквизиты](\u002Fdocs\u002Fentities\u002Frequisites)\n- [Банковские реквизиты](\u002Fdocs\u002Fentities\u002Fbank-details)\n- [Batch](\u002Fdocs\u002Fbatch)\n","\n## Список связей реквизитов\n\n`GET \u002Fv1\u002Frequisite-links`\n\nВозвращает список связей реквизитов с поддержкой фильтрации и авто-пагинации. Каждая связь соединяет реквизит и банковский реквизит с конкретной сделкой или счётом.\n\n## Параметры\n\n| Параметр | Тип | По умолч. | Описание |\n|----------|-----|-----------|---------|\n| `limit` | number | `50` | Количество записей (до 5000). При `limit > 50` Вайбкод автоматически запрашивает несколько страниц у Битрикс24 |\n| `offset` | number | `0` | Пропустить N записей. При `offset > 0` рекомендуется `limit ≤ 500` |\n| `filter` | object | — | Фильтрация по полям. Допустимые ключи: `entityTypeId`, `entityId`, `requisiteId`, `bankDetailId`, `mcRequisiteId`, `mcBankDetailId`. Поддерживаются операторы сравнения (`$gt`\u002F`$gte`\u002F`$lt`\u002F`$lte` и префиксы `>=`\u002F`>`), множества (`$in`\u002F`$nin`). Логические `$or`\u002F`$and` не поддерживаются.\u003Cbr>[Синтаксис фильтрации](\u002Fdocs\u002Ffiltering). Пример: `?filter[entityTypeId]=2&filter[entityId]=3773` |\n| `sort` | string | — | Поле сортировки — один из ключей фильтра. Направление задаётся в `order` |\n| `order` | string \\| object | `asc` | Направление для `sort` (`asc`\u002F`desc`), либо форма `order[поле]=asc\\|desc` |\n\nПагинация: при `limit > 50` Вайбкод автоматически запрашивает несколько страниц у Битрикс24 и возвращает все записи в одном ответе. Максимум — 5000 записей за вызов.\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links?filter[entityTypeId]=2&filter[entityId]=3773\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links?filter[entityTypeId]=2&filter[entityId]=3773\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch(\n  'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links?filter[entityTypeId]=2&filter[entityId]=3773',\n  {\n    headers: {\n      'X-Api-Key': 'YOUR_API_KEY',\n    },\n  }\n)\n\nconst { success, data, meta } = await res.json()\nconsole.log(`Найдено ${meta.total} связей`)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch(\n  'https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links?filter[entityTypeId]=2&filter[entityId]=3773',\n  {\n    headers: {\n      'X-Api-Key': 'YOUR_APP_KEY',\n      'Authorization': 'Bearer USER_SESSION_TOKEN',\n    },\n  }\n)\n\nconst { success, data, meta } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data` | array | Массив связей |\n| `data[].ENTITY_TYPE_ID` | string | Тип владельца: `\"2\"` — сделка, `\"31\"` — счёт |\n| `data[].ENTITY_ID` | string | ID владельца (сделки или счёта). Источник: `GET \u002Fv1\u002Fdeals` или `GET \u002Fv1\u002Finvoices` |\n| `data[].REQUISITE_ID` | string | ID привязанного реквизита; `\"0\"` — реквизит не привязан. Источник: `GET \u002Fv1\u002Frequisites` |\n| `data[].BANK_DETAIL_ID` | string | ID привязанного банковского реквизита; `\"0\"` — не привязан. Источник: `GET \u002Fv1\u002Fbank-details` |\n| `data[].MC_REQUISITE_ID` | string | ID реквизита вашей компании; `\"0\"` — не привязан |\n| `data[].MC_BANK_DETAIL_ID` | string | ID банковского реквизита вашей компании; `\"0\"` — не привязан |\n| `meta.total` | number | Общее количество записей, соответствующих фильтру |\n| `meta.hasMore` | boolean | Есть ли ещё записи за пределами `limit` |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": [\n    {\n      \"ENTITY_TYPE_ID\": \"2\",\n      \"ENTITY_ID\": \"3773\",\n      \"REQUISITE_ID\": \"45\",\n      \"BANK_DETAIL_ID\": \"0\",\n      \"MC_REQUISITE_ID\": \"0\",\n      \"MC_BANK_DETAIL_ID\": \"0\"\n    },\n    {\n      \"ENTITY_TYPE_ID\": \"2\",\n      \"ENTITY_ID\": \"3825\",\n      \"REQUISITE_ID\": \"0\",\n      \"BANK_DETAIL_ID\": \"0\",\n      \"MC_REQUISITE_ID\": \"0\",\n      \"MC_BANK_DETAIL_ID\": \"0\"\n    },\n    {\n      \"ENTITY_TYPE_ID\": \"2\",\n      \"ENTITY_ID\": \"3827\",\n      \"REQUISITE_ID\": \"0\",\n      \"BANK_DETAIL_ID\": \"0\",\n      \"MC_REQUISITE_ID\": \"0\",\n      \"MC_BANK_DETAIL_ID\": \"0\"\n    }\n  ],\n  \"meta\": {\n    \"total\": 410,\n    \"hasMore\": true\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n403 — нет скоупа:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"SCOPE_DENIED\",\n    \"message\": \"This endpoint requires 'crm' scope\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `crm` |\n| 401 | `TOKEN_MISSING` | Не передан `X-Api-Key` |\n| 400 | `INVALID_FILTER` | Ошибка в синтаксисе фильтра |\n| 400 | `UNKNOWN_FILTER_FIELD` | Неизвестное поле фильтра (в ответе — список допустимых) |\n| 400 | `UNKNOWN_SORT_FIELD` | Неизвестное поле сортировки |\n| 400 | `INVALID_FILTER_OPERATOR` | Логический оператор верхнего уровня (`$or`\u002F`$and`) не поддерживается |\n| 400 | `MISSING_ENTITY_TYPE_ID` | Фильтр по `entityId` без `entityTypeId` |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Поля ответа — в исходных именах Битрикс24.** Все поля возвращаются в верхнем регистре — `ENTITY_TYPE_ID`, `ENTITY_ID`, `REQUISITE_ID` и т. д.; значения числовых идентификаторов приходят строками, например `\"REQUISITE_ID\": \"45\"`, `\"BANK_DETAIL_ID\": \"0\"`.\n\n**У связи нет отдельного числового `id`.** Каждая связь определяется парой значений владельца — `entityTypeId` и `entityId`; именно они используются для получения и удаления записи.\n\n**Значение `\"0\"` означает отсутствие привязки.** Для `REQUISITE_ID`, `BANK_DETAIL_ID`, `MC_REQUISITE_ID`, `MC_BANK_DETAIL_ID` строка `\"0\"` означает, что соответствующий реквизит не привязан, а не что привязан объект с ID 0.\n\n## Смотрите также\n\n- [Получить связь](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Fget)\n- [Поиск связей](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Fsearch)\n- [Зарегистрировать связь](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Fregister)\n- [Реквизиты](\u002Fdocs\u002Fentities\u002Frequisites\u002Flist)\n- [Банковские реквизиты](\u002Fdocs\u002Fentities\u002Fbank-details\u002Flist)\n- [Синтаксис фильтрации](\u002Fdocs\u002Ffiltering)\n","\n## Получить связь реквизитов\n\n`GET \u002Fv1\u002Frequisite-links\u002F:entityTypeId\u002F:entityId`\n\nВозвращает конкретную связь реквизитов по паре идентификаторов владельца.\n\n## Параметры\n\n| Параметр | Тип | Обяз. | Описание |\n|----------|-----|:-----:|---------|\n| `entityTypeId` (path) | number | да | Тип владельца: `2` — сделка, `31` — счёт |\n| `entityId` (path) | number | да | ID владельца. Источник: `GET \u002Fv1\u002Fdeals` или `GET \u002Fv1\u002Finvoices` |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002F2\u002F3773\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002F2\u002F3773\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst entityTypeId = 2\nconst entityId = 3773\n\nconst res = await fetch(\n  `https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002F${entityTypeId}\u002F${entityId}`,\n  {\n    headers: {\n      'X-Api-Key': 'YOUR_API_KEY',\n    },\n  }\n)\n\nconst { success, data } = await res.json()\nconsole.log('Реквизит:', data.REQUISITE_ID)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst entityTypeId = 2\nconst entityId = 3773\n\nconst res = await fetch(\n  `https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002F${entityTypeId}\u002F${entityId}`,\n  {\n    headers: {\n      'X-Api-Key': 'YOUR_APP_KEY',\n      'Authorization': 'Bearer USER_SESSION_TOKEN',\n    },\n  }\n)\n\nconst { success, data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data` | object | Объект связи |\n| `data.ENTITY_TYPE_ID` | number | Тип владельца: `2` — сделка, `31` — счёт |\n| `data.ENTITY_ID` | number | ID владельца |\n| `data.REQUISITE_ID` | string | ID привязанного реквизита; `\"0\"` — не привязан. Источник: `GET \u002Fv1\u002Frequisites` |\n| `data.BANK_DETAIL_ID` | string | ID привязанного банковского реквизита; `\"0\"` — не привязан. Источник: `GET \u002Fv1\u002Fbank-details` |\n| `data.MC_REQUISITE_ID` | string | ID реквизита вашей компании; `\"0\"` — не привязан |\n| `data.MC_BANK_DETAIL_ID` | string | ID банковского реквизита вашей компании; `\"0\"` — не привязан |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"ENTITY_TYPE_ID\": 2,\n    \"ENTITY_ID\": 3773,\n    \"REQUISITE_ID\": \"45\",\n    \"BANK_DETAIL_ID\": \"0\",\n    \"MC_REQUISITE_ID\": \"0\",\n    \"MC_BANK_DETAIL_ID\": \"0\"\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n404 — связь не найдена:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"NOT_FOUND\",\n    \"message\": \"No requisite link for entityTypeId=2, entityId=999\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 404 | `NOT_FOUND` | Связь с указанным `entityTypeId` и `entityId` не найдена |\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `crm` |\n| 401 | `TOKEN_MISSING` | Не передан `X-Api-Key` |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**У связи нет отдельного числового `id`.** Она определяется парой значений владельца: `entityTypeId` и `entityId` — оба передаются в пути.\n\n**Смешанные типы в ответе.** `ENTITY_TYPE_ID` и `ENTITY_ID` возвращаются числами, а остальные идентификаторы — `REQUISITE_ID`, `BANK_DETAIL_ID`, `MC_REQUISITE_ID`, `MC_BANK_DETAIL_ID` — строками.\n\n**Значение `\"0\"` означает отсутствие привязки.** Для `REQUISITE_ID`, `BANK_DETAIL_ID`, `MC_REQUISITE_ID`, `MC_BANK_DETAIL_ID` строка `\"0\"` означает, что соответствующий реквизит не привязан, а не что привязан объект с ID 0.\n\n## Смотрите также\n\n- [Список связей](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Flist)\n- [Поиск связей](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Fsearch)\n- [Зарегистрировать связь](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Fregister)\n- [Удалить связь](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Funregister)\n- [Реквизиты](\u002Fdocs\u002Fentities\u002Frequisites\u002Flist)\n- [Банковские реквизиты](\u002Fdocs\u002Fentities\u002Fbank-details\u002Flist)\n","\n## Обновить связь реквизита\n\n`PATCH \u002Fv1\u002Frequisite-links\u002F:entityTypeId\u002F:entityId`\n\nЧастично обновляет существующую привязку: меняет только переданные поля, остальные сохраняются. Пара владельца `(entityTypeId, entityId)` берётся из пути — её сменить нельзя (это ключ связи). Если связи для указанной пары нет, возвращается `404`.\n\n> В Битрикс24 у связи реквизита нет отдельного метода обновления — регистрация (`POST`) сама по себе является upsert'ом и полностью перезаписывает связь. `PATCH` добавлен для консистентности с остальным Entity API: он сначала читает текущую связь, накладывает на неё переданные поля и перерегистрирует — поэтому опущенные поля не сбрасываются. Полная перезапись по-прежнему доступна через [`POST \u002Fv1\u002Frequisite-links`](.\u002Fregister.md).\n\n## Параметры пути\n\n| Параметр | Тип | Описание |\n|----------|-----|---------|\n| `entityTypeId` | number | Тип владельца связи: `2` — сделка, `31` — счёт |\n| `entityId` | number | ID сущности-владельца |\n\n## Поля запроса (body)\n\nПередавайте только те поля, которые нужно изменить. Опущенные поля сохраняют текущее значение. Передайте `0`, чтобы снять привязку слота.\n\n| Поле | Тип | Обяз. | Описание |\n|------|-----|:-----:|---------|\n| `requisiteId` | number | нет | ID реквизита клиента. Источник: `GET \u002Fv1\u002Frequisites`. `0` — снять привязку |\n| `bankDetailId` | number | нет | ID банковского реквизита клиента. Источник: `GET \u002Fv1\u002Fbank-details`. `0` — снять привязку |\n| `mcRequisiteId` | number | нет | ID реквизита вашей компании. Источник: `GET \u002Fv1\u002Frequisites`. `0` — снять привязку |\n| `mcBankDetailId` | number | нет | ID банковского реквизита вашей компании. Источник: `GET \u002Fv1\u002Fbank-details`. `0` — снять привязку |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X PATCH \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002F2\u002F3773\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"requisiteId\": 46\n  }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X PATCH \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002F2\u002F3773\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"requisiteId\": 46\n  }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002F2\u002F3773', {\n  method: 'PATCH',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    requisiteId: 46,\n  }),\n})\n\nconst { success, data } = await res.json()\nconsole.log('Обновлена связь для entityId:', data.entityId)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002F2\u002F3773', {\n  method: 'PATCH',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    requisiteId: 46,\n  }),\n})\n\nconst { success, data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data` | object | Состояние связи после обновления |\n| `data.entityTypeId` | number | Тип владельца из пути |\n| `data.entityId` | number | ID владельца из пути |\n| `data.requisiteId` | number | Итоговый ID реквизита клиента |\n| `data.bankDetailId` | number | Итоговый ID банковского реквизита клиента |\n| `data.mcRequisiteId` | number | Итоговый ID реквизита вашей компании |\n| `data.mcBankDetailId` | number | Итоговый ID банковского реквизита вашей компании |\n| `data.updated` | boolean | Всегда `true` при успехе |\n\n## Пример ответа\n\nHTTP-статус: `200 OK`\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"entityTypeId\": 2,\n    \"entityId\": 3773,\n    \"requisiteId\": 46,\n    \"bankDetailId\": 12,\n    \"mcRequisiteId\": 3,\n    \"mcBankDetailId\": 7,\n    \"updated\": true\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n404 — связи для указанной пары не существует:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"NOT_FOUND\",\n    \"message\": \"No requisite link for entityTypeId=2, entityId=3773\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `INVALID_ANCHOR` | `entityTypeId` или `entityId` в пути не положительное целое |\n| 400 | `INVALID_REQUEST` | Тело запроса не объект с полями связи |\n| 404 | `NOT_FOUND` | Связи для пары `(entityTypeId, entityId)` нет — создайте её через `POST \u002Fv1\u002Frequisite-links` |\n| 422 | `BITRIX_ERROR` | Битрикс24 отклонил операцию — например, реквизит не принадлежит клиенту сделки |\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `crm`. Требуемое сообщение: `This endpoint requires 'crm' scope` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Обновление недоступно для несуществующей связи.** `PATCH` не создаёт связь — на отсутствующую пару он отвечает `404`. Чтобы создать или полностью перезаписать связь, используйте [`POST \u002Fv1\u002Frequisite-links`](.\u002Fregister.md).\n\n**Ключ связи не меняется.** `entityTypeId` и `entityId` берутся из пути и не обновляются. Чтобы перепривязать реквизит к другому владельцу, удалите старую связь и зарегистрируйте новую.\n\n**Передавать `0`, чтобы снять привязку.** Опущенное поле сохраняет текущее значение; явный `0` снимает привязку этого слота.\n\n## Смотрите также\n\n- [Зарегистрировать связь](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Fregister)\n- [Получить связь](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Fget)\n- [Удалить связь](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Funregister)\n- [Поля связи](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Ffields)\n- [Batch](\u002Fdocs\u002Fbatch)\n","\n## Удалить связь реквизита\n\n`DELETE \u002Fv1\u002Frequisite-links\u002F:entityTypeId\u002F:entityId`\n\nУдаляет привязку реквизита к сущности. После удаления реквизит и банковский реквизит остаются в системе — удаляется только связь между ними и сущностью-владельцем.\n\n## Параметры\n\n| Параметр | Тип | Обяз. | Описание |\n|----------|-----|:-----:|---------|\n| `entityTypeId` (path) | number | да | Тип владельца связи: `2` — сделка, `31` — счёт |\n| `entityId` (path) | number | да | ID сущности-владельца |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X DELETE \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002F2\u002F3825\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X DELETE \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002F2\u002F3825\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002F2\u002F3825', {\n  method: 'DELETE',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n  },\n})\n\nconst { success, data } = await res.json()\nconsole.log('Удалена связь для entityId:', data.entityId)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002F2\u002F3825', {\n  method: 'DELETE',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\n\nconst { success, data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data` | object | Результат удаления |\n| `data.entityTypeId` | number | Тип сущности из пути запроса |\n| `data.entityId` | number | ID сущности из пути запроса |\n| `data.unregistered` | boolean | Всегда `true` при успехе |\n\n## Пример ответа\n\nHTTP-статус: `200 OK`\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"entityTypeId\": 2,\n    \"entityId\": 3825,\n    \"unregistered\": true\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n400 — некорректный `entityTypeId` или `entityId` в пути:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"INVALID_ANCHOR\",\n    \"message\": \"Path requires entityTypeId and entityId — both positive integers (e.g. \u002Fv1\u002Frequisite-links\u002F31\u002F42)\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `INVALID_ANCHOR` | `entityTypeId` или `entityId` в пути не являются положительными целыми числами |\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `crm`. Требуемое сообщение: `This endpoint requires 'crm' scope` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Идемпотентно.** Удаление возвращает `200 {unregistered: true}` даже если связи для пары `(entityTypeId, entityId)` не существовало — повторный вызов безопасен, отдельной ошибки «не найдено» нет.\n\n## Смотрите также\n\n- [Зарегистрировать связь](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Fregister)\n- [Список связей](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Flist)\n- [Поиск связей](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Fsearch)\n- [Получить связь](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Fget)\n- [Поля связи](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Ffields)\n- [Batch](\u002Fdocs\u002Fbatch)\n","\n## Поиск связей реквизитов\n\n`POST \u002Fv1\u002Frequisite-links\u002Fsearch`\n\nПоиск связей реквизитов с фильтрами и авто-пагинацией. Аналогичен `GET \u002Fv1\u002Frequisite-links`, но параметры передаются в теле запроса — удобнее для сложных фильтров с большим количеством условий и для программной сборки запросов.\n\n## Поля запроса (body)\n\n| Параметр | Тип | По умолч. | Описание |\n|----------|-----|-----------|---------|\n| `filter` | object | — | Фильтрация. Допустимые ключи: `entityTypeId`, `entityId`, `requisiteId`, `bankDetailId`, `mcRequisiteId`, `mcBankDetailId`. Поддерживаются операторы сравнения (`$gt`\u002F`$gte`\u002F`$lt`\u002F`$lte`), множества (`$in`\u002F`$nin`). Логические `$or`\u002F`$and` не поддерживаются.\u003Cbr>[Синтаксис фильтрации](\u002Fdocs\u002Ffiltering). Пример: `{ \"entityTypeId\": 2, \"entityId\": 3773 }` |\n| `sort` | string | — | Поле сортировки — один из ключей фильтра |\n| `order` | string \\| object | `asc` | Направление для `sort` (`asc`\u002F`desc`), либо форма `{ \"поле\": \"asc\\|desc\" }` |\n| `limit` | number | `50` | Количество записей (до 5000) |\n| `offset` | number | `0` | Пропустить N записей |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002Fsearch\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"filter\": { \"entityTypeId\": 2, \"requisiteId\": 45 },\n    \"limit\": 20\n  }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002Fsearch\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"filter\": { \"entityTypeId\": 2, \"requisiteId\": 45 },\n    \"limit\": 20\n  }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002Fsearch', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    filter: { entityTypeId: 2, requisiteId: 45 },\n    limit: 20,\n  }),\n})\n\nconst { success, data } = await res.json()\nconsole.log('Найдено:', data.length)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002Fsearch', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    filter: { entityTypeId: 2, requisiteId: 45 },\n    limit: 20,\n  }),\n})\n\nconst { success, data } = await res.json()\n```\n\n### Другие сценарии\n\nВсе связи по конкретной сделке:\n\n```json\n{ \"filter\": { \"entityTypeId\": 2, \"entityId\": 3773 } }\n```\n\nВсе связи по конкретному реквизиту (найти, к каким сущностям привязан реквизит с ID 45):\n\n```json\n{ \"filter\": { \"requisiteId\": 45 } }\n```\n\nВсе связи счетов, `entityTypeId` равен `31`:\n\n```json\n{\n  \"filter\": { \"entityTypeId\": 31 },\n  \"limit\": 100\n}\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data` | array | Массив связей |\n| `data[].ENTITY_TYPE_ID` | string | Тип владельца: `\"2\"` — сделка, `\"31\"` — счёт |\n| `data[].ENTITY_ID` | string | ID владельца. Источник: `GET \u002Fv1\u002Fdeals` или `GET \u002Fv1\u002Finvoices` |\n| `data[].REQUISITE_ID` | string | ID реквизита; `\"0\"` — не привязан. Источник: `GET \u002Fv1\u002Frequisites` |\n| `data[].BANK_DETAIL_ID` | string | ID банковского реквизита; `\"0\"` — не привязан. Источник: `GET \u002Fv1\u002Fbank-details` |\n| `data[].MC_REQUISITE_ID` | string | ID реквизита вашей компании; `\"0\"` — не привязан |\n| `data[].MC_BANK_DETAIL_ID` | string | ID банковского реквизита вашей компании; `\"0\"` — не привязан |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": [\n    {\n      \"ENTITY_TYPE_ID\": \"2\",\n      \"ENTITY_ID\": \"3773\",\n      \"REQUISITE_ID\": \"45\",\n      \"BANK_DETAIL_ID\": \"0\",\n      \"MC_REQUISITE_ID\": \"0\",\n      \"MC_BANK_DETAIL_ID\": \"0\"\n    },\n    {\n      \"ENTITY_TYPE_ID\": \"2\",\n      \"ENTITY_ID\": \"3825\",\n      \"REQUISITE_ID\": \"0\",\n      \"BANK_DETAIL_ID\": \"0\",\n      \"MC_REQUISITE_ID\": \"0\",\n      \"MC_BANK_DETAIL_ID\": \"0\"\n    }\n  ],\n  \"meta\": {\n    \"total\": 68,\n    \"hasMore\": true\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n403 — нет скоупа:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"SCOPE_DENIED\",\n    \"message\": \"This endpoint requires 'crm' scope\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `crm` |\n| 401 | `TOKEN_MISSING` | Не передан `X-Api-Key` |\n| 400 | `INVALID_FILTER` | Ошибка в синтаксисе фильтра |\n| 400 | `UNKNOWN_FILTER_FIELD` | Неизвестное поле фильтра (в ответе — список допустимых) |\n| 400 | `UNKNOWN_SORT_FIELD` | Неизвестное поле сортировки |\n| 400 | `INVALID_FILTER_OPERATOR` | Логический оператор верхнего уровня (`$or`\u002F`$and`) не поддерживается |\n| 400 | `MISSING_ENTITY_TYPE_ID` | Фильтр по `entityId` без `entityTypeId` |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Поля ответа — в исходных именах Битрикс24.** Все поля возвращаются в верхнем регистре — `ENTITY_TYPE_ID`, `ENTITY_ID`, `REQUISITE_ID` и т. д.; значения числовых идентификаторов приходят строками, например `\"REQUISITE_ID\": \"45\"`, `\"BANK_DETAIL_ID\": \"0\"`. Ключи фильтра при этом принимаются в camelCase: `entityTypeId`, `entityId`, `requisiteId`, `bankDetailId`.\n\n**Значение `\"0\"` означает отсутствие привязки.** Для `REQUISITE_ID`, `BANK_DETAIL_ID`, `MC_REQUISITE_ID`, `MC_BANK_DETAIL_ID` строка `\"0\"` означает, что соответствующий реквизит не привязан, а не что привязан объект с ID 0.\n\n## Смотрите также\n\n- [Список связей](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Flist)\n- [Получить связь](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Fget)\n- [Поля связи](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Ffields)\n- [Синтаксис фильтрации](\u002Fdocs\u002Ffiltering)\n- [Batch](\u002Fdocs\u002Fbatch)\n","\n## Поля связи реквизита\n\n`GET \u002Fv1\u002Frequisite-links\u002Ffields`\n\nВозвращает схему полей связи реквизита — описание, типы и флаги для всех шести полей.\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002Ffields\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\"\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002Ffields\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\"\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002Ffields', {\n  headers: { 'X-Api-Key': 'YOUR_API_KEY' },\n})\n\nconst { success, data } = await res.json()\nconsole.log('Поля:', Object.keys(data.fields))\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Frequisite-links\u002Ffields', {\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n  },\n})\n\nconst { success, data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | RO | Описание |\n|------|-----|:--:|---------|\n| `success` | boolean | | Всегда `true` при успехе |\n| `data.fields` | object | | Схема полей. Ключи — имена в `UPPER_SNAKE_CASE` |\n| `data.fields.ENTITY_TYPE_ID` | object | | Тип владельца связи: `2` — сделка, `31` — счёт |\n| `data.fields.ENTITY_ID` | object | | ID сущности-владельца |\n| `data.fields.REQUISITE_ID` | object | | ID реквизита клиента; `\"0\"` — не привязан |\n| `data.fields.BANK_DETAIL_ID` | object | | ID банковского реквизита клиента; `\"0\"` — не привязан |\n| `data.fields.MC_REQUISITE_ID` | object | | ID реквизита вашей компании; `\"0\"` — не привязан |\n| `data.fields.MC_BANK_DETAIL_ID` | object | | ID банковского реквизита вашей компании; `\"0\"` — не привязан |\n\nКаждый объект-поле содержит: `type`, `isRequired`, `isReadOnly`, `isImmutable`, `isMultiple`, `isDynamic`, `title`.\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"fields\": {\n      \"ENTITY_TYPE_ID\": {\n        \"type\": \"integer\",\n        \"isRequired\": true,\n        \"isReadOnly\": false,\n        \"isImmutable\": true,\n        \"isMultiple\": false,\n        \"isDynamic\": false,\n        \"title\": \"ID типа сущности\"\n      },\n      \"ENTITY_ID\": {\n        \"type\": \"integer\",\n        \"isRequired\": true,\n        \"isReadOnly\": false,\n        \"isImmutable\": true,\n        \"isMultiple\": false,\n        \"isDynamic\": false,\n        \"title\": \"ID сущности\"\n      },\n      \"REQUISITE_ID\": {\n        \"type\": \"integer\",\n        \"isRequired\": true,\n        \"isReadOnly\": false,\n        \"isImmutable\": false,\n        \"isMultiple\": false,\n        \"isDynamic\": false,\n        \"title\": \"Привязка к реквизитам\"\n      },\n      \"BANK_DETAIL_ID\": {\n        \"type\": \"integer\",\n        \"isRequired\": true,\n        \"isReadOnly\": false,\n        \"isImmutable\": false,\n        \"isMultiple\": false,\n        \"isDynamic\": false,\n        \"title\": \"Привязка к банковским реквизитам\"\n      },\n      \"MC_REQUISITE_ID\": {\n        \"type\": \"integer\",\n        \"isRequired\": true,\n        \"isReadOnly\": false,\n        \"isImmutable\": false,\n        \"isMultiple\": false,\n        \"isDynamic\": false,\n        \"title\": \"Привязка к реквизитам моей компании\"\n      },\n      \"MC_BANK_DETAIL_ID\": {\n        \"type\": \"integer\",\n        \"isRequired\": true,\n        \"isReadOnly\": false,\n        \"isImmutable\": false,\n        \"isMultiple\": false,\n        \"isDynamic\": false,\n        \"title\": \"Привязка к банковским реквизитам моей компании\"\n      }\n    }\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n403 — нет скоупа:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"SCOPE_DENIED\",\n    \"message\": \"This endpoint requires 'crm' scope\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `crm` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Смотрите также\n\n- [Зарегистрировать связь](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Fregister)\n- [Список связей](\u002Fdocs\u002Fentities\u002Frequisite-links\u002Flist)\n- [Entity API](\u002Fdocs\u002Fentity-api)\n"]