VEU.WathBody/1-docs/4-modules/m08-admin-web/api_specs/02-athletes.md

31 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Спецификация 02: атлеты (AdminAthletesController)
Источники: Ф-9.1 (управление, вопрос 9 закрыт), 🛡2 (ключ — один раз).
## 1. Эндпоинты (все — Bearer, spec 01)
| Метод | Путь | Тело → Ответ |
|---|---|---|
| GET | `/api/admin/athletes` | → `{"items":[{"id":1,"name":"Иван","isBlocked":false,"createdAt":"…"}]}` |
| POST | `/api/admin/athletes` | `{"name":"Иван"}` → `201 {"id":…,"apiKey":"wb-…"}` |
| POST | `/api/admin/athletes/{id}/key` | — → `200 {"apiKey":"wb-…"}` |
| POST | `/api/admin/athletes/{id}/block` | `{"isBlocked":true}` → `200 {"id":…,"isBlocked":true}` |
## 2. Семантика
- **Создание**: имя непустое (иначе 400); ключ = `"wb-" + 24 hex`
(random); в БД — только `ApiKeyHash.Of(key)` (SHA-256, как m02);
ключ возвращается **один раз** (повторно не выдаётся — 🛡2);
дубликат имени допустим (БД не запрещает; консоль показывает id).
- **Смена ключа**: новый ключ по тому же правилу; `athlete_update`
(все поля, NULL-семантики нет — m01); старый ключ перестаёт
работать немедленно.
- **Блокировка**: `athlete_update` c `is_blocked`; заблокированный
ключ → 401 на `/api/v1/*` (m02, проверяется тестом сквозняком);
блокировка не удаляет данные.
- Все записи — только `athlete_insert`/`athlete_update` (🛡3).
## 3. Ошибки
- 400 — пустое имя; 404 — атлет не найден (id); 401 — без токена.