← Späť
SwarmHawk 0.10 · REST API

SwarmHawk API

SwarmHawk API vám umožňuje programový prístup k 27 automatizovaným bezpečnostným skúškam a 3000+ aktívnym šablónam CVE nástroja nuclei — SSL, DNS, CVE s potvrdeným aktívnym exploitom, vystavenie pri breach, typosquatting, analýza hrozieb AI a ďalšie — pre ľubovoľnú doménu. Používajte ho na budovanie bezpečnostných workfloov, automatizáciu due diligence alebo integráciu SwarmHawk do vlastnej platformy.

Existujú dve API plochy:

  • /api/v2 — starší surface s autentifikáciou session/JWT používaný dashboardom. Väčšina operácií čítania a zápisu je dostupná aj tu z dôvodu kompatibility.
  • /api/v1 — moderné verejné API pre Business / Enterprise, zabezpečené pomocou bearer API kľúčov (swh_…). Toto je cieľ pre nové integrácie.
Základná URL https://api.swarmhawk.com
📘 Všetky odpovede sú v formáte JSON. Všetky požiadavky s obsahom musia nastaviť Content-Type: application/json.

Rýchly štart — skenujem doménu za 30 sekúnd

# 1. Create an API key at www.swarmhawk.com → Account → API Keys (Business or Enterprise)
# 2. Add and start scanning a domain:

curl -X POST https://api.swarmhawk.com/api/v1/domains \
  -H "Authorization: Bearer swh_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"domain": "example.com"}'

# Poll the latest report:
curl https://api.swarmhawk.com/api/v1/jobs/<job_id> \
  -H "Authorization: Bearer swh_your_key_here"
import requests

API_KEY = "swh_your_key_here"
BASE = "https://api.swarmhawk.com/api/v1"
H = {"Authorization": f"Bearer {API_KEY}"}

resp = requests.post(f"{BASE}/domains", headers=H, json={"domain": "example.com"})
job_id = resp.json()["job_id"]

job = requests.get(f"{BASE}/jobs/{job_id}", headers=H).json()
print(f"State: {job['state']}")
const BASE = "https://api.swarmhawk.com/api/v1";
const H = { "Authorization": "Bearer swh_your_key_here", "Content-Type": "application/json" };

const add = await fetch(`${BASE}/domains`, {
  method: "POST",
  headers: H,
  body: JSON.stringify({ domain: "example.com" })
}).then(r => r.json());

const job = await fetch(`${BASE}/jobs/${add.job_id}`, { headers: H }).then(r => r.json());
console.log(`State: ${job.state}`);

Autentifikácia

SwarmHawk používa dve metódy autentifikácie v závislosti od koncového bodu:

MetódaZáhlaviePoužívané pre
API kľúč (Bearer)Authorization: Bearer swh_…/api/v1/* verejné Business / Enterprise API
Relácia JWTAuthorization: Bearer <jwt>/api/v2/* a koncové body dashboardu (autentifikovaní používatelia)
Žiadny—/public-scan, /health
🔑 Získajte svoj kľúč API na www.swarmhawk.com → Prihlásenie → Konto → Kľúče API. Kľúče API sú dostupné v plánoch Business a Enterprise.

Formát API kľúča

swh_3f8a2b1c4d5e6f7a8b9c0d1e2f3a4b5c

Chyby a limity sadzby

HTTP stavové kódy

KódVýznam
200Úspech
400Chybný požiadavok — skontrolujte telo vašej požiadavky
401Chýbajúci alebo neplatný API kľúč / token relácie
403Zakázané — táto funkcia vyžaduje platenú verziu
429Limit požiadaviek prekročený
500Chyba servera — skúste znova za 30 sekúnd

Tvar chybovej odpovede

{
  "detail": "Invalid API key"
}

Limity rýchlosti

PlánLimit
FreeKľúče API nie sú dostupné; používajte dashboard alebo /public-scan
BusinessPredvolená kvóta na účet s možnosťou doplátiť si dodatočné kredity
EnterpriseVlastné limity dohodnuté podľa zmluvy
/public-scanNie je potrebný kľúč · obmedzené podľa IP adresy

Skenovať doménu

Neexistuje žiadny jednotný endpoint "jednorazového skenu". Ak chcete skenovať doménu cez API:

  1. Pridajte (a overte) doménu pomocou POST /api/v1/domains — prvá kontrola sa automaticky zaradí do frontu.
  2. Ak chcete znova skenovat už pridanú doménu, zavolajte POST /api/v1/domains/{domain_id}/scan.
  3. Dotazujte sa na stav cez GET /api/v1/jobs/{job_id} a na najnovšie výsledky cez GET /api/v2/domains/{domain_id}/report.
  4. Pre jednorazové anonymné skeny bez účtu použite POST /public-scan (s obmedzenou frekvenciou, výsledky sa neuchovávajú).
Pozrite si časti Pridať doménu, Spustiť skenovanie a Stav úlohy v rámci Business / Enterprise API pre kanonické tvary požiadaviek.

POST /public-scan

Anonymný scan — nevyžaduje sa API kľúč. Vracia podmnožinu kontrol s niektorými výsledkami uzamknutými. Použite to na demo alebo embedy. Výsledky nie sú uložené.

POST /public-scan No auth
PoleTypPopis
domainstringDoména na skenovanie
{
  "domain": "example.com",
  "risk_score": 42,
  "critical": 1,
  "warnings": 3,
  "locked_count": 8,
  "checks": [/* 7 free checks visible, 8 locked */],
  "scanned_at": "2025-03-10T09:15:00Z"
}

GET /scan/passive

Rýchla pasívna skúška — detekuje software stack a kontroluje známe CVE bez plnej skúšky. Odpoveď za ~3 sekundy. Výsledok sa neukladá.

GET /scan/passive?domain=example.com Bearer
{
  "domain": "example.com",
  "software": [
    {"product": "nginx", "version": "1.18.0"},
    {"product": "WordPress", "version": "6.3.1"}
  ],
  "cve_hits": [
    {
      "product": "WordPress 6.3.1",
      "top_cve": "CVE-2023-39320",
      "top_cvss": 9.8,
      "cve_count": 3
    }
  ],
  "max_cvss": 9.8,
  "priority": "CRITICAL"
}

priorita: KRITICKÁ (cvss ≥ 9) · VYSOKÁ (≥ 7) · STREDNÁ (≥ 4) · NÍZKA. Ak je upstream flota skánerov nedostupná, endpoint vráti prázdny formát výsledku namiesto 5xx chyby.

GET /api/v2/domains

Vypíšte všetky domény vo vašom účte s ich najnovšími skóre rizika a kontrolami.

GET /api/v2/domains Bearer
{
  "domains": [
    {
      "id": "uuid",
      "domain": "example.com",
      "country": "DE",
      "status": "active",
      "paid": true,
      "risk_score": 42,
      "scanned_at": "2025-03-10T09:15:00Z",
      "checks": [/* latest check array */],
      "scan_history": [{"date":"…","risk":42}]
    }
  ]
}

