The API reference

Every surface the Meridian server mounts, extracted from the router itself, with per-endpoint status from the repo's honest docs.

  • Authentication and authorization are OFF by default (auth.mode = disabled): anyone who can reach the port owns the catalog, all operations audit as anonymous, and authorization is bypassed entirely. Dev posture only; oidc mode is deny-by-default RBAC.
  • Pre-alpha, unannounced, no public releases yet; 'Meridian' is a working name and may change before the first public release.
  • Status source of truth: docs/status.md (pillar-level) and docs/api-status.md (endpoint-level, wins over any other document on endpoint behavior); where the two disagree, the more conservative statement wins.
  • The endpoint matrix tracks the upstream Iceberg OpenAPI definition on main as of July 2026, which includes endpoints newer than any released spec version (scan planning, functions, unregister, register-view).
  • The IRC surface is mounted at both /iceberg/v1/... and bare /v1/...; the {prefix} is a warehouse name created through the non-IRC management API (POST /api/v2/warehouses).
  • Error mapping diverges deliberately: 401 is NotAuthorizedException, 403 denials are ForbiddenException (divergence f).
  • Scan planning can be disabled with planning.enabled = false; those endpoints then answer 406 and are not advertised in GET /v1/config.
  • Credential vending and remote signing are automated-tested against MinIO only; the real-AWS path was run manually by the maintainer and is not yet in the automated suite.
  • purgeRequested=true does not delete data files yet: the maintenance worker that consumes purge events does not exist, so only catalog entry and metadata files are removed.
  • All /api/v2 management surfaces (warehouses, principals, RBAC, events, federation, governance, lineage, quality) require management access (admin role or any MANAGE_WAREHOUSE grant) in oidc mode; the workbench is the exception, open to any authenticated principal.
  • GET /v1/config advertises the exact implemented endpoint set in its endpoints field, so spec-aware clients need not guess.
mounts

base urls

One server, port 8181 by default. Six mounts:

basewhat it serves
/iceberg/v1Iceberg REST catalog, spec-style mount. Clients configured with uri http://localhost:8181/iceberg (as in the quickstart) append /v1/... and hit this nest. Identical router to /v1.
/v1Bare alias nest of the exact same Iceberg REST catalog router, for clients whose uri is the server root.
/api/v2Management API: warehouses, RBAC, governance, quality, lineage, semantics, agents, branching, federation, sharing, events, audit, workbench, AI assets.
/share/{token}Recipient-facing read-only Iceberg REST catalog per share, authenticated by the opaque token in the path, exempt from OIDC middleware.
/mcpMCP agent gateway, single Streamable-HTTP endpoint. POST carries JSON-RPC; GET and DELETE answer 405 (stateless sessions, no server stream).
/Root mount for health probes only: /healthz and /readyz.
/v1

iceberg rest catalog

The full IRC surface, served identically at /v1 and /iceberg/v1. {prefix} is a warehouse name; warehouse@branch mounts a catalog branch. Per-endpoint status, straight from api-status.md:

All paths in the Iceberg REST groups are served at both /v1 and /iceberg/v1. {prefix} is a warehouse name; a warehouse@branch prefix addresses a branch. Static /v1/config wins over the {prefix} capture.

Signing follows ADR 005; planning follows docs/design/scan-planning.md. Governance enforcement applies on the scan-plan path.

