
## Отметить прочитанными

`POST /v1/notifications/read`

Отмечает уведомления получателя прочитанными или непрочитанными. По умолчанию отмечаются уведомление с указанным `id` и все с бо́льшим идентификатором.

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

| Поле | Тип | Обяз. | Описание |
|------|-----|:-----:|---------|
| `id` | number | нет | Идентификатор уведомления из ответа [`POST /v1/notifications`](./send.md). Отмечаются это уведомление и все с бо́льшим `id`. Без поля `id` статусы не меняются |
| `action` | string | нет | `Y` — отметить прочитанными, `N` — непрочитанными. По умолчанию `Y` |
| `onlyCurrent` | boolean | нет | `true` отмечает только уведомление с указанным `id`. Иначе — все с идентификатором не меньше `id` |

## Примеры

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

```bash
curl -X POST "https://vibecode.bitrix24.tech/v1/notifications/read" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "id": 37421, "onlyCurrent": true }'
```

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

```bash
curl -X POST "https://vibecode.bitrix24.tech/v1/notifications/read" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "id": 37421, "onlyCurrent": true }'
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/notifications/read', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ id: 37421, onlyCurrent: true }),
})
```

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

```javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/notifications/read', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ id: 37421, onlyCurrent: true }),
})
```

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

| Поле | Тип | Описание |
|------|-----|----------|
| `success` | boolean | `true` при успешном выполнении |
| `data` | boolean | Всегда `true`. Признак успеха — HTTP-код `200`, а не значение |

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

HTTP 200:

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

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

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

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

## Ошибки

| HTTP | Код | Описание |
|------|-----|----------|
| 403 | `SCOPE_DENIED` | У ключа нет скоупа `im` |
| 403 | `WRITE_BLOCKED_READONLY_KEY` | Ключ в режиме «только чтение» |
| 401 | `TOKEN_MISSING` | У ключа нет настроенных токенов |

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

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

- Тело запроса обязательно — передавайте как минимум `{}`. Без поля `id` внутри тела запрос завершается успешно, но статусы уведомлений не меняются. Передавайте `id`, чтобы действительно отметить уведомления.

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

- [Отправить уведомление](./send.md)
- [Удалить по идентификатору](./delete.md)
- [Ошибки](/docs/errors)
