MATIH Platform is in active MVP development. Documentation reflects current implementation status.
2. Architecture
Event Schemas

Event Schemas

All events in the MATIH Platform follow a consistent schema defined by the DataPlaneEvent base class. This section documents the event structure, event categories, event chaining, and schema versioning patterns.


DataPlaneEvent Structure

Every event extends the DataPlaneEvent base class:

public class DataPlaneEvent {
    UUID eventId;              // Unique event identifier
    String eventType;          // e.g., "QUERY_COMPLETED"
    EventCategory category;    // Routing category
    String tenantId;           // Tenant scope
    String sourceService;      // Originating service
    String correlationId;      // Request correlation
    UUID parentEventId;        // Parent event (for chains)
    Instant timestamp;         // Event timestamp
    Map<String, Object> payload; // Event-specific data
    Map<String, String> metadata; // Headers and routing info
    String userId;             // User who triggered the event
    int priority;              // Priority level (1-10, default 5)
    String schemaVersion;      // Payload schema version
}

Event Categories

CategoryDescriptionExample Events
QUERYQuery execution lifecycleQUERY_STARTED, QUERY_COMPLETED, QUERY_FAILED
AGENTAI agent eventsINTENT_CLASSIFIED, SQL_GENERATED, RESPONSE_READY
PIPELINEPipeline lifecyclePIPELINE_STARTED, STEP_COMPLETED, PIPELINE_FAILED
MODELSemantic model changesMODEL_PUBLISHED, METRIC_ADDED
DASHBOARDDashboard lifecycleDASHBOARD_CREATED, DASHBOARD_SHARED
DATA_QUALITYQuality eventsCHECK_PASSED, ANOMALY_DETECTED
GOVERNANCEPolicy changesPOLICY_CREATED, ACCESS_REVOKED
CATALOGMetadata changesTABLE_CREATED, SCHEMA_UPDATED
HEALTHHealth statusSERVICE_HEALTHY, SERVICE_DEGRADED
SYSTEMSystem eventsCONFIG_CHANGED, DEPLOYMENT_UPDATED
ALERTAlert triggersTHRESHOLD_BREACHED, SLA_VIOLATED

Event Chaining

Events can form chains through the parentEventId field, enabling end-to-end tracing of multi-step workflows:

INTENT_CLASSIFIED (eventId: evt-001)
  |
  +-- SQL_GENERATED (parentEventId: evt-001, eventId: evt-002)
       |
       +-- QUERY_EXECUTED (parentEventId: evt-002, eventId: evt-003)
            |
            +-- RESULTS_ANALYZED (parentEventId: evt-003, eventId: evt-004)
                 |
                 +-- VISUALIZATION_RENDERED (parentEventId: evt-004)

All events in a chain share the same correlationId, making it easy to retrieve the complete chain.


Payload Examples

Query Completed Event

{
  "eventType": "QUERY_COMPLETED",
  "category": "QUERY",
  "tenantId": "acme-corp",
  "sourceService": "query-engine",
  "payload": {
    "queryId": "q-123",
    "sql": "SELECT SUM(amount) FROM orders",
    "rowCount": 1,
    "executionTimeMs": 234,
    "bytesScanned": 1048576
  }
}

Agent Response Event

{
  "eventType": "AGENT_RESPONSE_READY",
  "category": "AGENT",
  "tenantId": "acme-corp",
  "sourceService": "ai-service",
  "payload": {
    "sessionId": "sess-abc",
    "intent": "SQL_QUERY",
    "tokensConsumed": 1523,
    "modelUsed": "gpt-4o",
    "responseTimeMs": 3200
  }
}

Schema Versioning

The schemaVersion field enables backward-compatible payload evolution:

VersionChangeCompatibility
1.0Initial schemaBaseline
1.1Add optional fieldBackward compatible
2.0Remove or rename fieldBreaking (new consumer version required)

Consumers should ignore unknown fields to maintain forward compatibility.


Related Pages