Voxbi Cockpit APIs
All endpoints

Get the active Status Changer layout (user)

Resolve and return the active Tempus Status Changer layout for the authenticated user. The PBX is derived server-side from the bearer token and cannot be supplied by the client.

Resolution rules:

  • The user's PBX must be set on the token. If it is not, the request fails with 400.
  • The active layout (is_active = true) for the user's PBX is selected. If the user belongs to a group and an active layout targets that group, the most recently created group-targeted layout wins; otherwise the first active layout for the PBX is returned.
  • If no active layout exists for the PBX, the request fails with 404.

The response is returned in the legacy tempus representation, wrapped in a data envelope, and includes a filters echo of any filter query values.

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>
accept header · string
example: application/json

Responses

Response schema
dataobject
optionsobject
Client behaviour options for the layout.
geoEnableboolean
geoForceboolean
postActionboolean
updateTimerinteger
Status refresh interval in milliseconds.
layoutobject
idstring · uuid
mxvp_user_idstring · uuid
The PBX identifier the layout belongs to.
namestring
displayflagsstring
typestring
delete_datestring | null
tl_layouts_statusesarray<object>
The statuses placed on the layout grid, in the legacy Tempus shape.
tllayout_idstring · uuid
status_idobject
idstring · uuid
mxvp_user_idstring · uuid
namestring
iconstring | null
fontcolorstring
backgroundcolorstring
cssstring
commentstring
payableboolean
actionstring | null
migration_idstring | null
mapping_idinteger
delete_datestring | null
sub_status_layoutsarray<object>
[]object
Free-form object
meta_dataobject
Free-form object
allow_multiselectboolean
sub_status_selection_mandatoryboolean
sub_statusesarray<object>
idstring · uuid
namestring
descriptionstring | null
styleobject
Free-form object
positioninteger
sizeinteger
toggle_status_idstring | null
preview_urlstring · uri
Absolute URL to a preview render of the layout.
filtersobject
Echo of any `filter` query parameters supplied.
Free-form object
The authenticated user has no PBX associated with their token, so no layout can be resolved.
Response schema
No response body.
Authorization Token Missing. This error is returned when the authorization token is missing.
Response schema
errorstring
Error message
example: Authorization Token is missing
Data Not Found. This error is returned when the requested data is not found.
Response schema
messagearray<string>
[]string
get https://cockpit.voxbi.com/api/v1/layout
Base URL
Request sample
curl -X GET 'https://cockpit.voxbi.com/api/v1/layout' \
  -H 'Authorization: Bearer YOUR_TOKEN'
const response = await fetch('https://cockpit.voxbi.com/api/v1/layout', {
  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/layout',
    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/layout', false, $context);
$data = json_decode($response, true);
print_r($data);
{}
"data": {},
"options": {},
"geoEnable": true,
"geoForce": false,
"postAction": false,
"updateTimer": 5000
},
"layout": {},
"id": "550e8400-e29b-41d4-a716-446655440000",
"mxvp_user_id": "550e8400-e29b-41d4-a716-446655440001",
"name": "Customer Support",
"displayflags": "DWML",
"type": "default",
"delete_date": null,
"tl_layouts_statuses": []
{}
"tllayout_id": "550e8400-e29b-41d4-a716-446655440000",
"status_id": {},
"id": "550e8400-e29b-41d4-a716-446655440010",
"mxvp_user_id": "550e8400-e29b-41d4-a716-446655440001",
"name": "Working",
"icon": "briefcase",
"fontcolor": "#FFFFFF",
"backgroundcolor": "#1F8F4E",
"css": "",
"comment": "",
"payable": false,
"action": null,
"migration_id": null,
"mapping_id": 0,
"delete_date": null,
"sub_status_layouts": [],
"meta_data": [],
"allow_multiselect": false,
"sub_status_selection_mandatory": false,
"sub_statuses": []
{}
"id": "550e8400-e29b-41d4-a716-446655440020",
"name": "Customer Support",
"description": "Handling inbound support calls",
"style": {}
"icon_class": "headset"
}
}
]
},
"position": 0,
"size": 3,
"toggle_status_id": null
}
]
},
"preview_url": "https://cockpit.voxbi.com/layout-preview/550e8400-e29b-41d4-a716-446655440000"
},
"filters": []
}
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
{}
"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