Skip to content

Save the schedule (enabled, cron, retention); the dual-control restore gate's armed state is preserved, and server-owned bookkeeping fields are ignored

PUT
/v1/console/dr/schedule
curl --request PUT \
--url https://example.com/v1/console/dr/schedule \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "cron": "example", "enabled": true, "require_dual_control_restore": true, "retain_days": 1 }'

Saves the schedule’s operator-owned fields (enabled, cron in the runner’s grammar, retention days). The dual-control gate’s armed state is preserved; server-owned bookkeeping fields in a read-modify-write round trip are ignored.

Media type application/json

The schedule’s operator-owned fields. The armed state of the dual-control gate is preserved; server-owned bookkeeping (disarm instant, run history) is ignored on write.

object
cron
required

The runner’s cron grammar; validated on write.

string
enabled
required
boolean
require_dual_control_restore

Arm (true) or request the disarm of (false) the dual-control restore gate. Disarm takes effect at the engine’s persisted instant, never immediately.

boolean
retain_days
required
integer
Example generated
{
"cron": "example",
"enabled": true,
"require_dual_control_restore": true,
"retain_days": 1
}

OK

Media type application/json
object
cron
required
string
dual_control_disarm_effective_at
string format: date-time
dual_control_disarm_requested_by
string
enabled
required
boolean
last_run
string format: date-time
last_run_error
string
last_run_status

The most recent scheduled run’s outcome, so a failing schedule is not a silent gap.

string
Allowed values: completed failed
next_run
string format: date-time
require_dual_control_restore
required

The effective console restore gate. When armed, a distinct administrator account must approve; CLI restore uses a declared-operator record instead, so estates requiring approval for every restore must also control host access.

boolean
retain_days
required
integer
Example
{
"last_run_status": "completed"
}

Bad request

Media type application/json
object
error
required
object
code
required
string
message
required
string
module

With code module_not_enabled: the namespace of the module this node does not run.

string
Example generated
{
"error": {
"code": "example",
"message": "example",
"module": "example"
}
}

Unauthenticated

Media type application/json
object
error
required
object
code
required
string
message
required
string
module

With code module_not_enabled: the namespace of the module this node does not run.

string
Example generated
{
"error": {
"code": "example",
"message": "example",
"module": "example"
}
}

Forbidden

Media type application/json
object
error
required
object
code
required
string
message
required
string
module

With code module_not_enabled: the namespace of the module this node does not run.

string
Example generated
{
"error": {
"code": "example",
"message": "example",
"module": "example"
}
}

Not found

Media type application/json
object
error
required
object
code
required
string
message
required
string
module

With code module_not_enabled: the namespace of the module this node does not run.

string
Example generated
{
"error": {
"code": "example",
"message": "example",
"module": "example"
}
}

Conflict / setup required

Media type application/json
object
error
required
object
code
required
string
message
required
string
module

With code module_not_enabled: the namespace of the module this node does not run.

string
Example generated
{
"error": {
"code": "example",
"message": "example",
"module": "example"
}
}

Rate limited

Media type application/json
object
error
required
object
code
required
string
message
required
string
module

With code module_not_enabled: the namespace of the module this node does not run.

string
Example generated
{
"error": {
"code": "example",
"message": "example",
"module": "example"
}
}