Scanner Endpoint Registration Matrix

Last updated: 2026-07-17 (Sprint 20260714_002, tasks SVC-4/SVC-6).

This file is the Scanner WebService source-of-truth for endpoint registration intent and authorization posture.

Active endpoint maps (registered in Program.cs)

Map methodBase pathAuthorization postureNotes
MapHealthEndpoints/healthz, /readyzscanner.scans.readHealth and readiness are authenticated.
MapObservabilityEndpoints/metricsAllowAnonymousPrometheus scrape path is explicitly anonymous.
MapOfflineKitEndpoints/offline-kitMixed explicit policiesOffline import/status/manifest/validate policies are explicit per route.
MapScanEndpoints/api/v1/scansExplicit policies per routeIncludes nested scan maps (callgraphs, sbom, reachability, export, evidence, approval, manifest, github-code-scanning).
MapSourcesEndpoints/api/v1/sourcesscanner.sources.read/write/adminTenant-aware source CRUD and source-run operations (sbom_source_runs reads/writes are tenant-filtered).
MapWebhookEndpoints/api/v1/webhooksAllowAnonymousExternal provider ingress; tenant-scoped source resolution for name routes.
MapSbomUploadEndpoints/api/v1/sbomExplicit policies per routeIncludes SBOM upload and hot lookup maps.
MapReachabilityDriftRootEndpoints/api/v1/reachabilityscanner.scans.read/writeRoot drift query/compute routes.
MapDeltaCompareEndpoints/api/v1/deltaExplicit policies per routeDelta compare operations.
MapSmartDiffEndpoints/api/v1/smart-diffExplicit policies per routeSmart diff + VEX candidate workflows.
MapBaselineEndpoints/api/v1/baselinesscanner.scans.readReserved recommendation/rationale route shapes fail closed with deterministic HTTP 501 scanner_baseline_recommendations_unavailable; the former synthesized response is unwired until a persisted tenant truth source exists.
MapActionablesEndpoints/api/v1/actionablesExplicit policies per routeActionable findings operations.
MapCounterfactualEndpoints/api/v1/counterfactualsExplicit policies per routeCounterfactual analysis operations.
MapProofSpineEndpoints/api/v1/spinesExplicit policies per routeProof spine APIs.
MapReplayEndpoints/api/v1/replayExplicit policies per routeReplay command and verification APIs.
MapScoreReplayEndpoints (feature-gated)/api/v1/replay/scoreExplicit policies per routeEnabled only when scanner:scoreReplay:enabled=true.
MapWitnessEndpoints/api/v1/witnessesExplicit policies per routeWitness management APIs.
MapEpssEndpoints/api/v1/epssExplicit policies per routeEPSS ingestion/query APIs.
MapTriageStatusEndpoints/api/v1/triagescanner.triage.read/writeTriage status workflows.
MapTriageInboxEndpoints/api/v1/triagescanner.triage.read/writeGET /inbox requires artifactDigest; optional filter, sortBy, similarityThreshold, and descending are parsed explicitly. Each path exposes canonical bare UUIDs in findingIds[].
MapBatchTriageEndpoints/api/v1/triagescanner.triage.read/writeCluster statistics are live; batch action responses are non-persistent and unsigned until the triage decision/snapshot store is composed.
MapProofBundleEndpoints/api/v1/triagescanner.triage.writeReserved proof-bundle generation shape; IProofBundleGenerator has no implementation/DI registration and the contract is not tenant-bound.
MapUnknownsEndpoints/api/v1/unknownsscanner.scans.readTenant-scoped unknown listing/detail/evidence/history/stats/bands routes.
MapSecretDetectionSettingsEndpoints/api/v1/secrets/configscanner.secret-settings.* / scanner.secret-exceptions.*Secret detection config APIs with tenant-scoped exception get/update/delete lookups.
MapScannerTenantSettingsEndpoints/api/v1/scanner/settingsGET scanner.operations.read (scanner:read or scanner.admin); PUT scanner.operations.write (scanner:write or scanner.admin)Tenant-scoped GET/PUT of disabled signed-analyzer IDs; strong ETag compare-and-swap, audit event, and Worker consumption.
MapScannerAnalyzerEndpoints/api/v1/scanner/analyzersscanner.operations.read (scanner:read or scanner.admin)Worker probe-report truth plus tenant enablement; health is healthy, unhealthy, or evidence-absent unknown.
MapScannerPerformanceEndpoints/api/v1/scanner/performancescanner.operations.read (scanner:read or scanner.admin)Tenant-scoped pending depth and non-replay duration percentiles over durable Scanner records; unavailable metrics are omitted with reasons.
MapPolicyEndpoints (feature-gated)/api/v1/policyExplicit policies per routeEnabled only when policy preview feature flag is true.
MapReportEndpoints/api/v1/reportsscanner.reportsReport generation and retrieval routes.
MapRuntimeEndpoints/api/v1/runtimescanner.runtime.ingest and scan policiesRuntime ingest/reconcile APIs.
MapSliceEndpoints/api/slicesExplicit policies per routeReachability slice query/replay APIs.

Webhook tenant contract (name routes)

Triage tenant contract

Unknowns tenant contract

Reachability + SmartDiff tenant contract (SCAN-TEN-11)

Source-runs + secret-exception tenant contract (SCAN-TEN-13)

Deferred endpoint maps (not registered by design)

Map methodCurrent stateReason for deferralActivation prerequisite
MapValidationEndpointsDeferredValidation endpoint stack is not wired in Program.cs (validator service graph and option bindings are not part of default webservice startup contract).Add explicit validation DI and contract docs, then register in Program.cs.
MapReachabilityEvidenceEndpointsDeferredLegacy standalone /api/reachability surface is not part of current /api/v1/scans/triage scanner API contract.Contract decision to promote or remove this surface.
MapReachabilityStackEndpointsDeferredStack endpoints depend on optional repository path and are not part of the current public API registration set.Contract decision and stable backing repository implementation.
MapFidelityEndpointsDeferredFidelity analyzer endpoints are experimental and require explicit analyzer service contract decisions before exposure.Product sign-off and DI contract hardening.