POST /api/v2/domains

Pridajte doménu na svoj účet a zaraďte jej do frontu na skenování na pozadí.

POST /api/v2/domains Bearer
PoleTypPopis
domainstringDoména na pridanie, napríklad "mycompany.cz"
countrystringISO kód krajiny (voliteľne — automaticky zistený z TLD)
{
  "id": "uuid",
  "domain": "mycompany.cz",
  "status": "scanning",
  "message": "Domain added — scan starting now"
}

GET /api/v2/domains/{domain_id}/report

Získajte najnovšiu úplnú správu skúšky pre doménu. Bezplatní používatelia vidí podmnožinu; platení používatelia vidia všetkých 27 skúšok vrátane validácie aktívnych CVE nástroja nuclei a zhrnutia AI.

GET /api/v2/domains/{domain_id}/report Bearer
{
  "domain": "example.com",
  "risk_score": 42,
  "scanned_at": "2025-03-10T09:15:00Z",
  "paid": true,
  "critical": 1,
  "warnings": 3,
  "informational": 2,
  "locked_count": 0,
  "verified_at": "2026-04-08T10:00:00Z",
  "checks": [
    {
      "check": "ssrf",
      "status": "info",
      "confidence": "informational",
      "title": "A10: 3 SSRF surface indicator(s)",
      "detail": "Surface area detected (not confirmed vulnerabilities)…",
      "score_impact": 0
    }
  ]
}

Každý objekt kontroly teraz obsahuje pole confidence: "confirmed" (skórované) alebo "informational" (nulová penalizácia, iba povrchový indikátor). Informatívne zistenia sa nikdy nezapočítavajú do warnings ani critical.

GET /domains/{domain_id}/verify-token

Vráťte živú výzvu vlastníctva vydanú orchestrátorom verifikácie. SwarmHawk podporuje dve metódy verifikácie — DNS TXT záznam alebo HTTP upload súboru. Zavolajte POST /domains/{domain_id}/verify s method: "dns" alebo "http" po publikovaní záznamu/súboru.

GET /domains/{domain_id}/verify-token Bearer
{
  "domain": "example.com",
  "verified_at": null,
  "orchestrator_state": "pending",
  "method": {
    "name": "DNS TXT record",
    "record_name": "_swarmhawk-verify.example.com",
    "record_value": "swarmhawk-verify=a3f7b2c1…",
    "hint": "Add a TXT record named _swarmhawk-verify.example.com with the value above. Click 'Check DNS' once propagated."
  },
  "methods": [
    {
      "type": "dns",
      "name": "DNS TXT record",
      "record_name": "_swarmhawk-verify.example.com",
      "record_value": "swarmhawk-verify=a3f7b2c1…",
      "hint": "Add a TXT record …"
    },
    {
      "type": "http",
      "name": "File upload",
      "path": "/.well-known/swarmhawk-verify.txt",
      "url": "https://example.com/.well-known/swarmhawk-verify.txt",
      "body": "swarmhawk-verify=a3f7b2c1…",
      "hint": "Upload a file at the URL containing the body above. Click 'Check File' once it returns 200."
    }
  ]
}

Položka metódy HTTP je prítomná iba vtedy, keď orchestrátor vydal výzvu http_path. Ak je orchestrátor nedostupný, koncový bod vráti 503 no_verification_orchestrator.

POST /domains/{domain_id}/verify

Požiadajte orchestrátor o potvrdenie vlastníctva pomocou vybranej metódy. Pri úspešnom overení sa domains.verified_at zapíše a vráti v následných odpovediach správ. Orchestrátor si ukladá pozitívne overenia do vyrovnávacej pamäte na 7 dní.

POST /domains/{domain_id}/verify Bearer

Telo požiadavky (voliteľné, predvolená hodnota dns):

{ "method": "dns" }   // or "http"

Úspešná odpoveď:

{ "verified": true, "method": "dns" }

Odpoveď zatiaľ nenájdená:

{ "verified": false, "state": "pending", "method": "dns", "detail": "DNS-TXT record not found yet" }

GET /api/v2/domains/{domain_id}/história

Trend skóre rizika v čase — užitočný na vytváranie dashboardov alebo upozorňovania na zvýšenie skóre.

GET /api/v2/domains/{domain_id}/history Bearer
{
  "domain": "example.com",
  "scans": [
    {"risk_score":42,"critical":1,"warnings":3,"scanned_at":"2025-03-10T09:15:00Z"},
    {"risk_score":38,"critical":0,"warnings":4,"scanned_at":"2025-02-10T08:00:00Z"}
  ]
}

GET /api/v2/domains/{domain_id}/nis2

Mapovať zistenia skenu na články NIS2 Direktívy. Vracia skóre zhody a stav podľa článku — vhodné ako dôkaz auditu pre regulačné orgány.

GET /api/v2/domains/{domain_id}/nis2 Bearer
{
  "domain": "example.com",
  "risk_score": 42,
  "nis2_score": 71,
  "articles": [
    {
      "article": "Art.21(2)(i)",
      "requirement": "Secure communications",
      "status": "met"
    },
    {
      "article": "Art.21(2)(h)",
      "requirement": "Supply chain security",
      "status": "warning"
    }
  ]
}

POST /intel

Vytvorte briefing hrozieb poháňaný AI pre váš portfólio domén pomocou Claude. Vracia štruktúrovaný briefing s výkonným zhrnutím, kritickými zisteniami a prioritami nápravy.

POST /intel Bearer
PoleTypPopis
domainsstringOddelené čiarkami: "example.com (risk:42), other.cz (risk:18)"
datestringDnešný dátum, napr. "10. marca 2025"
{
  "text": "## Executive Summary\n\nYour domain portfolio shows...",
  "briefing": "…"
}

POST /api/v2/keys

Vytvorte nový kľúč API pre vašu účet. Vracia všetky kľúče vrátane nového.

POST /api/v2/keys Bearer
{
  "keys": [
    {
      "key": "swh_3f8a2b1c4d5e6f7a8b9c0d1e2f3a4b5c",
      "calls_this_month": 0,
      "limit_per_month": 10,
      "active": true,
      "created_at": "2025-03-10T09:00:00Z"
    }
  ]
}

GET /api/v2/keys

Vypíšte všetky API kľúče a ich využitie za aktuálny mesiac.

GET /api/v2/keys Bearer
curl https://api.swarmhawk.com/api/v2/keys \
  -H "Authorization: Bearer YOUR_SESSION_TOKEN"

DELETE /api/v2/keys/{key}

Okamžite zrušte kľúč API. Všetky budúce požiadavky s týmto kľúčom budú odmietnuté.

DELETE /api/v2/keys/{key} Bearer
{ "revoked": "swh_3f8a2b1c…" }

Business / Enterprise API — /api/v1

