[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-apps\u002Fupdate":3,"docs-tabs-apps\u002Fupdate":6},{"content":4,"lastmod":5},"\n## Обновить приложение\n\n`PATCH \u002Fv1\u002Fapps\u002F:id`\n\nИзменяет свойства приложения. Передавайте только те поля, которые нужно изменить.\n\n## Параметры\n\n| Параметр | Тип | Обяз. | Описание |\n|----------|-----|:-----:|---------|\n| `id` (path) | string | да | Идентификатор приложения из [создания](\u002Fdocs\u002Fapps\u002Fcreate) или [списка](\u002Fdocs\u002Fapps\u002Flist) |\n\n## Поля запроса (body)\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `title` | string | Название, от 1 до 255 символов. У приложения в каталоге предел — 100 символов |\n| `description` | string \\| null | Описание, до 2000 символов |\n| `appUrl` | string | Адрес приложения, только `http:\u002F\u002F` или `https:\u002F\u002F`. Пустая строка сохраняется как `null` |\n| `scopes` | array | Набор скоупов, минимум один |\n| `redirectUris` | array | Адреса перенаправления для OAuth |\n| `placements` | array | Места встраивания. Список кодов — `GET \u002Fv1\u002Fplacements\u002Favailable` |\n\n`handlerUrl` менять нельзя — поле в теле приводит к `400 HANDLER_URL_READONLY`.\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X PATCH https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fapps\u002FAPP_ID \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"appUrl\": \"https:\u002F\u002Fapp-abc12345.vibecode.bitrix24.tech\u002Fdashboard\" }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X PATCH https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fapps\u002FAPP_ID \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"appUrl\": \"https:\u002F\u002Fapp-abc12345.vibecode.bitrix24.tech\u002Fdashboard\" }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fapps\u002FAPP_ID', {\n  method: 'PATCH',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    appUrl: 'https:\u002F\u002Fapp-abc12345.vibecode.bitrix24.tech\u002Fdashboard',\n  }),\n})\n\nconst { data } = await res.json()\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fapps\u002FAPP_ID', {\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    appUrl: 'https:\u002F\u002Fapp-abc12345.vibecode.bitrix24.tech\u002Fdashboard',\n  }),\n})\n\nconst { data } = await res.json()\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `data` | object | Приложение после обновления. Набор полей совпадает с ответом [создания](\u002Fdocs\u002Fapps\u002Fcreate), без `rawKey` |\n| `data.updatedAt` | string | Дата изменения, ISO 8601 |\n| `warnings` | array | Появляется при частичной синхронизации мест встраивания: коды, которые не удалось привязать |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"id\": \"33c4d5e6-f7a8-49b0-1234-5c6d7e8f9012\",\n    \"title\": \"Дашборд продаж\",\n    \"description\": \"Обновлено\",\n    \"scopes\": [\"crm\", \"user\", \"placement\"],\n    \"handlerUrl\": \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Fbitrix-handler\",\n    \"appUrl\": \"https:\u002F\u002Fapp-abc12345.vibecode.bitrix24.tech\u002Fdashboard\",\n    \"redirectUris\": [\n      \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Foauth\u002Fcomplete\",\n      \"http:\u002F\u002Flocalhost\"\n    ],\n    \"bitrixClientId\": \"local.7c3d4e5f6a7b80.55556666\",\n    \"prefix\": \"vibe_app_local_7c3\",\n    \"suffix\": \"6666\",\n    \"authorId\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n    \"portalId\": \"8b1f0e2a-3c4d-5e6f-7a8b-9c0d1e2f3a4b\",\n    \"createdAt\": \"2026-06-24T09:12:45.781Z\",\n    \"updatedAt\": \"2026-06-24T09:13:36.974Z\",\n    \"placements\": []\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n404 — приложение не найдено:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"APP_NOT_FOUND\",\n    \"message\": \"Application not found\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 400 | `HANDLER_URL_READONLY` | В теле передан `handlerUrl` — поле задаёт платформа и менять его нельзя |\n| 400 | `NO_USER_TOKEN` | Смена `placements` или переименование опубликованного приложения без токена пользователя на облачном портале |\n| 400 | `TITLE_TOO_LONG_FOR_CATALOG` | Новое название длиннее 100 символов у приложения, добавленного в каталог |\n| 403 | `UNAUTHORIZED` | Ключ не принадлежит автору или владельцу приложения |\n| 404 | `APP_NOT_FOUND` | Приложения с указанным `id` нет |\n| 502 | `BITRIX_PARTIAL_REBIND` | Битрикс24 отклонил перепривязку места встраивания при переименовании. Новое название не записано — повторите запрос |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n- **Переименование приложения в каталоге меняет и подписи на портале.** Новое `title` уходит в карточку каталога (поле `catalogTitle` пишется вместе с `title`) и в места встраивания — пункт левого меню и вкладки CRM. Поэтому переименование обращается к Битрикс24 и может вернуть `400 NO_USER_TOKEN` или `502 BITRIX_PARTIAL_REBIND`; при отказе название не записывается, повтор запроса чинит состояние. Портал кэширует левое меню — новое имя видно после жёсткой перезагрузки страницы. У приложения вне каталога переименование меняет только `title`.\n- **Смена `placements` у опубликованного приложения запускает синхронизацию мест встраивания на портале.** Привязка и отвязка проходят прямо на портале Битрикс24, и часть кодов может не привязаться — тогда ответ несёт `warnings` со списком таких кодов. На облачном портале без токена пользователя синхронизация невозможна, запрос возвращает `400 NO_USER_TOKEN`. У приложения в статусе `PRIVATE` `placements` пишутся в базу без обращения к порталу.\n\n## Смотрите также\n\n- [Приложения](\u002Fdocs\u002Fapps)\n- [Создать приложение](\u002Fdocs\u002Fapps\u002Fcreate)\n- [Данные приложения](\u002Fdocs\u002Fapps\u002Fget)\n- [Удалить приложение](\u002Fdocs\u002Fapps\u002Fdelete)\n- [Опубликовать](\u002Fdocs\u002Fapps\u002Fpublish)\n","2026-07-14",{}]