endpointmethod and pathstatusnotes
getConfigGET /v1/configimplementedwarehouse param resolves registered warehouse into prefix override (unknown 404); returns implemented endpoints list and idempotency-key-lifetime PT24H.
getTokenPOST /v1/oauth/tokensnot yetNot planned: spec deprecates it; Meridian validates external OIDC tokens and never issues its own.
listNamespacesGET /v1/{prefix}/namespacesimplementedparent supported, missing parent 404; pageSize alone engages pagination (divergence a).
createNamespacePOST /v1/{prefix}/namespacesimplementedMulti-level namespaces and initial properties.
loadNamespaceMetadataGET /v1/{prefix}/namespaces/{ns}implementedNo caveats recorded.
namespaceExistsHEAD /v1/{prefix}/namespaces/{ns}implemented204 / 404.
dropNamespaceDELETE /v1/{prefix}/namespaces/{ns}implementedOnly empty namespaces (no child namespaces, tables, or views); otherwise 409 NamespaceNotEmptyError.
updatePropertiesPOST /v1/{prefix}/namespaces/{ns}/propertiesimplementedAtomic set plus remove; a key in both updates and removals returns 422.
listTablesGET .../namespaces/{ns}/tablesimplementedpageSize alone engages pagination (divergence a).
createTablePOST .../namespaces/{ns}/tablesimplementedstage-create supported; server assigns fresh field ids; delegation vends credentials or signing on opted-in warehouses; table/view collisions 409.
loadTableGET .../tables/{table}implementedsnapshots=all or refs; strong ETag, If-None-Match 304; delegation vends RBAC-scoped credentials or advertises signing on opted-in warehouses.
updateTable (commit)POST .../tables/{table}implementedRequirements checked; unknown update/requirement types 400; CAS retry, 409 CommitFailedException after 3 lost races; Idempotency-Key honored.
dropTableDELETE .../tables/{table}implementedpurgeRequested=true deletes catalog entry and metadata now; data files await the unbuilt maintenance worker (divergence e).
tableExistsHEAD .../tables/{table}implemented204 / 404.
registerTablePOST .../namespaces/{ns}/registerpartialAdopts existing metadata file. Missing: overwrite true rejected 400; adopting a live table's UUID rejected 409 (divergence c).
renameTablePOST /v1/{prefix}/tables/renameimplementedRename or move across namespaces within one warehouse; 204.
reportMetricsPOST .../tables/{table}/metricsimplementedValidated as a JSON object, stored verbatim for the planned observability layer; 204.
commitTransactionPOST /v1/{prefix}/transactions/commitpartialAtomic multi-table commit, every violation reported; Idempotency-Key honored. Missing: assert-create inside a transaction rejected with 400.
unregisterTablePOST .../tables/{table}/unregisternot yetReturns 404/405.
loadCredentialsGET .../tables/{table}/credentialsimplementedRequires warehouse vending opt-in (sts or static), otherwise 400; RBAC decides read versus read-write; every vend audited.
signRequestPOST .../tables/{table}/signimplementedS3 only, others 400; requires vending opt-in plus static keys; enforces table prefix and RBAC; denies audited too.
planTableScanPOST .../tables/{table}/planpartialABAC governance enforced. Missing: incremental scans 406; min-rows-requested ignored; no storage-credentials; Idempotency-Key accepted but not deduplicated.
fetchPlanningResultGET .../tables/{table}/plan/{plan-id}implementedSpec's discriminated result; completed sync plans re-plan pinned to snapshot; async plans return plan-tasks page tokens.
cancelPlanningDELETE .../tables/{table}/plan/{plan-id}implemented204; drops persisted pages, flips plans to cancelled, idempotent on terminal states.
fetchScanTasksPOST .../tables/{table}/tasksimplementedOne persisted page per plan-task token, repeatable; unknown or expired tokens 404 NoSuchPlanTaskException.
listViewsGET .../namespaces/{ns}/viewsimplementedRBAC LIST_TABLES on the namespace; pagination divergence (a).
createViewPOST .../namespaces/{ns}/viewsimplemented409 when name exists as view or table; fresh 1-based field ids assigned server-side; one representation per dialect.
loadViewGET .../views/{view}implementedNo ETag (spec limits it to tables); referenced-by accepted and ignored; dialect transpilation via sidecar, outage degrades gracefully.
replaceViewPOST .../views/{view}implementedMissing: Idempotency-Key not honored; dialect-drop protection (replace.drop-dialect.allowed) not enforced yet; provisional field ids like createView.
dropViewDELETE .../views/{view}implemented204; spec defines no view purge, so metadata files always remain in object storage.
viewExistsHEAD .../views/{view}implementedRBAC READ on the view; 204 / 404.
renameViewPOST /v1/{prefix}/views/renameimplementedNeeds WRITE on source view plus CREATE_VIEW on destination namespace; 409 if destination exists as view or table.
registerViewPOST .../namespaces/{ns}/register-viewnot yetReturns 404/405.
listFunctionsGET .../namespaces/{ns}/functionsnot yetReturns 404/405.
loadFunctionGET .../namespaces/{ns}/functions/{function}not yetReturns 404/405.
/api/v2

