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: