MATIH Platform is in active MVP development. Documentation reflects current implementation status.
10. Data Catalog & Governance
Semantic Layer
API Reference

Semantic Layer API Reference

The Semantic Layer API provides endpoints for managing semantic models, executing metric queries, natural language translation, query optimization, advanced metric computations, metric versioning, and model relationships. This page consolidates all endpoint references across the Semantic Layer services.


Authentication

All requests require a valid JWT token in the Authorization header and a tenant context via the X-Tenant-ID header. Some endpoints also accept an X-User-ID header for tracking authorship.


MDL Definition Endpoints

Base path: /api/v1/mdl

MethodPathDescription
GET/api/v1/mdlList all MDL definitions (paginated)
GET/api/v1/mdl/:mdlIdGet MDL definition by ID
GET/api/v1/mdl/by-name/:nameGet latest MDL definition by name
GET/api/v1/mdl/by-name/:name/versionsGet all versions of an MDL definition
POST/api/v1/mdlCreate a new MDL definition
PUT/api/v1/mdl/:mdlIdUpdate an MDL definition
POST/api/v1/mdl/:mdlId/validateValidate an MDL definition
POST/api/v1/mdl/:mdlId/publishPublish an MDL definition
DELETE/api/v1/mdl/:mdlIdDelete an MDL definition

Natural Language Endpoints

Base path: /api/v1/nl

MethodPathDescription
POST/api/v1/nl/translateTranslate question to semantic query
POST/api/v1/nl/askTranslate and execute a question
GET/api/v1/nl/suggestionsGet query suggestions
POST/api/v1/nl/explainExplain a semantic query
POST/api/v1/nl/validateValidate a natural language question

Translate Request Body

FieldTypeRequiredDescription
modelIdUUIDYesSemantic model ID
questionStringYesNatural language question

Ask Request Body

FieldTypeRequiredDescription
modelIdUUIDYesSemantic model ID
questionStringYesNatural language question

Suggestions Query Parameters

ParameterTypeRequiredDescription
modelIdUUIDYesSemantic model ID
queryStringNoPartial input text

Advanced Metric Endpoints

Base path: /api/v1/metrics/advanced

MethodPathDescription
POST/api/v1/metrics/advanced/cumulativeCompute cumulative metric
POST/api/v1/metrics/advanced/period-comparisonPeriod-over-period comparison
GET/api/v1/metrics/advanced/moving-averageBuild moving average SQL
POST/api/v1/metrics/advanced/percentileBuild percentile SQL
GET/api/v1/metrics/advanced/ratioBuild ratio SQL
GET/api/v1/metrics/advanced/cagrBuild CAGR SQL
GET/api/v1/metrics/advanced/contributionBuild contribution SQL

Common Advanced Metric Parameters

ParameterTypeDescription
modelIdUUIDSemantic model ID
metricNameStringName of the metric to compute
timeDimensionStringTime dimension for temporal analysis
startDateLocalDateStart of date range
endDateLocalDateEnd of date range
timeGrainStringTemporal granularity
groupByDimensionsListDimensions for grouping

Metric Versioning Endpoints

Base path: /api/v1/metrics/versions

MethodPathDescription
GET/api/v1/metrics/versions/:metricId/historyGet version history
GET/api/v1/metrics/versions/:metricId/versions/:versionGet specific version
GET/api/v1/metrics/versions/:metricId/currentGet current version number
GET/api/v1/metrics/versions/:metricId/compareCompare two versions
POST/api/v1/metrics/versions/:metricId/rollbackRollback to a version

Compare Query Parameters

ParameterTypeRequiredDescription
fromVersionIntegerYesEarlier version number
toVersionIntegerYesLater version number

Rollback Query Parameters

ParameterTypeRequiredDescription
targetVersionIntegerYesVersion to restore

Relationship Endpoints

Base path: /api/v1/relationships

MethodPathDescription
GET/api/v1/relationshipsList all relationships
GET/api/v1/relationships/:relationshipIdGet relationship by ID
GET/api/v1/relationships/by-model/:modelIdGet relationships for a model
POST/api/v1/relationshipsCreate a relationship
PUT/api/v1/relationships/:relationshipIdUpdate a relationship
DELETE/api/v1/relationships/:relationshipIdDelete a relationship

Create/Update Relationship Body

FieldTypeRequiredDescription
nameStringYesRelationship name
sourceModelIdUUIDYesSource model ID
targetModelIdUUIDYesTarget model ID
relationshipTypeEnumYesONE_TO_ONE, ONE_TO_MANY, MANY_TO_ONE, MANY_TO_MANY
joinTypeEnumYesINNER, LEFT, RIGHT, FULL, CROSS
sourceKeyStringYesSource join column
targetKeyStringYesTarget join column
conditionStringNoAdditional join condition
descriptionStringNoDescription

Query Optimization Endpoints

Base path: /v1/optimization

MethodPathDescription
POST/v1/optimization/optimizeOptimize metric query
POST/v1/optimization/optimize-sqlOptimize raw SQL
POST/v1/optimization/analyzeAnalyze query
POST/v1/optimization/compareCompare query plans
POST/v1/optimization/rewriteRewrite SQL
GET/v1/optimization/rewrite-rulesList rewrite rules
GET/v1/optimization/cache/statsCache statistics
GET/v1/optimization/cache/patternsFrequent query patterns
DELETE/v1/optimization/cache/:modelIdInvalidate model cache
POST/v1/optimization/cache/warm-upWarm up cache
POST/v1/optimization/statistics/:modelId/refreshRefresh statistics
GET/v1/optimization/statistics/:modelIdGet table statistics
POST/v1/optimization/statistics/:modelId/analyzeAnalyze table
GET/v1/optimization/hints/:modelIdGet optimization hints

Common Response Codes

CodeDescription
200Successful operation
201Resource created successfully
204Successful deletion (no content)
400Invalid request parameters
401Authentication required
403Insufficient permissions
404Resource not found
500Internal server error