Group Flexible Seating¶
This feature allows users within an office to use any cubicle within the office, log in to the host phone, and have the host phone provisioned with the guest’s device profile settings. The Flexible Seating feature has similar functionality to the Hoteling feature; however, it uses a different licensing model and allows the device to be provisioned with the guest’s profile settings.
Retrieve list of flexible seating hosts¶
-
GET
/api/v1/tenants/
(string: tenant_id)/groups/
(string: group_id)/services/flex_seats/hosts/
¶ Retrieve a list flexible seating hosts.
Authorization rights: minimum End User.
Example request:
GET /api/v1/tenants/foo/groups/foogroup/services/flex_seats/hosts/ HTTP/1.1 Host: example.com { "extended_info": true, "guest_info": true, "policies_info": true, }
- Request JSON Object:
extended_info (boolean) – if true the response will be enriched with extended info (equivalent to group_get_flexible_seating_host response).
guest_info (boolean) – if true the response will be enriched with guest info (equivalent to group_get_flexible_seating_host_guest_info response).
policies_info (boolean) – if true the response will be enriched with policies info (equivalent to group_get_flexible_seating_host_policies_info response).
sensitiveUserIdStarts (string) – See sensitiveUserIdStarts from Search criteria.
sensitiveUserIdContains (string) – See sensitiveUserIdContains from Search criteria.
sensitiveUserIdEquals (string) – See sensitiveUserIdEquals from Search criteria.
insensitiveUserIdStarts (string) – See insensitiveUserIdStarts from Search criteria.
insensitiveUserIdContains (string) – See insensitiveUserIdContains from Search criteria.
insensitiveUserIdEquals (string) – See insensitiveUserIdEquals from Search criteria.
sensitiveServiceInstanceNameStarts (string) – See sensitiveServiceInstanceNameStarts from Search criteria.
sensitiveServiceInstanceNameContains (string) – See sensitiveServiceInstanceNameContains from Search criteria.
sensitiveServiceInstanceNameEquals (string) – See sensitiveServiceInstanceNameEquals from Search criteria.
insensitiveServiceInstanceNameStarts (string) – See insensitiveServiceInstanceNameStarts from Search criteria.
insensitiveServiceInstanceNameContains (string) – See insensitiveServiceInstanceNameContains from Search criteria.
insensitiveServiceInstanceNameEquals (string) – See insensitiveServiceInstanceNameEquals from Search criteria.
insensitiveExtensionStarts (string) – See insensitiveExtensionStarts from Search criteria.
insensitiveExtensionContains (string) – See insensitiveExtensionContains from Search criteria.
insensitiveExtensionEquals (string) – See insensitiveExtensionEquals from Search criteria.
insensitiveDnStarts (string) – See insensitiveDnStarts from Search criteria.
insensitiveDnContains (string) – See insensitiveDnContains from Search criteria.
insensitiveDnEquals (string) – See insensitiveDnEquals from Search criteria.
sensitiveUserDepartmentEquals (string) – See sensitiveDepartmentEquals from Search criteria.
responseSizeLimit (integer) – See responseSizeLimit from Search criteria.
Example response:
HTTP/1.1 200 OK { "hosts": [ { "serviceUserId": "ApioGrpTest_fs001@sip.netaxis.be", "name": "Flex Seat 1", "phoneNumber": "+3225126761", "extension": "9991", "department": { "tenantId": "ApioSpTest", "groupId": "ApioGrpTest", "departmentName": "test_department_initial", "fullPathName": "test_department_parent_1 \\ test_department_initial" }, "active": true } ] }
- Response JSON Object:
hosts (array) – The list of flexible seating hosts. See Flexible Seating Host in list attributes.
- Status Codes:
200 OK – OK
Create a Flexible Seating Host¶
-
POST
/api/v1/tenants/
(string: tenant_id)/groups/
(string: group_id)/services/flex_seats/hosts/
¶ Create a new flexible seating host in the group.
Authorization rights: minimum Group Admin.
Example request:
POST /api/v1/tenants/foo/groups/foogroup/services/flex_seats/hosts/ HTTP/1.1 Host: example.com { "serviceUserId": "ApioGrpTest_fs003@sip.netaxis.be", "name": "Flex Seat 3", "cliFirstName": "Flex Seat 3", "cliLastName": "Test", "phoneNumber": "+3225126780", "extension": "9988", "password": "ChangeMe", "department": { "tenantId": "ApioSpTest", "groupId": "ApioGrpTest", "departmentName": "test_department_initial", "fullPathName": "test_department_parent_1 \\ test_department_initial" }, "language": "English", "timeZone": "Europe/Berlin", "cliPhoneNumber": "+3225126780", "endpoint": { "accessDevice": { "name": "APIO Test Device Flex Seat 2", "level": "Group" }, "linePort": "test_flex_seat5@sip.netaxis.be", "contacts": [] }, "networkClassOfService": "2", "active": true } OR { "serviceUserId": "ApioGrpTest_fs003@sip.netaxis.be", "name": "Flex Seat 3", "cliFirstName": "Flex Seat 3", "cliLastName": "Test", "phoneNumber": "+3225126780", "extension": "9988", "password": "ChangeMe", "department": { "tenantId": "ApioSpTest", "groupId": "ApioGrpTest", "departmentName": "test_department_initial", "fullPathName": "test_department_parent_1 \\ test_department_initial" }, "language": "English", "timeZone": "Europe/Berlin", "cliPhoneNumber": "+3225126780", "endpoint": { "deviceType": "Aastra 55i", "linePort": "test_flex_seat5@sip.netaxis.be", "contacts": [] }, "networkClassOfService": "2", "active": true }
- Request JSON Object:
serviceUserId (string) – See ‘serviceUserId’ as defined in Flexible Seating Host attributes.
name (string) – See ‘name’ as defined in Flexible Seating Host attributes.
cliLastName (string) – See ‘cliLastName’ as defined in Flexible Seating Host attributes.
cliFirstName (string) – See ‘cliFirstName’ as defined in Flexible Seating Host attributes.
phoneNumber (string) – See ‘phoneNumber’ as defined in Flexible Seating Host attributes.
extension (string) – See ‘extension’ as defined in Flexible Seating Host attributes.
department (object) – See ‘department’ as defined in Flexible Seating Host attributes.
language (string) – See ‘language’ as defined in Flexible Seating Host attributes.
timeZone (string) – See ‘timeZone’ as defined in Flexible Seating Host attributes.
cliPhoneNumber (string) – See ‘cliPhoneNumber’ as defined in Flexible Seating Host attributes.
password (string) – See ‘password’ as defined in Flexible Seating Host attributes.
endpoint (object) – See ‘endpoint’ as defined in Flexible Seating Host attributes.
networkClassOfService (string) – See ‘networkClassOfService’ as defined in Flexible Seating Host attributes.
Example response:
- Response:
Similar to GET instance method response.
- Status Codes:
201 Created – instance created
400 Bad Request – invalid request due to invalid parameters
404 Not Found – service not assigned
Retrieve a Flexible Seating Host¶
-
GET
/api/v1/tenants/
(string: tenant_id)/groups/
(string: group_id)/services/flex_seats/hosts/
(string: user_id)/
¶ Retrieve a Flexible Seating Host.
Authorization rights: minimum Group Admin.
Example request:
GET /api/v1/tenants/foo/groups/foogroup/services/flex_seats/hosts/host_id/ HTTP/1.1 Host: example.com { "guest_info": true, "policies_info": true, }
- Request JSON Object:
guest_info (boolean) – if true the response will be enriched with guest info (equivalent to group_get_flexible_seating_host_guest_info response).
policies_info (boolean) – if true the response will be enriched with policies info (equivalent to group_get_flexible_seating_host_policies_info response).
Example response:
HTTP/1.1 200 OK { "name": "Flex Seat 1", "phoneNumber": "+3225126761", "extension": "9991", "department": { "tenantId": "ApioSpTest", "groupId": "ApioGrpTest", "departmentName": "test_department_initial" }, "language": "English", "timeZone": "Europe/Berlin", "timeZoneDisplayName": "(GMT+01:00) Europe/Berlin", "cliLastName": "Test", "cliFirstName": "Flex Seat 1", "publicUserIdentity": "", "aliases": [], "defaultAlias": "ApioGrpTest_fs001@sip.netaxis.be", "endpoint": { "accessDevice": { "name": "APIO Test Device Flex Seat", "level": "Group" }, "contacts": [], "staticRegistrationCapable": false, "useDomain": true, "linePort": "test_flex_seat1@sip.netaxis.be", "lineNumber": 0, "pathHeader": "" }, "networkClassOfService": "1", "active": true, "serviceUserId": "ApioGrpTest_fs001@sip.netaxis.be" }
- Response JSON Object:
name (string) – See ‘name’ as defined in Flexible Seating Host attributes.
cliLastName (string) – See ‘cliLastName’ as defined in Flexible Seating Host attributes.
cliFirstName (string) – See ‘cliFirstName’ as defined in Flexible Seating Host attributes.
phoneNumber (string) – See ‘phoneNumber’ as defined in Flexible Seating Host attributes.
extension (string) – See ‘extension’ as defined in Flexible Seating Host attributes.
department (object) – See ‘department’ as defined in Flexible Seating Host attributes.
language (string) – See ‘language’ as defined in Flexible Seating Host attributes.
timeZone (string) – See ‘timeZone’ as defined in Flexible Seating Host attributes.
aliases (array) – See ‘aliases’ as defined in Flexible Seating Host attributes.
publicUserIdentity (string) – See ‘publicUserIdentity’ as defined in Flexible Seating Host attributes.
cliPhoneNumber (string) – See ‘cliPhoneNumber’ as defined in Flexible Seating Host attributes.
password (string) – See ‘password’ as defined in Flexible Seating Host attributes.
endpoint (object) – See ‘endpoint’ as defined in Flexible Seating Host attributes.
networkClassOfService (string) – See ‘networkClassOfService’ as defined in Flexible Seating Host attributes.
guestInfo (object) – An object as defined in Flexible Seating Guest Info.
policiesInfo (object) – An object as defined in Flexible Seating Policies Info.
- Status Codes:
200 OK – no error
400 Bad Request – invalid request due to invalid parameters
404 Not Found – host not found or service not assigned
Update a Flexible Seating Host¶
-
PUT
/api/v1/tenants/
(string: tenant_id)/groups/
(string: group_id)/services/flex_seats/hosts/
(string: user_id)/
¶ Update a flexible seating host in the group.
Authorization rights: minimum Group Admin.
Example request:
PUT /api/v1/tenants/fooTenant/groups/fooGroup/services/flex_seats/hosts/host_id/ HTTP/1.1 Host: example.com Content-Type: "application/json" { "name": "Flex Seat 1 modified", "cliFirstName": "Flex Seat 1 modified", "cliLastName": "Test modified", "phoneNumber": "+3225126779", "extension": "9990", "password": "ChangeMe2", "department": None, "language": "English", "timeZone": "Europe/Berlin", "cliPhoneNumber": "+3225126779", "endpoint": { "accessDevice": { "name": "APIO Test Device Buttons", "level": "Group" }, "linePort": "test_modified@sip.netaxis.be", "contacts": [] }, "networkClassOfService": "2", "active": true, "guestInfo": { "enforceAssociationLimit": false, "associationLimitHours": 100, "accessLevel": "Group" }, "policiesInfo": { "allowEmergencyCalls": false, "allowCallsToVoicePortal": false } }
- Request JSON Object:
name (string) – See ‘name’ as defined in Flexible Seating Host attributes.
cliLastName (string) – See ‘cliLastName’ as defined in Flexible Seating Host attributes.
cliFirstName (string) – See ‘cliFirstName’ as defined in Flexible Seating Host attributes.
phoneNumber (string) – See ‘phoneNumber’ as defined in Flexible Seating Host attributes.
extension (string) – See ‘extension’ as defined in Flexible Seating Host attributes.
department (object) – See ‘department’ as defined in Flexible Seating Host attributes.
language (string) – See ‘language’ as defined in Flexible Seating Host attributes.
timeZone (string) – See ‘timeZone’ as defined in Flexible Seating Host attributes.
aliases (array) – See ‘aliases’ as defined in Flexible Seating Host attributes.
publicUserIdentity (string) – See ‘publicUserIdentity’ as defined in Flexible Seating Host attributes.
cliPhoneNumber (string) – See ‘cliPhoneNumber’ as defined in Flexible Seating Host attributes.
password (string) – See ‘password’ as defined in Flexible Seating Host attributes.
endpoint (object) – See ‘endpoint’ as defined in Flexible Seating Host attributes.
networkClassOfService (string) – See ‘networkClassOfService’ as defined in Flexible Seating Host attributes.
guestInfo (object) – See ‘guestInfo’ as defined in Flexible Seating Host attributes.
policiesInfo (object) – See ‘policiesInfo’ as defined in Flexible Seating Host attributes.
Example response:
HTTP/1.1 200 OK
- Status Codes:
200 OK – no error
400 Bad Request – invalid request
Delete a Flexible Seating Host¶
-
DELETE
/api/v1/tenants/
(string: tenant_id)/groups/
(string: group_id)/services/flex_seats/hosts/
(string: user_id)/
¶ Delete a flexible seating host.
Authorization rights: minimum Group Admin.
Example request:
DELETE /api/v1/tenants/foo/groups/foogroup/services/flex_seats/hosts/host_id/ HTTP/1.1 Host: example.com
Example response:
HTTP/1.1 200 OK
- Status Codes:
200 OK – instance deleted
404 Not Found – host not found or service not assigned
Retrieve a flexible seating host guest info¶
-
GET
/api/v1/tenants/
(string: tenant_id)/groups/
(string: group_id)/services/flex_seats/hosts/
(string: user_id)/guest/
¶ Retrieve a flexible seating host guest info.
Authorization rights: minimum Group Admin.
Example request:
GET /api/v1/tenants/foo/groups/foogroup/services/flex_seats/hosts/host_id/guest/ HTTP/1.1 Host: example.com
Example response:
HTTP/1.1 200 OK { "enforceAssociationLimit": false, "associationLimitHours": 100, "accessLevel": "Group" }
- Response JSON Object:
enforceAssociationLimit (boolean) – See enforceAssociationLimit from Flexible Seating Guest Info.
associationLimitHours (integer) – See associationLimitHours from Flexible Seating Guest Info.
accessLevel (string) – See accessLevel from Flexible Seating Guest Info.
lastName (string) – See lastName from Flexible Seating Guest Info.
firstName (string) – See firstName from Flexible Seating Guest Info.
phoneNumber (string) – See phoneNumber from Flexible Seating Guest Info.
extension (string) – See extension from Flexible Seating Guest Info.
locationDialingCode (string) – See locationDialingCode from Flexible Seating Guest Info.
associationDateTime (string) – See associationDateTime from Flexible Seating Guest Info.
- Status Codes:
200 OK – no error
400 Bad Request – invalid request due to invalid parameters
404 Not Found – host not found or service not assigned
Update a flexible seating host guest info¶
-
PUT
/api/v1/tenants/
(string: tenant_id)/groups/
(string: group_id)/services/flex_seats/hosts/
(string: user_id)/guest/
¶ Update a flexible seating host guest info.
Authorization rights: minimum Group Admin.
Example request:
PUT /api/v1/tenants/foo/groups/foogroup/services/flex_seats/hosts/host_id/guest/ HTTP/1.1 Host: example.com { "enforceAssociationLimit": false, "associationLimitHours": 100, "accessLevel": "Group" }
- Request JSON Object:
enforceAssociationLimit (boolean) – See enforceAssociationLimit from Flexible Seating Guest Info.
associationLimitHours (integer) – See associationLimitHours from Flexible Seating Guest Info.
accessLevel (string) – See accessLevel from Flexible Seating Guest Info.
removeGuestAssociation (string) – See removeGuestAssociation from Flexible Seating Guest Info.
Example response:
- Response:
Similar to GET instance method response.
- Status Codes:
200 OK – instance updated
400 Bad Request – invalid request due to invalid parameters
404 Not Found – host not found or service not assigned
Retrieve a flexible seating host policies info¶
-
GET
/api/v1/tenants/
(string: tenant_id)/groups/
(string: group_id)/services/flex_seats/hosts/
(string: user_id)/policies/
¶ Retrieve a flexible seating host policies info.
Authorization rights: minimum Group Admin.
Example request:
GET /api/v1/tenants/foo/groups/foogroup/services/flex_seats/hosts/host_id/policies/ HTTP/1.1 Host: example.com
Example response:
HTTP/1.1 200 OK { "allowEmergencyCalls": true, "allowCallsToVoicePortal": true }
- Response JSON Object:
allowEmergencyCalls (boolean) – See allowEmergencyCalls from Flexible Seating Policies Info.
allowCallsToVoicePortal (integer) – See allowCallsToVoicePortal from Flexible Seating Policies Info.
- Status Codes:
200 OK – no error
400 Bad Request – invalid request due to invalid parameters
404 Not Found – host not found or service not assigned
Update a flexible seating host policies info¶
-
PUT
/api/v1/tenants/
(string: tenant_id)/groups/
(string: group_id)/services/flex_seats/hosts/
(string: user_id)/policies/
¶ Update a flexible seating host policies info.
Authorization rights: minimum Group Admin.
Example request:
PUT /api/v1/tenants/foo/groups/foogroup/services/flex_seats/hosts/host_id/policies/ HTTP/1.1 Host: example.com { "allowEmergencyCalls": true, "allowCallsToVoicePortal": true }
- Request JSON Object:
allowEmergencyCalls (boolean) – See allowEmergencyCalls from Flexible Seating Policies Info.
allowCallsToVoicePortal (integer) – See allowCallsToVoicePortal from Flexible Seating Policies Info.
Example response:
- Response:
Similar to GET instance method response.
- Status Codes:
200 OK – instance updated
400 Bad Request – invalid request due to invalid parameters
404 Not Found – service not assigned
Retrieve a flexible seating host policies info¶
-
GET
/api/v1/tenants/
(string: tenant_id)/groups/
(string: group_id)/services/flex_seats/available_devices/
¶ Requests the list of access devices available for assignment to a flexible seating host or guest. The list includes devices created at the system, service provider, and group levels that support device management.
Authorization rights: minimum Group Admin.
Example request:
GET /api/v1/tenants/foo/groups/foogroup/services/flex_seats/available_devices/ HTTP/1.1 Host: example.com
Example response:
HTTP/1.1 200 OK { "available_devices": [ { "accessDevice": { "name": "APIO Test Device Buttons", "level": "Group" }, "staticRegistrationCapable": false, "useDomain": true, "staticLineOrdering": false }, { "accessDevice": { "name": "APIO Test Device Flex Seat", "level": "Group" }, "staticRegistrationCapable": false, "useDomain": true, "staticLineOrdering": false } ] }
- Response JSON Object:
available_devices (array) – An array containing objects as defined as Access Device Endpoint for Flexible Seating.
- Status Codes:
200 OK – no error
400 Bad Request – invalid request due to invalid parameters
404 Not Found – service not assigned
Configuration Information for Flexible Seating Management¶
In the POST API, when creating a flexible seating host, it is possible to configure APIO to generate automatically the service user ID (hostId) and the access device name according to specific rules.
The APIO behaviour for the Flexible Seating Host automatic service user ID (hostId) generation is controlled by the following setting:
"AUTOMATIC_ID_RULES": {
"SUID_FLEX_SEAT_AUTO_GENERATE": true,
"FLEX_SEAT_USER_ID_RULE": "{{group_id}}_fs{{RND_4}}@{{domain}}",
"FLEX_SEAT_DEVICE_NAME_RULE": "dp_{{group_id}}_fs{{RND_4}}",
"GENERIC_DEVICE_NAME_RULE": "DP_{{RND_36}}"
}
"DEVICE_NAME_MAX_LENGTH": 40
- Settings description:
SUID_FLEX_SEAT_AUTO_GENERATE: APIO will enable the auto-generation of flexible seating host id (hostId). Default is False, if not set the servuceUserid is mandatory
FLEX_SEAT_USER_ID_RULE: the formatting rule for the flexible seating host id (hostId). Default is “{{group_id}}_fs{{RND_4}}@{{domain}}”.
FLEX_SEAT_DEVICE_NAME_RULE: the formatting rule for the auto-generation of the access device name of the host. Default is “dp_{{group_id}}_fs{{RND_4}}”.
DEVICE_NAME_MAX_LENGTH: the maximum length for the flexible seating host id. The default value is 40 and if set to 0 no length check is performed
GENERIC_DEVICE_NAME_RULE: a generic fallback auto-generation rule. This rule is used only when the flexible seating host id exceeds DEVICE_NAME_MAX_LENGTH
Parameters available in these rules: tenant_id, group_id and domain (Group Default domain) for the user id, for the name it is tenant_id, group_id and user_id that will be the id of the flex user.