Validate several home office day-rows at once
Apply a single decision (accepted or rejected) to several home office
day-rows in one call, for example a whole request group or week. The acting
user must be a validator with home office scope over the affected employees.
Rows that are not pending, or that the acting validator has already decided,
are skipped rather than failing the batch. The response reports how many rows
were processed and skipped.
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
*
Identifier of the PBX tenant
Request body · required
Request schema
ids*array<string>
Identifiers of the home office day-rows to validate.
items: 1–100
[]string · uuid
example:
550e8400-e29b-41d4-a716-446655440030status*string
The decision to apply to every listed row.
enum:
accepted rejectedexample:
acceptedcommentstring | null
Optional note stored on each created approval.
length: 0–1000
example:
Approved for the whole week.Responses
The decision was applied. Reports processed and skipped counts.
Response schema
message*string
example:
Validation completed.processed*integer
Number of rows a decision was recorded for.
example:
2skipped*integer
Rows skipped (not pending, or already decided by this validator).
example:
0Authorization Token Missing. This error is returned when the authorization token is missing.
Response schema
errorstring
Error message
example:
Authorization Token is missingThe acting user is not a validator for one of the listed rows.
Response schema
No response body.
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
post
https://cockpit.voxbi.com/api/v1/{pbx_id}/home-office-requests/validations
Base URL
Request sample
curl -X POST 'https://cockpit.voxbi.com/api/v1/{pbx_id}/home-office-requests/validations' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"ids":["550e8400-e29b-41d4-a716-446655440030","550e8400-e29b-41d4-a716-446655440031"],"status":"accepted"}'
const response = await fetch('https://cockpit.voxbi.com/api/v1/{pbx_id}/home-office-requests/validations', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${YOUR_TOKEN}`,
},
body: JSON.stringify({
"ids": [
"550e8400-e29b-41d4-a716-446655440030",
"550e8400-e29b-41d4-a716-446655440031"
],
"status": "accepted"
}),
});
const data = await response.json();
console.log(data);
import requests
response = requests.post('https://cockpit.voxbi.com/api/v1/{pbx_id}/home-office-requests/validations',
headers={'Authorization': f'Bearer {YOUR_TOKEN}'},
json={
"ids": [
"550e8400-e29b-41d4-a716-446655440030",
"550e8400-e29b-41d4-a716-446655440031"
],
"status": "accepted"
}
)
response.raise_for_status()
data = response.json()
print(data)
<?php
$context = stream_context_create([
'http' => [
'method' => 'POST',
'header' => "Content-Type: application/json\r\nAuthorization: Bearer YOUR_TOKEN",
'content' => '{
\"ids\": [
\"550e8400-e29b-41d4-a716-446655440030\",
\"550e8400-e29b-41d4-a716-446655440031\"
],
\"status\": \"accepted\"
}',
],
]);
$response = file_get_contents('https://cockpit.voxbi.com/api/v1/{pbx_id}/home-office-requests/validations', false, $context);
$data = json_decode($response, true);
print_r($data);
Sample request
{ … }
"ids": [ … ],
"550e8400-e29b-41d4-a716-446655440030",
"550e8400-e29b-41d4-a716-446655440031"
],
"status": "accepted"
}
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:
57No 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