ads-marketing/frontend/public/API_DOCUMENTATION.md
romantarkin 7590afb55c fix
2025-08-17 11:05:31 +05:00

12 KiB
Raw Permalink Blame History

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"
  }'