management api

Everything around the catalog: RBAC, governance, quality, lineage, semantics, agents, branching, federation, sharing, events, audit, workbench. Requires management access in oidc mode.

warehouses, principals, roles, grants

methodpathwhat it does
GET/api/v2/warehousesList warehouses.
POST/api/v2/warehousesCreate a warehouse.
DELETE/api/v2/warehouses/{name}Delete a warehouse.
GET/api/v2/principalsList principals.
GET/api/v2/rolesList roles.
POST/api/v2/rolesCreate a role.
DELETE/api/v2/roles/{name}Delete a role.
POST/api/v2/roles/{name}/bindingsBind a principal to a role.
DELETE/api/v2/roles/{name}/bindings/{principal_id}Remove a role binding.
GET/api/v2/grantsList grants.
POST/api/v2/grantsCreate a grant.
DELETE/api/v2/grants/{id}Delete a grant.
GET/api/v2/permissionsGet the caller's effective permissions.

semantics: transpile, metrics, glossary, products

methodpathwhat it does
POST/api/v2/sql/transpileTranspile SQL between dialects via the sidecar.
GET/api/v2/metricsList metric definitions.
POST/api/v2/metricsCreate a metric definition.
GET/api/v2/metrics/{id}Get a metric.
PATCH/api/v2/metrics/{id}Update a metric.
DELETE/api/v2/metrics/{id}Delete a metric.
GET/api/v2/metrics/{id}/compileCompile a metric to dialect SQL.
GET/api/v2/glossary/termsList glossary terms.
POST/api/v2/glossary/termsCreate a glossary term.
GET/api/v2/glossary/terms/{id}Get a glossary term.
PATCH/api/v2/glossary/terms/{id}Update a glossary term.
DELETE/api/v2/glossary/terms/{id}Delete a glossary term.
GET/api/v2/glossary/terms/{id}/linksList a term's asset links.
POST/api/v2/glossary/terms/{id}/linksLink a term to an asset.
DELETE/api/v2/glossary/links/{id}Remove a term link.
GET/api/v2/productsList data products.
POST/api/v2/productsCreate a data product.
GET/api/v2/products/{id}Get a data product.
PATCH/api/v2/products/{id}Update a data product.
DELETE/api/v2/products/{id}Delete a data product.
GET/api/v2/products/{id}/membersList product members.
POST/api/v2/products/{id}/membersAdd a product member.
DELETE/api/v2/products/members/{id}Remove a product member.
GET/api/v2/products/{id}/statusGet product status.

data sharing and marketplace management

methodpathwhat it does
GET/api/v2/sharesList shares.
POST/api/v2/sharesCreate a share.
GET/api/v2/shares/{id}Get a share.
DELETE/api/v2/shares/{id}Delete a share.
POST/api/v2/shares/{id}/revokeRevoke a share.
POST/api/v2/shares/{id}/grantsAdd an asset grant to a share.
DELETE/api/v2/shares/grants/{grant_id}Remove a share grant.
GET/api/v2/marketplace/productsList marketplace products.
GET/api/v2/marketplace/requestsList access requests.
POST/api/v2/marketplace/requestsRequest access to a product.
POST/api/v2/marketplace/requests/{id}/decideApprove or deny an access request.

events, webhooks, consumers

methodpathwhat it does
GET/api/v2/webhooksList webhooks.
POST/api/v2/webhooksCreate a webhook.
GET/api/v2/webhooks/{id}Get a webhook.
DELETE/api/v2/webhooks/{id}Delete a webhook.
GET/api/v2/webhooks/{id}/deliveriesList webhook deliveries.
GET/api/v2/eventsList catalog events.
GET/api/v2/events/consumersList durable consumers.
POST/api/v2/events/consumersCreate a durable consumer.
DELETE/api/v2/events/consumers/{name}Delete a consumer.
GET/api/v2/events/consumers/{name}/nextFetch the consumer's next events.
POST/api/v2/events/consumers/{name}/commitCommit the consumer's cursor.

