# Changelog

Все значимые изменения в проекте будут документироваться в этом файле.

Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.0.0/),
и этот проект придерживается [Semantic Versioning](https://semver.org/lang/ru/).

## [0.2.0] - 2026-03-13

### Добавлено
- **API токены**: система токенов для безопасного доступа к API
  - Backend: модель APIToken, CRUD эндпоинты
  - Middleware для проверки токенов (префикс `amz_`)
  - Frontend: страница управления токенами с UI
  - SDK: поддержка параметра `api_token` в `AmnezioClient`
- Автоматическое обновление `last_used_at` при использовании токена
- Проверка срока действия токенов
- Возможность задать права доступа (scopes) для токенов

### Изменено
- `AmnezioClient` теперь поддерживает два способа аутентификации:
  - Через API токен: `api_token="amz_xxx"` (рекомендуется)
  - Через логин/пароль: `username="admin", password="secret"` (legacy)
- Обновлена документация с примерами использования API токенов
- Middleware `get_current_admin` теперь поддерживает оба типа токенов

### Исправлено
- Исправлено поле аутентификации: `username` → `login` в API запросе

## [0.1.0] - 2026-03-13

### Добавлено
- Основной клиент `AmnezioClient` с поддержкой аутентификации
- API для работы с пользователями (`UsersAPI`)
  - Создание, чтение, обновление, удаление пользователей
  - Получение конфига WireGuard
  - Получение QR-кода
  - Управление статусом (enable/disable)
  - Продление подписки
  - Генерация пар ключей WireGuard
- API для работы с профилями (`ProfilesAPI`)
  - CRUD операции для профилей
- API для работы с нодами (`NodesAPI`)
  - CRUD операции для нод
  - Синхронизация нод
  - Push конфига на ноду
  - Перезапуск AmneziaWG
- Модели данных: `User`, `Profile`, `Node`, `KeyPair`, `UserConfig`, `PaginatedResponse`
- Исключения: `AmnezioError`, `AuthenticationError`, `NotFoundError`, `APIError`
- Примеры использования:
  - Базовое использование всех методов
  - Создание пользователя через Telegram ID
  - Управление подписками
  - Интеграция с Telegram ботом
- Тесты для клиента и Users API
- Документация: README.md, INSTALL.md

### Технические детали
- Асинхронный HTTP клиент на базе `httpx`
- Валидация данных через `pydantic`
- Поддержка Python 3.10+
- Автоматическая повторная аутентификация при 401
- Контекстный менеджер для управления соединением

[0.2.0]: https://github.com/amnezio/amnezio/releases/tag/v0.2.0
[0.1.0]: https://github.com/amnezio/amnezio/releases/tag/v0.1.0
