Bootcamp: od prázdného prostředí po první auditovatelnou zprávu
Sedm modulů, každý s reálnými API voláními proti běžící instanci. Cílem je, abyste po dokončení uměli založit šetření, přečíst zjištění s jejich důkazy, projít vztahový graf a vyexportovat auditovatelnou zprávu — beze zbytku přes REST API.
Pro koho: vývojáři integrující Progresus OSINT do vlastního systému a analytici, kteří chtějí rozumět tomu, co aplikace dělá pod kapotou. Předpoklad: běžící instance (lokálně přes docker-compose, nebo přístup ke sdílenému prostředí) a curl.
Modul 1 · Prostředí a API klíč
docker compose up -d zvedne PostgreSQL, Redis, Meilisearch a Kuzu; uv run alembic upgrade head aplikuje migrace. Aplikační server (just dev) a worker (just worker) běží jako dva samostatné procesy — bez workeru se založená šetření nikdy nepohnou dál než do stavu queued.
API klíč vytvoří správce instance jednou přes POST /v1/admin/api-keys. Plná hodnota se vrací pouze v této odpovědi a nikde jinde znovu k nahlédnutí — uložte si ji hned.
# vytvoření API klíče
curl -X POST -H "Content-Type: application/json" \
-d '{"name": "bootcamp", "scopes": ["investigations:read","investigations:write","reports:read"]}' \
https://<instance>/v1/admin/api-keys
export KEY="<vrácená hodnota key>"
Modul 2 · Katalog zdrojů a první šetření
GET /v1/sources vrací všech osm zapojených poskytovatelů s kódem, kategorií a právním základem — z nich vybíráte rozsah šetření (scope.sources). Vynecháte-li rozsah, proběhnou všechny relevantní zdroje pro daný druh subjektu.
Šetření zakládá POST /v1/investigations. Pole idempotency_key je povinné — opakované odeslání se stejným klíčem vrátí totéž šetření místo duplicitního běhu, takže je bezpečné volání opakovat po timeoutu.
curl -H "Authorization: Bearer $KEY" \
https://<instance>/v1/sources
curl -X POST -H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{
"project_id": "<project-uuid>",
"subject": {"kind": "company",
"identifiers": {"ico": "04543645"}},
"scope": {"sources": ["cz-ares","cz-isir","sanctions-eu"]},
"idempotency_key": "bootcamp-001"
}' \
https://<instance>/v1/investigations
Modul 3 · Sledování průběhu
Šetření prochází stavy queued → collecting → validating → synthesizing → completed (nebo failed/cancelled). Stav zjistíte jedním dotazem, nebo si necháte přechody posílat průběžně přes SSE stream — pro bootcamp stačí polling co pár sekund.
Neběžící worker je nejčastější příčina „zaseklého" šetření ve stavu queued — viz modul 1.
# jednorázový dotaz na stav
curl -H "Authorization: Bearer $KEY" \
https://<instance>/v1/investigations/{id}
# průběžné události (SSE)
curl -N -H "Authorization: Bearer $KEY" \
https://<instance>/v1/investigations/{id}/events
Modul 4 · Zjištění, důkazy a kontrola integrity
Po dokončení GET /v1/investigations/{id}/findings vrátí seznam zjištění. Každé zjištění odkazuje na evidence_ids — konkrétní důkazy, ze kterých vzniklo, se zdrojem, časem pořízení a hashem obsahu.
GET /v1/findings/{finding_id} vrací navíc výsledek kontroly integrity: mapu jednotlivých kontrol a celkové passed. Integrita se přepočítává živě při čtení, ne jen jednou při zápisu — je to opakovatelně ověřitelný výpočet, ne uložený příznak, kterému musíte věřit naslepo.
curl -H "Authorization: Bearer $KEY" \
https://<instance>/v1/investigations/{id}/findings
curl -H "Authorization: Bearer $KEY" \
https://<instance>/v1/findings/{finding_id}
# -> { "checks": {...}, "passed": true }
Modul 5 · Vztahový graf
Grafové endpointy žijí pod /v1/investigations/{id}/graph/… a jsou vždy ohraničené na dané šetření: sousedé entity (/neighbors/{entity_id}), hledání cesty mezi dvěma entitami (/path), centralita a detekce vlastnických cyklů (/cycles) — poslední jmenovaný typický vzorec schránkových struktur.
Aplikace (/app) vykresluje tentýž graf vizuálně nad stejným API — nic v prohlížeči nevidíte, co byste nedostali i přes curl.
curl -H "Authorization: Bearer $KEY" \
https://<instance>/v1/investigations/{id}/graph/cycles
curl -H "Authorization: Bearer $KEY" \
"https://<instance>/v1/investigations/{id}/graph/neighbors/{entity_id}"
Modul 6 · Vyhledávání napříč šetřeními
GET /v1/search hledá nad subjekty, důkazy a zjištěními přes Meilisearch, vždy jen ve vašem tenantu — filtr tenantu se odvozuje z API klíče, nikdy z parametru dotazu. POST /v1/search/multi spustí několik dotazů různého druhu v jednom volání.
curl -H "Authorization: Bearer $KEY" \
"https://<instance>/v1/search?q=04543645&kind=entity"
Modul 7 · Auditovatelná zpráva
POST /v1/reports s investigation_id a formátem (json, md nebo html) vygeneruje neměnnou zprávu s vloženým ověřovacím manifestem — kompletním seznamem hashů použitých důkazů, proti kterému lze zprávu dodatečně ověřit i offline. GET /v1/reports/{id}/download stáhne samotný soubor. PDF export je Plánováno.
Tím je bootcamp hotový — od API klíče po zprávu s dohledatelným důkazem, celé přes REST API.
curl -X POST -H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"investigation_id": "<id>", "format": "md"}' \
https://<instance>/v1/reports
curl -H "Authorization: Bearer $KEY" \
https://<instance>/v1/reports/{report_id}/download
Co dál
Vyzkoušejte bootcamp v aplikaci
Stejné kroky, bez psaní jediného curl příkazu.