## Задать источники папки «Все»

> **Метод в процессе раскатки — выходит в обновлении `im 26.1300.0`.** Доступен не на всех порталах Битрикс24. Если на вашем портале метод ещё не доступен, API вернёт `422 METHOD_NOT_YET_AVAILABLE` — это не ошибка интеграции, а признак того, что обновление пока не приехало на портал.

`PUT /v1/chats/folders/:folderId/sources`

Задаёт полный набор включённых источников папки «Все». Работает только с этой папкой. Что такое источники, их текущий набор и коды — [`GET /v1/chats/folders/:folderId/sources`](/docs/chats/management/folder-sources).

## Параметры

| Параметр | Тип | Обяз. | Описание |
|----------|-----|:-----:|---------|
| `folderId` (path) | number | да | ID папки «Все» — поле `id` папки с `type: "system"` и `code: "all"` из [`GET /v1/chats/folders`](/docs/chats/discovery/folders) |

## Поля запроса (body)

| Поле | Тип | Обяз. | Описание |
|------|-----|:-----:|---------|
| `sourceCodes` | string[] | да | Коды источников, которые должны быть включены, — значения `data.sources[].code` из [`GET /v1/chats/folders/:folderId/sources`](/docs/chats/management/folder-sources). Элемент — непустая строка до 64 символов. `[]` выключает все источники, которые можно выключить |

Параметров запроса нет. Любой параметр запроса или другое поле тела отклоняется с `400 INVALID_PARAMS`.

## Примеры

### curl — личный ключ

```bash
# Оставить включёнными задачи и коллабы в папке «Все» (ID 7)
curl -X PUT "https://vibecode.bitrix24.tech/v1/chats/folders/7/sources" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"sourceCodes": ["tasksTask", "collab"]}'
```

### curl — OAuth-приложение

```bash
# Оставить включёнными задачи и коллабы в папке «Все» (ID 7)
curl -X PUT "https://vibecode.bitrix24.tech/v1/chats/folders/7/sources" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"sourceCodes": ["tasksTask", "collab"]}'
```

### JavaScript — личный ключ

```javascript
const base = 'https://vibecode.bitrix24.tech/v1/chats/folders/7/sources'
const headers = { 'X-Api-Key': 'YOUR_API_KEY', 'Content-Type': 'application/json' }

const { data } = await fetch(base, { headers }).then((r) => r.json())

// Выключить коллабы, остальное оставить как есть
const sourceCodes = data.sources
  .filter((s) => s.togglable && s.enabled && s.code !== 'collab')
  .map((s) => s.code)

const saved = await fetch(base, {
  method: 'PUT',
  headers,
  body: JSON.stringify({ sourceCodes }),
}).then((r) => r.json())

console.log('Включены:', saved.data.sourceFolders)
```

### JavaScript — OAuth-приложение

```javascript
const base = 'https://vibecode.bitrix24.tech/v1/chats/folders/7/sources'
const headers = {
  'X-Api-Key': 'YOUR_APP_KEY',
  'Authorization': 'Bearer USER_SESSION_TOKEN',
  'Content-Type': 'application/json',
}

const { data } = await fetch(base, { headers }).then((r) => r.json())

// Выключить коллабы, остальное оставить как есть
const sourceCodes = data.sources
  .filter((s) => s.togglable && s.enabled && s.code !== 'collab')
  .map((s) => s.code)

const saved = await fetch(base, {
  method: 'PUT',
  headers,
  body: JSON.stringify({ sourceCodes }),
}).then((r) => r.json())

console.log('Включены:', saved.data.sourceFolders)
```

## Поля ответа

| Поле | Тип | Описание |
|------|-----|---------|
| `success` | boolean | Всегда `true` при успехе |
| `data.sourceFolders` | string[] | Коды источников, включённых после записи, — с учётом обязательного |

## Пример ответа

```json
{
  "success": true,
  "data": {
    "sourceFolders": ["default", "tasksTask", "collab"]
  }
}
```

## Пример ответа при ошибке

400 — не передан `sourceCodes`:

```json
{
  "success": false,
  "error": {
    "code": "INVALID_PARAMS",
    "message": "`sourceCodes` is missing: pass the full list of enabled source codes (`[]` switches every optional source off)."
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|---------|
| 400 | `INVALID_PARAMS` | `folderId` не положительное целое, нет `sourceCodes`, `sourceCodes` не массив или его элемент некорректен, передан параметр запроса или неизвестное поле тела, тело — не JSON-объект. Проверяется до обращения к Битрикс24 |
| 404 | `ENTITY_NOT_FOUND` | Битрикс24 вернул «не найдено», код портала — в `error.b24Code` |
| 422 | `METHOD_NOT_YET_AVAILABLE` | На портале ещё не установлено обновление `im 26.1300.0` — см. заметку в начале страницы |
| 422 | `BITRIX_ERROR` | Битрикс24 вернул ошибку, код портала — в `error.b24Code`: `FOLDER_OPERATION_NOT_SUPPORTED` — у папки нет источников или идёт параллельная запись той же папки. Во втором случае ничего не записано, и вызов можно повторить. `FOLDER_NOT_FOUND` — папки нет, `FOLDER_ACCESS_DENIED` — папка другого пользователя |
| 502 | `BITRIX_UNAVAILABLE` | Битрикс24 недоступен или вернул ошибку сервера |
| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `im` |
| 403 | `WRITE_BLOCKED_READONLY_KEY` | Ключ только для чтения |
| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов Битрикс24 |

Полный список общих ошибок API — [Ошибки](/docs/errors).

## Известные особенности

- **Закрепление в папке «Все» следует за источниками.** Выключение источника снимает закрепление его чатов в этой папке. При обратном включении закреплёнными снова становятся те чаты источника, что закреплены в общем списке чатов.
- **Применяйте ответ, а не запрос.** Неизвестный код отбрасывается без ошибки, а обязательный источник добавляется, даже если его нет в `sourceCodes`. Итоговый набор — в `data.sourceFolders`.
- Порядок элементов `sourceCodes` не меняет порядок `data.sources` в ответе чтения источников.

## Смотрите также

- [Источники папки «Все»](/docs/chats/management/folder-sources)
- [Папки чатов](/docs/chats/discovery/folders)
- [Создать папку чатов](/docs/chats/management/folders-create)
- [Изменить папку чатов](/docs/chats/management/folders-update)
- [Ошибки платформы](/docs/errors/platform#method_not_yet_available-422)