Plocha /api/v1/* je produkčné API na zápis používané zákazníkmi Business a Enterprise. Každý endpoint nižšie akceptuje buď X-API-Key: swh_… (odporúčané pre komunikáciu server-to-server) alebo Authorization: Bearer <jwt> (pre interné nástroje).

Základná URL https://api.swarmhawk.com

Vrstvové brány

  • Zadarmo — Prístup k API odmietnutý (403 API_ACCESS_REQUIRED).
  • Pro — 10-hodinová skúšobná verzia len na čítanie. Koncové body zápisu vracajú 403 business_required.
  • Business — 500 hovorov/mesiac, debet peňaženky/oprávnenia za sken/pentest/únik.
  • Enterprise — neobmedzené volania; administrátorská registrácia s limitom max_domains na zákazníka a meraním podľa volania (detaily).

Typický tok predajcu

# 1. Add a domain (returns the DNS challenge inline)
curl -X POST https://api.swarmhawk.com/api/v1/domains \
  -H "X-API-Key: swh_…" -H "Content-Type: application/json" \
  -d '{"domain":"acme.com"}'
# {"id":"…","domain":"acme.com","verification":{"state":"pending","dns_record_name":"_swarmhawk.acme.com","dns_record_value":"swh-verify=…"}}

# 2. Tenant adds the DNS TXT record, then verify
curl -X POST https://api.swarmhawk.com/api/v1/domains/{id}/verify \
  -H "X-API-Key: swh_…"
# {"verified":true,"state":"verified","method":"dns"}

# 3. Kick off a scan / pentest / breach lookup (returns job_id)
curl -X POST https://api.swarmhawk.com/api/v1/domains/{id}/scan -H "X-API-Key: swh_…"
# {"job_id":"…","status":"queued","domain":"acme.com","swarmhawk_job_id":"…"}

# 4. Poll the orchestrator-side job and pull results when status=done
curl https://api.swarmhawk.com/api/v1/jobs/{job_id} -H "X-API-Key: swh_…"
curl https://api.swarmhawk.com/api/v1/jobs/{job_id}/findings -H "X-API-Key: swh_…"
curl https://api.swarmhawk.com/api/v1/jobs/{job_id}/report -H "X-API-Key: swh_…"

POST /api/v1/keys

Vydajte kľúč API pre aktuálneho používateľa. Business: jeden kľúč, 500 volaní/mesiac. Enterprise: jeden kľúč, bez limitu (spravovaný správcom cez /admin/api/v1/enterprise/*). Iba Bearer JWT — nemôžete si spustiť svoj prvý kľúč sám sebou; vstupným bodom je prihlásenie na paneli (alebo enrolácia správcom pre Enterprise).

POST/api/v1/keysBearer only
curl -X POST https://api.swarmhawk.com/api/v1/keys -H "Authorization: Bearer …"
# { "keys": [{ "id":"…", "key_prefix":"swh_…", "calls_this_month":0, "limit_per_month":500 }],
#   "created": true, "is_trial": false, "full_key": "swh_…" }  ← plaintext shown ONCE

GET /api/v1/keys

Zoznam aktívnych kľúčov + využitie v aktuálnom mesiaci. Obyčajný text sa nikdy znova nezobrazuje. Iba Bearer JWT — na endpointy správy kľúčov nie je možné pristúpiť pomocou API kľúča.

GET/api/v1/keysBearer only
{ "keys": [{ "id":"…", "key_prefix":"swh_3f8a2b1c",
            "calls_this_month":142, "limit_per_month":500,
            "cost_this_month_usd":"23.50", "last_used_at":"2026-05-12T19:01:00Z" }] }

POST /api/v1/keys/{key_id}/regenerate

Zrušiť existujúci kľúč a vydať nový. Nový otvorený text sa zobrazí raz v odpovedi — predchádzajúci kľúč prestane pracovať okamžite. Iba Bearer JWT.

POST/api/v1/keys/{key_id}/regenerateBearer only

DELETE /api/v1/keys/{key_id}

Zrušiť kľúč. Idempotentné. Iba Bearer JWT.

DELETE/api/v1/keys/{key_id}Bearer only

GET /api/v1/domains

Zoznam domén volajúceho. Stránkovaný; podporuje ?limit a ?offset.

GET/api/v1/domainsX-API-Key Bearer

POST /api/v1/domains

Pridajte doménu a automaticky inicializujte overovanie orchestrátora. Vráti DNS-TXT challenge bezprostredne, aby ste ho mohli poskytnúť svojmu tenantovi bez ďalšieho volania. Bezplatne pre zákazníka — pridávanie domén neodpočítava z peňaženky.

POST/api/v1/domainsX-API-Key Bearer

Telo

PoleTypPovinnéPopis
domainstringyes4–253 znakov, malými písmenami.
countrystring—ISO 3166-1 alpha-2. Automaticky odvodené z TLD, ak chýba.
industrystring—Voľne formátovaný štítok na zoskupovanie a hlásenie.
primary_contactstring—Email pre smerovanie porušení bezpečnosti/upozornení.

Odpoveď (201)

{
  "id": "d1-uuid",
  "domain": "acme.example.com",
  "country": "US",
  "verification": {
    "state": "pending",
    "dns_record_name": "_swarmhawk.acme.example.com",
    "dns_record_value": "swh-verify=Xk2…",
    "http_path": "/.well-known/swarmhawk-verify.txt",
    "http_body": "swh-verify=Xk2…",
    "expires_at": "2026-05-19T20:00:00Z"
  }
}

Chyby: 403 tier_locked pri limite; 409 domain_already_added pri duplicite; 422 invalid_domain.

GET /api/v1/domains/{domain_id}

Detaily jednej domény: risk_score, last_scanned_at, verified_at, krajina, atď. 404 pri nezhode.

GET/api/v1/domains/{domain_id}X-API-Key Bearer

PATCH /api/v1/domains/{domain_id}

Prepínajte auto_rescan_enabled pre doménu (jedinou upraviteľné pole na tomto endpointe v súčasnosti). Povolenie vyžaduje tier Pro alebo vyšší (feature gate daily_rescan); vypnutie je vždy povolené. Ak chcete zmeniť industry, primary_contact alebo country, odstráňte a znova pridajte doménu.

PATCH/api/v1/domains/{domain_id}Bearer only
curl -X PATCH https://api.swarmhawk.com/api/v1/domains/{id} \
  -H "Authorization: Bearer …" -H "Content-Type: application/json" \
  -d '{"auto_rescan_enabled": true}'
# { "ok": true }

DELETE /api/v1/domains/{domain_id}

Trvalé vymazanie domény. Riadok, jej stav verifikácie a všetky súvisiace záznamy úloh sú odstránené. Uvoľňuje slot v rámci limitu úrovne. Kvóta +1.

DELETE/api/v1/domains/{domain_id}X-API-Key Bearer

POST /api/v1/domains/bulk-import

Multipart nahrávanie CSV — každý riadok je doména,krajina (krajina je povinná, 2-písmenový kód ISO). Prvý riadok môže byť hlavička doména,krajina — je preskočený. Rešpektuje limit pre každého zákazníka; riadky, ktoré limit prekročia, skončia v zozname rejected s dôvodom quota exceeded. Kvóta +1 na volanie (nie na riadok).

POST/api/v1/domains/bulk-importX-API-Key Bearer

Vracia {accepted: [...], rejected: [...]}. Dostupné na úrovniach Business + Enterprise (funkcia: bulk_import).

GET /api/v1/domains/{domain_id}/history

Chronologicky usporiadaný zoznam predchádzajúcich skanov + zmeny kontrol pre doménu.

GET/api/v1/domains/{domain_id}/historyX-API-Key Bearer

GET /api/v1/domains/{domain_id}/verification

Iba na čítanie dostupné načítanie aktuálneho stavu autorizačnej výzvy z orchestrátora (DNS + HTTP cesta + hodnoty záznamov + čas vypršania). Použite toto, ak potrebujete znova zobraziť výzvu po stratení pôvodnej odpovede POST /api/v1/domains.

GET/api/v1/domains/{domain_id}/verificationX-API-Key Bearer
{
  "domain": "acme.example.com",
  "state": "pending",            // pending | verified | failed | expired
  "verified_at": null,
  "dns_record_name": "_swarmhawk.acme.example.com",
  "dns_record_value": "swh-verify=Xk2…",
  "http_path": "/.well-known/swarmhawk-verify.txt",
  "http_body": "swh-verify=Xk2…",
  "expires_at": "2026-05-19T20:00:00Z"
}

POST /api/v1/domains/{domain_id}/verify

Požiadajte orchestrátor, aby skutočne spustil kontrolu. method=dns (predvolené nastavenie) vykonáva vyhľadávanie TXT záznamu; method=http načíta https://<doména><http_cesta> a porovná s http_telo.

POST/api/v1/domains/{domain_id}/verifyX-API-Key Bearer
curl -X POST https://api.swarmhawk.com/api/v1/domains/{id}/verify \
  -H "X-API-Key: swh_…" -H "Content-Type: application/json" \
  -d '{"method":"dns"}'
# {"verified":true,"state":"verified","method":"dns"}
# {"verified":false,"state":"pending","method":"dns","detail":"TXT record not found"}

Pri verified:true sú domains.verified_at aj cache orchestrátora prepnuté — následné volania scan/pentest/breach už nevracajú domain_unverified.

POST /api/v1/domains/{domain_id}/scan

Odošlite skenovanie povrchu útokov orchestrátoru. Bez overenia domény — ktorákoľvek pridaná doména je oprávnená. Business: odpisy peňaženky/oprávnenia podľa service_prices.attack_surface. Enterprise: zaznamenáva riadok usage_events s efektívnou cenou na zákazníka, bez dotyku peňaženky. Kvóta +1 pri 201.

POST/api/v1/domains/{domain_id}/scanX-API-Key Bearer

Odpoveď (201)

{
  "job_id": "orch-uuid",        // poll at GET /api/v1/jobs/{job_id}
  "status": "queued",
  "domain": "acme.example.com",
  "swarmhawk_job_id": "sw-uuid"     // internal id, kept for audit
}

Chyby: 402 INSUFFICIENT_BALANCE, 403 enterprise_inactive, 429 cooldown (spoločné 24h okno vynucované orchestrátorom s penetračným testom), 503 orchestrator_unavailable.

POST /api/v1/domains/{domain_id}/pentest

Odošlite AI pentest. Voliteľný parameter rate_profile kontroluje agresivitu skanu: stealth (3 rps) · regular (10 rps, predvolené) · aggressive (25 rps). Všetky ostatné parametre zostávajú na predvolených hodnotách orchestrátora. Rovnaké rozdelenie peňaženky/merania ako /scan.

POST/api/v1/domains/{domain_id}/pentestX-API-Key Bearer
curl -X POST https://api.swarmhawk.com/api/v1/domains/{id}/pentest \
  -H "X-API-Key: swh_…" -H "Content-Type: application/json" \
  -d '{"rate_profile":"regular"}'
# {"job_id":"…","status":"queued","domain":"…","swarmhawk_job_id":"…"}

Rovnaký error surface ako scan, plus 422 invalid_rate_profile.

POST /api/v1/domains/{domain_id}/breach-intel

Spustite úlohu výskumu darknet, ktorá skontroluje zdroje darknet na poverenia, hashe a osobné údaje viazané na túto doménu. Asynchronne — okamžite vracia job_id; dotazujte GET /api/v1/breach-intel/{job_id} na stav a zistenia. Typické end-to-end dokončenie je 30–90 s. Doména musí byť overená. Business: odpíše peňaženku/oprávnenie podľa service_prices.breach_intel. Enterprise: zaznamenáva riadok usage_events s efektívnou cenou na zákazníka, bez dotyku peňaženky. Kvóta +1 pri prijatom odoslaní. Cooldown na doménu: 7 dní (okno darknet orchestrátora).

POST/api/v1/domains/{domain_id}/breach-intelX-API-Key Bearer

Response (202)

{
  "job_id": "sw-uuid",               // poll GET /api/v1/breach-intel/{job_id}
  "orchestrator_job_id": "orch-uuid",  // upstream id, kept for audit
  "status": "running",
  "domain": "acme.example.com",
  "billing_source": "wallet"           // or "entitlement" | "admin_override" | "enterprise_metered"
}

Chyby: 402 INSUFFICIENT_BALANCE, 403 domain_unverified, 403 enterprise_inactive, 409 already_running (úloha je už prebiehajúca pre túto doménu), 429 cooldown (lokálne okno 7 dní), 429 darknet_cooldown_active (okno 7 dní vynútené orchestrátorom s next_available_at), 502 orchestrator_unavailable, 503 orchestrator_unavailable.

GET /api/v1/breach-intel/{job_id}

Dotazujte úlohu výskumu darknet. Skontrolované vlastníctvo; žiadna kvóta. Backend lenivo dotazuje orchestrátora (škrtenie 5 s) zatiaľ čo je lokálny riadok stále running, takže tento endpoint sa dá volať často bez zaplavenia upstream. Keď sa úloha dostane do terminálneho stavu (completed | failed | cancelled), nasledujúce volania vrátia uložený riadok bez akéhokoľvek round-trip orchestrátora.

GET/api/v1/breach-intel/{job_id}X-API-Key Bearer

Response (200) — running

{
  "job_id": "sw-uuid",
  "orchestrator_job_id": "orch-uuid",
  "domain": "acme.example.com",
  "status": "running",
  "leak_count": null,
  "findings": [],
  "pagination": { "page":1, "page_size":50, "total":0, "total_pages":0 },
  "error": null,
  "billing_source": "wallet",
  "requested_at": "2026-05-19T20:23:35Z",
  "completed_at": null
}

Response (200) — completed

{
  "job_id": "sw-uuid",
  "domain": "acme.example.com",
  "status": "completed",
  "leak_count": 4,
  "findings": [
    {
      "id": 2,
      "email": "[email protected]",
      "username": "alice",
      "breach_name": "leakdb",
      "breach_date": null,
      "has_password": true,                              // plaintext available via /reveal
      "password": { "sha1":"6DD85DDA386874EC…", "encrypted":true },
      "risk_level": "high"
    }
  ],
  "pagination": { "page":1, "page_size":50, "total":4, "total_pages":1 },
  "error": null,
  "billing_source": "wallet",
  "requested_at": "2026-05-19T20:23:35Z",
  "completed_at": "2026-05-19T20:23:43Z"
}

Response (200) — failed

{
  "job_id": "sw-uuid",
  "status": "failed",
  "error": "no_data_available",       // or "orchestrator_job_not_found" | "orchestrator_failed"
  "leak_count": null,
  "findings": [],
  "billing_source": "wallet",
  "requested_at": "2026-05-19T20:23:35Z",
  "completed_at": "2026-05-19T20:24:01Z"
}

Pri error = "no_data_available" alebo "orchestrator_job_not_found" sa spotreba peňaženky/oprávnenia automaticky vracia — nie je potrebná žiadna akcia od volajúceho.

POST /api/v1/breach-intel/{job_id}/reveal/{finding_id}

Dešifrujte jedno heslo v čistom texte zo zistenia darknet. Len vlastník (pokusy cross-tenant vrátia 404 — existencia-privátna). Doména musí byť v čase volania stále overená orchestrátorom. Čistý text je vrátený inline a nikdy sa NEpersistuje v SwarmHawk DB; každé volanie zapíše jeden riadok admin_audit_log. Bez nákladov na kvótu.

POST/api/v1/breach-intel/{job_id}/reveal/{finding_id}X-API-Key Bearer

Response (200)

{
  "plaintext": "Hunter2!",
  "revealed_at": "2026-05-19T20:25:10Z"
}

Chyby: 403 domain_unverified (overenie vypršalo od doby, keď skenovanie prebehlo), 404 finding_not_found (id nie je súčasť tejto úlohy — vrátené aj pre cross-tenant), 502 orchestrator_reveal_failed. Iba zistenia s has_password: true v GET odpovedi je možné odhaliť.

GET /api/v1/jobs/{job_id}

Proxy stavu úlohy orchestrátoru. job_id je tu identifikátor orchestrátoru vrátený pomocou POST /scan alebo /pentest. Vlastníctvo je vynútené na strane servera — 404 pri neshode (existencia-privátna). GET = bez kvóty.

GET/api/v1/jobs/{job_id}X-API-Key Bearer
{
  "id": "orch-uuid",
  "status": "running",       // queued | running | done | failed | cancelled
  "created_at": "…",
  "updated_at": "…",
  "progress_pct": 42,        // integer 0–100 (NOT a 0–1 fraction)
  "phase": "recon",          // free-form server label, display-only
  "target": "acme.example.com"
}

Progress is reported as progress_pct (integer percentage, 0–100) plus a free-form phase label — both pass through verbatim from the scan engine, so treat unknown phase values as display-only.

Dotazujte sa každých 5–10 sekúnd, kým je status queued alebo running. Keď je done, načítajte nižšie uvedené zistenia / správu.

GET /api/v1/jobs/{job_id}/findings

Štruktúrovaný zoznam zistení (zraniteľnosti, exponované služby, slabé konfigurácie atď.). Vrátený po status == 'done'.

GET/api/v1/jobs/{job_id}/findingsX-API-Key Bearer

Returns a bare JSON array. Each item is emitted verbatim by the scan engine, so treat fields beyond the common ones below as additive.

[
  {
    "id": "f-1",
    "severity": "high",        // info | low | medium | high | critical
    "title": "Exposed admin panel",
    "target": "admin.acme.example.com",
    "description": "…"
  }
]

Errors: 404 findings_not_available if no findings exist for the job yet (still running, or output not enabled for your account); 404 not_found for an unknown / cross-tenant job; 502 api_get_findings_unavailable if the scan service is unreachable.

GET /api/v1/jobs/{job_id}/report

Úplná JSON správa (zhrnutie pre vedenie + zistenia + odporúčania). Dostupná po done.

GET/api/v1/jobs/{job_id}/reportX-API-Key Bearer

Returns a JSON object wrapping the engine-rendered structured report. The nested report object passes through from the scan engine.

{
  "status": "done",
  "generated_at": "2026-06-03T09:12:44Z",
  "model": "claude-…",
  "report": {
    "executive_summary": "…",
    "findings": [ /* same items as /findings */ ],
    "recommendations": [ "…" ]
  }
}

