Skip to content

List your own requests and where each one has got to (user)

Everything this employee has asked for - absence, illness and special leave, home office days, time-point corrections, and requests to remove already approved days - newest first, each with where it stands in its approval chain.

The mirror of the pending queues: those list what is waiting on you to decide, this lists what you asked for. progress is the same shape either way, because "who is holding my request" is one question asked from two sides.

Read this rather than v1's own-requests listing when you need status. That one returns a flat accepted_by array of names and answers, with no step, no total and nobody identified as currently holding the request, so "at step 2 of 3, waiting on HR" cannot be built from it.

Every status by default, not only pending: a settled request is the more common thing to look at, and GET /v2/{pbx}/requests/{kind}/{id}/trail explains how it got there.

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[state] query · string
Narrow to requests still awaiting a decision (`open`) or to those already decided, withdrawn or removed (`settled`). Omit for both. Open-or-settled rather than a raw status, because the two tables behind this feed do not share a status vocabulary: a transaction is `pending` or `pending_removal` while open, a correction only `pending`, and their settled values differ again. Each entry still carries its exact stored `status`, so finer grain is read there.
enum: open settled
filter[kind] query · array
Limit the feed to these request kinds. Omit for all three, which is what a plain "my requests" screen wants.
page query · integer
Page number to return.
per_page query · integer
Number of entries per page. Defaults to `100`, maximum `5000`. A value above the maximum is rejected with `422` rather than silently truncated.
accept header · string
example: application/json

Responses

OK. Paginated own requests with their approval progress.
Response schema
data*array<object>
[]object
pagination*object
page*integer
example: 1
total_pages*integer
example: 3
total*integer
example: 24
per_page*integer
example: 10
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}/requests
Base URL
Request sample
curl -X GET 'https://cockpit.voxbi.com/api/v1/v2/{pbx}/employee/{employee}/requests' \
  -H 'Authorization: Bearer YOUR_TOKEN'
const response = await fetch('https://cockpit.voxbi.com/api/v1/v2/{pbx}/employee/{employee}/requests', {
  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}/requests',
    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}/requests', 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