
## Словарь типов уведомлений

`GET /v1/notifications/schema`

Возвращает справочник модулей портала и типов уведомлений, которые они отправляют. Параметров у операции нет.

## Параметры

Операция не принимает параметров.

## Примеры

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

```bash
curl "https://vibecode.bitrix24.tech/v1/notifications/schema" \
  -H "X-Api-Key: YOUR_API_KEY"
```

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

```bash
curl "https://vibecode.bitrix24.tech/v1/notifications/schema" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/notifications/schema', {
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})

const { data } = await res.json()
const labels = new Map(
  data.modules.flatMap((m) => m.list.map((t) => [`${m.moduleId}|${t.id}`, t.name])),
)
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/notifications/schema', {
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { data } = await res.json()
console.log('Модулей:', data.modules.length)
```

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

| Поле | Тип | Описание |
|------|-----|---------|
| `success` | boolean | Всегда `true` при успехе |
| `data.modules` | array | Модули портала, отправляющие уведомления |
| `data.modules[].moduleId` | string | Идентификатор модуля. Совпадает с `notifyModule` уведомления в [ленте](./list.md) |
| `data.modules[].name` | string | Название модуля так, как его показывает портал |
| `data.modules[].list` | array | Типы уведомлений этого модуля |
| `data.modules[].list[].id` | string | Идентификатор типа. Совпадает с `notifyEvent` уведомления в [ленте](./list.md) |
| `data.modules[].list[].name` | string | Название типа |

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

HTTP 200:

```json
{
  "success": true,
  "data": {
    "modules": [
      {
        "moduleId": "crm",
        "name": "CRM",
        "list": [
          { "id": "crm_invoice_delivery", "name": "Оплата счёта" },
          { "id": "crm_deal_stage", "name": "Смена стадии сделки" }
        ]
      },
      {
        "moduleId": "tasks",
        "name": "Задачи",
        "list": [
          { "id": "task_update", "name": "Изменение задачи" }
        ]
      }
    ]
  }
}
```

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

403 — нет скоупа `im`:

```json
{
  "success": false,
  "error": {
    "code": "SCOPE_DENIED",
    "message": "This endpoint requires 'im' scope"
  }
}
```

## Ошибки

| HTTP | Код | Описание |
|------|-----|----------|
| 403 | `SCOPE_DENIED` | У ключа нет скоупа `im` |
| 401 | `TOKEN_MISSING` | У ключа нет настроенных токенов |
| 429 | `RATE_LIMITED` | Превышен темп чтения справочника — до 120 запросов в минуту на портал |
| 502 | `BITRIX_UNAVAILABLE` | Ответ Битрикс24 не удалось прочитать |
| 422 | `BITRIX_ERROR` | Ошибка метода на стороне Битрикс24, код портала — в поле `b24Code` |

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

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

- Битрикс24 отдаёт справочник картой, ключ которой повторяет `moduleId` внутри записи. Обёртка разворачивает карту в массив `modules`, ничего не теряя. Порядок элементов — тот, что вернул портал: это не контракт сортировки, не опирайтесь на него.
- Состав справочника зависит от портала: набор модулей у разных порталов различается, а список типов внутри модуля меняется при обновлении Битрикс24. Кэшируйте ответ, но перечитывайте его при незнакомом `notifyModule` или `notifyEvent`, а не считайте набор постоянным.
- Названия модулей и типов приходят на языке портала — это данные, а не константы интерфейса.
- Справочник общий для портала и не зависит от того, чьим токеном сделан вызов, в отличие от [ленты уведомлений](./list.md).
- Темп ниже, чем у ленты: это словарь, который меняется редко, а не поверхность для опроса.

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

- [Лента уведомлений](./list.md)
- [Отправить уведомление](./send.md)
- [Отметить прочитанными](./read.md)
- [Ошибки](/docs/errors)