Errors: 404 report_not_available if the report has not been generated for this job (still running, or report generation not enabled for your account); 502 api_get_report_unavailable if the scan service is unreachable.

GET /api/v1/jobs/{job_id}/report.pdf

Rovnaká správa vykreslená ako PDF (binárny tok s upstream Content-Disposition). Vhodné na priamu redistribúciu vašemu nájomcovi.

GET/api/v1/jobs/{job_id}/report.pdfX-API-Key Bearer

On success returns 200 with Content-Type: application/pdf and the upstream Content-Disposition filename.

PDF generation is not enabled on every account / job type. When no PDF is available you get 404 {"error":"report_not_available"} with a human-readable detail — not a generic 502. A 502 api_get_report_pdf_unavailable means the scan service itself is unreachable (retry with back-off). Fall back to GET …/report (JSON) when you only need the data.

Podniková úroveň

Úroveň Enterprise je určená pre poskytovateľov hostingu, MSSP a ďalších predajcov, ktorí prevádzkujú SwarmHawk ako white-label API v prospech mnohých tenantov. Vyžaduje registráciu správcu (bez samoobslužného nákupu) a zmluvnú dohodu — kontaktujte obchodný tím pre zaradenie.

Čo je iné oproti Business

  • Pevný limit domén na zákazníka — vaša zmluva nastavuje max_domains (napr. 100, 500, 5000); (N+1)-ty POST /api/v1/domains vráti 403 tier_locked s feature:"domains" a telom s limit/current.
  • Neobmedzené API volania — váš kľúč má nastavené limit_per_month: null; mesačná kvóta platná pre Pro/Business je obídená.
  • Metriky na základe volaní — každé volanie scan, pentest a breach-intel je zaznamenané v nezmeneniteľnom protokole usage_events s efektívnou cenou na zákazníka, ktorú je možné získať prostredníctvom GET /api/v1/usage. Ceny jednotlivých služieb je možné administrátorom prepísať v zmluve (inak sa používajú globálne cenové tabuľky).
  • Bez peňaženky / bez Stripe — Faktúrácia Enterprise prebieha mimo platformy s mesačným cyklom faktúr. Zostatok peňaženky vášho resellera je irelevantný.
  • Iba API — Podnikoví zákazníci sa neprihlasujú do ovládacieho panela. Predajný tím vám odovzdá kľúč nosiča mimo pásma; všetko nižšie funguje s X-API-Key: swh_….

