MATIH Platform is in active MVP development. Documentation reflects current implementation status.
10. Data Catalog & Governance
Table Management

Table Management

Tables are the primary catalog entity representing datasets. The Catalog Service provides endpoints for listing, searching, filtering, and inspecting table metadata including column schemas and tag associations.


List Tables

GET /api/v1/catalog/tables?page={page}&size={size}
curl "http://localhost:8086/api/v1/catalog/tables?page=0&size=20" \
  -H "X-Tenant-ID: 550e8400-e29b-41d4-a716-446655440000"

Search Tables by Name

GET /api/v1/catalog/tables/search?query={query}&page={page}&size={size}
curl "http://localhost:8086/api/v1/catalog/tables/search?query=customer&page=0&size=20" \
  -H "X-Tenant-ID: 550e8400-e29b-41d4-a716-446655440000"

Get Table by FQN

Retrieve detailed table metadata by fully qualified name.

GET /api/v1/catalog/tables/{fqn}
curl "http://localhost:8086/api/v1/catalog/tables/warehouse.public.customer_orders" \
  -H "X-Tenant-ID: 550e8400-e29b-41d4-a716-446655440000"

Response

{
  "id": "tbl-001",
  "tenantId": "550e8400-...",
  "name": "customer_orders",
  "fullyQualifiedName": "warehouse.public.customer_orders",
  "schemaName": "public",
  "catalogName": "warehouse",
  "tableType": "REGULAR",
  "description": "Customer order transactions",
  "columnCount": 12,
  "tags": ["production", "pii"]
}

Get Table Schema

Retrieve the column schema definition for a table.

GET /api/v1/catalog/tables/{fqn}/schema
curl "http://localhost:8086/api/v1/catalog/tables/warehouse.public.customer_orders/schema" \
  -H "X-Tenant-ID: 550e8400-e29b-41d4-a716-446655440000"

List Tables by Database

GET /api/v1/catalog/tables/database/{databaseId}?page={page}&size={size}
curl "http://localhost:8086/api/v1/catalog/tables/database/db-001?page=0&size=50" \
  -H "X-Tenant-ID: 550e8400-e29b-41d4-a716-446655440000"

List Tables by Tag

GET /api/v1/catalog/tables/tag/{tag}?page={page}&size={size}
curl "http://localhost:8086/api/v1/catalog/tables/tag/pii?page=0&size=20" \
  -H "X-Tenant-ID: 550e8400-e29b-41d4-a716-446655440000"

Add Tag to Table

POST /api/v1/catalog/tables/{tableId}/tags
curl -X POST "http://localhost:8086/api/v1/catalog/tables/tbl-001/tags" \
  -H "Content-Type: application/json" \
  -H "X-Tenant-ID: 550e8400-e29b-41d4-a716-446655440000" \
  -d '{"tagName": "production"}'

Source Reference

ComponentFile
Table CRUDCatalogController.java -- listTables(), getTableByFqn(), getTableSchema()
Table searchCatalogController.java -- searchTables()
Tag filteringCatalogController.java -- getTablesByTag(), addTagToTable()
Table entityCatalogTable.java
Table repositoryCatalogTableRepository.java