## Изменить настройку уведомления

`PATCH /v1/notifications/settings`

Включает или выключает у сотрудника один канал доставки уведомлений — `site`, `mail` или `push` — для одного события модуля портала.

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

| Поле | Тип | Обяз. | Описание |
|------|-----|:-----:|----------|
| `module` | string | да | Идентификатор модуля, от 1 до 255 символов. Список: `data[].id` в ответе [`GET /v1/notifications/settings`](/docs/notifications/settings/list) |
| `event` | string | да | Идентификатор события этого модуля, от 1 до 255 символов. Список: `data[].notices[].id` в том же ответе |
| `channel` | string | да | Канал доставки: `site`, `mail` или `push` |
| `enabled` | boolean | да | `true` — включить канал, `false` — выключить |
| `userId` | number | нет | ID сотрудника, чью настройку изменить, — положительное целое число. Список: [`GET /v1/users`](/docs/entities/users/list). Без поля — сотрудник, от имени которого сделан вызов. Настройки другого сотрудника меняет только администратор Битрикс24 |

## Примеры

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

```bash
curl -X PATCH "https://vibecode.bitrix24.tech/v1/notifications/settings" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "module": "bizproc", "event": "activity", "channel": "site", "enabled": false }'
```

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

```bash
curl -X PATCH "https://vibecode.bitrix24.tech/v1/notifications/settings" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "module": "bizproc", "event": "activity", "channel": "site", "enabled": false }'
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/notifications/settings', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ module: 'bizproc', event: 'activity', channel: 'site', enabled: false }),
})
const { data } = await res.json()
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/notifications/settings', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ module: 'bizproc', event: 'activity', channel: 'site', enabled: false }),
})
const { data } = await res.json()
```

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

| Поле | Тип | Описание |
|------|-----|----------|
| `success` | boolean | `true` при успешном выполнении |
| `data` | boolean | Всегда `true`, в том числе когда настройка не изменилась |

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

HTTP 200:

```json
{
  "success": true,
  "data": true
}
```

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

400 — канал не из списка:

```json
{
  "success": false,
  "error": {
    "code": "INVALID_PARAMS",
    "message": "Body field `channel` must be one of: site, mail, push."
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|----------|
| 400 | `INVALID_PARAMS` | `module` или `event` не передан, пустой или длиннее 255 символов. Поле названо в `message`. Проверяется до обращения в Битрикс24 |
| 400 | `INVALID_PARAMS` | `channel` не равен ни `site`, ни `mail`, ни `push` |
| 400 | `INVALID_PARAMS` | `enabled` не передан или не равен ни `true`, ни `false`. Строка `"true"` и число `1` отклоняются |
| 400 | `INVALID_PARAMS` | `userId` — не положительное целое число |
| 400 | `INVALID_PARAMS` | В теле передано поле, которого нет в таблице «Поля запроса», либо тело не JSON-объект. Допустимые поля перечислены в `message` |
| 400 | `INVALID_PARAMS` | Передан параметр запроса. Операция не принимает параметров запроса |
| 401 | `TOKEN_MISSING` | У ключа нет настроенных токенов |
| 403 | `SCOPE_DENIED` | У ключа нет скоупа `im` |
| 403 | `WRITE_BLOCKED_READONLY_KEY` | Ключ в режиме «только чтение» |
| 422 | `BITRIX_ERROR` | `userId` указывает на другого сотрудника, а у сотрудника, от имени которого сделан вызов, нет прав администратора Битрикс24. Код портала `SETTINGS_ACCESS_DENIED` — в поле `error.b24Code` |
| 502 | `ME_ALIAS_RESOLUTION_FAILED` | `userId` не передан, и определить сотрудника, от имени которого сделан вызов, не удалось. Настройка не менялась |

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

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

- Ответ `true` не подтверждает изменение. Настройка не меняется, но ответ — `true`, в двух случаях: канал есть в `disabled` этого события или на портале нет модуля или события с таким идентификатором. Чтобы проверить результат, прочитайте настройки повторно через [`GET /v1/notifications/settings`](/docs/notifications/settings/list).

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

- [Получить настройки уведомлений](/docs/notifications/settings/list)
- [Сменить режим настроек уведомлений](/docs/notifications/settings/scheme)
- [Настройки уведомлений](/docs/notifications/settings)
