Voxbi Cockpit APIs
All endpoints

List overtime calculation periods for a tenant (user)

Returns a paginated list of overtime calculation periods belonging to the PBX tenant, ordered by start date descending. Each item is serialized by the OvertimeCalculationPeriodResource. The caller must be authorized to view overtime periods for the tenant, otherwise the request is rejected with 403. Results may be filtered by company, by start/end date bounds and by lock state.

This endpoint is served under the standard /api/v1 host (not the Tempus host).

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.
filter[company_id] query · string · uuid
Restrict results to a single Tempus company.
filter[from] query · string · date
Only include periods whose start date is on or after this date.
filter[to] query · string · date
Only include periods whose end date is on or before this date.
filter[locked] query · string
Filter by lock state. A truthy value returns only locked periods; a falsy value returns all periods that are not locked.
enum: true false 1 0
page query · integer
Page number to retrieve.
per_page query · integer
Number of items per page.
accept header · string
example: application/json

Responses

Paginated list of overtime calculation periods.
Response schema
dataarray<object>
Each item — A Tempus overtime calculation period as serialized by the V1 `OvertimeCalculationPeriodResource`. An overtime period defines a bounded window (`start` to `end`) over which an employee's overtime balance is accumulated and, once finalized, locked against further changes. This object documents the exact keys returned by the resource, not the raw database columns. The `ext_id` field is resolved dynamically: it prefers the telephony extension identifier of the linked employee and falls back to the underlying user identifier when no extension is linked. The `locked` flag is derived from the period's status (true only when the status is `locked`), and `delete_date` reflects the soft-delete timestamp (the period is normally only present in responses while not deleted). Timestamp fields (`start`, `end`, `delete_date`) are serialized as ISO 8601 strings in UTC.
id*string · uuid
Unique identifier of the overtime calculation period.
read-only
example: 550e8400-e29b-41d4-a716-446655440000
mxvp_user_id*string · uuid
Identifier of the Pbx (tenant) that owns this period. Mirrors the model's `pbx_id` column, exposed under the integration-facing `mxvp_user_id` name.
example: 550e8400-e29b-41d4-a716-446655440001
company_id*string · uuid
Identifier of the Tempus company this period belongs to.
example: 550e8400-e29b-41d4-a716-446655440002
ext_id*string | null · uuid
External reference for the employee the period applies to. Resolved to the telephony extension identifier of the linked employee when one exists, otherwise falling back to the underlying user identifier. Null when the period is not associated with any user.
example: 550e8400-e29b-41d4-a716-446655440003
start*string | null · date-time
Start of the overtime calculation window, serialized as an ISO 8601 UTC timestamp. Null when no start date is set.
example: 2024-03-01T00:00:00.000000Z
end*string | null · date-time
End of the overtime calculation window, serialized as an ISO 8601 UTC timestamp. Null when no end date is set.
example: 2024-03-31T00:00:00.000000Z
locked*boolean
Whether the period is locked. True only when the period's status is `locked`, meaning its overtime balance is finalized and no longer editable. False for all other statuses (draft, open, ongoing, processed).
example:
delete_date*string | null · date-time
Soft-delete timestamp, serialized as an ISO 8601 UTC timestamp. Null for active (non-deleted) periods, which is the usual case in API responses.
linksobject
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
metaobject
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 caller is not authorized to view overtime periods for this tenant.
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
get https://cockpit.voxbi.com/api/v1/{pbx_id}/overtime-calculation-periods
Base URL
Request sample
curl -X GET 'https://cockpit.voxbi.com/api/v1/{pbx_id}/overtime-calculation-periods' \
  -H 'Authorization: Bearer YOUR_TOKEN'
const response = await fetch('https://cockpit.voxbi.com/api/v1/{pbx_id}/overtime-calculation-periods', {
  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}/overtime-calculation-periods',
    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}/overtime-calculation-periods', 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