Перейти к содержанию

Веб-страница + API

Вы создаёте сессию через API, а пользователь проходит процесс на нашей странице. Результат приходит вам через вебхук.

Схема работы

sequenceDiagram
    participant S as Ваш сервер
    participant D as DEBEX API
    participant U as Пользователь

    S->>D: POST /api/Sessions/start
    D-->>S: session_id, session_url
    S->>U: Редирект на session_url
    U->>D: Проходит шаги процесса
    D-->>S: Вебхук: session_completed (cookies)

Шаг 1. Получить список процессов

curl https://sessions-api.explorer.debex.ru/api/Flows
[
  {
    "id": "b3f70e2e-ed61-4145-a2ed-f69a459a8934",
    "name": "mos.ru",
    "description": "Авторизация на портале mos.ru"
  }
]

Альтернатива: направить пользователя на страницу создания сессии

Вместо создания сессии по API можно отправить пользователя на веб-клиент с предвыбранным процессом:

https://sessions.explorer.debex.ru/sessions/new?flowId={ID_ПРОЦЕССА}
Параметр Описание
flowId ID процесса — будет автоматически выбран в форме

Шаг 2. Создать сессию

curl -X POST https://sessions-api.explorer.debex.ru/api/Sessions/start \
  -H "Content-Type: application/json" \
  -d '{
    "flow_id": "b3f70e2e-ed61-4145-a2ed-f69a459a8934",
    "webhook_url": "https://your-server.com/webhook",
    "webhook_events": ["session_completed", "session_failed"]
  }'

Параметры запроса:

Поле Тип Обязательное Описание
flow_id UUID да ID процесса
webhook_url string нет URL для отправки событий (должен быть https://)
webhook_events string[] нет Список событий: session_started, session_completed, session_failed, step_changed, session_restarted

Ответ:

{
  "session_id": "a1b2c3d4-...",
  "token": "eyJhbGciOi...",
  "session_url": "https://sessions.explorer.debex.ru/session?token=eyJhbGciOi...",
  "webhook_secret": "base64-encoded-secret",
  "flow_name": "mos.ru",
  "step_name": "Загрузка...",
  "elements": [],
  "is_completed": false,
  "expires_in_seconds": 300
}

Сохраните webhook_secret

webhook_secret возвращается только при создании сессии. Сохраните его — он нужен для верификации входящих вебхуков.

Шаг 3. Перенаправить пользователя

Отдайте пользователю ссылку из поля session_url. На этой странице он увидит интерфейс для прохождения процесса — формы ввода, OTP-коды и т.д.

Шаг 4. Получить вебхук

После успешного прохождения всех шагов на ваш webhook_url придёт POST-запрос:

{
  "event": "session_completed",
  "payload": {
    "session_id": "a1b2c3d4-...",
    "flow_name": "mos.ru",
    "is_completed": true,
    "cookies": [
      {
        "name": "auth_token",
        "value": "abc123...",
        "domain": ".mos.ru",
        "path": "/",
        "expires": 1735689600,
        "http_only": true,
        "secure": true,
        "same_site": "Lax"
      }
    ]
  },
  "timestamp": "2025-04-01T12:00:00Z"
}

Заголовки вебхука

Заголовок Описание
X-Webhook-Signature HMAC-SHA256 подпись тела запроса: sha256={hex}
X-Webhook-Event Название события, например SessionCompleted

Верификация подписи

import hmac, hashlib

def verify_webhook(body: bytes, signature: str, secret: str) -> bool:
    expected = "sha256=" + hmac.new(
        secret.encode(), body, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)
using System.Security.Cryptography;

bool VerifyWebhook(byte[] body, string signature, string secret)
{
    using var hmac = new HMACSHA256(Encoding.UTF8.GetBytes(secret));
    var hash = hmac.ComputeHash(body);
    var expected = "sha256=" + Convert.ToHexString(hash).ToLower();
    return expected == signature;
}

Доступные события

Событие Когда
session_started Сессия создана, первый шаг определён
session_completed Процесс завершён успешно, cookies доступны
session_failed Ошибка или таймаут
step_changed Переход к следующему шагу
session_restarted Пользователь перезапустил сессию