Web Dashboard (API-First Guidance)
Vulnera is API-first and does not ship a bundled web UI in this repository. If you need a dashboard, use the API endpoints below to build your own UI or integrate with existing tools.
Core API Endpoints
Health & Docs
GET /health- service healthGET /metrics- metrics endpointGET /docs- Swagger UI (if enabled)GET /api-docs/openapi.json- OpenAPI spec
Jobs & Analysis
POST /api/v1/analyze/job- create analysis jobGET /api/v1/jobs/{id}- get job status/result
Organizations
POST /api/v1/organizations- create organizationGET /api/v1/organizations- list organizationsGET /api/v1/organizations/{id}- organization detailsPUT /api/v1/organizations/{id}- update organizationDELETE /api/v1/organizations/{id}- delete organizationGET /api/v1/organizations/{id}/members- list membersPOST /api/v1/organizations/{id}/members- invite memberDELETE /api/v1/organizations/{id}/members/{user_id}- remove memberPOST /api/v1/organizations/{id}/leave- leave organizationPOST /api/v1/organizations/{id}/transfer- transfer ownership
Analytics & Quota
GET /api/v1/organizations/{id}/analytics/dashboard- org dashboard statsGET /api/v1/organizations/{id}/analytics/usage- org usageGET /api/v1/organizations/{id}/analytics/quota- org quotaGET /api/v1/me/analytics/dashboard- personal dashboard statsGET /api/v1/me/analytics/usage- personal usageGET /api/v1/quota- quota usage
LLM Features (Optional)
POST /api/v1/llm/explainPOST /api/v1/llm/fixPOST /api/v1/llm/queryPOST /api/v1/jobs/{job_id}/enrich
Authentication & Security
- Cookie auth uses JWT + CSRF.
- API key auth uses
X-API-Keyheader. - CORS must be configured for your UI origin.
- Swagger UI can be disabled in production via config.
Building Your Own Dashboard
A minimal dashboard typically includes:
- Organization selector
- Recent jobs list (
/organizations/{id}/analytics/dashboard) - Findings view (from job detail:
/jobs/{id}) - Quota widget (
/organizations/{id}/analytics/quotaor/api/v1/quota) - Usage charts (
/organizations/{id}/analytics/usage)
Configuration Reference
See: