Voxbi Cockpit APIs
All endpoints

List companies associated with an employee (user)

Returns a paginated list of the employee's contracts, each enriched with its company details. When no active filter is supplied, the currently active contract is flagged as the main company. Filtering and sorting are powered by Spatie Query Builder. The caller may only list their own companies: the request is rejected with 403 when the authenticated user has no access to the tenant or the employee record is not their own, and with 404 when the employee cannot be found.

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 employee whose companies are requested.
filter[from] query · string · date
Return contracts whose start date is on or after this date.
filter[to] query · string · date
Return contracts whose end date is on or before this date. Must be on or after filter[from].
filter[active] query · string
Restrict to active (true/1) or ended (false/0) contracts.
enum: true false 1 0
sort query · string
Sort field. Allowed: from (contract_start), to (contract_end). Prefix with - for descending.
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 the employee's companies.
Response schema
dataarray<object>
Each item — Association between a Tempus employee and a company, as serialized by the V1 `UserCompanyResource`. Each record is backed by a Tempus contract row and describes the employee's participation in one company: their working-time balances, contract period, job title, and the company's payroll-relevant settings. This object documents the exact keys returned by the resource, not the raw database columns. Field names are remapped for the integration audience (for example the contract `pbx_id` is exposed as `mxvp_user_id`, and the contract `job_title` is exposed as `title`). The nested `company` object is always present and carries a subset of the related company's fields; its scalar values are null when no company is linked. Monetary and balance values are normalized in the resource: `participation` and `ho_balance` are cast to floating-point numbers, `compensatory_balance` is cast to an integer (defaulting to 0 rather than null), and `main_company` is emitted as the integer 1 or 0 rather than a boolean.
id*string · uuid
Unique identifier of the employee-company association (the underlying Tempus contract id).
read-only
example: 550e8400-e29b-41d4-a716-446655440000
mxvp_user_id*string · uuid
Identifier of the Pbx (tenant) that owns this association. Maps to the contract's `pbx_id`.
example: 550e8400-e29b-41d4-a716-446655440001
ext_id*string | null
External extension identifier resolved for the linked employee, or null when the employee has no associated extension.
example: 1001
company_id*string | null · uuid
Identifier of the company this association links to. Null when no company is set.
example: 550e8400-e29b-41d4-a716-446655440002
participation*number | null · float
Employee's participation ratio in the company, expressed as a fractional value (for example 1.0 for full participation, 0.5 for half). Null when not configured.
example: 1
contract_start*string | null · date-time
Start of the contract period, in ISO 8601 format. Null when not set.
example: 2024-01-01T00:00:00.000000Z
contract_end*string | null · date-time
End of the contract period, in ISO 8601 format. Null for an open-ended contract.
example: 2025-12-31T00:00:00.000000Z
main_company*integer · int32
Whether this is the employee's main (primary) company. Emitted as the integer 1 when true and 0 when false.
enum: 0 1
example: 1
compensatory_balance*integer · int32
Accrued compensatory time balance for the employee, in seconds. Defaults to 0 when no balance is recorded (never null).
example: 3600
ho_balance*number | null · float
Home-office (remote work) balance for the employee, expressed in the configured balance unit. Null when not tracked.
example: 8.5
title*string | null
Job title held by the employee under this contract. Maps to the contract's `job_title`. Null when unset.
example: Sales Representative
department_id*string | null · uuid
Identifier of the department the employee belongs to within the company. Null when unassigned.
example: 550e8400-e29b-41d4-a716-446655440003
delete_date*string | null · date-time
Soft-deletion timestamp of the association, in ISO 8601 format. Null when the association is active (not deleted).
company*object
Subset of the linked company's details. Always present as an object; its scalar fields are null when no company is associated with this contract.
id*string | null · uuid
Unique identifier of the company. Null when no company is linked.
example: 550e8400-e29b-41d4-a716-446655440002
mxvp_user_id*string | null · uuid
Identifier of the Pbx (tenant) that owns the company. Maps to the company's `pbx_id`.
example: 550e8400-e29b-41d4-a716-446655440001
company*string | null
Display name of the company. Maps to the company's `name`. Null when no company is linked.
example: Sales Team
address*string | null
Single-line postal address composed of the company's street, postal code, and city (joined by spaces). Null when none of those parts are set.
example: 100 Market Street 10001 New York
country_cc*string | null
ISO country code of the company's country. Null when no country is set.
example: US
legalHolidays*number | null · float
Number of legally mandated paid leave days granted per year. Maps to the company's `legal_paid_leaves_yearly_days`. Null when not configured.
example: 26
full_time*integer | null · int32
Full-time working time reference for the company, expressed in seconds. Maps to the company's `full_time_seconds`. Null when no company is linked.
example: 144000
salary_lu_id*null
Reserved field for a salary lookup identifier. Currently always null (not yet populated by the API).
overtime_calculation_period_enabled*boolean
Whether overtime is calculated over a defined accounting period for this company. Defaults to false.
example:
overtime_decision_enabled*boolean
Whether overtime requires explicit approval (decision) for this company. Defaults to false.
example:
delete_date*string | null · date-time
Soft-deletion timestamp of the company, in ISO 8601 format. Null when the company is active.
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 authenticated user has no access to the requested tenant, or the requested employee record does not belong to the authenticated user.
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}/user/{employee_id}/user-companies
Base URL
Request sample
curl -X GET 'https://cockpit.voxbi.com/api/v1/{pbx_id}/user/{employee_id}/user-companies' \
  -H 'Authorization: Bearer YOUR_TOKEN'
const response = await fetch('https://cockpit.voxbi.com/api/v1/{pbx_id}/user/{employee_id}/user-companies', {
  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}/user-companies',
    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}/user-companies', 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