Voxbi Cockpit APIs
All endpoints

List compiled workshifts for an employee (user)

Returns the paginated list of compiled (precomputed) workshift entries for a single Tempus employee within the given PBX tenant. Each entry summarizes the worked time the Tempus engine has rolled up for one calendar day, attributing it to the employee's effective work shift and work week.

Results are sorted by date descending by default and support from/to date filtering. The authenticated user may only read their own compiled workshifts; requesting another employee's data returns 403.

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.
employee_id path · string · uuid *
UUID of the Tempus employee whose compiled workshifts are listed.
filter[from] query · string · date
Include only entries on or after this calendar date (YYYY-MM-DD).
filter[to] query · string · date
Include only entries on or before this calendar date (YYYY-MM-DD).
sort query · string
Sort field. Use `date` for ascending or `-date` for descending.
enum: date -date
page query · integer
Page number to retrieve.
per_page query · integer
Number of records per page (1 to 100).
accept header · string
example: application/json

Responses

Paginated collection of compiled workshift entries.
Response schema
data*array<object>
Each item — A single compiled (precomputed) workshift entry for one Tempus employee on one calendar day, as serialized by the V1 `CompiledUserWorkshiftResource`. Each record summarizes the worked time the Tempus engine has rolled up for that day, attributing it to the employee's effective work shift and the ISO-style work week it falls into. This object documents the exact keys returned by the resource, not the raw database column names. Several keys are intentionally renamed for the public API: `mxvp_user_id` is the owning Pbx (tenant) identifier, `ext_id` is the Tempus employee identifier, and `user_workshift_id` is the linked employee work-shift identifier. The `date` value is normalized to a calendar date (YYYY-MM-DD), while `create_time` is the record's creation timestamp formatted as `YYYY-MM-DD HH:MM:SS`. Records are read-only: they are produced by the Tempus compilation process and exposed through the list endpoint, which supports `from`/`to` date filtering and sorting by `date`.
id*string · uuid
Unique identifier of the compiled workshift record.
read-only
example: 550e8400-e29b-41d4-a716-446655440000
mxvp_user_id*string · uuid
Identifier of the Pbx (tenant) that owns this record (the raw `pbx_id` column). Named `mxvp_user_id` in the public API for historical reasons.
example: 550e8400-e29b-41d4-a716-446655440001
ext_id*string · uuid
Identifier of the Tempus employee this compiled workshift belongs to (the raw `employee_id` column).
example: 550e8400-e29b-41d4-a716-446655440002
user_workshift_id*string | null · uuid
Identifier of the employee work shift this entry was compiled against (the raw `employee_work_shift_id` column). Null when no specific work shift was associated with the day.
example: 550e8400-e29b-41d4-a716-446655440003
date*string | null · date
Calendar day this entry summarizes, normalized to YYYY-MM-DD. Null only if no date is set on the underlying record.
example: 2024-03-01
workshift_week*integer · int32
Week number the day falls into within the work-shift cycle, used to group daily entries into weekly totals.
example: 9
worktime*integer · int32
Total compiled worked time for the day, expressed in seconds.
example: 28800
create_time*string | null
Timestamp when the record was created, formatted as `YYYY-MM-DD HH:MM:SS` (not ISO 8601). Null when the underlying creation timestamp is not set.
read-only
example: 2024-03-01 08:29:07
links*object
firststring
The first page of the resource
example: http://localhost/api/v1/resources?page=1
laststring
The last page of the resource
example: http://localhost/api/v1/resources?page=1
prevnull | string
The previous page of the resource
nextnull | string
The next page of the resource
meta*object
current_pageinteger
The current page of the resource
≥ 1
example: 1
fromnull | integer
The first item of the resource
≥ 1
example: 1
last_pageinteger
The last page of the resource
≥ 1
example: 1
linksarray<object>
urlstring | null
The url of the resource (null for the boundary prev/next links)
example: http://localhost/api/v1/resources?page=1
labelstring
The label of the resource
example: first
activeboolean
The status of the resource
example: 1
pathstring
The path of the resource
example: http://localhost/api/v1/resources
per_pageinteger
The number of items per page of the resource
≥ 1
example: 15
tonull | integer
The last item of the resource
≥ 1
example: 1
totalinteger
The total number of items of the resource
≥ 0
example: 1
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 may only view their own compiled workshifts.
Response schema
messagestring
example: You can only view your own compiled user workshifts.
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
get https://cockpit.voxbi.com/api/v1/{pbx_id}/user/{employee_id}/compiled-user-workshifts
Base URL
Request sample
curl -X GET 'https://cockpit.voxbi.com/api/v1/{pbx_id}/user/{employee_id}/compiled-user-workshifts' \
  -H 'Authorization: Bearer YOUR_TOKEN'
const response = await fetch('https://cockpit.voxbi.com/api/v1/{pbx_id}/user/{employee_id}/compiled-user-workshifts', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${YOUR_TOKEN}`,
  },
});

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

response = requests.get('https://cockpit.voxbi.com/api/v1/{pbx_id}/user/{employee_id}/compiled-user-workshifts',
    headers={'Authorization': f'Bearer {YOUR_TOKEN}'}
)
response.raise_for_status()
data = response.json()
print(data)
<?php
$context = stream_context_create([
    'http' => [
        'method'  => 'GET',
        'header'  => "Content-Type: application/json\r\nAuthorization: Bearer YOUR_TOKEN",
    ],
]);

$response = file_get_contents('https://cockpit.voxbi.com/api/v1/{pbx_id}/user/{employee_id}/compiled-user-workshifts', false, $context);
$data = json_decode($response, true);
print_r($data);
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