Skip to content

publishSchedule

POST
/katara/v1/orgs/{org_id}/environments/{environment_id}/schedules
curl --request POST \
--url https://api.katara.com/katara/v1/orgs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/environments/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/schedules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example' \
--header 'X-Katara-CSRF: 1' \
--data '{ "schedule_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "expected_revision": 1, "expected_environment_epoch": 1, "expected_reset_generation": 1, "configuration": { "name": "example", "calendar": { "calendars": "example", "intervals": "example" }, "policy": { "overlap": "skip", "catchup_window_seconds": 1, "pause_on_failure": true }, "run": "example" } }'

Requires synapse:schedules:write and current scope. Publication records an immutable version and does not activate execution. Activation and retirement require a human session; enabling also requires an available scheduler. Preserve exact reviewed body and Idempotency-Key after an unknown mutation result. No automatic retry. No raw paths or query parameters except the list filters. Replies expose execution_ready; false refuses enabling. The scheduler controls timing; Test and Live activation are separate.

org_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
environment_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
Idempotency-Key
required
string
/^[A-Za-z0-9._:-]{8,128}$/
X-Katara-CSRF
Allowed value: 1

Browser cookie mutations require value 1 and an allowed Origin. Session bearer clients may omit this header.

X-Katara-Account-ID
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/

Required for cookie-authenticated changes. Use the UUID of the account that loaded the application. A different current cookie account returns account_changed before the handler runs. Session bearer and API key clients do not require this header.

Media typeapplication/json
object
schedule_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
expected_revision
required
integer
<= 9007199254740990
expected_environment_epoch
required
integer
>= 1 <= 9007199254740991
expected_reset_generation
required
integer
>= 1 <= 9007199254740991
configuration
required
object
name
required
string
>= 1 characters <= 120 characters
calendar
required

Pinned IANA timezone names; no Local/process timezone. At most32 total rules. UTC start/end inclusive, start<=end. Ordered disjoint field ranges with explicit positive steps; intervals sorted unique by every/offset, offset<every. The scheduler evaluates timing and daylight saving changes.

object
time_zone
required
string
>= 1 characters <= 128 characters
calendars
required
Array<object>
<= 32 items unique items
object
second
required
Array<object>
>= 1 items <= 64 items unique items
object
start
required
integer
<= 59
end
required
integer
<= 59
step
required
integer
>= 1 <= 60
minute
required
Array<object>
>= 1 items <= 64 items unique items
object
start
required
integer
<= 59
end
required
integer
<= 59
step
required
integer
>= 1 <= 60
hour
required
Array<object>
>= 1 items <= 64 items unique items
object
start
required
integer
<= 23
end
required
integer
<= 23
step
required
integer
>= 1 <= 24
day_of_month
required
Array<object>
>= 1 items <= 64 items unique items
object
start
required
integer
>= 1 <= 31
end
required
integer
>= 1 <= 31
step
required
integer
>= 1 <= 31
month
required
Array<object>
>= 1 items <= 64 items unique items
object
start
required
integer
>= 1 <= 12
end
required
integer
>= 1 <= 12
step
required
integer
>= 1 <= 12
year
Array<object>
0 <= 64 items unique items
object
start
required
integer
>= 1 <= 9999
end
required
integer
>= 1 <= 9999
step
required
integer
>= 1 <= 9999
day_of_week
required
Array<object>
>= 1 items <= 64 items unique items
object
start
required
integer
<= 6
end
required
integer
<= 6
step
required
integer
>= 1 <= 7
intervals
required
Array<object>
<= 32 items unique items
object
every_seconds
required
integer
>= 1 <= 316224000
offset_seconds
required
integer
<= 316223999
start_at
required
string format: date-time
/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.\d{0,8}[1-9])?Z$/
Allowed value: 0001-01-01T00:00:00Z
end_at
required
string format: date-time
/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(?:\.\d{0,8}[1-9])?Z$/
Allowed value: 0001-01-01T00:00:00Z
Any of:
object
calendars
0
intervals
<= 32 items
policy
required
object
overlap
required
Allowed values: skip buffer_one buffer_all allow
catchup_window_seconds
required
integer
>= 10 <= 86400
pause_on_failure
required
boolean
run
required

Model, tools, schemas and limits come from the immutable agent version. Paid Test Compute requires the exact consent funding the grant budget; the API checks it against current payer authority.

object
agent_version
required
object
id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
version
required
integer
>= 1 <= 9007199254740991
integrity
required
string
/^sha256:[a-f0-9]{64}$/
grant_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
input_ref
required
object
org_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
environment_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
version
required
integer
>= 1 <= 9007199254740991
integrity
required
string
/^sha256:[a-f0-9]{64}$/
media_type
required
Allowed value: application/json
size_bytes
required
integer
<= 1048576
budget_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
usage_class
required
Allowed values: simulation test_compute live
paid_test_consent_id
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
output_target
required

Explicit destination for run artifacts. Store and key versions must still be active at admission and byte access. Choose retention from 60 seconds to 365 days; no silent default or destination substitution.

object
store_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
store_version
required
integer
>= 1 <= 9007199254740991
key_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
key_version
required
integer
>= 1 <= 9007199254740991
retention_seconds
required
integer
>= 60 <= 31536000
workload_grants
required
Array<object>
>= 1 items <= 8 items unique items
object
id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
audience
required
Allowed values: katara:synapse katara:locus

Schedule metadata or completed operation; no execution implied.

Media typeapplication/json
object
operation_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
resource_id
required
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
completed
required
boolean
Examplegenerated
{
"operation_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"resource_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"completed": true
}
Cache-Control
string
Allowed value: no-store

Request error

Media typeapplication/json
object
error
required
object
message
required
string
>= 1 characters <= 500 characters
type
required
string
>= 1 characters <= 100 characters
code
required

Stable; branch on it. Any operation can answer invalid_request, with param naming the refused field when there is one; human_session_required, when an API key, service account or workload calls an operation only a signed-in person may perform; reauthentication_required, when a person’s sign-in is too old for the operation; permission_denied; route_not_found and method_not_allowed, when no operation matches the path or method; and feature_unavailable, when the operation’s service is not enabled on this deployment.

string
>= 1 characters <= 100 characters
param
required

The request field a refusal is about, such as the agent_id or run_id query parameter; null when the refusal is not about one field.

string | null
request_id
required
string
>= 1 characters <= 100 characters
upstream_status
required
integer | null
action
Allowed values: sign_in reauthenticate request_access review fund retry reconcile refresh support
operation_id
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
snapshot_ref
string format: uuid
/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/
Allowed value: 00000000-0000-0000-0000-000000000000
Example
{
"error": {
"action": "sign_in"
}
}