v2

latestOpenAPI 3.1.02026-08-0382170235.8 KB
knowledge-gaps
knowledge-gaps

Record a knowledge gap

Record that the brain could not confidently answer a question against this POT. Idempotent on idempotency_key within the workspace — a repeated create with the same key returns the existing gap instead of a duplicate. The integrator decides when to create a gap (e.g. when a synthesis response has is_knowledge_gap=true).

post/pots/{pot_id}/knowledge-gaps

Path parameters

pot_idstring required

POT identifier (UUID or slug)

POT identifier (UUID or slug)

Request body

query_textstring required

The original question the brain could not confidently answer.

requester_idstring required

Opaque integrator id of the asker, so it can be re-answered on resolve.

domainstring required

Routing key — typically the fact classification domain. The integrator routes on this; core does not interpret it.

trigger'low_confidence' | 'no_coverage' | 'manual'

Why the gap fired (low_confidence | no_coverage | manual).

trigger_scorenumber nullable

The gap_signal value that fired the gap, if any (for later threshold tuning).

idempotency_keystring nullable

Optional dedup key. Repeated create calls with the same key + workspace return the existing gap instead of creating a duplicate.

Response

Successful Response

gap_idstring uuid

UUIDv7 — chronologically sortable.

workspace_idstring uuid required

Owning workspace; multi-tenant isolation key.

pot_idstring uuid required

POT the question was asked against.

query_textstring required
requester_idstring required
domainstring required
trigger'low_confidence' | 'no_coverage' | 'manual'
trigger_scorenumber nullable
state'open' | 'routed' | 'ingested' | 'resolved' | 'expired' | 'dismissed' | 'duplicate' | 'reopened'
assigned_tostring nullable

Opaque id of the expert/DRI the integrator routed to. Core stores, never decides, this value.

resolved_cluster_idstring uuid nullable

Forward-compat hook: the Knowledge Cluster (nebula) a filled gap will seed in Phase 2. Always null in the pilot; the Cluster table is not built yet.

capsule_idstring uuid nullable

Capsule whose coverage evaluation created this gap (Capsules PR1b). Null for gaps born on the /query path or created manually. Marks the ORIGIN only — the trigger vocabulary is unchanged (no GapTrigger extension), so existing integrator payloads keep validating.

idempotency_keystring nullable
timeout_atstring date-time nullable

Optional SLA deadline. When elapsed, the integrator transitions the gap to 'expired' (core does not auto-expire — no scheduler in scope).

created_atstring date-time
updated_atstring date-time
resolved_atstring date-time nullable