MATIH Platform is in active MVP development. Documentation reflects current implementation status.
9. Query Engine & SQL
Schedule Endpoints

Schedule Endpoints

The schedule endpoints manage recurring query execution, including creation, updates, pause/resume, manual triggering, and execution history. Served by QueryScheduleController at /v1/schedules.


Endpoints

MethodEndpointDescription
POST/v1/schedulesCreate scheduled query
GET/v1/schedulesList schedules (paginated)
GET/v1/schedules/:scheduleIdGet schedule details
PUT/v1/schedules/:scheduleIdUpdate schedule
DELETE/v1/schedules/:scheduleIdDelete schedule
POST/v1/schedules/:scheduleId/pausePause schedule
POST/v1/schedules/:scheduleId/resumeResume schedule
POST/v1/schedules/:scheduleId/triggerTrigger immediate execution
GET/v1/schedules/:scheduleId/executionsGet execution history

POST /v1/schedules

Creates a new scheduled query.

Headers: X-Tenant-ID, X-User-ID (required)

{
  "name": "Daily Revenue Summary",
  "description": "Aggregates daily revenue by region",
  "sql": "SELECT region, SUM(amount) as revenue FROM orders WHERE date = CURRENT_DATE - INTERVAL '1' DAY GROUP BY region",
  "scheduleType": "CRON",
  "cronExpression": "0 6 * * *",
  "timezone": "UTC",
  "catalog": "delta",
  "schema": "public",
  "notifyOnFailure": true,
  "maxRetries": 3
}

Schedule Types

TypeDescriptionConfiguration
CRONStandard cron expressioncronExpression field
INTERVALFixed interval between runsintervalMinutes field
DAILYOnce per day at specified timerunAtTime field
WEEKLYOnce per week on specified dayrunAtDay and runAtTime fields

Schedule States

StateDescription
ACTIVESchedule is running on its configured interval
PAUSEDSchedule is temporarily disabled
DISABLEDSchedule has been auto-disabled (e.g., too many failures)

Execution History

GET /v1/schedules/:scheduleId/executions

Returns execution statistics:

{
  "scheduleId": "uuid",
  "scheduleName": "Daily Revenue Summary",
  "executionCount": 30,
  "successCount": 28,
  "failureCount": 2,
  "consecutiveFailures": 0,
  "lastExecutedAt": "2026-02-12T06:00:00Z",
  "lastExecutionStatus": "COMPLETED",
  "nextScheduledAt": "2026-02-13T06:00:00Z"
}

Manual Trigger

POST /v1/schedules/:scheduleId/trigger

Immediately executes the scheduled query regardless of its schedule. Does not affect the next scheduled execution time.