# Console / VEX Contract Prep — PREP-EXCITITOR-CONSOLE-23-001-AWAITING-CONCRE Status: Draft (2025-11-20) Owners: Excititor WebService Guild · BE-Base Platform Guild Scope: Capture the required `/console/vex` API contract inputs so downstream tasks can proceed once the concrete spec lands. ## Missing inputs blocking final contract - LNM 21-* view specification (grouping, sorting, pagination) to align with Console UI cards. - Final status chip taxonomy and precedence rules from Policy/Concelier overlays. - SSE channel naming + retry/heartbeat semantics shared with Scheduler/Policy streams. ## Expectations for the final artefact - OpenAPI snippet covering endpoints: - `GET /console/vex` with filters: `component_purl`, `advisory_id`, `tenant_id`, `status`, `justification`, `page`, `page_size`, `sort` (stable ordering by `(tenant_id, component_purl, advisory_id, status, updated_at)`). - `GET /console/vex/{advisory_id}` returning grouped statements, precedence trace pointer, provenance links (DSSE hash + linkset id), and tenant scoping. - Response envelope: standard console error schema once WEB-OAS-61-002 is frozen; until then use draft shape with `error`, `message`, `trace_id`. - Determinism: results ordered by `(tenant_id, advisory_id, component_purl, version_range)`; pagination stable under new data. - Counters: return aggregate status counters `{status -> count}` in the response to power delta chips without extra queries. - Caching: allow short-lived (≤30s) in-memory cache keyed by tenant+filters for Console views; include `hasMore`+`cursor` to keep pagination stable. ## Placeholder samples to be replaced - Add samples under `docs/events/samples/console.vex@draft.json` once view spec is provided. ## Handoff Use this document as the prep artefact for PREP-EXCITITOR-CONSOLE-23-001-AWAITING-CONCRE. Update once LNM view spec and SSE envelope land; then freeze the OpenAPI excerpt and move the sprint task to DONE. (Initial implementation now live with caching + counters; SSE still pending.)