API Reference
This section provides the complete REST API documentation for the Catalog Service, Governance Service, and Data Quality Service.
Catalog Service (Port 8086)
Base URL
http://catalog-service.matih-data-plane.svc.cluster.local:8086/v1Catalog Browsing
Browse Metadata Hierarchy
GET /v1/catalog/browse?level={level}&dataSource={dataSourceId}| Parameter | Type | Required | Values |
|---|---|---|---|
level | String | Yes | databases, schemas, tables, columns |
dataSource | String | No | Data source identifier |
Get Table Details
GET /v1/catalog/tables/{tableFqn}Response (200 OK):
{
"fqn": "pg-analytics.analytics.public.orders",
"name": "orders",
"description": "Customer order transactions",
"columns": [
{"name": "order_id", "type": "BIGINT", "nullable": false, "primaryKey": true}
],
"rowCount": 15234567,
"sizeBytes": 3221225472,
"owner": "data-engineering-team",
"tags": ["transactional", "finance"],
"qualityScore": 0.94,
"lastUpdatedAt": "2026-02-12T08:00:00Z"
}Search Catalog
GET /v1/catalog/search?q={query}&type={entityType}&tags={tags}&limit={limit}| Parameter | Type | Required | Description |
|---|---|---|---|
q | String | Yes | Search query |
type | String | No | TABLE, COLUMN, DATABASE |
tags | String | No | Comma-separated tags |
limit | int | No | Max results (default: 20) |
Data Sources
Register Data Source
POST /v1/catalog/datasourcesRequest Body:
{
"name": "analytics-postgres",
"type": "POSTGRESQL",
"connectionSecretRef": "analytics-postgres-credentials",
"properties": {"sslMode": "require"}
}List Data Sources
GET /v1/catalog/datasourcesTrigger Metadata Ingestion
POST /v1/catalog/datasources/{dataSourceId}/ingestDelete Data Source
DELETE /v1/catalog/datasources/{dataSourceId}Lineage
Submit Lineage Event
POST /v1/lineage/eventsRequest Body: OpenLineage event format (see Data Lineage).
Get Table Lineage Graph
GET /v1/lineage/graph?table={tableFqn}&depth={depth}&direction={direction}| Parameter | Type | Default | Description |
|---|---|---|---|
table | String | Required | Starting table FQN |
depth | int | 3 | Maximum hops |
direction | String | BOTH | UPSTREAM, DOWNSTREAM, BOTH |
Get Column Lineage
GET /v1/lineage/columns?table={tableFqn}&column={columnName}Run Impact Analysis
POST /v1/lineage/impact-analysisRequest Body:
{
"tableFqn": "raw.orders",
"changeType": "COLUMN_REMOVED",
"columnName": "discount_code",
"includeIndirect": true
}Classification
Detect PII
POST /v1/catalog/classification/detect-piiRequest Body:
{
"tableFqn": "analytics.public.customers",
"sampleSize": 1000,
"autoClassify": false
}Apply Tags
POST /v1/catalog/tagsRequest Body:
{
"entityType": "COLUMN",
"entityFqn": "analytics.public.customers.email",
"tags": ["PII", "PII:EMAIL"],
"classification": "RESTRICTED"
}Get Tags
GET /v1/catalog/tags?entityType={type}&entityFqn={fqn}Run Classification Rules
POST /v1/catalog/classification/run-rulesRequest Body:
{
"tableFqn": "analytics.public.customers",
"autoApply": false
}Data Contracts
Create Contract
POST /v1/catalog/contractsRequest Body:
{
"name": "Sales Data Contract",
"dataset": "analytics.public.daily_sales",
"producer": {"team": "data-engineering"},
"consumer": {"team": "analytics"},
"sla": {
"freshness": {"maxDelayMinutes": 60},
"quality": {"minScore": 0.95}
}
}List Contracts
GET /v1/catalog/contracts?dataset={tableFqn}&status={status}Get Contract Status
GET /v1/catalog/contracts/{contractId}/statusGlossary
Create Glossary Term
POST /v1/catalog/glossary/termsSearch Glossary
GET /v1/catalog/glossary/search?q={query}Get Term Details
GET /v1/catalog/glossary/terms/{termId}Polaris Integration
Manage Polaris Grants
POST /v1/catalog/polaris/grants
GET /v1/catalog/polaris/grants?namespace={namespace}
DELETE /v1/catalog/polaris/grants/{grantId}OpenMetadata Sync
POST /v1/catalog/sync/trigger
GET /v1/catalog/sync/statusGovernance Service (Port 8080)
Base URL
http://governance-service.matih-data-plane.svc.cluster.local:8080/v1RLS Evaluation
Evaluate RLS Policy
POST /v1/governance/rls/evaluateRequest Body:
{
"tenantId": "tenant-123",
"userId": "user-456",
"userRoles": ["analyst"],
"userAttributes": {"region": "US-EAST"},
"resourceFqn": "analytics.public.orders",
"resourceType": "TABLE",
"operation": "SELECT"
}Response (200 OK):
{
"requiresFiltering": true,
"whereClause": "region = 'US-EAST'",
"appliedPolicies": [
{"policyId": "region-restriction", "policyName": "Region Restriction"}
],
"accessDenied": false
}Access Policies
Create Access Policy
POST /v1/governance/policiesList Policies
GET /v1/governance/policies?resource={resourceFqn}Evaluate Access
POST /v1/governance/access/evaluateCompliance
Get Compliance Status
GET /v1/governance/compliance/status?framework={framework}| Framework Values | GDPR, HIPAA, SOC2, PCI_DSS |
Submit Data Subject Request
POST /v1/governance/compliance/dsrGet Retention Policies
GET /v1/governance/compliance/retention?classification={classification}Access Reviews
List Pending Reviews
GET /v1/governance/access-reviews?status=PENDINGSubmit Review Decision
POST /v1/governance/access-reviews/{reviewId}/decisionAudit Log
Query Audit Log
GET /v1/governance/audit?resource={resourceFqn}&startDate={date}&endDate={date}Data Quality Service (Port 8000)
Base URL
http://data-quality-service.matih-data-plane.svc.cluster.local:8000/v1Validation Rules
Create Rule
POST /v1/quality/rulesRequest Body:
{
"name": "order_amount_positive",
"tableFqn": "analytics.public.orders",
"ruleType": "RANGE",
"column": "amount",
"config": {"min": 0.01},
"severity": "CRITICAL",
"schedule": "0 */6 * * *"
}List Rules
GET /v1/quality/rules?table={tableFqn}Run Validation
POST /v1/quality/validations/runRequest Body:
{
"tableFqn": "analytics.public.orders",
"rules": ["rule-001", "rule-002"]
}Get Validation Results
GET /v1/quality/validations?table={tableFqn}&startDate={date}Quality Scores
Get Table Score
GET /v1/quality/scores?table={tableFqn}Get Score History
GET /v1/quality/scores/history?table={tableFqn}&days={days}Get Score Trends
GET /v1/quality/scores/trends?period=30dAnomaly Detection
Get Anomalies
GET /v1/quality/anomalies?table={tableFqn}&status=OPENAcknowledge Anomaly
POST /v1/quality/anomalies/{anomalyId}/acknowledgeData Profiling
Run Profile
POST /v1/quality/profiles/runRequest Body:
{
"tableFqn": "analytics.public.orders",
"sampleSize": 10000,
"computeHistograms": true
}Get Profile Results
GET /v1/quality/profiles?table={tableFqn}SLA Monitoring
Get SLA Dashboard
GET /v1/quality/sla/dashboardGet Contract SLA Status
GET /v1/quality/sla/contracts/{contractId}Common Response Codes
| Status | Description |
|---|---|
| 200 | Success |
| 201 | Created |
| 202 | Accepted (async operation) |
| 400 | Bad request (validation error) |
| 401 | Unauthorized (invalid or missing JWT) |
| 403 | Forbidden (insufficient permissions) |
| 404 | Resource not found |
| 409 | Conflict (duplicate resource) |
| 429 | Rate limited |
| 500 | Internal server error |
Related Sections
- Catalog Service -- Service architecture details
- Governance Service -- Policy management details
- Data Quality -- Quality monitoring details
- Query Engine API -- Query execution endpoints