Submit a validation decision for a home office request (user)
Records the authenticated validator's decision (accepted or rejected) on a home office request and processes the approval against the underlying Tempus transaction. The authenticated user must have an associated employee record. A validator may only submit one decision per request.
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
home_office_request_id
path · string · uuid
*
UUID of the home office request (Tempus transaction)
accept
header · string
example:
application/jsonRequest body · required
Request schema
status*string
The validation decision for the home office request.
enum:
accepted rejectedexample:
acceptedcommentstring | null
Optional free-form note explaining the decision.
length: 0–1000
example:
Approved as requested.Responses
Response schema
messagestring
Bad Request: the home office request is not in pending status and cannot be validated.
Response schema
messagestring
Authorization Token Missing. This error is returned when the authorization token is missing.
Response schema
errorstring
Error message
example:
Authorization Token is missingForbidden: the authenticated user is not allowed to validate this request, or has no associated employee record.
Response schema
messagestring
Data Not Found. This error is returned when the requested data is not found.
Response schema
messagearray<string>
[]string
Conflict: the authenticated validator has already submitted a decision for this request.
Response schema
messagestring
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/{home_office_request_id}/validations
Base URL
Request sample
curl -X POST 'https://cockpit.voxbi.com/api/v1/{pbx_id}/home-office-requests/{home_office_request_id}/validations' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
--data '{"status":"accepted","comment":"Approved as requested."}'
const response = await fetch('https://cockpit.voxbi.com/api/v1/{pbx_id}/home-office-requests/{home_office_request_id}/validations', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${YOUR_TOKEN}`,
},
body: JSON.stringify({
"status": "accepted",
"comment": "Approved as requested."
}),
});
const data = await response.json();
console.log(data);
import requests
response = requests.post('https://cockpit.voxbi.com/api/v1/{pbx_id}/home-office-requests/{home_office_request_id}/validations',
headers={'Authorization': f'Bearer {YOUR_TOKEN}'},
json={
"status": "accepted",
"comment": "Approved as requested."
}
)
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' => '{
\"status\": \"accepted\",
\"comment\": \"Approved as requested.\"
}',
],
]);
$response = file_get_contents('https://cockpit.voxbi.com/api/v1/{pbx_id}/home-office-requests/{home_office_request_id}/validations', false, $context);
$data = json_decode($response, true);
print_r($data);
Sample request
{ … }
"status": "accepted",
"comment": "Approved as requested."
}
{ … }
"message": "Validation created successfully."
}
{ … }
"message": "The request is not pending and cannot be validated."
}
{ … }
"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{ … }
"message": "This action is unauthorized."
}
{ … }
"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{ … }
"message": "You have already validated this request."
}
{ … }
"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