Dostupné koncové body

Zákazníci Enterprise používajú existujúci Business /api/v1/* povrch plus nový GET /api/v1/usage:

  • POST /api/v1/keys, GET /api/v1/keys — zobraziť svoje vlastné metadáta kľúča (samotný kľúč v otvorenom texte sa zobrazuje len raz pri registrácii / regenerácii).
  • POST /api/v1/domains — podlieha limitu max_domains na zákazníka.
  • POST /api/v1/domains/{id}/verify
  • POST /api/v1/domains/{id}/scan
  • POST /api/v1/domains/{id}/pentest
  • POST /api/v1/domains/{id}/breach-intel · GET /api/v1/breach-intel/{job_id}
  • GET /api/v1/usage — Len pre podnikanie (pozri nižšie).

GET /api/v1/usage

Agregácia použitia na jednotlivé domény pre zákazníka Enterprise v danom mesačnom fakturačnom období. Použite to na zosúladenie svojej mesačnej faktúry alebo na fakturáciu vašich vlastných nájomcov na jednotlivé domény.

GET /api/v1/usage?period=YYYY-MM X-API-Key Bearer

Parametre dotazu

NázovTypPredvolenéPopis
periodstringaktuálny mesiacFormát YYYY-MM. Prekladá sa na [YYYY-MM-01, next-month-01) UTC. Nesprávne formátované hodnoty vrátia 400 invalid_period.

Príklad

curl https://api.swarmhawk.com/api/v1/usage?period=2026-05 \
  -H "X-API-Key: swh_…"

Odpoveď

{
  "period": "2026-05",
  "currency": "USD",
  "domains": [
    {
      "domain_id": "d1-uuid",
      "domain": "acme.example.com",
      "scans_count": 12,
      "pentests_count": 3,
      "breach_lookups_count": 8,
      "total_cost_usd": 234.50
    }
  ],
  "totals": {
    "scans_count": 47,
    "pentests_count": 11,
    "breach_lookups_count": 22,
    "total_cost_usd": 1284.75
  }
}

Poznámky

  • Pole domains obsahuje len domény s aspoň jednou udalosťou v danom období. Domény, ktoré vlastníte, ale nepoužívali ste ich v tomto mesiaci, sú vynechané — na úplný inventár sa opýtajte cez GET /api/v1/domains.
  • Ak sa doména odstráni medzi udalosťou a dopytom, jej riadok sa stále zobrazí s domain_id: null a domain: "<deleted>" — audit trail je zachovaný.
  • Cena odráža efektívnu cenu za volanie v čase udalosti: ak je nastavená zmluva na úrovni zákazníka, má prednosť pred globálnym tabuľkou cien služieb.
  • 403 enterprise_only sa vracia všetkým používateľom iných ako Enterprise tier, ktorí pristupujú k tomuto koncovému bodu.

Správanie pri deaktivácii

Ak je váš podnikový účet pozastavený správcom (neplatenie, koniec zmluvy atď.), každé volanie /api/v1/* — čítanie aj zápis — vráti:

HTTP 403
{ "detail": { "error": "enterprise_inactive" } }

Kľúč API nie je odvolaný (takže reaktivácia obnoví prístup bez opätovného vydania kľúčov) a historické usage_events + domains sú zachované. Kontaktujte oddel predaja na reaktiváciu.

Python SDK

Súprava SwarmHawk Python SDK poskytuje bezpečnostným platformám čisté programové rozhranie na sťahovanie zistení, konfiguráciu push integrácií a konzumáciu STIX 2.1 balíkov — bez potreby surových HTTP požiadaviek.

# Install pip install httpx # only dependency # Download curl -O https://raw.githubusercontent.com/hastikdan/swarmhawk/main/sdk/swarmhawk_sdk.py
# Quick-start from swarmhawk_sdk import SwarmHawkClient client = SwarmHawkClient(api_key="swh_...") # Paginated high-risk domains for domain in client.iter_alerts(min_risk=80): print(domain["domain"], domain["risk_score"]) # Single domain detail result = client.domain("example.com") print(result["max_cvss"], result["priority"]) # STIX 2.1 bundle for your threat intel platform bundle = client.stix_bundle(min_risk=70) print(len(bundle["objects"]), "STIX objects")

Metódy SDK

MetódaPopisVracia
domains(min_risk, country, limit, offset)Výsledky skenu s podporou paginovanialist[dict]
domain(name)Úplný detail jednej doménydict
alerts(min_risk, since, limit)Vysokorizikové nálezy, voliteľné od datetimelist[dict]
iter_alerts(min_risk, page_size)Generátor — automaticky prechádza všetky výsledkyIterator[dict]
stix_bundle(min_risk, limit)STIX 2.1 balík z /taxii koncového bodudict
integrations()Zoznam nakonfigurovaných push integráciílist[dict]
configure_integration(service, config)Uložiť poverenia integráciedict
test_integration(service, config)Testovať konektivitu bez uloženia{ok, message}

API integrácie

⚠ Integrácie sú v súčasnosti za feature flagom. S INTEGRATIONS_ENABLED=false (predvolená konfigurácia platformy) každý /integrations* endpoint vracia HTTP 410 { "error": "feature_disabled" }. Kontaktujte [email protected], ak potrebujete túto funkciu opäť aktivovať pre váš účet.

Po aktivácii nakonfigurujte push integrácie tak, aby SwarmHawk automaticky odosielal kritické zistenia do vašich bezpečnostných platforiem v momente ich detekcie (riziko ≥ 70).

GET /integrácie

Zoznam všetkých nakonfigurovaných integácií pre autentifikovaného používateľa. Tajomstvá sú maskované.

curl -H "Authorization: Bearer swh_..." \ https://api.swarmhawk.com/integrations

POST /integrácie/{service}

Uložiť alebo aktualizovať konfiguráciu integrácie. service je jeden z: splunk · sentinel · crowdstrike · gravityzone · cortex · jira · servicenow · webhook · stix

curl -X POST \ -H "Authorization: Bearer swh_..." \ -H "Content-Type: application/json" \ -d '{"config": {"hec_url": "https://splunk:8088", "hec_token": "...", "index": "security"}, "enabled": true}' \ https://api.swarmhawk.com/integrations/splunk

POST /integrations/{service}/test

Testujte konektivitu bez uloženia. Vracia {"ok": true, "message": "..."}

curl -X POST \ -H "Authorization: Bearer swh_..." \ -H "Content-Type: application/json" \ -d '{"config": {"url": "https://webhook.site/xxx", "secret": "optional"}}' \ https://api.swarmhawk.com/integrations/webhook/test

DEL /integracie/{service}

Odstráňte konfiguráciu integrácie.

Podporované služby

SlužbaMetóda autentifikácieSpúšťTyp užitočného zaťaženia
splunkHEC tokenriziko ≥ 70CIM-aligned JSON event
sentinelWorkspace SharedKey HMACriziko ≥ 70Ploché polia pripravené na KQL (_s/_d/_b)
crowdstrikePoverenia klienta OAuth2riziko ≥ 70IOC (type=doména, action=detect/prevent)
gravityzoneBearer prístupový kľúčriziko ≥ 70JSON-RPC createCustomRule
cortexSHA-256 HMAC (api_key_id/nonce/ts)riziko ≥ 70Externé upozornenie s značkami MITRE
jiraZákladné (email:api_token)riziko ≥ 70 AND cvss ≥ 7ADF-formatovaný problém s tabuľkami CVE/softvéru
servicenowZákladné (používateľ:heslo)riziko ≥ 70Incident s mapovaním urgentnosti/vplyvu/SLA
webhookVoliteľný podpis HMAC-SHA256riziko ≥ 70Obohatený JSON payload
stixBearer (čítanie cez /taxii)Pull-basedSTIX 2.1 DomainName + objekty zraniteľnosti

STIX / TAXII 2.1

SwarmHawk poskytuje kompatibilný endpoint TAXII 2.1. Pripojte akúkoľvek platformu hromadenia dômyselnosti o hrozbách (OpenCTI, MISP, ThreatConnect, Anomali) na načítavanie zistení SwarmHawk ako objekty STIX 2.1.

GET /taxii/collections/

TAXII discovery endpoint — vracia metadáta kolekcie.

curl -H "Authorization: Bearer swh_..." \ https://api.swarmhawk.com/taxii/collections/

GET /taxii/collections/swarmhawk/objects/

Vracia STIX 2.1 balík vašich domén s vysokým rizikom ako objekty domain-name, vulnerability a relationship.

curl "https://api.swarmhawk.com/taxii/collections/swarmhawk/objects/?min_risk=70&limit=200" \ -H "Authorization: Bearer swh_..."
ParameterPredvolenéPopis
min_risk70Minimálne skóre rizika (0–100)
limit100Max objektov (1–500)

Vrátené typy objektov STIX

TypObsah
domain-nameHodnota domény, skóre rizika, priorita, krajina
vulnerabilityID CVE, skóre CVSS, popis
relationshipdoména → súvisí s → zraniteľnosť

Všetky ID objektov sú deterministické (UUID5) — rovnaná doména vždy generuje rovnaké STIX ID v rámci generácií balíkov, čo umožňuje správnu deduplicitu v nadväzujúcich TIP systémoch.

Skripty adaptérov

Samostatné Python skripty pre platformy, kde uprednostňujete naplánovaný pull (cron / Lambda / Azure Function) namiesto vždy aktívneho push konektora. Každý skript načíta výstrahy SwarmHawk a v jednom behu ich pošle do cieľovej platformy.

Všetky adaptéry vyžadujú len pip install httpx a akceptujú CLI príznaky aj premenné prostredia.
PlatformaSkriptPredvolená minimálna rizikováStiahnuť
Splunk SIEM splunk_ta.py 70 ↓ splunk_ta.py
Microsoft Sentinel sentinel_connector.py 70 ↓ sentinel_connector.py
CrowdStrike Falcon crowdstrike_adapter.py 80 ↓ crowdstrike_adapter.py
Bitdefender GravityZone gravityzone_adapter.py 80 ↓ gravityzone_adapter.py
Palo Alto Cortex XDR cortex_adapter.py 75 ↓ cortex_adapter.py
Jira jira_adapter.py 70 + cvss ≥ 7 ↓ jira_adapter.py
ServiceNow servicenow_adapter.py 70 ↓ servicenow_adapter.py
🐙 Všetky skripty sú dostupné aj v SwarmHawk GitHub repozitári v priečinku sdk/adapters/.

Adapter Splunk TA

# One-line download + run curl -O https://raw.githubusercontent.com/hastikdan/swarmhawk/main/sdk/adapters/splunk_ta.py pip install httpx python splunk_ta.py --api-key swh_... --min-risk 70
PríznakPremenná prostrediaPopis
--api-keySWARMHAWK_API_KEYKľúč API SwarmHawk
--min-riskSWARMHAWK_MIN_RISKMinimálne skóre rizika (predvolené: 70)
--base-urlSWARMHAWK_BASE_URLZákladná URL API
--indexSWARMHAWK_SPLUNK_INDEXNázov Splunk indexu (predvolené: main)

Emituje sourcetype=swarmhawk:scan udalosti s poľami zladenými s CIM: dest, vendor_product, category, severity.

Adaptér Microsoft Sentinel

curl -O https://raw.githubusercontent.com/hastikdan/swarmhawk/main/sdk/adapters/sentinel_connector.py python sentinel_connector.py \ --api-key swh_... \ --workspace-id <WORKSPACE_ID> \ --shared-key <PRIMARY_OR_SECONDARY_KEY>
PríznakPremenná prostrediaPopis
--workspace-idAZURE_WORKSPACE_IDID pracovného priestoru Log Analytics
--shared-keyAZURE_SHARED_KEYPrimárny alebo sekundárny zdieľaný kľúč
--log-typeAZURE_LOG_TYPEVlastný názov tabuľky (predvolené: SwarmHawk)
--min-riskSWARMHAWK_MIN_RISKMinimálne skóre rizika (predvolené: 70)

Údaje sú uložené v vlastnej tabuľke SwarmHawk_CL. Príklad KQL: SwarmHawk_CL | where RiskScore_d >= 80 | sort by TimeGenerated desc

Adaptér CrowdStrike Falcon

curl -O https://raw.githubusercontent.com/hastikdan/swarmhawk/main/sdk/adapters/crowdstrike_adapter.py python crowdstrike_adapter.py \ --api-key swh_... \ --cs-client-id <CLIENT_ID> \ --cs-client-secret <CLIENT_SECRET>
OznačiťPremenná prostrediaPopis
--cs-client-idCS_CLIENT_IDID klienta rozhrania Falcon API
--cs-client-secretCS_CLIENT_SECRETFalcon API client secret
--cs-base-urlCS_BASE_URLFalcon základná URL (predvolená: api.crowdstrike.com)
--min-riskSWARMHAWK_MIN_RISKMinimálne skóre rizika (predvolená hodnota: 80)

Posúva domény ako IOCs (type=domain) v dávkach po 200. Akcia je prevent pre potvrdenú malvér/phishing, detect pre CVE expozíciu.

Adaptér Bitdefender GravityZone

curl -O https://raw.githubusercontent.com/hastikdan/swarmhawk/main/sdk/adapters/gravityzone_adapter.py python gravityzone_adapter.py \ --api-key swh_... \ --gz-api-url https://cloud.gravityzone.bitdefender.com/api/v1.0/jsonrpc/push \ --gz-access-key <KEY> \ --gz-company-id <ID>
ZnačkaPremenná prostrediaPopis
--gz-api-urlGZ_API_URLGravityZone JSON-RPC endpoint
--gz-access-keyGZ_ACCESS_KEYPrístupový kľúč API GravityZone
--gz-company-idGZ_COMPANY_IDID spoločnosti/nájomcu
--min-riskSWARMHAWK_MIN_RISKMinimálne skóre rizika (predvolená hodnota: 80)

Vytvára vlastné pravidlá siete prostredníctvom createCustomRule. Akcia je block pre malware/phishing, report pre CVE expozíciu.

Adaptér Palo Alto Cortex XDR

curl -O https://raw.githubusercontent.com/hastikdan/swarmhawk/main/sdk/adapters/cortex_adapter.py python cortex_adapter.py \ --api-key swh_... \ --xdr-api-key <KEY> \ --xdr-api-key-id <ID> \ --xdr-fqdn <tenant>.xdr.us.paloaltonetworks.com
OznačiťPremenná prostrediaPopis
--xdr-api-keyXDR_API_KEYCortex XDR API kľúč
--xdr-api-key-idXDR_API_KEY_IDČíselný ID API kľúča
--xdr-fqdnXDR_FQDNVaša doména FQDN (bez https://api-)
--min-riskSWARMHAWK_MIN_RISKMinimálne skóre rizika (predvolená hodnota: 75)

Posiela externými upozorneniami s značkami techník MITRE ATT&CK (T1566, T1190, T1046, T1557…). Dávky po 100 na jedno volanie API.

Jira adaptér

curl -O https://raw.githubusercontent.com/hastikdan/swarmhawk/main/sdk/adapters/jira_adapter.py python jira_adapter.py \ --api-key swh_... \ --jira-base-url https://yourcompany.atlassian.net \ --jira-email [email protected] \ --jira-token <API_TOKEN> \ --jira-project SEC
OznačiťEnv varPopis
--jira-base-urlJIRA_BASE_URLAtlassian Cloud URL
--jira-emailJIRA_EMAILEmail účtu Atlassian
--jira-tokenJIRA_TOKENAtlassian API token (id.atlassian.com → Bezpečnosť)
--jira-projectJIRA_PROJECTKľúč projektu (predvolené: SEC)
--jira-issue-typeJIRA_ISSUE_TYPETyp problému (predvolené: Bug)
--min-cvssSWARMHAWK_MIN_CVSSMinimálny CVSS na vytvorenieTicketU (predvolené: 7.0)

Vytvárajú štruktúrované ADF issues so súhrnnou tabuľkou rizík, zisteniami CVE, softvérovým stackom, neúspešnými kontrolami, bodmi na nápraву a nálepkou NIS2. Spúšťajú sa len keď riziko ≥ 70 A cvss ≥ min_cvss, aby sa predišlo spam ticketom.

Adaptér ServiceNow

curl -O https://raw.githubusercontent.com/hastikdan/swarmhawk/main/sdk/adapters/servicenow_adapter.py python servicenow_adapter.py \ --api-key swh_... \ --snow-instance yourcompany \ --snow-user admin \ --snow-password <PASSWORD>
PríznakPremenná prostrediaPopis
--snow-instanceSNOW_INSTANCESubdoména inštancie ServiceNow (bez .service-now.com)
--snow-userSNOW_USERMeno používateľa ServiceNow
--snow-passwordSNOW_PASSWORDHeslo ServiceNow
--snow-tableSNOW_TABLECieľová tabuľka (predvolené: incident)
--min-riskSWARMHAWK_MIN_RISKMinimálne skóre rizika (predvolená hodnota: 70)
PrioritaUrgenciaVplyvCieľ SLA
CRITICAL114 hodiny
HIGH1224 hodín
MEDIUM227 dní
LOW / INFO3330 dní

Objekty odozvy

Kontrola objektu

PoleTypPopis
checkstringIdentifikátor kontroly (pozri Názvy kontrol nižšie)
statusstringok · warning · critical · locked
titlestringJednoradková prehľadná identifikácia zistenia
detailstringÚplné vysvetlenie s dôkazmi
score_impactnumberBody pridané k skóre rizika (0–40)

Interpretácia skóre rizika

SkóreÚroveňVýznam
0 – 29NÍZKE RIZIKODobrá bezpečnostná pozícia, menšie problémy
30 – 59STREDNÉ RIZIKOVýrazné problémy vyžadujúce pozornosť
60 – 100VYSOKÉ RIZIKOKritické zistenia, potrebná okamžitá akcia

Kontrola mien

Každá položka v poli checks[] správy o skenovaní má identifikátor check. Úplný zoznam identifikátorov vydávaných skenerom v súčasnosti (zdroj: backend/scanhawk_translator.py + backend/post_scan_processor.py):

kontrolaSkupinaPopis
tls_protocolTLSVyjednaná verzia TLS (príznaky TLS < 1.2)
tls_cipherTLSSlabé šifrovacie sady
tls_cert_expiryTLSVypršanie platnosti certifikátu / už vypršaný certifikát
tls_self_signedTLSCertifikát podpísaný vlastníkom
tls_handshakeTLSChyby TLS handshake
email_dmarcEmailDMARC chýba alebo je slabý (p=none)
mx_blacklistEmailMX hostiteľ na verejnom zozname blokovaných
blacklistReputationDoména alebo A-záznam na verejnom čiernom zozname (Spamhaus / URLhaus / Safe Browsing)
ip_reputationReputationSignály reputácie hostingového IP / geolokácie / ASN
cve_matchVulnsSoftvérový fingerprint zhodnutý so známymi CVE (CVSS + KEV + EPSS)
exposed_gitExposureVerejný adresár /.git/
exposed_envExposureVerejný súbor .env
mixed_contentWebStránka HTTPS načítava HTTP podresursy
sri_missingWebChýba integritu subresource na skriptoch tretích strán
cookies_secureWebCookies chýbajú atribúty Secure / HttpOnly / SameSite
takeover_riskDNSVisiací subdoména / kandidát na prevzatie
security_txtHygieneChýbajúci /.well-known/security.txt (RFC 9116)
whois_privacyHygieneOchrana WHOIS privacy zapnutá / vypnutá
ai_summaryReportingAnalýza hrozieb generovaná AI (iba pre platiacich používateľov)

Granulárne kontroly (napr. tls_protocol, tls_cipher) sú zoskupené pod širšie kategórie (TLS, DNS, Headers, atď.) na zobrazenie v dashboarde. Správa PDF používa dodatočné používateľsky prívlasť označenia (pozri backend/main.py:CHECK_LABELS, ale identifikátory JSON vyššie sú kľúčovým povrchom útoku.

Pripravení začať?

Získajte svoj bezplatný API kľúč na www.swarmhawk.com → Prihlásenie → Účet → API kľúče

Získajte bezplatný kľúč API →
Interaktívny Prieskumník

Vyskúšajte Live

Úplný interaktívny API prehliadač — vykonávajte reálne požiadavky proti SwarmHawk API priamo z vášho prehliadača. Vložte svoj API kľúč do tlačidla Authorize na odomknutie autentifikovaných koncových bodov.

Zdroj schémy: https://api.swarmhawk.com/openapi.json