12 KiB
API Documentation
Аутентификация
Все API запросы (кроме авторизации) требуют токен в заголовке Authorization.
Получение токена
POST /api/auth/users/login
Авторизация пользователя и получение JWT токена
Request Body:
{
"email": "user@example.com",
"password": "password123"
}
Response:
{
"user": {
"id": 1,
"email": "user@example.com",
"role_id": 1
},
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
Проверка токена
POST /api/auth/verify
Проверка валидности JWT токена
Headers:
Authorization: Bearer <token>
Content-Type: application/json
Response:
{
"id": 1,
"email": "user@example.com",
"role_id": 1
}
Управление пользователями
Получение списка пользователей
GET /api/auth/users
Получение списка всех пользователей
Требует авторизации
Создание пользователя
POST /api/auth/users
Создание нового пользователя
Требует авторизации
Request Body:
{
"email": "newuser@example.com",
"password": "password123",
"role": "admin"
}
Обновление пользователя
PUT /api/auth/users/:id
Обновление пользователя
Требует авторизации
Удаление пользователя
DELETE /api/auth/users/:id
Удаление пользователя
Требует авторизации
Управление ролями
Получение списка ролей
GET /api/auth/roles
Получение списка всех ролей
Требует авторизации
Создание роли
POST /api/auth/roles
Создание новой роли
Требует авторизации
Обновление роли
PUT /api/auth/roles/:id
Обновление роли
Требует авторизации
Удаление роли
DELETE /api/auth/roles/:id
Удаление роли
Требует авторизации
Управление разрешениями
Получение списка разрешений
GET /api/auth/permissions
Получение списка всех разрешений
Требует авторизации
Создание разрешения
POST /api/auth/permissions
Создание нового разрешения
Требует авторизации
Обновление разрешения
PUT /api/auth/permissions/:id
Обновление разрешения
Требует авторизации
Удаление разрешения
DELETE /api/auth/permissions/:id
Удаление разрешения
Требует авторизации
Управление подписчиками
Получение списка подписчиков
GET /api/mail/subscribers
Получение списка всех подписчиков
Требует авторизации
Создание подписчика
POST /api/mail/subscribers
Создание нового подписчика
Требует авторизации
Request Body:
{
"email": "subscriber@example.com",
"first_name": "John",
"last_name": "Doe",
"status": "active"
}
Получение подписчика по ID
GET /api/mail/subscribers/:id
Получение подписчика по ID
Требует авторизации
Обновление подписчика
PUT /api/mail/subscribers/:id
Обновление подписчика
Требует авторизации
Удаление подписчика
DELETE /api/mail/subscribers/:id
Удаление подписчика
Требует авторизации
Управление группами рассылки
Получение списка групп
GET /api/mail/mailing-groups
Получение списка всех групп рассылки
Требует авторизации
Создание группы
POST /api/mail/mailing-groups
Создание новой группы рассылки
Требует авторизации
Request Body:
{
"name": "Newsletter Subscribers",
"description": "Main newsletter group"
}
Получение группы по ID
GET /api/mail/mailing-groups/:id
Получение группы по ID
Требует авторизации
Обновление группы
PUT /api/mail/mailing-groups/:id
Обновление группы
Требует авторизации
Удаление группы
DELETE /api/mail/mailing-groups/:id
Удаление группы
Требует авторизации
Управление шаблонами email
Получение списка шаблонов
GET /api/mail/email-templates
Получение списка всех email шаблонов
Требует авторизации
Создание шаблона
POST /api/mail/email-templates
Создание нового email шаблона
Требует авторизации
Request Body:
{
"name": "Welcome Email",
"subject": "Welcome to our service!",
"content": "<h1>Welcome!</h1><p>Thank you for joining us.</p>"
}
Получение шаблона по ID
GET /api/mail/email-templates/:id
Получение шаблона по ID
Требует авторизации
Обновление шаблона
PUT /api/mail/email-templates/:id
Обновление шаблона
Требует авторизации
Удаление шаблона
DELETE /api/mail/email-templates/:id
Удаление шаблона
Требует авторизации
Управление версиями шаблонов
Получение списка версий
GET /api/mail/email-template-versions
Получение списка всех версий шаблонов
Требует авторизации
Создание версии
POST /api/mail/email-template-versions
Создание новой версии шаблона
Требует авторизации
Получение версии по ID
GET /api/mail/email-template-versions/:id
Получение версии шаблона по ID
Требует авторизации
Обновление версии
PUT /api/mail/email-template-versions/:id
Обновление версии шаблона
Требует авторизации
Удаление версии
DELETE /api/mail/email-template-versions/:id
Удаление версии шаблона
Требует авторизации
Управление кампаниями
Получение списка кампаний
GET /api/mail/campaigns
Получение списка всех кампаний
Требует авторизации
Создание кампании
POST /api/mail/campaigns
Создание новой кампании
Требует авторизации
Request Body:
{
"name": "Summer Newsletter",
"subject": "Summer Sale!",
"template_id": 1,
"group_id": 1,
"smtp_server_id": 1,
"scheduled_at": "2024-06-01T10:00:00Z"
}
Получение кампании по ID
GET /api/mail/campaigns/:id
Получение кампании по ID
Требует авторизации
Обновление кампании
PUT /api/mail/campaigns/:id
Обновление кампании
Требует авторизации
Удаление кампании
DELETE /api/mail/campaigns/:id
Удаление кампании
Требует авторизации
Управление SMTP серверами
Получение списка SMTP серверов
GET /api/mail/smtp-servers
Получение списка всех SMTP серверов
Требует авторизации
Создание SMTP сервера
POST /api/mail/smtp-servers
Создание нового SMTP сервера
Требует авторизации
Request Body:
{
"name": "Gmail SMTP",
"host": "smtp.gmail.com",
"port": 587,
"username": "user@gmail.com",
"password": "app_password",
"encryption": "tls"
}
Получение SMTP сервера по ID
GET /api/mail/smtp-servers/:id
Получение SMTP сервера по ID
Требует авторизации
Обновление SMTP сервера
PUT /api/mail/smtp-servers/:id
Обновление SMTP сервера
Требует авторизации
Удаление SMTP сервера
DELETE /api/mail/smtp-servers/:id
Удаление SMTP сервера
Требует авторизации
История доставки
Получение истории доставки
GET /api/mail/delivery-logs
Получение истории доставки email
Требует авторизации
Получение записи доставки по ID
GET /api/mail/delivery-logs/:id
Получение записи доставки по ID
Требует авторизации
Управление отписавшимися
Получение списка отписавшихся
GET /api/mail/unsubscribed
Получение списка отписавшихся пользователей
Требует авторизации
Добавление в список отписавшихся
POST /api/mail/unsubscribed
Добавление email в список отписавшихся
Требует авторизации
Request Body:
{
"email": "user@example.com",
"reason": "No longer interested"
}
Общие заголовки
Для всех авторизованных запросов используйте:
Authorization: Bearer <your_jwt_token>
Content-Type: application/json
Коды ответов
- 200 - Успешный запрос
- 201 - Ресурс создан
- 400 - Ошибка в запросе
- 401 - Не авторизован
- 403 - Доступ запрещен
- 404 - Ресурс не найден
- 500 - Внутренняя ошибка сервера
Примеры использования
Авторизация и получение токена
curl -X POST http://localhost:3000/api/auth/users/login \
-H "Content-Type: application/json" \
-d '{
"email": "admin@example.com",
"password": "password123"
}'
Получение списка подписчиков
curl -X GET http://localhost:3000/api/mail/subscribers \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json"
Создание новой кампании
curl -X POST http://localhost:3000/api/mail/campaigns \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Welcome Campaign",
"subject": "Welcome to our service!",
"template_id": 1,
"group_id": 1,
"smtp_server_id": 1,
"scheduled_at": "2024-06-01T10:00:00Z"
}'