Create a slot in a schedule (user)
Creates a recurring time slot within a schedule. The slot's start and end times must fall within the schedule's daily bounds, and the column index is assigned automatically when not supplied. The schedule must belong to a department the authenticated user is allowed to manage.
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.
accept
header · string
example:
application/jsonRequest body · required
Request schema
column_indexinteger
Optional column index. Assigned automatically when omitted.
≥ 0≤ 99
example:
0start_time*string
Slot start time as `HH:MM`. Must be within the schedule bounds.
example:
09:00end_time*string
Slot end time as `HH:MM`. Must be after start_time and within bounds.
example:
17:00recurrence_type*string
Recurrence rule for the slot.
enum:
none daily weekly customexample:
weeklyrecurrence_daysarray<integer>
Weekday numbers the slot recurs on. Required when recurrence_type is weekly or custom.
[]integer
ISO weekday number (1 = Monday through 7 = Sunday).
≥ 1≤ 7
recurrence_start_date*string · date
First date the recurrence applies. Must be today or later.
example:
2026-03-02recurrence_end_datestring | null · date
Last date the recurrence applies. Must be on or after the start date.
example:
2026-12-31recurrence_countinteger | null
Optional number of occurrences.
≥ 1≤ 730
example:
60Responses
The slot was created.
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-446655440000scheduleId*string · uuid
Identifier of the parent Tempus schedule this slot belongs to.
example:
550e8400-e29b-41d4-a716-446655440001columnIndex*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:
0startTime*string
Daily start time of the slot in 24-hour `HH:MM` form. Seconds are trimmed
from the stored value before serialization.
example:
09:00endTime*string
Daily end time of the slot in 24-hour `HH:MM` form. Seconds are trimmed
from the stored value before serialization.
example:
17:30recurrenceType*string
Recurrence frequency rule that governs how the slot repeats. Determines
how `recurrenceDays`, `recurrenceEndDate` and `recurrenceCount` are
interpreted.
enum:
daily weekly monthly noneexample:
weeklyrecurrenceDays*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:
1recurrenceStartDate*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-01recurrenceEndDate*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-31recurrenceCount*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:
12isActive*boolean
Whether the slot is currently active. Inactive slots are retained but are
excluded from grid layout and column-index assignment.
example:
1createdByobject | 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-446655440002namestring
Display name of the user who created the slot.
example:
Customer SupportAuthorization Token Missing. This error is returned when the authorization token is missing.
Response schema
errorstring
Error message
example:
Authorization Token is missingThe 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
post
https://cockpit.voxbi.com/api/v1/{pbx_id}/schedule-management/{schedule}/slots
Base URL
Request sample
curl -X POST 'https://cockpit.voxbi.com/api/v1/{pbx_id}/schedule-management/{schedule}/slots' \
-H 'Authorization: Bearer YOUR_TOKEN'
const response = await fetch('https://cockpit.voxbi.com/api/v1/{pbx_id}/schedule-management/{schedule}/slots', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${YOUR_TOKEN}`,
},
});
const data = await response.json();
console.log(data);
import requests
response = requests.post('https://cockpit.voxbi.com/api/v1/{pbx_id}/schedule-management/{schedule}/slots',
headers={'Authorization': f'Bearer {YOUR_TOKEN}'}
)
response.raise_for_status()
data = response.json()
print(data)
<?php
$context = stream_context_create([
'http' => [
'method' => 'POST',
'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', 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:
57No 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