audit and search

methodpathwhat it does
GET/api/v2/auditQuery the audit log.
GET/api/v2/audit/verifyVerify the audit hash chain.
GET/api/v2/searchSearch assets, visibility-filtered per caller.

maintenance and table health

methodpathwhat it does
GET/api/v2/maintenance/policiesList maintenance policies.
POST/api/v2/maintenance/policiesCreate a maintenance policy.
PUT/api/v2/maintenance/policiesUpdate a maintenance policy.
DELETE/api/v2/maintenance/policiesDelete a maintenance policy.
GET/api/v2/maintenance/jobsList maintenance jobs.
POST/api/v2/maintenance/jobsTrigger a maintenance job.
GET/api/v2/maintenance/jobs/{id}Get a maintenance job.
POST/api/v2/maintenance/jobs/{id}/cancelCancel a maintenance job.
GET/api/v2/maintenance/savingsList the savings ledger.
GET/api/v2/maintenance/savings/rollupGet aggregated savings.
GET/api/v2/warehouses/{name}/health-summaryFleet health summary for a warehouse.
GET/api/v2/warehouses/{warehouse}/namespaces/{namespace}/tables/{table}/healthCurrent table health.
GET/api/v2/warehouses/{warehouse}/namespaces/{namespace}/tables/{table}/health/historyTable health history.

federation: mirrors and sprawl

methodpathwhat it does
GET/api/v2/mirrorsList catalog mirrors.
POST/api/v2/mirrorsCreate a mirror.
GET/api/v2/mirrors/{name}Get a mirror.
PATCH/api/v2/mirrors/{name}Update a mirror.
DELETE/api/v2/mirrors/{name}Delete a mirror.
GET/api/v2/mirrors/{name}/syncGet mirror sync status.
POST/api/v2/mirrors/{name}/syncTrigger a mirror sync now.
GET/api/v2/federation/sprawlCross-catalog sprawl summary.

branches and catalog tags

Branch data access needs no extra routes: a branch is read and written through ordinary IRC table endpoints via the warehouse@branch prefix.

methodpathwhat it does
GET/api/v2/branchesList branches.
POST/api/v2/branchesCreate a branch.
POST/api/v2/branches/sweepSweep expired ephemeral branches.
GET/api/v2/branches/{name}Get a branch.
DELETE/api/v2/branches/{name}Delete a branch.
GET/api/v2/branches/{name}/diffDiff a branch against its base.
GET/api/v2/branches/{name}/gateEvaluate the branch merge gate.
POST/api/v2/branches/{name}/mergeMerge a branch.
GET/api/v2/tagsList catalog tags.
POST/api/v2/tagsCreate a catalog tag.
DELETE/api/v2/tags/{name}Delete a catalog tag.

governance: classification tags, policies, analytics

methodpathwhat it does
GET/api/v2/governance/tagsList classification tags.
POST/api/v2/governance/tagsCreate a classification tag.
DELETE/api/v2/governance/tags/{id}Delete a classification tag.
GET/api/v2/governance/tags/coverageClassification coverage report.
POST/api/v2/governance/tags/assignmentsAssign a tag to an asset.
DELETE/api/v2/governance/tags/assignments/{id}Remove a tag assignment.
POST/api/v2/governance/tags/assignments/{id}/approveApprove a tag assignment.
GET/api/v2/governance/policiesList governance policies.
POST/api/v2/governance/policiesCreate a governance policy.
POST/api/v2/governance/policies/dry-runDry-run a policy.
DELETE/api/v2/governance/policies/bindings/{binding_id}Unbind a policy.
GET/api/v2/governance/policies/{id}Get a policy.
PATCH/api/v2/governance/policies/{id}Update a policy.
DELETE/api/v2/governance/policies/{id}Delete a policy.
GET/api/v2/governance/policies/{id}/versionsList policy versions.
POST/api/v2/governance/policies/{id}/rollbackRoll a policy back to a version.
GET/api/v2/governance/policies/{id}/bindingsList policy bindings.
POST/api/v2/governance/policies/{id}/bindingsBind a policy.
GET/api/v2/governance/effective-policyEffective policy for a principal and asset.
GET/api/v2/governance/who-can-seeWho can see a given asset.
GET/api/v2/governance/driftPolicy drift report.
GET/api/v2/governance/evidenceGovernance evidence export.

