> Статус: MVP
> Дата: 2025-01-24
Обзор
Два типа эндпоинтов:- Чтение — Office Dashboard запрашивает статусы агентов
- Запись — агенты обновляют свой статус
Аутентификация
API Key в заголовкеX-API-Key. Ключи привязаны к ролям и агентам.
Эндпоинты чтения (для Dashboard)
GET /api/v1/office/agents
Все агенты, сгруппированные по модулям. Доступ: Administrator, Director Query параметры:| Параметр | Тип | Описание |
|---|---|---|
| brand | string | Фильтр по бренду (для Director — обязателен) |
GET /api/v1/office/agents/{agent_id}
Детальный статус одного агента. Доступ: Administrator, Director Path параметры:| Параметр | Тип | Описание |
|---|---|---|
| agent_id | string | Уникальный идентификатор агента |
GET /api/v1/office/history/{agent_id}
История статусов агента за 24 часа. Доступ: Administrator, Director Path параметры:| Параметр | Тип | Описание |
|---|---|---|
| agent_id | string | Уникальный идентификатор агента |
| Параметр | Тип | Описание |
|---|---|---|
| limit | int | Количество записей (default: 100) |
Эндпоинты записи (для агентов)
PUT /api/v1/office/agents/{agent_id}
Регистрация или обновление статуса агента (UPSERT). Доступ: API Key агента Path параметры:| Параметр | Тип | Описание |
|---|---|---|
| agent_id | string | Уникальный идентификатор агента |
created: true.
POST /api/v1/office/heartbeat/{agent_id}
Обновление last_activity без изменения статуса. Доступ: API Key агента Path параметры:| Параметр | Тип | Описание |
|---|---|---|
| agent_id | string | Уникальный идентификатор агента |
Коды ошибок
| Код | Описание |
|---|---|
| 400 | Неверные параметры запроса |
| 401 | Отсутствует или неверный API Key |
| 403 | Нет доступа (Director к чужому бренду) |
| 404 | Агент не найден |
| 500 | Внутренняя ошибка сервера |
Диаграмма взаимодействия
Права доступа
| Эндпоинт | Administrator | Director | Агент |
|---|---|---|---|
| GET /agents | ✓ все | ✓ свой бренд | ✗ |
| GET /agents/{id} | ✓ все | ✓ свой бренд | ✗ |
| GET /history/{id} | ✓ все | ✓ свой бренд | ✗ |
| PUT /agents/{id} | ✗ | ✗ | ✓ свой agent_id |
| POST /heartbeat/{id} | ✗ | ✗ | ✓ свой agent_id |