Data Dictionary API — Help & references

↗ Open the Console

The API is the self-describing engine: everything below — docs, auth, discovery metadata, and the agent skills — lives on this same origin. This page is plain HTML with every link inline, readable in a single request. Paths shown in prose are relative to this API's base URL (the address of this page, without the trailing /help). Everything lives under a tenant: /v1/tenants/<tenant>/…. A <version> is working (the mutable head) or a snapshot label.

Loading data — how it should work

Agents & automation — load in one request, straight to the API:

POST /v1/tenants/<tenant>/models/<model>/versions/working/ingest/bundle

multipart body = manifest.json + the structure CSVs, with Authorization: Bearer <token> (see the auth guide below). The API loads it atomically into the working line — no separate upload step. A JSON bundle can be posted to …/ingest.

People use the Console's Load from store instead: get a one-time upload link, drop the bundle, then load it (curation — this replaced emailing zips). That landing zone is for the human flow and for very large / remote estates; agents don't need it.

Designing data models — conceptual & logical (DAMA)

Model top-down. Conceptual = business concepts + named relationships (M:N allowed). Logical = normalized entities with domain-typed attributes, keys, and cardinality-bearing relationships (resolve M:N into an associative entity). Physical = tables / columns / foreign keys. A foreign key is the physical realization of a logical relationship — the vertical thread is Concept → LogicalEntity → Table.

Author — address everything by natural key; write to the working line (snapshots are immutable):

PUT /v1/tenants/<t>/models/<m>/versions/working/artifacts/<key> · POST …/ingest (bulk)
POST …/relationships · POST …/keys · POST …/realizations

Delete is RESTRICT by default (refused with DD030 + the dependent list); pass ?on_delete=cascade to remove the closure. Snapshots are sealed — writes to a snapshot label are refused (DD010).

Explore:

GET …/artifacts?top_level=true & ?parent=<key> · …/artifacts/<key>/relationships · /lineage · /usage

Relationships use Barker per-end cardinality (one|many) + optionality (mandatory|optional); layer and kind are inferred from the two endpoints. Full agent skill — DAMA framing, exact request bodies, a Barker cheat-sheet, and an end-to-end worked example — is served at /skills/data-modeling/SKILL.md (see “Agent skills” below).

API documentation

Authentication & discovery

Service

Getting a token

Agents fetch a token headlessly via OAuth2 client_credentials (a plain HTTPS POST); humans get one through the Console (MSAL) or the CLI. The exact flows, endpoints, and scope are in the auth guide above.

Served by the Data Dictionary API. The web Console is one client of this API; it links here for help rather than hosting its own copy.