Skip to main content
Schedules let you run reconciliation automatically on a recurring cadence instead of triggering match runs by hand. Each schedule belongs to a reconciliation context and fires on a cron expression, so a context can be reconciled daily, hourly, or on any custom frequency you define.

What is a schedule?


A schedule is a cron-based trigger attached to a context. When it fires, Matcher launches a reconciliation run for that context using its active rules and sources.
FieldTypeDescription
idUUIDUnique identifier for the schedule
contextIdUUIDContext this schedule belongs to
cronExpressionStringCron expression defining the frequency (e.g. 0 0 * * * for daily at midnight)
enabledBooleanWhether the schedule is active
lastRunAtTimestampLast successful run time (RFC 3339)
nextRunAtTimestampNext scheduled run time (RFC 3339)
createdAt / updatedAtTimestampCreation and last-update timestamps (RFC 3339)

Schedule lifecycle


Schedules support a full CRUD lifecycle under /v1/contexts/{contextId}/schedules.
ActionMethod & path
Create schedulePOST /v1/contexts/{contextId}/schedules
List schedulesGET /v1/contexts/{contextId}/schedules
Retrieve scheduleGET /v1/contexts/{contextId}/schedules/{scheduleId}
Update schedulePATCH /v1/contexts/{contextId}/schedules/{scheduleId}
Delete scheduleDELETE /v1/contexts/{contextId}/schedules/{scheduleId}

Creating a schedule


Provide a cronExpression; enabled defaults to active when omitted.
cURL
curl -X POST "https://api.matcher.example.com/v1/contexts/{contextId}/schedules" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "cronExpression": "0 0 * * *",
   "enabled": true
 }'
cronExpression
String
required
Cron expression defining the run frequency (1–100 chars)
enabled
Boolean
Whether the schedule is active immediately
The response returns the created schedule, including its id, nextRunAt, and timestamps. Listing schedules (GET) returns every schedule for the context, enabled and disabled alike.

Pausing vs. deleting a schedule


When you need to stop a recurring reconciliation, you have two options — and the choice matters. Disable the schedule to pause automatic runs while keeping its configuration and history. Re-enabling later is a single call, with no need to recreate it. Update the cron expression, toggle enabled, or both (omitted fields are left unchanged):
cURL
curl -X PATCH "https://api.matcher.example.com/v1/contexts/{contextId}/schedules/{scheduleId}" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "cronExpression": "0 6 * * *",
   "enabled": false
 }'
Delete the schedule (DELETE .../schedules/{scheduleId}) only when the cadence is gone for good — deletion is permanent. To simply take a break, disable instead.

Best practices


Schedule runs to fire after all sources for the context have delivered their data for the period. Running before ingestion completes produces avoidable exceptions.
When pausing a reconciliation cadence, disable the schedule so history and configuration are preserved and re-enabling is a single call.
Keep cron expressions readable and documented (e.g. 0 0 * * * = daily at 00:00). Verify the timezone assumptions for your deployment before relying on a schedule for SLA-sensitive runs.

Next steps


Contexts and Sources

Configure the contexts and sources a schedule reconciles.

Generating Reports

Review the results produced by scheduled runs.