Data Models
All API responses are parsed into typed Pydantic models. Every model uses extra="allow" so that new fields from the API are preserved without breaking existing code.
Product Models
Product
Full product representation returned by detail endpoints.
| Field | Type | Description |
|---|---|---|
id | UUID | Product UUID |
name | str | Display name |
slug | str | URL-friendly identifier |
description_markdown | str | None | Markdown description |
product_type | str | None | Type (table, view, dashboard, etc.) |
tags | list[str] | Tags |
is_archived | bool | Whether the product is archived |
space_id | UUID | None | Owning space UUID |
quality_health | dict | None | Quality health summary |
created_at / updated_at | datetime | None | Timestamps |
ProductSummary
Lightweight product used in list responses (subset of Product fields).
Refresh Models
ProductRefreshResponse
A recorded refresh event.
| Field | Type | Description |
|---|---|---|
id | UUID | Refresh UUID |
product_id | UUID | Product UUID |
status | RefreshStatus | Status enum (success, failure, running) |
trigger_source | TriggerSource | Source enum (manual, airflow, dbt, etc.) |
started_at / completed_at | datetime | None | Timestamps |
row_count | int | None | Rows processed |
metadata | dict | None | Extra metadata |
ProductRefreshSummary
Lightweight refresh used in list responses.
ProductRefreshStats
Aggregate statistics (total refreshes, success rate, average duration).
ProductRefreshCreate
Input model for creating a refresh event.
Enums: RefreshStatus, TriggerSource
String enums for type-safe status and trigger source values.
Quality Models
QualityCheck
Quality check definition.
| Field | Type | Description |
|---|---|---|
id | UUID | Check UUID |
name | str | Check name |
slug | str | URL-friendly slug |
check_type | str | Type (sql, row_count, manual, etc.) |
query | str | None | SQL query |
status | str | Current status |
product_ids | list[UUID] | Linked product UUIDs |
CheckExecution
A single execution result.
| Field | Type | Description |
|---|---|---|
id | UUID | Execution UUID |
check_id | UUID | Parent check UUID |
status | str | Result (passed, failed, warning, error) |
value | float | None | Measured value |
is_passed | bool | Whether the check passed |
executed_at | datetime | None | Execution timestamp |
CheckStats
Aggregated check statistics (pass rate, execution count, trends).
Connector Models
Connector
| Field | Type | Description |
|---|---|---|
id | UUID | Connector UUID |
name | str | Display name |
connector_type | str | Type (postgresql, bigquery, dbt, etc.) |
config | dict | None | Connection configuration |
SyncJob
A metadata sync job triggered by connectors.sync() or upload_dbt_manifest().
Space Models
Space
| Field | Type | Description |
|---|---|---|
id | UUID | Space UUID |
name | str | Space name |
slug | str | URL-friendly slug |
SpaceMember
A user's membership in a space with their role.
Issue Models
Ticket
Full ticket representation.
| Field | Type | Description |
|---|---|---|
id | UUID | Ticket UUID |
title | str | Ticket title |
description_markdown | str | Markdown body |
priority | str | Priority (low, medium, high, critical) |
status | str | Status (open, in_progress, resolved, closed) |
reporter_id / assignee_id | UUID | None | User UUIDs |
space_id / space_slug | UUID | None / str | None | Space context |
impact_assessment | ImpactAssessment | None | Impact details |
products_info | list[ProductLink] | Linked products |
comments | list[TicketComment] | Comments |
created_at / updated_at | datetime | None | Timestamps |
TicketComment
A comment on a ticket.
ImpactAssessment
Impact assessment details (business impact, technical impact, reach, effort).
ProductLink
Lightweight product reference (id, name).
Alert Models
UnifiedAlert
Aggregated alert from the central feed. Contains fields from DQ, Smart, and Product alert sources.
| Field | Type | Description |
|---|---|---|
id | str | Alert identifier |
status | str | open or resolved |
severity | str | Severity level |
source | str | Alert source type |
product_name / product_slug | str | None | Product context |
check_name / check_type | str | None | DQ check context |
annotations | list[dict] | None | Annotations |
ProductAlert
Product banner alert.
| Field | Type | Description |
|---|---|---|
id | UUID | Alert UUID |
product_id | UUID | Product UUID |
severity | str | info, warning, or critical |
title | str | Alert title |
message | str | None | Detailed message |
is_active | bool | Whether the alert is active |
expires_at | datetime | None | Expiration timestamp |
AlertAnnotation
An annotation on any alert type.
| Field | Type | Description |
|---|---|---|
id | UUID | Annotation UUID |
user_id | UUID | Author UUID |
comment | str | Annotation text |
created_at | datetime | None | Timestamp |
Search Models
SearchResult
A unified search result with a type discriminator. Type-specific fields are only populated for results of the corresponding entity kind.
| Field | Type | Description |
|---|---|---|
id | UUID | Entity UUID |
name | str | Display name |
description | str | None | Entity description |
type | str | Entity kind (product, issue, meeting, source_system, connector, user, comment, contract) |
product_type | str | None | Product type (products only) |
provider | str | None | Provider name (products only) |
status | str | None | Status (meetings only) |
scheduled_at | str | None | Scheduled time (meetings only) |
platform_type | str | None | Platform type (source systems only) |
priority | str | None | Priority level (issues only) |
email | str | None | Email address (users only) |
product_id | UUID | None | Parent product UUID (comments only) |
product_name | str | None | Parent product name (comments only) |