FixVibe

// docs / rest api

REST API

Bearer-authenticated JSON API for scan automation, scan status, and findings. Passive scans are available through REST; active scans are available for paid plans only after the domain is verified and explicitly authorized in the dashboard.

Autentifikacija

Kiekviena užklausa turi turėti bearer tokeną Authorization antraštėje. Tokenai išduodami per Paskyra → API prieigos raktai; atviras tekstas jums parodomas tiksliai vieną kartą sukūrimo metu. Atšaukus tokeną, kitas kvietimas grąžina 401.

bash
curl -H "Authorization: Bearer fxv_..." \
  https://fixvibe.app/api/v1/scans

Tokeno formatas: fxv_, po kurio eina 43 base64url simboliai. Ramybės būsenoje saugoma kaip SHA-256 maiša; atviras tekstas serverio pusėje niekada neišsaugomas.

Greičio limitai

Kiekvienai autentifikuotai užklausai taikomi du langai: 10 req/sec burst ir 60 req/min steady, abu susieti su bearer maiša. Kvotos vykdymas (mėnesinės nuskaitymų ribos) sluoksniuojamas viršuje; žr. Kvotos ir limitai.

Puslapiacija

Sąrašų endpoint'ai (/api/v1/scans, /api/v1/findings) naudoja žymeklinę puslapiaciją pagal (created_at, id) mažėjančia tvarka. Perduokite ?cursor=<next_cursor>, kad gautumėte kitą puslapį. Žymeklis išlieka teisingas esant lygiagretiems įrašymams (be OFFSET poslinkio).

Klaidų formatai

Kiekviena klaida yra JSON objektas bent su error raktu.

jsonc
{ "error": "invalid_token" }                              // 401
{ "error": "forbidden" }                                  // 403
{ "error": "not_found" }                                  // 404
{ "error": "quota_exceeded", "quota": {...} }             // 429
{ "error": "rate_limited", "retry_after_seconds": 47 }    // 429
{ "error": "invalid_input", "issues": [...] }             // 400

Endpoint'ai

Pradėti nuskaitymą

POST/api/v1/scans

Enqueues a passive scan by default. For verified domains with active authorization, paid plans can request active mode. Returns immediately with a queued scan id; poll GET /api/v1/scans/[scanId] until status === "completed".

curl -X POST https://fixvibe.app/api/v1/scans \
  -H "Authorization: Bearer fxv_..." \
  -H "content-type: application/json" \
  -d '{"target":"https://staging.example.com"}'

// 200 atsakymas

{
  "id": "8f1c4e2a-8c3a-4b6f-9c0d-9b1e8f3c2a4d",
  "status": "queued",
  "target": "https://staging.example.com",
  "mode": "passive"
}

Išvardyti savo nuskaitymus

GET/api/v1/scans

Grąžina nuskaitymus organizacijai, susietai su kviečiančiu tokenu, naujausius pirmiausia. Puslapiuokite su ?cursor=. Numatytasis limitas 50, maks. 100.

curl -H "Authorization: Bearer fxv_..." \
  "https://fixvibe.app/api/v1/scans?limit=25"

// 200 atsakymas

{
  "scans": [
    {
      "id": "8f1c4e2a-...",
      "target_url": "https://staging.example.com",
      "target_hostname": "staging.example.com",
      "mode": "passive",
      "status": "completed",
      "started_at": "2026-05-07T14:00:00Z",
      "completed_at": "2026-05-07T14:00:23Z",
      "findings_count": { "critical": 1, "high": 3, "medium": 7, "low": 2, "info": 4 },
      "triggered_by": "api",
      "created_at": "2026-05-07T14:00:00Z"
    }
  ],
  "next_cursor": "2026-05-07T14:00:00Z:8f1c4e2a-..."
}

Gauti nuskaitymą

GET/api/v1/scans/{scanId}

Pagal numatymą grąžina nuskaitymo apvalkalą + kiekvienos kategorijos sunkumo suvestinę. Perduokite ?include_findings=true, kad gautumėte visą ataskaitą (didelė triukšmingiems nuskaitymams; geriau naudokite radinių endpoint'ą su filtrais).

curl -H "Authorization: Bearer fxv_..." \
  https://fixvibe.app/api/v1/scans/8f1c4e2a-8c3a-4b6f-9c0d-9b1e8f3c2a4d

Išvardyti radinius

GET/api/v1/findings

Filtruojamas radinių sąrašas per visus kviečiančiojo organizacijos nuskaitymus. Filtrai: severity=critical,high, check_id=secrets.patterns, since=2026-04-01T00:00:00Z. Žymeklinė puslapiacija.

curl -H "Authorization: Bearer fxv_..." \
  "https://fixvibe.app/api/v1/findings?severity=critical,high&limit=50"

// 200 atsakymas

{
  "findings": [
    {
      "id": "...",
      "scan_id": "...",
      "check_id": "secrets.js-bundle-sweep",
      "severity": "critical",
      "title": "Supabase service role key exposed in JS bundle",
      "description": "...",
      "evidence": { ... },
      "remediation": "...",
      "cwe_id": "CWE-798",
      "created_at": "2026-05-07T14:00:23Z"
    }
  ],
  "next_cursor": null
}

OpenAPI specifikacija

Mašininiu būdu skaitoma specifikacija adresu /docs/api/openapi (text/yaml). Įmeskite į mėgstamą codegen (openapi-typescript, openapi-python-client arba bet kurį OpenAPI 3.1 toolchain), kad gautumėte tipizuotus klientus.

REST API — Docs · FixVibe