Интеграция по API (расширенная интеграция)

Скрытая страница: доступ только по прямой ссылке. Не добавлена в меню и навигацию.

Клиент может строить собственный интерфейс на своём сайте и использовать только бэкенд TrackFlow через REST API.

1. Общие сведения

  • Базовый URL API: https://<ваш-домен-бэкенда>/api/v1 (в разработке: http://localhost:8000/api/v1)
  • Аутентификация: JWT (Bearer token). Токен выдаётся при входе партнёра/менеджера.
  • Формат: JSON. Заголовок Content-Type: application/json для запросов с телом.
  • Документация: Swagger — /docs, ReDoc — /redoc.
  • Для кросс-доменных запросов на бэкенде должен быть настроен CORS (домен клиента в allowed_origins).

2. Получение токена (вход)

POST /api/v1/managers/auth/login

Тело: { "email": "...", "password": "..." }

Ответ: { "access_token": "...", "token_type": "bearer" }

Дальше все запросы: заголовок Authorization: Bearer <access_token>

3. Профиль

GET /api/v1/managers/auth/me — данные текущего менеджера и заявки на доступ (Bearer обязателен).

4. Эндпоинты по разделам

Во всех ниже перечисленных эндпоинтах требуется заголовок Authorization: Bearer <token> (кроме публичных).

4.1. Аутентификация и профиль

МетодПутьОписание
POST/managers/auth/loginВход → access_token
GET/managers/auth/meТекущий менеджер и заявки
POST/managers/auth/request-accessЗаявка на доступ (project_url)
POST/managers/auth/password-reset/requestЗапрос сброса пароля
POST/managers/auth/password-reset/confirmПодтверждение сброса

4.2. Проекты

МетодПутьОписание
GET/projects/Список проектов
GET/projects/active/Активные проекты
GET/projects/{id}Проект по ID
GET/projects/stats/overviewСводка (ADMIN/OWNER)
GET/projects/domain/{domain}Проект по домену
GET/projects/search/Поиск

4.3. Кампании

МетодПутьОписание
GET/campaigns/Список (page, size, manager_id, project_id, product_id, is_active, search)
GET/campaigns/statsСтатистика кампаний
GET/campaigns/searchПоиск
GET/campaigns/{id}Кампания по ID
POST/campaigns/Создание
PUT/campaigns/{id}Обновление
PATCH/campaigns/{id}/activateАктивация
PATCH/campaigns/{id}/deactivateДеактивация
DELETE/campaigns/{id}Удаление
GET/campaigns/{id}/linkСсылка трекинга (query: base_domain)
GET/campaigns/manager/{manager_id}Кампании менеджера
GET/campaigns/project/{project_id}Кампании проекта

4.4. Продукты

МетодПутьОписание
GET/products/open/listОткрытый список
GET/products/project/{project_id}По проекту
GET/products/{id}По ID
GET/products/manager/{manager_id}Доступные менеджеру (только свой id)

4.5. Статистика

МетодПутьОписание
GET/stats/managers/{manager_id}/summaryСводка (date_from, date_to)
GET/stats/managers/{manager_id}/trendТренд (group_by: day|week|month)
GET/stats/managers/{manager_id}/campaigns/topТоп кампаний
GET/stats/projects/{project_id}/summaryСводка по проекту
GET/stats/projects/{project_id}/trendТренд по проекту
GET/stats/campaigns/{campaign_id}/summaryСводка по кампании
GET/stats/analytics/performanceМетрики
GET/stats/reports/dailyЕжедневный отчёт
GET/stats/reports/weeklyЕженедельный
GET/stats/reports/monthlyЕжемесячный
GET/stats/export/csvЭкспорт CSV
GET/stats/aggregates/Агрегаты
GET/stats/comparisonСравнение периодов

4.6. Биллинг (партнёр)

МетодПутьОписание
GET/billing/manager/balance/Баланс (query: manager_id — только свой)
GET/billing/manager/transactions/Транзакции (manager_id — только свой)
GET/billing/manager/reward-rules/Правила по продукту (product_id)
POST/billing/manager/withdrawal-requests/Создать заявку на вывод
GET/billing/manager/withdrawal-requests/Список заявок (manager_id — только свой)
GET/billing/manager/withdrawal-requests/{id}/Заявка с сообщениями
POST/billing/manager/withdrawal-requests/uploadЗагрузка файла
POST/billing/manager/withdrawal-requests/{id}/messages/Сообщение в заявке

4.7. Поддержка (тикеты)

МетодПутьОписание
POST/support/tickets/uploadЗагрузка файла
POST/support/ticketsСоздать тикет (Form: topic, title, message, attachments)
GET/support/ticketsСписок (topic, status, limit, offset)
GET/support/tickets/{id}Тикет по ID
POST/support/tickets/{id}/messagesДобавить сообщение
PATCH/support/tickets/{id}/statusОбновить статус

4.8. Webhooks

GET /api/v1/webhooks/stats/overview — статистика (ADMIN/OWNER).

4.9. Домены

GET /domains/, /domains/stats, /domains/manager/?manager_id=... — при необходимости см. Swagger.

5. Публичные эндпоинты (без Bearer)

  • Трекинг: GET https://<трекер-домен>/click/{link_token} — редирект по ссылке кампании.
  • Конверсии (postback): POST /api/v1/conversions/events, заголовок X-API-Token (токен проекта). Тело: массив событий (event, click_id, value).

6. Требования к клиенту

  1. Хранить токен безопасно (не в URL, не логировать).
  2. При 401 — перенаправить на вход и получить новый токен.
  3. Во всех эндпоинтах с manager_id использовать только свой id из GET /me.
  4. Домен фронта клиента должен быть в CORS на бэкенде.
  5. В проде — только HTTPS.
  6. Даты: формат YYYY-MM-DD.
Полные схемы запросов/ответов и коды ошибок — в Swagger (/docs) и ReDoc (/redoc). Текстовый вариант: docs/INTEGRATION_BACKEND_API.md.