Документация МигКон API
Полная документация REST API для интеграции с сервисом мониторинга иностранных сотрудников.
Аутентификация, управление персоналиями, проверки по реестрам, webhooks. Base URL: https://api.migcon.ru
Быстрый старт
Примеры запросов к API на разных языках. Скопируйте код и адаптируйте под свои нужды.
# Проверка доступности
curl https://api.migcon.ru/_ping
# Добавить персоналию
curl -X POST https://api.migcon.ru/api/v1/persons \
-H "token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '[{
"first_name": "Рашид",
"last_name": "Алиев",
"bday": "1990-05-15",
"doc_num": "4512 123456",
"doc_issued": "2015-03-20"
}]'
# Получить данные персоналии
curl https://api.migcon.ru/api/v1/persons/PERSON_UUID \
-H "token: YOUR_TOKEN"
# Запустить мониторинг
curl -X POST https://api.migcon.ru/api/v1/checks/start \
-H "token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '["PERSON_UUID"]'Аутентификация
Все эндпоинты API (кроме системных) требуют B2B-токен в заголовке запроса.
Передайте токен в заголовке запроса:
token: YOUR_API_TOKEN
Токен выдаётся при подключении. Запросите через info@migcon.ru.
Система
/ Без авторизации Проверка доступности API и состояния компонентов системы.
/_ping Public "pong"
/_health Public {
"db": "ok",
"queue": "ok"
} Персоналии (B2B)
/api/v1 Заголовок token (B2B-токен) CRUD-операции с персоналиями для B2B-интеграций. Авторизация через заголовок token.
/api/v1/persons B2B Token Автоматически ставятся в очередь на первичную проверку по реестрам.
[
{
"first_name": "Рашид",
"last_name": "Алиев",
"middle_name": "Маратович",
"bday": "1990-05-15",
"doc_num": "4512 123456",
"doc_issued": "2015-03-20",
"patent_series": "77",
"patent_number": "1234567"
}
] [
{
"person_id": "550e8400-...",
"first_name": "Рашид",
"last_name": "Алиев",
"bday": "1990-05-15",
"doc_num": "4512 123456",
...
}
] /api/v1/persons/{person_id} B2B Token {
"person_id": "550e8400-...",
"first_name": "Рашид",
"last_name": "Алиев",
"bday": "1990-05-15",
"monitoring_enabled": true,
"never_checked": false,
"registries": {
"rkl": { "present": false, "checked_at": "2025-02-20T09:41Z" },
"patent": { "present": true, "comment": "Истекает 2025-08-12" },
"fines": { "present": false, "checked_at": "2025-02-20T09:41Z" }
}
} /api/v1/persons/{person_id} B2B Token Автоматически ставится в очередь на повторную проверку.
{
"first_name": "Рашид",
"last_name": "Алиев",
"bday": "1990-05-15",
"doc_num": "4512 123456",
"doc_issued": "2015-03-20",
"patent_number": "7654321"
} {
"person_id": "550e8400-...",
"first_name": "Рашид",
...
} /api/v1/persons/{person_id} B2B Token {
"status": "deleted",
"person_id": "550e8400-..."
} Мониторинг (B2B)
/api/v1 Заголовок token (B2B-токен) Управление регулярным мониторингом персоналий по реестрам.
/api/v1/checks/start B2B Token Передаётся массив UUID персоналий. Система будет периодически проверять их по реестрам.
[ "550e8400-e29b-41d4-a716-446655440000", "660e8400-e29b-41d4-a716-446655440001" ]
{ "status": "started" } /api/v1/checks/stop B2B Token [ "550e8400-e29b-41d4-a716-446655440000" ]
{ "status": "stopped" } Webhooks
Получайте уведомления о событиях в реальном времени на свой сервер. Вебхуки настраиваются в личном кабинете в разделе «Интеграции». URL должен использовать HTTPS.
https://ваш-сервер.com/webhook Входящий Доступные события
| Событие | Описание |
|---|---|
status.rkl | Результат проверки по реестру контролируемых лиц |
status.patent | Результат проверки патента |
status.fines | Результат проверки штрафов |
balance.topup | Пополнение баланса организации |
balance.withdrawal | Списание с баланса организации |
test.ping | Тестовое событие для проверки связи |
HTTP-заголовки запроса
| Заголовок | Описание |
|---|---|
X-Webhook-Signature | HMAC-SHA256 подпись тела запроса: sha256=<hex> |
X-Webhook-Event | Тип события (например, status.rkl) |
X-Webhook-Delivery | UUID уникальной доставки |
X-Webhook-Timestamp | Unix timestamp момента создания события |
Content-Type | application/json |
Проверка подписи (HMAC-SHA256)
Каждый запрос подписывается секретным ключом вашего вебхука. Подпись передаётся в заголовке X-Webhook-Signature. Рекомендуем проверять подпись для защиты от подделки.
import hmac
import hashlib
def verify_signature(payload: bytes, signature_header: str, secret: str) -> bool:
"""Проверка подписи вебхука."""
expected = hmac.new(
secret.encode("utf-8"),
payload,
hashlib.sha256,
).hexdigest()
received = signature_header.removeprefix("sha256=")
return hmac.compare_digest(expected, received)
# Использование (Flask):
@app.route("/webhook", methods=["POST"])
def handle_webhook():
signature = request.headers.get("X-Webhook-Signature", "")
if not verify_signature(request.data, signature, WEBHOOK_SECRET):
abort(401)
data = request.get_json()
print(f"Событие: {data['event']}, данные: {data['data']}")
return "", 200Повторные попытки
| Попытка | Задержка | Описание |
|---|---|---|
1 | Сразу | Первая доставка |
2 | 30 сек | Первый повтор |
3 | 2 мин | Последний повтор |
После 3 неудачных попыток доставка прекращается. История доставок доступна в личном кабинете.
Коды ошибок
Все ошибки возвращаются в формате JSON с полем detail.
{
"detail": "Описание ошибки"
} | Код | Описание |
|---|---|
400 | Невалидные данные запроса |
401 | Не авторизован (невалидный или просроченный токен) |
403 | Доступ запрещён |
404 | Ресурс не найден |
409 | Конфликт (дублирование email и т.д.) |
429 | Превышен лимит |
503 | Сервис недоступен |
Нужна помощь с интеграцией?
Напишите нам — обсудим вашу задачу и подскажем как подключиться быстрее.