Read your Catalog
Returns every namespace this organization can record into: its own declarations, and the native ones the Spore tools own. A field marked `frozen` has Facts standing on it, so its type, unit, dimension, and promotion are fixed. The Catalog is private to the organization and never shared-cached. Free.
Returns every namespace this organization can record into: its own declarations, and the native ones the Spore tools own. A field marked frozen has Facts standing on it, so its type, unit, dimension, and promotion are fixed. The Catalog is private to the organization and never shared-cached.
Free.
Authorization
bearerAuth In: header
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/namespaces"{ "namespaces": [ { "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" } ]}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.
Record what you observed about a Company or concluded about a Segment POST
Appends up to 200 observations about one subject: a Company with `companyId`, or a Segment with `segmentId` when the conclusion is about the set rather than about any one member. Exactly one of the two — a Fact about both is a caller that has not decided what it observed. Every field must be declared first and every value is validated against its declared type, so a number field cannot receive "about 5M". A field you looked at and found nothing for is recorded with `absent: true` — knowledge, not a gap, and coverage reports it as checked rather than missing. Facts are appended and never edited: the newest observation becomes the current value, an older observation arriving late does not displace a newer one, and `pin: true` fixes one observation as current until `pin: false` releases it. Set `observedAt` when you learned something about an earlier moment. A conclusion about a Segment cites the Jobs it was reduced from with `{ kind: "job", jobId }` evidence. Native namespaces are refused: a Fact in one is a Spore run's receipt. Free.