Skip to content

Preview where your next request would go (user)

Who would be asked to approve this employee's next request, per request type, before anything is raised. Lets a request form say "this will go to your team lead, then HR".

Read from the current chain configuration rather than from any request, which is what makes it answerable in advance. It is a preview, not a promise: a request freezes its own chain snapshot when raised, so a chain edited in between routes it differently.

covered: false is the field to act on - nobody would be asked at all, either because no chain covers this employee or because the one that does staffs nobody who may decide that type for them. Such a request can still be raised and then sits pending with nobody able to move it.

Your own employee record only: another employee's id 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 path · string · uuid *
UUID of the PBX tenant. Must be the tenant the token belongs to; anything else is refused with 403 rather than answered from another tenant.
employee path · string · uuid *
UUID of the Tempus employee whose requests these are. Must be the caller's own employee record: another employee's id is refused rather than quietly answered with your own.
filter[kind] query · array
Limit the feed to these request kinds. Omit for all three, which is what a plain "my requests" screen wants.
accept header · string
example: application/json

Responses

OK. One routing preview per requested kind.
Response schema
data*array<object>
kind*string
enum: absences home-office time-point-corrections
example: absences
module*string
The configuration unit this kind maps to, as a chain staffs it.
enum: absence_requests home_office_requests time_point_corrections
example: absence_requests
covered*boolean
Whether anybody would actually be asked. False covers two situations that look the same to the requester: no chain covers this employee, or one does and staffs nobody who may decide this type for them - which happens when the only validator staffed is the requester themselves. The load-bearing field. A request raised anyway can still be created and then sits pending with nobody able to move it, so a client should say so before the employee submits.
example: 1
scopestring | null
How specifically the winning chain covers this employee, for a client that wants to explain why this chain and not another. Most specific wins.
enum: employee department company all null
example: department
chainobject | null
The chain that would route it, or null when none covers this employee.
idstring · uuid
example: 550e8400-e29b-41d4-a716-446655440060
namestring | null
Nullable: naming a chain is optional and most are identified by who they cover. Offered for reference - the steps are the answer a form needs.
example: Sales department
steps*array<object>
Who would be asked, in the order they would be asked.
orderinteger
Place in the chain, counting from 1.
example: 1
validatorsarray<string>
The people staffed on this step for this request type. The requester is left out of their own chain unless the tenant lets them sign off this kind of request.
[]string
modestring | null
Whether every approver must answer, or only some.
enum: all partial null
example: partial
requiredinteger | null
How many of them have to answer. With `mode`, this is what tells two request types apart when they share their approvers but not their counts.
example: 1
supervisors*array<object>
People on the chain outside the ladder: told about the request, and where granted the power, able to settle it at any point. v1 calls these supervisors.
namestring | null
example: Weber Ines
can_decideboolean
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
Forbidden. The caller is outside this PBX, or asked for an employee record that is not their own.
Response schema
messagestring
example: You do not have access to this PBX.
Not found. No such employee in this PBX.
Response schema
messagestring
example: User not found.
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/v2/{pbx}/employee/{employee}/approval-routing
Base URL
Request sample
curl -X GET 'https://cockpit.voxbi.com/api/v1/v2/{pbx}/employee/{employee}/approval-routing' \
  -H 'Authorization: Bearer YOUR_TOKEN'
const response = await fetch('https://cockpit.voxbi.com/api/v1/v2/{pbx}/employee/{employee}/approval-routing', {
  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/v2/{pbx}/employee/{employee}/approval-routing',
    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/v2/{pbx}/employee/{employee}/approval-routing', 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.
No example for this status.
{ … }
"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