Skip to main content

Registry

The registry is the source of truth for all definitions — Concepts, Primitives, Conditions, and Features. Definitions are immutable once registered. Updates require a new version. The registry enforces uniqueness at (id, version).


Register Definition

POST /registry/definitions

Stores a validated definition in the registry under its namespace. Returns HTTP 409 if the same id+version already exists. Definitions are immutable — never mutate an existing version.

Request — RegisterRequest

FieldTypeRequiredDescription
definitiondictRequiredA Concept, Primitive, or Condition. Should have passed /definitions/validate.
namespacestrRequired'personal' | 'team' | 'org' | 'global'. Must match the id prefix.
metadatadictOptional{ description, tags, owner }.

Response Codes

StatusDescription
200DefinitionResponse: { id, version, status, concept_hash, semantic_hash }.
400Validation error.
401Unauthorised.
409Already exists at this id + version. Create a new version instead.

List Definitions

GET /registry/definitions

Returns a paginated list of definitions. Filter by type, namespace, or tags. For semantic free-text search, use GET /registry/search.

Query Parameters

FieldTypeRequiredDescription
typestrOptional'concept' | 'primitive' | 'condition' | 'feature'.
namespacestrOptional'personal' | 'team' | 'org' | 'global'.
tagsstrOptionalComma-separated tag filter.
limitintOptionalDefault 20, max 100.
cursorstrOptionalPagination cursor.

Response Codes

StatusDescription
200Paginated list with items[], has_more, next_cursor, total_count.
401Unauthorised.

Search Definitions

GET /registry/search

Free-text and structured semantic search across registry definitions. Searches description, meaning, subject, intent, tags, and semantic_type fields. Results ranked by relevance.

Query Parameters

FieldTypeRequiredDescription
querystrOptionalFree-text search.
typestrOptional'concept' | 'primitive' | 'condition' | 'feature'.
namespacestrOptional'personal' | 'team' | 'org' | 'global'.
limitintOptionalDefault 20, max 100.
cursorstrOptionalPagination cursor.

Response Codes

StatusDescription
200Paginated SearchResult.
401Unauthorised.

List Definition Versions

GET /registry/definitions/{id}/versions

Returns version history for a definition, newest-first. Includes deprecation status per version. Use to discover the current version before constructing execute or evaluate calls.

Response Codes

StatusDescription
200VersionListResult: { id, versions: VersionSummary[] }.
401Unauthorised.
404Not found.

Get Definition Lineage

GET /registry/definitions/{id}/lineage

Returns the full dependency graph of a definition — both what it depends on (dependencies) and what depends on it (dependents). Use for impact analysis before modifying shared definitions.

Query Parameters

FieldTypeRequiredDescription
idstrRequired (path)Fully qualified definition id.
versionstrRequired (query)Explicit version.

Response Codes

StatusDescription
200LineageResult: { id, version, dependencies[], dependents[] }.
401Unauthorised.
404Not found.

Semantic Diff

GET /registry/definitions/{id}/semantic-diff

Returns a meaning-level diff between two versions. Equivalence status drives governance decisions: equivalent = safe to promote; compatible = review recommended; breaking = governance required; unknown = treat as breaking.

Query Parameters

FieldTypeRequiredDescription
idstrRequired (path)Fully qualified definition id.
version_fromstrRequired (query)Baseline version.
version_tostrRequired (query)Target version.

Response Codes

StatusDescription
200SemanticDiffResult: { equivalence_status, changes, affected_downstream, summary }.
401Unauthorised.
404One or both versions not found.

Deprecate Definition

POST /registry/definitions/{id}/deprecate

Marks a version as deprecated. Existing references continue to work. New registrations referencing this version receive a warning. Reversible by an admin.

Request Body

FieldTypeRequiredDescription
versionstrRequiredVersion to deprecate.
replacement_versionstrOptionalRecommended replacement.
reasonstrOptionalHuman-readable reason.

Response Codes

StatusDescription
200Deprecation confirmed.
401Unauthorised.
404Not found.

Promote Definition

POST /registry/definitions/{id}/promote

Promotes a definition to a higher namespace. Path: personal → team → org → global. Promoting to global requires elevated API key permissions. Run semantic-diff first to check for breaking changes.

Request Body

FieldTypeRequiredDescription
versionstrRequiredVersion to promote.
from_namespacestrRequired'personal' | 'team' | 'org'. Source namespace.
to_namespacestrRequired'team' | 'org' | 'global'. Target namespace.

Response Codes

StatusDescription
200Promotion confirmed.
401Unauthorised.
403Insufficient permissions for target namespace.
404Not found.

Register Feature

POST /registry/features

Registers a Feature as a first-class entity. The compiler computes meaning_hash on registration and scans for duplicates. on_duplicate controls behaviour on collision: 'warn' (default) registers and lists duplicates, 'reject' returns HTTP 409, 'merge' returns the existing feature with the same meaning_hash.

Response Codes

StatusDescription
200Feature registered, or existing feature returned on 'merge'.
400Validation error.
401Unauthorised.
409Duplicate found and on_duplicate='reject'.

Get Feature Usages

GET /registry/features/{id}/usages

Returns every Concept that references this feature. Essential for impact analysis before deprecating or modifying a shared feature.

Response Codes

StatusDescription
200{ feature_id, feature_version, used_by: [{ concept_id, concept_version, layer }] }.
401Unauthorised.
404Feature not found.