Voxbi Cockpit APIs
All endpoints

Update a schedule slot (user)

Updates an existing slot. Any subset of the slot fields may be supplied. Start and end times, when provided, must remain within the schedule's daily bounds. The schedule must belong to a department the authenticated user manages, and the slot must belong to that schedule.

HTTP: bearerAuth

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>
pbx_id path · string · uuid *
UUID of the PBX tenant.
schedule path · string · uuid *
UUID of the schedule.
slot path · string · uuid *
UUID of the slot.
accept header · string
example: application/json

Request body · required

Request schema
column_indexinteger
≥ 0≤ 99
example: 0
start_timestring
Slot start time as `HH:MM`. Must be within the schedule bounds.
example: 09:00
end_timestring
Slot end time as `HH:MM`. Must be after start_time and within bounds.
example: 17:00
recurrence_typestring
enum: none daily weekly custom
example: weekly
recurrence_daysarray<integer>
Required when recurrence_type is weekly or custom.
[]integer
ISO weekday number (1 = Monday through 7 = Sunday).
≥ 1≤ 7
recurrence_start_datestring · date
Must be today or later.
example: 2026-03-02
recurrence_end_datestring | null · date
example: 2026-12-31
recurrence_countinteger | null
≥ 1≤ 730
example: 60
is_activeboolean
example: 1

Responses

The slot was updated.
Response schema
dataobject
A single recurring time slot belonging to a Tempus schedule, as serialized by the `SlotResource`. A slot defines a daily start and end time together with a recurrence rule (which days it repeats on and over what date range) and a column position used to lay out overlapping slots side by side in the schedule grid. Schedule entries (the concrete occurrences worked against the slot) are attached through the related `TempusScheduleEntry` records and are not embedded in this object. This object documents the exact keys returned by the resource, not the raw database columns. The `createdBy` field is only present when the `createdBy` relation has been eager-loaded on the model; when it is loaded it is a compact object (or null), and when it is not loaded the key is omitted entirely. Times are returned trimmed to `HH:MM` (seconds removed). The recurrence date fields are returned as plain `YYYY-MM-DD` calendar dates without a time component.
id*string · uuid
Unique identifier of the schedule slot.
read-only
example: 550e8400-e29b-41d4-a716-446655440000
scheduleId*string · uuid
Identifier of the parent Tempus schedule this slot belongs to.
example: 550e8400-e29b-41d4-a716-446655440001
columnIndex*integer · int32
Zero-based column position used to render the slot in the schedule grid. Overlapping active slots receive distinct column indices so they can be displayed side by side; the lowest free index is assigned automatically.
example: 0
startTime*string
Daily start time of the slot in 24-hour `HH:MM` form. Seconds are trimmed from the stored value before serialization.
example: 09:00
endTime*string
Daily end time of the slot in 24-hour `HH:MM` form. Seconds are trimmed from the stored value before serialization.
example: 17:30
recurrenceType*string
Recurrence frequency rule that governs how the slot repeats. Determines how `recurrenceDays`, `recurrenceEndDate` and `recurrenceCount` are interpreted.
enum: daily weekly monthly none
example: weekly
recurrenceDays*array<integer>
Days the slot recurs on, used together with `recurrenceType`. For a weekly recurrence these are ISO weekday numbers (1 = Monday through 7 = Sunday); for a monthly recurrence they are days of the month. Null when no specific days apply to the recurrence rule.
[]integer · int32
example: 1
recurrenceStartDate*string | null · date
First calendar date on which the slot recurrence becomes active, in `YYYY-MM-DD` form. Null when no start date is set.
example: 2024-03-01
recurrenceEndDate*string | null · date
Last calendar date on which the slot recurrence remains active, in `YYYY-MM-DD` form. Null for an open-ended recurrence or when the recurrence is instead bounded by `recurrenceCount`.
example: 2024-12-31
recurrenceCount*integer | null · int32
Number of occurrences after which the recurrence ends. Null when the recurrence is open-ended or bounded by `recurrenceEndDate` instead of a fixed count.
example: 12
isActive*boolean
Whether the slot is currently active. Inactive slots are retained but are excluded from grid layout and column-index assignment.
example: 1
createdByobject | null
Compact reference to the user who created the slot. Only present when the `createdBy` relation is eager-loaded; the key is omitted otherwise. Null when the relation is loaded but no creating user is associated.
read-only
idstring · uuid
Unique identifier of the user who created the slot.
example: 550e8400-e29b-41d4-a716-446655440002
namestring
Display name of the user who created the slot.
example: Customer Support
Authorization Token Missing. This error is returned when the authorization token is missing.
Response schema
errorstring
Error message
example: Authorization Token is missing
The authenticated user is outside the requested tenant, has no associated employee record, or has an empty schedules-management scope.
Response schema
No response body.
Data Not Found. This error is returned when the requested data is not found.
Response schema
messagearray<string>
[]string
Unprocessable Parameters. This error is returned when a parameter is not valid.
Response schema
messagestring
example: The given data was invalid.
errorsobject
filterarray<string>
[]string
sortarray<string>
[]string
pagearray<string>
[]string
per_pagearray<string>
[]string
put https://cockpit.voxbi.com/api/v1/{pbx_id}/schedule-management/{schedule}/slots/{slot}
Base URL
Request sample
curl -X PUT 'https://cockpit.voxbi.com/api/v1/{pbx_id}/schedule-management/{schedule}/slots/{slot}' \
  -H 'Authorization: Bearer YOUR_TOKEN'
const response = await fetch('https://cockpit.voxbi.com/api/v1/{pbx_id}/schedule-management/{schedule}/slots/{slot}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${YOUR_TOKEN}`,
  },
});

const data = await response.json();
console.log(data);
import requests

response = requests.put('https://cockpit.voxbi.com/api/v1/{pbx_id}/schedule-management/{schedule}/slots/{slot}',
    headers={'Authorization': f'Bearer {YOUR_TOKEN}'}
)
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",
    ],
]);

$response = file_get_contents('https://cockpit.voxbi.com/api/v1/{pbx_id}/schedule-management/{schedule}/slots/{slot}', false, $context);
$data = json_decode($response, true);
print_r($data);
Sample request
No request example provided.
No example for this status.
{}
"error": "Authorization Token is missing"
}
Cache-Control string
example: private, must-revalidate
Connection string
example: keep-alive
Content-Type string
example: application/json
Vary string
example: Origin
X-RateLimit-Limit integer
Max requests allowed in the current rate-limit window.
example: 60
X-RateLimit-Remaining integer
Requests remaining in the current rate-limit window.
example: 57
No example for this status.
{}
"message": []
"Data not found"
]
}
Cache-Control string
example: private, must-revalidate
Connection string
example: keep-alive
Content-Type string
example: application/json
Vary string
example: Origin
X-RateLimit-Limit integer
Max requests allowed in the current rate-limit window.
example: 60
X-RateLimit-Remaining integer
Requests remaining in the current rate-limit window.
example: 57
{}
"errors": {}
"filter": [],
"The filter field must be an array."
],
"sort": [],
"The sort field must be a string."
],
"page": [],
"The page field must be an integer."
],
"per_page": []
"The per page field must be an integer."
]
}
}
Cache-Control string
example: private, must-revalidate
Connection string
example: keep-alive
Content-Type string
example: application/json
Vary string
example: Origin
X-RateLimit-Limit integer
Max requests allowed in the current rate-limit window.
example: 60
X-RateLimit-Remaining integer
Requests remaining in the current rate-limit window.
example: 57