🔌 API Documentation

← Hub 📄 OpenAPI JSON 🧪 Swagger UI
Base URL: https://hub.mcpcp.uk (публично) или http://127.0.0.1:8765 (локально)
Формат: JSON (по умолчанию), некоторые endpoints поддерживают ?csv=1 для CSV
Кэш: 30–600 сек в зависимости от endpoint. Без auth (все данные открытые).
Rate limit: нет искусственных ограничений, но не более 10 rps рекомендуется.

📊 KPIs & Health

GET /api/kpi
Все ключевые числа страны в одном JSON (findings, violations, tenders, brokers, upis)
▷ try
GET /api/health
Статус системы: диск, KOV coverage, index DB sizes, pipelines
▷ try

🎯 KOV data

GET /api/cities
Список всех 78 KOV с EHAK, региональной инфо
▷ try
GET /api/kov/{slug}/stats
Полная статистика по одной KOV: companies, persons, parcels, violations
▷ try narva
GET /api/kov/{slug}/report
Aggregated audit report data per KOV
▷ try tallinn
GET /api/risk_rank
Composite risk score ranked для всех 78 KOV
▷ try
GET /api/benchmark
Per-KOV сравнение: per_capita_eur, single_bidder_pct, tenders
?sort=per_capita_eur | single_bidder_pct | tender_count
▷ try

👤 Persons & Companies

GET /api/company/{reg_code}
Полное досье компании: правление, бенефициары, тендеры, tax history
▷ try ASTRI-NARVA
GET /api/company_search?q={query}
Поиск компаний по имени
▷ try
GET /api/company/{reg_code}/chain
Рекурсивный chain акционеров (depth=3 по умолчанию)
▷ try
GET /api/dossier/{name}
Досье персоны: KOV-членства, компании, санкции, тендеры
▷ try
GET /api/dossier/{name}/timeline
Хронология: role_start/role_end + тендеры + санкции
▷ try
GET /api/dossier/{name}/coboard
Co-boarders — с кем персона делит должности
▷ try
GET /api/person_search?q={query}
Поиск персон по имени
▷ try
GET /api/family/{surname}
Все персоны с фамилией + их компании + тендеры
▷ try Vetka

📑 Tenders & Contracts

GET /api/tenders
Все 66K тендеров с фильтрами
?city, ?winner, ?year_from, ?year_to, ?min_value, ?single_bidder=1, ?csv=1
▷ single-bidder ≥ €500K
GET /api/reconcile/{slug}
Awarded (tenders) vs Paid (invoices) reconciliation per KOV
▷ try tallinn

🚩 Detection patterns

GET /api/redflags
Rapid company + tender / Foreign benef + strategic / Zero employees
?pattern=all|rapid|foreign|zero_employees · ?min_value, ?csv=1
▷ zero_employees
GET /api/clusters/address
Топ адресов по числу компаний (гнёзда виртуальных офисов)
▷ ≥100 companies
GET /api/clusters/family
Пары персон с одинаковой фамилией на одной борде
▷ ≥3 shared
GET /api/tax
Tax risk signals: ZERO_TAX_TENDER_WINNER, SHELL_COMPANY, HIGH_REVENUE_NO_LABOUR_TAX
▷ try

🛡 Sanctions & Violations

GET /api/violations
National violations feed
?category, ?severity, ?kov, ?csv=1
▷ critical only
GET /api/sanctions/all
OpenSanctions + PEP hits по всей Эстонии
?kind=pep|sanction · ?kov, ?q, ?csv=1
▷ SANCTIONS only
GET /rss/violations
RSS 2.0 feed (для feed reader)
▷ RSS

🔄 Live feeds

GET /api/timeline
Recent findings + violations + news за N часов
▷ last 72h
GET /api/movements
Board changes (role_start) за последние N дней
?days=30, ?ehak, ?role, ?csv=1
▷ last 7 days

🕸 Networks

GET /api/graph
Force-directed данные для D3: nodes + links
?center, ?depth, ?max_nodes
▷ try Kairi Toom
GET /api/inter_kov_persons
Multi-KOV brokers (кто в скольких KOV сидит)
▷ ≥10 KOV

💰 Budget (UPIS)

GET /api/upis
Бюджетные аномалии + топ поставщиков по 5 городам
▷ try

🔎 Universal search

GET /api/find?q={query}
Единый поиск по companies + persons + tenders + violations
▷ try Stalnuhhin
Форматы: добавьте ?csv=1 к endpoints с фильтрами чтобы получить CSV.
Ошибки: HTTP 4xx/5xx с JSON {"error": "..."} в теле.
Полная OpenAPI-спецификация: /openapi.json