Update a schedule
Updates the schedule identified by the path parameter. Requires the
schedules scope on an Integrations API key (a user bearer token also
passes).
This is a full replace and takes the same body as creation, so name stays
required and an omitted description is CLEARED (set to null). Use PATCH
on the same path when you want to change one field and leave the rest alone.
Multi-tenant scoping is enforced, so a schedule belonging to another PBX
responds 404 and is left untouched. pbx_id is forced from the authenticated
principal and is never read from the body, so a schedule cannot be moved
between tenants.
Steps: omit steps and they are left exactly as they are, so a body with
only name and description never touches the time rules. Send steps and
they become exactly that list: keep a step by sending it back with its id
(edited or not), add one by leaving id out, and drop one by leaving it out
of the list. steps: [] removes them all. The schedule and its steps are
written in one transaction, so a 422 on any step changes nothing at all.
The response is the updated schedule with its steps, unwrapped (no data
envelope).
User bearer token. Default authentication for customer-facing endpoints.
Obtain a token by calling POST /login with your credentials, then send it
on every subsequent request as Authorization: Bearer <token>. The token
inherits the permissions and PBX scope of the authenticated user.
- HTTP Authorization Scheme
bearer- Bearer format
Bearer <token>
API key created on the Cockpit Integrations page (an "API key" integration).
It is a bearer token owned by the customer's PBX and limited to the scopes
selected when the key was created (e.g. phone-numbers, push-configuration).
Send it in the Authorization header:
Authorization: Bearer <api_key>
Manage keys (create / reveal / revoke) from Integrations → New integration → API key.
- HTTP Authorization Scheme
bearer
application/jsonRequest body · required · application/json
Business hours (winter)Monday to Friday, 09:00 to 17:00stepsarray<object>
Responses
550e8400-e29b-41d4-a716-446655440000550e8400-e29b-41d4-a716-446655440001Business hoursMonday to Friday, 09:00 to 18:00steps*array<object>
7c9e6679-7425-40de-944b-e07fc1f90ae7days_of_the_week fixed_dates recurring_dates specific_perioddays_of_the_weekenabled disabledenabled09:0018:00days_of_the_week*object | null
fixed_dates*array<string>
recurring_dates*array<string>
specific_period*object | null
2026-08-03 08:002026-08-17 18:002024-03-01T08:29:07.000000Z2024-03-01T08:29:07.000000Z2024-03-01T08:29:07Z2024-03-01T08:29:07Zerrorsobject
namearray<string>
descriptionarray<string>
https://cockpit.voxbi.com/api/v1/schedules/{id}
curl -X PUT 'https://cockpit.voxbi.com/api/v1/schedules/{id}' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"name":"Business hours (winter)","description":"Monday to Friday, 09:00 to 17:00"}'
const response = await fetch('https://cockpit.voxbi.com/api/v1/schedules/{id}', {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${YOUR_TOKEN}`,
},
body: JSON.stringify({
"name": "Business hours (winter)",
"description": "Monday to Friday, 09:00 to 17:00"
}),
});
const data = await response.json();
console.log(data);
import requests
response = requests.put('https://cockpit.voxbi.com/api/v1/schedules/{id}',
headers={'Authorization': f'Bearer {YOUR_TOKEN}'},
json={
"name": "Business hours (winter)",
"description": "Monday to Friday, 09:00 to 17:00"
}
)
response.raise_for_status()
data = response.json()
print(data)
<?php
$context = stream_context_create([
'http' => [
'method' => 'PUT',
'header' => "Content-Type: application/json\r\nAuthorization: Bearer YOUR_TOKEN",
'content' => '{
\"name\": \"Business hours (winter)\",
\"description\": \"Monday to Friday, 09:00 to 17:00\"
}',
],
]);
$response = file_get_contents('https://cockpit.voxbi.com/api/v1/schedules/{id}', false, $context);
$data = json_decode($response, true);
print_r($data);
{ … }
{ … }
"steps": [ … ],
{ … },
"days_of_the_week": { … },
{ … },
"fixed_dates": [ … ],
{ … }
"recurring_dates": [ … ],
cockpit.voxbi.comMon, 16 Oct 2023 14:08:48 GMTcloseno-cache, privateapplication/json6059Origin{ … }
application/json{ … }
application/json{ … }
application/json{ … }
"errors": { … }
"name": [ … ]
application/json{ … }
60application/json