lineage and impact

methodpathwhat it does
GET/api/v2/lineageUpstream and downstream lineage graph.
GET/api/v2/lineage/impactImpact and blast-radius query.
POST/api/v2/lineage/openlineageIngest OpenLineage events.

quality: contracts, monitors, incidents, status

methodpathwhat it does
GET/api/v2/quality/contractsList data contracts.
POST/api/v2/quality/contractsCreate a data contract.
GET/api/v2/quality/contracts/{id}Get a contract.
PATCH/api/v2/quality/contracts/{id}Update a contract.
DELETE/api/v2/quality/contracts/{id}Delete a contract.
GET/api/v2/quality/contracts/{id}/versionsList contract versions.
GET/api/v2/quality/tables/{warehouse}/{namespace}/{table}/contractsContracts applying to a table.
GET/api/v2/quality/violationsList contract violations.
POST/api/v2/quality/tables/{warehouse}/{namespace}/{table}/quarantine/{snapshot}/publishPublish a quarantined snapshot.
POST/api/v2/quality/tables/{warehouse}/{namespace}/{table}/quarantine/{snapshot}/discardDiscard a quarantined snapshot.
GET/api/v2/quality/monitorsList quality monitors.
POST/api/v2/quality/monitorsCreate a quality monitor.
GET/api/v2/quality/monitors/resultsList monitor results.
GET/api/v2/quality/monitors/{id}Get a monitor.
PATCH/api/v2/quality/monitors/{id}Update a monitor.
DELETE/api/v2/quality/monitors/{id}Delete a monitor.
GET/api/v2/quality/incidentsList quality incidents.
GET/api/v2/quality/incidents/{id}Get an incident.
POST/api/v2/quality/incidents/{id}/ackAcknowledge an incident.
POST/api/v2/quality/incidents/{id}/resolveResolve an incident.
GET/api/v2/quality/tables/{warehouse}/{namespace}/{table}/statusCurrent table quality status.
GET/api/v2/quality/tables/{warehouse}/{namespace}/{table}/status/historyTable quality status history.
GET/api/v2/quality/tables/{warehouse}/{namespace}/{table}/scoreTable quality score.

sql workbench

No catalog-as-code routes exist anywhere in the router.

methodpathwhat it does
POST/api/v2/workbench/queryRun a governed SQL query.
GET/api/v2/workbench/historyList query history.
GET/api/v2/workbench/savedList saved queries.
POST/api/v2/workbench/savedSave a query.
GET/api/v2/workbench/saved/{id}Get a saved query.
DELETE/api/v2/workbench/saved/{id}Delete a saved query.
POST/api/v2/workbench/snippetGenerate a notebook-handoff snippet.

ai assets, training runs, models, deletion campaigns

methodpathwhat it does
GET/api/v2/assetsList AI assets.
POST/api/v2/assetsCreate an asset: fileset, model, vector dataset.
GET/api/v2/assets/searchSearch assets.
GET/api/v2/assets/{id}Get an asset.
POST/api/v2/assets/{id}/credentialsVend fileset credentials.
POST/api/v2/training-runsCreate an immutable training run pin.
GET/api/v2/training-runs/{id}Get a training run.
GET/api/v2/models/{model}/provenanceModel provenance.
GET/api/v2/models/{model}/ai-act-summaryEU AI Act GPAI summary for a model.
GET/api/v2/deletion-campaignsList deletion campaigns.
POST/api/v2/deletion-campaignsCreate a deletion campaign.
POST/api/v2/deletion-campaigns/{id}/snapshotsAdd snapshots to a campaign.
GET/api/v2/deletion-campaigns/{id}/evidenceCampaign deletion evidence.
POST/api/v2/deletion-campaigns/{id}/expireMark a campaign snapshot expired.

