Skip to content

Schedules

Customers can schedule semantic instance actions — never shell, SSH or hypervisor commands. Schedules are timezone-aware and DST-safe.

API-only in this build

Schedules are implemented at the Client API level (GET/POST/DELETE /api/client/cloud/{instance}/schedules). There is no dedicated customer page for schedules in this build; use the API or an operator tool.

Model

  • InstanceSchedule — name, frequency (DAILY/WEEKLY/MONTHLY/CUSTOM), timezone, run_at_time (HH:MM), weekdays / day-of-month / cron, enabled, missed-run policy, next_run_at.
  • InstanceScheduleTask — ordered tasks with position, delay_seconds and a semantic action.
  • InstanceScheduleRun — one execution record; unique on (schedule_id, scheduled_for) for idempotency.

Allowed actions

START, STOP, RESTART, POWER_OFF, BACKUP, SNAPSHOT. There is no shell/SSH action by design.

Guarantees

  • DST-safe — occurrences are evaluated in the schedule's timezone.
  • Idempotent — a duplicate dispatch for the same slot is a no-op, guarded by a distributed lock and the unique slot.
  • Respects locks — a schedule never runs while a mutation lock is held; the run is recorded SKIPPED with instance_locked.
  • Missed runs — SKIP or RUN_ONCE_AFTER_RECOVERY.
  • License lock — when the license is unusable the run is skipped, never trapped.

API

Method Path
GET / POST /api/client/cloud/{cloudInstance}/schedules
GET /api/client/cloud/{cloudInstance}/schedules/runs
DELETE /api/client/cloud/{cloudInstance}/schedules/{scheduleUuid}

Error codes

SCHEDULE_ACTION_INVALID, SCHEDULE_CRON_INVALID, SCHEDULE_TIMEZONE_INVALID, SCHEDULE_TIME_INVALID, SCHEDULE_DAYS_REQUIRED, SCHEDULE_TASK_FAILED, SCHEDULE_LOCKED.