Declare a namespace and its fields before recording into them
Declares what your organization wants to know about Companies: a namespace with typed fields, each carrying its unit, dimension, freshness, and meaning. Recording into a field that is not declared is refused, so this call comes first. The same call amends: a field you already declared is left alone, a new one is added, and a description or freshness you changed your mind about is updated — which makes it safe to send your whole catalog on every boot. What it never does is remove a field by omission, or change what a field *is* once a Fact references it: name, type, unit, dimension, and promotion are then fixed and the fix for a mistake is a new field. Caps are 1000 namespaces and 50 fields each. Free.
Declares what your organization wants to know about Companies: a namespace with typed fields, each carrying its unit, dimension, freshness, and meaning. Recording into a field that is not declared is refused, so this call comes first. The same call amends: a field you already declared is left alone, a new one is added, and a description or freshness you changed your mind about is updated — which makes it safe to send your whole catalog on every boot. What it never does is remove a field by omission, or change what a field is once a Fact references it: name, type, unit, dimension, and promotion are then fixed and the fix for a mistake is a new field. Caps are 1000 namespaces and 50 fields each.
Free.
Authorization
bearerAuth In: header
Header Parameters
Required for writes. Reusing this key with the same input replays the original response.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/namespaces" \ -H "Idempotency-Key: string" \ -H "Content-Type: application/json" \ -d '{ "name": "icp", "description": "How well a company fits our ideal customer profile.", "fields": [ { "name": "score", "type": "number", "unit": "points", "dimension": "fit", "freshnessDays": 90, "description": "0-10; how well the company fits, judged from its site." } ] }'{ "namespace": { "name": "icp", "owner": "organization", "description": "How well a company fits our ideal customer profile.", "fields": [ { "name": "score", "ref": "icp.score", "type": "number", "unit": "points", "dimension": "fit", "freshnessDays": 90, "description": "0-10; how well the company fits, judged from its site.", "promotes": null, "frozen": false, "createdAt": "2026-09-03T00:00:00.000Z", "updatedAt": "2026-09-03T00:00:00.000Z" } ], "createdAt": "2026-09-03T00:00:00.000Z", "updatedAt": "2026-09-03T00:00:00.000Z" }, "added": [ "score" ], "updated": []}List per-item enrichment outcomes GET
Lists child enrichments in stable target order with lifecycle and outcome as separate fields. Outputs are opt-in via `include=output`, and `ref` echoes the caller's per-target correlation key. Free.
Delete a declaration while nothing stands on it DELETE
Deletes one field with `?field=`, or the whole namespace without it. A field a Fact references is refused naming it: the declaration is what makes a recorded value readable, so it outlives nothing. Removing a namespace's last field removes the namespace. A native namespace is never deletable. Free.