per-area status notes

  • How the API is mounted IRC served at both /iceberg/v1 and bare /v1; the prefix is a warehouse name created via POST /api/v2/warehouses; config advertises the implemented endpoint set.
  • Documented divergences Seven lettered deliberate deviations: pageSize-only pagination, slashes allowed in names, live-UUID adoption refused, purge defers data deletion, auth off by default, shared table/view name space; (d) resolved.
  • Storage config passthrough Table and view loads forward non-secret warehouse storage options; credentials never forwarded (tested denylist); endpoint.external overrides the advertised endpoint for containerized engines.
  • Credential vending Per-table RBAC-scoped credentials via loadCredentials or the delegation header; warehouse opt-in (sts or static); GCS and Azure honest stubs; every vend audited; real AWS not in automated suite.
  • Remote signing Catalog signs client-built S3 requests with warehouse keys that never leave the server; vending opt-in plus static keys required; path and RBAC checked per request; allows and denies audited.
  • Idempotency keys Only updateTable and commitTransaction honor Idempotency-Key; SHA-256 fingerprint, same key with different fingerprint yields 422; only successes recorded, 24-hour retention; any 1-255 char ASCII key accepted.
  • ETags Strong ETags on createTable, registerTable, loadTable, and commits; If-None-Match yields 304; refs and all snapshot representations carry distinct tags; tags are opaque, do not parse them.
  • Authentication OIDC-native: validates external IdP bearer tokens, never issues tokens; default mode is disabled (everything open, anonymous); JWKS refreshed on key rotation; bootstrap_admin seeds the first administrator.
  • Authorization (RBAC) Deny-by-default in oidc mode; grants on warehouse, namespace, table, view with hierarchy inheritance; built-in admin and catalog_reader roles; gaps: grants survive securable drops, decisions uncached.
  • Authorization: Management API and CLI Roles, bindings, grants, and effective-permissions endpoints under /api/v2; all require management access (admin binding or any MANAGE_WAREHOUSE grant); every mutation audited; first admin bootstrapped from config.
  • Outside the IRC spec (warehouse management) Warehouse CRUD, principal listing, RBAC, and federation APIs under /api/v2; behind the same authentication middleware; all require management access in oidc mode.
  • Events (/api/v2/events, /api/v2/webhooks) CloudEvents 1.0 over a transactional outbox: keyset-paginated feed, durable consumers with at-least-once delivery, HMAC-SHA256-signed webhooks with retries and dead-letter visibility; management access required.
  • Search (GET /api/v2/search) Postgres full-text search over tables, views, namespaces including column names and docs; results filtered to caller visibility inside the query; view columns not indexed yet; no semantic search.
  • Federation: mirrors + sprawl (/api/v2/mirrors, /api/v2/federation/sprawl) Register external Iceberg REST or Glue catalogs as read-only mirrors with incremental sync; writes to foreign tables rejected 409; sprawl summary reports duplicates, staleness, ownership gaps; management-gated.
  • Governance: tags, policies, enforcement (/api/v2/governance/...) Classification tags including column-level, versioned Cedar-validated policies (row_filter, column_mask, abac), bindings to tags or securables, dry-run, effective-policy, drift, evidence pack; every mutation audited; management-gated.
  • Lineage & impact (/api/v2/lineage, /api/v2/lineage/openlineage) Table-level lineage with a no-fabrication guarantee: commit-declared inputs and OpenLineage events only; graph and impact APIs with downstream blast radius; CI gate CLI; management-gated.
  • Quality: contracts & the circuit breaker (/api/v2/quality/...) Versioned table or namespace contracts enforced by a synchronous pre-commit hook: warn, quarantine (audit branch), or block; eval errors fail closed for block/quarantine; SQL assertion execution not yet.
  • Quality: zero-scan monitors, incidents & trust score (/api/v2/quality/...) Metadata-only monitors (freshness, volume, schema change, file size, snapshot debt, commit failure) open deduplicated incidents with blast radius; per-table traffic light and 0-100 trust score; management-gated.
  • Agent gateway: governed query tools (/mcp) MCP query tools run on the built-in DataFusion executor with RBAC and ABAC; masked columns dropped; cost budget checked before I/O; every call audited on a tamper-evident chain.
  • Workbench (/api/v2/workbench) Governed SELECT endpoint for humans on the shared executor; masks are value-preserving; history, saved queries, notebook snippets without embedded secrets; small scans only; any authenticated principal.
  • AI Asset Governance (/api/v2/assets, /api/v2/training-runs, /api/v2/models, /api/v2/deletion-campaigns) Filesets, models, vector datasets as grant securables with credential vending; immutable training-run snapshot pinning; EU AI Act summary drafts; GDPR deletion campaigns; model-to-agent leg not modelled.
  • Sharing & marketplace (/api/v2/shares, /api/v2/marketplace, /share/{token}) Read-only cross-org shares on token-authenticated per-share IRC endpoints with vended credentials; masking prevented, row filters surfaced not prevented; internal certified-product marketplace with access-request flow.
  • Branching & Data CI/CD (/api/v2/branches, /api/v2/tags, warehouse@branch) Catalog-level branches mountable as warehouse@branch IRC catalogs, zero-copy until divergence; merge has table-level conflict detection and a contract gate; immutable tags; circuit breaker skips branch commits.
