Skip to main content

Data Domains API

The Data Domains API provides CRUD operations for domains, steward management, product assignment, hierarchy navigation, scorecard retrieval, and domain-aware approvers.

Base path: /organizations/{org_slug}/domains

All endpoints require authentication.


Domain CRUD​

Create Domain​

POST /organizations/{org_slug}/domains

Request Body:

FieldTypeRequiredDescription
namestring✅Domain name
slugstring✅URL-safe identifier
descriptionstring—Domain purpose/scope
iconstring—Emoji or icon identifier
owner_idUUID—Owner user ID (defaults to caller)
parent_domain_idUUID—Parent domain for hierarchy

Response: 201 Created — DataDomainResponse

Errors: 409 Conflict — Slug already exists.


List Domains​

GET /organizations/{org_slug}/domains

Response: 200 OK — DataDomainListResponse[]

[
{
"id": "uuid",
"name": "Finance",
"slug": "finance",
"description": "All financial data assets",
"icon": "💰",
"owner": {
"id": "uuid",
"email": "cdo@example.com",
"full_name": "Chief Data Officer",
"avatar_url": null
},
"product_count": 15
}
]

Get Domain​

GET /organizations/{org_slug}/domains/{domain_slug}

Response: 200 OK — DataDomainResponse (includes memberships, children, product count).

Errors: 404 Not Found


Update Domain​

PATCH /organizations/{org_slug}/domains/{domain_slug}

Request Body (all fields optional):

FieldTypeDescription
namestringUpdated name
descriptionstringUpdated description
iconstringUpdated icon
owner_idUUIDTransfer ownership
parent_domain_idUUID | nullMove in hierarchy

Response: 200 OK — DataDomainResponse


Delete Domain​

DELETE /organizations/{org_slug}/domains/{domain_slug}

Response: 204 No Content


Hierarchy​

Get Domain Tree​

GET /organizations/{org_slug}/domains/tree

Returns all domains with parent_domain_id populated for client-side tree rendering.

Response: 200 OK — DataDomainListResponse[] (each item includes parent_domain_id)


Steward Management​

Add Steward​

POST /organizations/{org_slug}/domains/{domain_slug}/stewards

Request Body:

FieldTypeRequiredDescription
user_idUUID✅User to add
rolestring✅owner or steward

Response: 201 Created — DomainMembershipResponse

Errors: 409 Conflict — User already a steward.


Remove Steward​

DELETE /organizations/{org_slug}/domains/{domain_slug}/stewards/{user_id}

Response: 204 No Content

Errors: 400 Bad Request — Cannot remove the last owner.


Product Assignment​

Assign Product​

POST /organizations/{org_slug}/domains/{domain_slug}/products

Request Body:

FieldTypeRequiredDescription
product_idUUID✅Product to assign

Response: 201 Created — ProductDomainAssignmentResponse

Errors: 409 Conflict — Product already assigned to this domain.


Unassign Product​

DELETE /organizations/{org_slug}/domains/{domain_slug}/products/{product_id}

Response: 204 No Content


List Domain Products​

GET /organizations/{org_slug}/domains/{domain_slug}/products

Query Parameters:

ParameterTypeDefaultDescription
limitint100Max items (1–500)
offsetint0Pagination offset

Response: 200 OK

{
"items": [
{
"id": "uuid",
"name": "orders",
"slug": "orders",
"product_type": "table",
"description": "Order transactions",
"space_id": "uuid"
}
],
"total": 15
}

Domain Glossary​

List Organization Domain Glossary Terms​

GET /organizations/{org_slug}/domains/{domain_slug}/glossary

Returns glossary terms linked to a domain across spaces the caller can access.

List Space Domain Glossary Terms​

GET /spaces/{slug}/domains/{domain_slug}/glossary

Returns glossary terms linked to a domain within the current space.

Query Parameters:

ParameterTypeDefaultDescription
categorystring—Filter by glossary category
statusstring—Filter by term status
term_typestring—Filter by term type
letterstring—Filter by first letter
limitint100Max items (1–500)
offsetint0Pagination offset

Response: 200 OK

{
"items": [
{
"id": "uuid",
"name": "Monthly recurring revenue",
"status": "approved",
"category": "Finance"
}
],
"total": 1
}

Governance Scorecard​

Get Domain Scorecard​

GET /organizations/{org_slug}/domains/{domain_slug}/scorecard

Returns governance health metrics for all products assigned to the domain.

Response: 200 OK — DomainScorecardResponse


Domain Approvers​

Get Approvers for Product​

GET /organizations/{org_slug}/domains/products/{product_id}/domain-approvers

Returns domain owners who can approve access requests for a product based on its domain membership.

Response: 200 OK

[
{
"user": {
"id": "uuid",
"email": "owner@example.com",
"full_name": "Domain Owner",
"avatar_url": null
},
"domain_name": "Finance",
"domain_slug": "finance"
}
]

Response Models​

DataDomainResponse​

FieldTypeDescription
idUUIDDomain identifier
namestringDomain name
slugstringURL-safe identifier
descriptionstring | nullDomain description
iconstring | nullIcon/emoji
owner_idUUIDPrimary owner
organization_idUUIDParent organization
parent_domain_idUUID | nullParent domain (hierarchy)
created_atdatetimeCreation timestamp
updated_atdatetimeLast update timestamp
ownerUserBrief | nullOwner details
membershipsDomainMembershipResponse[]All steward memberships
childrenDataDomainListResponse[]Child sub-domains
product_countintNumber of assigned products

DataDomainListResponse​

FieldTypeDescription
idUUIDDomain identifier
namestringDomain name
slugstringURL-safe identifier
descriptionstring | nullDescription
iconstring | nullIcon
parent_domain_idUUID | nullParent domain
ownerUserBrief | nullOwner details
product_countintProduct count

DomainMembershipResponse​

FieldTypeDescription
idUUIDMembership ID
domain_idUUIDDomain ID
user_idUUIDUser ID
rolestringowner or steward
created_atdatetimeMembership creation date
userUserBrief | nullUser details