Download OpenAPI specification:
Standalone AWS microservice for managing scheduled API orchestrations.
The Scheduler Service handles all scheduling and execution responsibilities for the Cronverse platform. It operates independently from the main application, accepting fully denormalized configurations and managing the entire lifecycle of scheduled API orchestrations.
The service can send webhook notifications to configured URLs when executions complete (success or failure). Webhooks are signed with HMAC-SHA256 for authenticity verification.
Creates a new schedule or executes immediately based on whether the schedule field is provided.
schedule field)Creates an EventBridge Scheduler rule that triggers executions at the specified cron/rate expression.
Returns scheduleId and createdAt.
schedule field)Skips EventBridge Scheduler creation and immediately triggers a Step Function execution.
Returns scheduleId, executionId, and startedAt.
The scheduleId is used as a namespace for tracking the execution in DynamoDB, but no persistent schedule is created.
Note: GET /schedules/{id} will return 404 for immediate-only executions.
required | object (Configuration) |
{- "configuration": {
- "schedule": {
- "expression": "cron(0 9 * * ? *)",
- "timezone": "America/New_York",
- "enabled": true
}, - "executionStrategy": "parallel",
- "continueOnFailure": false,
- "endpoints": [
- {
- "id": "endpoint-1",
- "name": "User API",
- "method": "GET",
- "timeout": 30
}
], - "integrations": [ ]
}
}{- "scheduleId": "abc123def456",
- "createdAt": "2025-01-16T10:30:00Z"
}Retrieves the configuration and state of a specific schedule from EventBridge Scheduler.
Note: This endpoint returns 404 for immediate-only executions (created without a schedule field),
since no persistent schedule is created in EventBridge. Use GET /schedules/{scheduleId}/executions
to retrieve execution history for immediate executions.
| scheduleId required | string Example: arn:aws:scheduler:eu-central-1:123456789012:schedule/cronverse/schedule-abc123 The unique identifier for the schedule (EventBridge Scheduler ARN or name).
Example: |
{- "scheduleId": "arn:aws:scheduler:eu-central-1:123456789012:schedule/cronverse/schedule-abc123",
- "configuration": {
- "schedule": {
- "expression": "cron(0 9 * * ? *)",
- "timezone": "America/New_York",
- "enabled": true
}, - "executionStrategy": "parallel",
- "continueOnFailure": false,
- "endpoints": [
], - "integrations": [ ]
}, - "state": "ENABLED",
- "createdAt": "2025-01-16T10:30:00Z",
- "modifiedAt": "2025-01-16T10:30:00Z"
}Updates an existing schedule's configuration. Supports partial updates. Changes take effect immediately for future executions.
| scheduleId required | string Example: arn:aws:scheduler:eu-central-1:123456789012:schedule/cronverse/schedule-abc123 The unique identifier for the schedule (EventBridge Scheduler ARN or name).
Example: |
required | object Partial configuration update (all fields optional) |
{- "configuration": {
- "schedule": {
- "expression": "cron(0 10 * * ? *)"
}
}
}{- "scheduleId": "arn:aws:scheduler:eu-central-1:123456789012:schedule/cronverse/schedule-abc123",
- "modifiedAt": "2025-01-16T11:45:00Z"
}Deletes a schedule from EventBridge Scheduler. This stops all future executions. Historical execution data in DynamoDB is preserved.
| scheduleId required | string Example: arn:aws:scheduler:eu-central-1:123456789012:schedule/cronverse/schedule-abc123 The unique identifier for the schedule (EventBridge Scheduler ARN or name).
Example: |
{- "scheduleId": "arn:aws:scheduler:eu-central-1:123456789012:schedule/cronverse/schedule-abc123",
- "deletedAt": "2025-01-16T12:00:00Z"
}Enables a previously disabled schedule, resuming automatic execution according to its cron expression. This is the recommended way to resume a paused schedule.
| scheduleId required | string Example: arn:aws:scheduler:eu-central-1:123456789012:schedule/cronverse/schedule-abc123 The unique identifier for the schedule (EventBridge Scheduler ARN or name).
Example: |
{- "scheduleId": "sch_abc123",
- "state": "ENABLED",
- "modifiedAt": "2025-01-16T14:30:00Z"
}Disables a schedule, pausing automatic execution. The schedule configuration is preserved and can be re-enabled at any time using the enable endpoint. This is the recommended way to pause a schedule without deleting it.
| scheduleId required | string Example: arn:aws:scheduler:eu-central-1:123456789012:schedule/cronverse/schedule-abc123 The unique identifier for the schedule (EventBridge Scheduler ARN or name).
Example: |
{- "scheduleId": "sch_abc123",
- "state": "DISABLED",
- "modifiedAt": "2025-01-16T14:30:00Z"
}Retrieves execution history from DynamoDB for a specific schedule. Results are ordered by start time (newest first) with pagination support.
| scheduleId required | string Example: arn:aws:scheduler:eu-central-1:123456789012:schedule/cronverse/schedule-abc123 The unique identifier for the schedule (EventBridge Scheduler ARN or name).
Example: |
| limit | integer [ 1 .. 100 ] Default: 20 Maximum number of executions to return (1-100) |
| nextToken | string Pagination token from previous response |
{- "executions": [
- {
- "executionId": "exec-20250116-abc123",
- "scheduleId": "arn:aws:scheduler:eu-central-1:123456789012:schedule/cronverse/schedule-abc123",
- "status": "SUCCEEDED",
- "startedAt": "2025-01-16T09:00:00Z",
- "stoppedAt": "2025-01-16T09:05:30Z"
}, - {
- "executionId": "exec-20250115-def456",
- "scheduleId": "arn:aws:scheduler:eu-central-1:123456789012:schedule/cronverse/schedule-abc123",
- "status": "RUNNING",
- "startedAt": "2025-01-15T09:00:00Z"
}
], - "nextToken": "eyJzY2hlZHVsZUlkIjoiYXJuOmF3czpzY2hlZHVsZXI6ZXUtY2VudHJhbC0xOjEyMzQ1Njc4OTAxMjpzY2hlZHVsZS9jcm9udmVyc2Uvc2NoZWR1bGUtYWJjMTIzIiwiZXhlY3V0aW9uSWQiOiJleGVjLTIwMjUwMTE1LWRlZjQ1NiJ9"
}Retrieves detailed information about a specific execution from DynamoDB. For successful executions, includes a signed S3 URL to download the consolidated data.
| scheduleId required | string Example: arn:aws:scheduler:eu-central-1:123456789012:schedule/cronverse/schedule-abc123 The unique identifier for the schedule (EventBridge Scheduler ARN or name).
Example: |
| executionId required | string Example: exec-20250116-abc123 The unique identifier for the execution.
Example: |
{- "execution": {
- "executionId": "exec-20250116-abc123",
- "scheduleId": "arn:aws:scheduler:eu-central-1:123456789012:schedule/cronverse/schedule-abc123",
- "status": "SUCCEEDED",
- "startedAt": "2025-01-16T09:00:00Z",
- "stoppedAt": "2025-01-16T09:05:30Z"
}, - "expiresAt": "2025-01-17T09:05:30Z"
}Manually starts a Step Functions execution for the specified schedule. This is independent of the schedule's cron expression and does not affect future scheduled executions.
| scheduleId required | string Example: arn:aws:scheduler:eu-central-1:123456789012:schedule/cronverse/schedule-abc123 The unique identifier for the schedule (EventBridge Scheduler ARN or name).
Example: |
{- "executionId": "exec-manual-20250116-xyz789",
- "startedAt": "2025-01-16T14:30:00Z"
}The scheduler service sends this webhook when an execution completes (either successfully or with failure).
Webhooks are signed using HMAC-SHA256 with the secret provided in the notification.secret field.
The signature is sent in the X-Scheduler-Signature header as a hex-encoded string.
To verify the webhook:
X-Scheduler-Signature headerconst crypto = require('crypto');
const signature = crypto
.createHmac('sha256', secret)
.update(JSON.stringify(payload))
.digest('hex');
Failed webhook deliveries are retried with exponential backoff:
| X-Scheduler-Signature required | string Example: a1b2c3d4e5f6... HMAC-SHA256 signature of the request body (hex-encoded) |
| status required | string |
| executionId required | string Unique identifier for the execution (use for deduplication) |
| scheduleId required | string Schedule that triggered this execution |
| startedAt required | string <date-time> ISO 8601 timestamp when execution started |
| finishedAt required | string <date-time> ISO 8601 timestamp when execution completed |
object Custom metadata from configuration | |
| dataUrl required | string <uri> Signed S3 URL for downloading consolidated payload (24-hour expiry) |
{- "status": "succeeded",
- "executionId": "exec-20250116-abc123",
- "scheduleId": "sch_abc123",
- "startedAt": "2025-01-16T09:00:00Z",
- "finishedAt": "2025-01-16T09:05:30Z",
- "metadata": {
- "customField": "customValue"
},
}