/share

share recipient endpoint

Read-only IRC per share, addressed by opaque token, exempt from OIDC. Routed write verbs return 403; unrouted write paths fall to 404 or 405.

methodpathwhat it does
GET/share/{token}/v1/configCatalog config for a share recipient.
GET/share/{token}/termsFetch share terms.
POST/share/{token}/terms/acceptAccept share terms.
GET/share/{token}/v1/namespacesList shared namespaces.
POST/share/{token}/v1/namespacesWrite rejected with 403.
GET/share/{token}/v1/namespaces/{namespace}/tablesList shared tables.
POST/share/{token}/v1/namespaces/{namespace}/tablesWrite rejected with 403.
GET/share/{token}/v1/namespaces/{namespace}/tables/{table}Load shared table with column mask applied.
POST/share/{token}/v1/namespaces/{namespace}/tables/{table}Write rejected with 403.
DELETE/share/{token}/v1/namespaces/{namespace}/tables/{table}Write rejected with 403.
/mcp

mcp agent gateway

POST /mcp

MCP agent gateway, single Streamable-HTTP endpoint. POST carries JSON-RPC; GET and DELETE answer 405 (stateless sessions, no server stream).

Tool-level behavior (governed context, governed SQL, budgets, kill switch, audit) is specified in docs/design/agent-gateway.md.

ops

health

methodpathwhat it does
GET/healthzLiveness probe.
GET/readyzReadiness probe.
rtfm,
lovingly

technical documentation

core

design documents

  • agent-gateway.md MCP agent firewall: governed context and query tools, budgets, kill switch, audit chain.
  • ai-assets.md Pillar I: AI supply-chain governance, training provenance, EU AI Act, GDPR deletion evidence.
  • branching.md Catalog-level branches and tags, branch-as-catalog projection, merge gates, Data CI/CD.
  • commit-protocol.md The correctness-critical table-commit path: invariants, failure handling, property-test suite.
  • compaction.md Bin-pack small-file compaction executor producing uncommitted Iceberg replace commits.
  • contracts-circuit-breaker.md Data contracts and the pre-commit circuit breaker: warn, quarantine, block modes.
  • enforcement-matrix.md Honesty doc: per-engine access-governance enforcement guarantees, implemented versus future layers.
  • events.md Outbox event delivery: queryable feed, durable consumers, signed webhooks.
  • lineage.md Table-level lineage model, OpenLineage in and out, impact API, no fabricated edges.
  • quality-monitors.md Zero-scan quality monitors, incidents, and the composite trust score.
  • scan-planning.md Server-side scan planning: pushdown, delete attachment, sync and async execution.
  • semantics.md Semantics layer: universal views, metrics, glossary, certified data products.
  • sharing.md Cross-org read-only shares and internal marketplace, the neutral Delta Sharing alternative.
  • small-scan-executor.md The meridian-query built-in DataFusion engine for governed small SELECTs.
  • transpilation.md Python SQLGlot sidecar contract: dialect translation, SQL parsing, metric compilation.
  • vending.md Credential vending: per-table scoped S3 credentials, STS or static; GCS/Azure stubs.
  • workbench.md Governed in-console SQL workbench: history, saved queries, notebook handoff.

architecture decision records