Skip to main content

calendar

7 operation(s). All run through POST /syteops/v1/manage/dispatch (reads may use the documented GET form).

cadence_check​

Would scheduling this post at this moment break the site's publishing rhythm, and where would it fit instead? Advisory: nothing is written or refused. scope is all (default) or pipeline.

Access: SyteOps Admin or API key.

Parameters

ParameterTypeRequiredDescription
post_idintegeryesRecord id, digits only.
datestringyesISO 8601 date-time, e.g. 2026-11-03T09:00:00 (site timezone) or 2026-11-03T09:00:00Z / +02:00 (that instant).
scopestringnopipeline or all.

Returns

data: {post_id, date_gmt, enabled, collides, reasons[], conflicts[], suggestion_label, suggestion_local, truncated}

Request

{
"resource": "calendar",
"action": "cadence_check",
"params": {
"post_id": 0,
"date": "string",
"scope": "string"
}
}

cadence_next_slot​

The next free publishing moment on the site's cadence after a time (default now). enabled is false and the slot empty when cadence is off; truncated means the walk could not read the calendar completely. exclude_post_id keeps that post out of its own conflicts. scope is all (default) or pipeline.

Access: SyteOps Admin or API key.

Parameters

ParameterTypeRequiredDescription
afterstringnoISO 8601 date-time to search after (default now).
exclude_post_idintegernoRecord id, digits only.
scopestringnopipeline or all.

Returns

data: {enabled, truncated, slot_gmt, slot_site}; the slot strings are empty when none

Request

{
"resource": "calendar",
"action": "cadence_next_slot",
"params": {
"after": "string",
"exclude_post_id": 0,
"scope": "string"
}
}

query​

The publishing calendar for a window: scheduled and published posts in it (grid_events) plus the undated draft and pending rail. from and to are ISO 8601 dates (YYYY-MM-DD: whole days) or date-times, in the site timezone unless they carry Z or an offset, and the window may span at most 92 days (422 range_too_large). scope is pipeline (default, posts the content pipeline produced) or all. post_types, when sent, must be a list of calendar post types. grid_truncated is true when the window held more posts than the grid returns (500): narrow the window. The rail is not date-bounded: page it with rail_cursor and rail_per (5, 10, 25 or 100). A site-local time that the clocks skip is 422 date_in_dst_gap.

Access: SyteOps Admin or API key.

Parameters

ParameterTypeRequiredDescription
fromstringyesWindow start: YYYY-MM-DD (start of that day) or an ISO 8601 date-time.
tostringyesWindow end: YYYY-MM-DD (end of that day) or an ISO 8601 date-time. At most 92 days after from.
scopestringnopipeline or all.
post_typesarraynoA JSON list of calendar post type names, e.g. ["post", "page"]; a keyed object is refused.
rail_perintegernoDraft rail page size: 5, 10, 25 or 100.
rail_cursorstringnorail_next_cursor from the previous page, unchanged; anything else is 422 invalid_cursor.

Returns

data: {from_gmt, to_gmt, scope, grid_events[], grid_truncated, rail_drafts[], rail_has_more, rail_next_cursor, rail_truncated}; an event is {id, title, type, type_label, status, date_gmt, date_site, reserved, pipeline_origin}

Request

{
"resource": "calendar",
"action": "query",
"params": {
"from": "string",
"to": "string",
"scope": "string",
"post_types": [],
"rail_per": 0,
"rail_cursor": "string"
}
}

reschedule​

Move a post's publication to a future moment, exactly as dragging it on the calendar does: a draft or pending post becomes scheduled, a scheduled post moves, and the schedule notice goes to the people the portal tells. date must be at least five minutes ahead (422 date_not_future), and the post is never published instead; a live post cannot be given a later date (409 published_immutable). A bad date is 422 invalid_date.

Access: SyteOps Admin or API key.

Parameters

ParameterTypeRequiredDescription
post_idintegeryesRecord id, digits only.
datestringyesISO 8601 date-time, e.g. 2026-11-03T09:00:00 (site timezone) or 2026-11-03T09:00:00Z / +02:00 (that instant).

Returns

data: {post_id, status, scheduled, intent, date_gmt, date_site, notify}; notify is the schedule notice outcome

Request

{
"resource": "calendar",
"action": "reschedule",
"params": {
"post_id": 0,
"date": "string"
}
}

slot_reserve​

Hold the next free cadence moment on a draft or pending post, as an arriving article gets one (a post already holding one is moved). Only a draft or pending post can hold a slot (409 not_holdable), and only a post type the calendar handles (422 unsupported_type). Not reserving is an answer: reserved is false with a reason of slots_disabled, cadence_opt_out or not_reserved.

Access: SyteOps Admin or API key.

Parameters

ParameterTypeRequiredDescription
post_idintegeryesRecord id, digits only.

Returns

data: {post_id, reserved, reason, slot_gmt, slot_site}

Request

{
"resource": "calendar",
"action": "slot_reserve",
"params": {
"post_id": 0
}
}

unpublish​

Take a LIVE post down and return it to a draft (409 not_published when it is not live). The site's static front page and posts page are refused (409 protected_page). The publication date is kept; pending post-publish recipe runs and social sends are stood down. Destructive: send confirm:true.

🔴 Destructive
Access: SyteOps Admin or API key, plus confirm: true.

Parameters

ParameterTypeRequiredDescription
post_idintegeryesRecord id, digits only.
confirmbooleannoMust be true.

Returns

data: {post_id, status, previous_status}

Request

{
"resource": "calendar",
"action": "unpublish",
"params": {
"post_id": 0,
"confirm": true
},
"confirm": true
}

unschedule​

Cancel a scheduled post's publication and return it to a draft (409 not_scheduled when it is not scheduled). Reversible: the cancelled moment is returned as previous_gmt and reschedule puts it back.

Access: SyteOps Admin or API key.

Parameters

ParameterTypeRequiredDescription
post_idintegeryesRecord id, digits only.

Returns

data: {post_id, status, previous_gmt, notify}

Request

{
"resource": "calendar",
"action": "unschedule",
"params": {
"post_id": 0
}
}