API reference¶
The full API reference is generated from the FastAPI OpenAPI schema.
Live schema¶
On every Vesana instance:
https://your-domain.tld/openapi.json — Schema (JSON)
https://your-domain.tld/docs — Swagger UI
https://your-domain.tld/redoc — Redoc
Swagger UI is interactive: open endpoints, try requests directly with the logged-in token.
Categorized endpoints¶
Auth¶
POST /api/v1/auth/loginPOST /api/v1/auth/2fa/verifyPOST /api/v1/auth/refreshPOST /api/v1/auth/logoutGET /api/v1/auth/mePUT /api/v1/auth/preferencesPOST /api/v1/auth/api-keysGET /api/v1/auth/api-keysDELETE /api/v1/auth/api-keys/{id}
Hosts and services¶
GET /api/v1/hosts/POST /api/v1/hosts/GET /api/v1/hosts/{id}PATCH /api/v1/hosts/{id}DELETE /api/v1/hosts/{id}POST /api/v1/host-services/PATCH /api/v1/host-services/{id}DELETE /api/v1/host-services/{id}POST /api/v1/host-services/{id}/ackDELETE /api/v1/host-services/{id}/ack
Profiles¶
GET /api/v1/profiles/POST /api/v1/profiles/GET /api/v1/profiles/{id}PATCH /api/v1/profiles/{id}DELETE /api/v1/profiles/{id}GET /api/v1/profiles/{id}/usagePOST /api/v1/profiles/{id}/cloneGET /api/v1/profiles/{id}/exportPOST /api/v1/profiles/importPOST /api/v1/profiles/{id}/applyGET /api/v1/profiles/{id}/checksPOST /api/v1/profiles/{id}/checks/{check_id}/reset
Discovery + SNMP¶
POST /api/v1/discovery/network-scanGET /api/v1/discovery/scans/{id}GET /api/v1/discovery/resultsPOST /api/v1/discovery/results/{id}/addPOST /api/v1/discovery/results/bulk-addPOST /api/v1/snmp-discovery/walksGET /api/v1/snmp-discovery/walks/{id}POST /api/v1/snmp-discovery/walks/{id}/apply
Alert rules + channels¶
GET /api/v1/alert-rules/POST /api/v1/alert-rules/POST /api/v1/alert-rules/{id}/testGET /api/v1/notification-channels/POST /api/v1/notification-channels/POST /api/v1/notification-channels/{id}/test
Downtimes + ACK¶
GET /api/v1/downtimes/POST /api/v1/downtimes/
Logs¶
POST /api/v1/logs/ingestGET /api/v1/logs/searchGET /api/v1/logs/stream— SSEGET /api/v1/logs/sourcesGET /api/v1/logs/alert-rules
Dashboards + reports¶
GET /api/v1/dashboards/POST /api/v1/dashboards/GET /api/v1/reports/slaPOST /api/v1/reports/generate
Wiki + AI¶
GET /api/v1/wiki/articlesPOST /api/v1/wiki/articlesGET /api/v1/wiki/search?q=...POST /api/v1/ai/chatPOST /api/v1/ai/chat/stream— SSEPOST /api/v1/ai/analyze/{service_id}GET /api/v1/ai/statusPUT /api/v1/ai/configGET /api/v1/ai/modelsPOST /api/v1/ai/models/pullPOST /api/v1/ai/models/deletePOST /api/v1/ai/test-connection
Admin¶
POST /api/v1/admin/exportPOST /api/v1/admin/importGET /api/v1/admin/health/snapshotGET /api/v1/admin/license/status
Audit + trash¶
GET /api/v1/audit-log/GET /api/v1/audit-log/exportGET /api/v1/trash/summaryPOST /api/v1/trash/{kind}/{id}/restoreDELETE /api/v1/trash/{kind}/{id}/purge
Push + mobile¶
POST /api/v1/push-tokens/registerPOST /api/v1/push-tokens/testGET /api/v1/push-tokens/devices
Receiver (agent / collector)¶
POST /api/v1/receiver/check-resultPOST /api/v1/agent/heartbeatGET /api/v1/agent/configGET /api/v1/config/collector/{collector_id}
Response codes¶
| Code | Meaning |
|---|---|
| 200 / 201 / 204 | success |
| 400 | request body validation error |
| 401 | not authenticated or token expired |
| 403 | authenticated but no permission |
| 404 | resource not found / not in your tenant scope |
| 409 | conflict (e.g. duplicate hostname) |
| 422 | validation failed (Pydantic detail in body) |
| 429 | rate limit |
| 500 | server error (shouldn't happen — open issue) |
| 503 | Service Unavailable (e.g. license missing for endpoint) |