SpectraStrike UI Architecture and API Contracts (Sprint 9.6 Step 1)

1. Scope
This document defines the UI baseline architecture and API contracts for Sprint 9.6 with a strict local-only, dockerized runtime model.
2. Dockerized UI Topology
UI components (planned for implementation in next Sprint 9.6 steps):
ui-web: Next.js App Router + Tailwind CSS container.ui-admin: terminal-based admin UI container for operator workflows.
Traffic model:
- Operator browser ->
nginx(TLS edge). nginxroutes/ui/*and/api/*to internal services.ui-webcalls orchestrator API over internal Docker network.ui-admincalls orchestrator API over internal Docker network.
Security model:
- No cloud dependencies.
- Internal service access over segmented Docker networks.
- UI services are not directly exposed to host unless explicitly proxied.
- Authn/authz delegated to existing AAA controls in orchestrator.
3. UI Service Boundaries
ui-web responsibilities:
- Authentication views.
- Operator dashboard shell.
- Telemetry feed visualization.
- Findings/evidence navigation.
ui-admin responsibilities:
- Task submission.
- Telemetry watch.
- Manual integration sync triggers.
- Session-oriented terminal operations (
health,login,demo,logout,task,sync,telemetry,findings).
app (orchestrator/API) responsibilities:
- Authentication and session/token validation.
- Task orchestration and execution lifecycle.
- Telemetry retrieval and filtering.
- Findings/evidence retrieval.
- Audit and access-control enforcement.
4. API Contract Baseline
All endpoints are internal API contracts served by orchestrator and consumed by both UI clients.
4.1 Authentication
POST /api/v1/auth/login- Request:
username: stringpassword: stringmfa_code?: string
- Response:
access_token: stringexpires_at: string (ISO-8601)roles: string[]Set-Cookie: spectrastrike_session(HttpOnly,SameSite=Strict,Secure)
- Request:
POST /api/v1/auth/register- Request:
username: stringfull_name: stringemail: stringpassword: stringpassword_confirm: stringaccepted_license: booleanaccepted_eula: booleanaccepted_security_policy: booleanregistration_token?: string(required only if server policy enforces it)
- Response:
status: registereduser: { id, username, full_name, email, roles, created_at }
- Request:
POST /api/v1/auth/logout- Request: bearer token
- Response:
204 No Content
POST /api/v1/auth/demo- Purpose: issue a demo operator session for local development/demo flows.
- Guard: controlled by
UI_AUTH_ENABLE_DEMO_LOGIN. - Response:
access_token: stringexpires_at: string (ISO-8601)roles: string[]
4.2 Dashboard and Telemetry
GET /api/v1/dashboard/summary- Response:
open_findings: numberactive_tasks: numbertelemetry_events_24h: numberlast_sync_at: string|null
- Response:
GET /api/v1/telemetry/events- Query:
source?: nmap|metasploit|manualstatus?: success|failedlimit?: numbercursor?: string
- Response:
items: TelemetryEvent[]next_cursor?: string
- Query:
4.3 Findings and Evidence
GET /api/v1/findings- Query:
severity?: low|medium|high|criticalstatus?: open|accepted|resolvedlimit?: numbercursor?: string
- Response:
items: Finding[]next_cursor?: string
- Query:
GET /api/v1/findings/{finding_id}/evidence- Response:
finding_id: stringevidence: EvidenceItem[]
- Response:
4.4 Operator Actions
POST /api/v1/tasks- Request:
tool: stringtarget: stringparameters: object
- Response:
task_id: stringstatus: queued|running|completed|failed
- Request:
POST /api/v1/integrations/metasploit/manual-sync- Request:
actor?: stringcheckpoint_override?: string
- Response:
emitted_events: numberobserved_sessions: numberobserved_session_events: number
- Request:
5. Shared Schema Contracts
TelemetryEvent:
event_id: stringevent_type: stringactor: stringtarget: stringstatus: stringtimestamp: string (ISO-8601)attributes: object
Finding:
finding_id: stringtitle: stringseverity: low|medium|high|criticalstatus: open|accepted|resolvedcreated_at: string (ISO-8601)updated_at: string (ISO-8601)
EvidenceItem:
evidence_id: stringtype: log|artifact|command_output|screenshotcontent_ref: stringcaptured_at: string (ISO-8601)
6. Non-Functional Requirements
- Dockerized-only execution for UI and API runtime.
- Internal API latency target: p95 <= 300ms for list endpoints at normal load.
- Cursor-based pagination for telemetry/findings endpoints.
- Every mutation endpoint must emit an audit event.
- API responses must be deterministic and machine-parseable JSON.
7. Delivery Note
This is the contract and architecture baseline for Sprint 9.6 Step 1 only. Implementation of web/admin UI containers and endpoint wiring is tracked in the next Sprint 9.6 items.