Voxbi Cockpit APIs
All endpoints

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/json

Request body · required

Request schema
status*string
The validation decision for the home office request.
enum: accepted rejected
example: accepted
commentstring | 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 missing
Forbidden: 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