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:
Status Codes:

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:

Example response:

Response:

Similar to GET instance method response.

Status Codes:

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:
Status Codes:

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:

Example response:

HTTP/1.1 200 OK
Status Codes:

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:

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:
Status Codes:

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:

Example response:

Response:

Similar to GET instance method response.

Status Codes:

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:
Status Codes:

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:

Example response:

Response:

Similar to GET instance method response.

Status Codes:

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:
Status Codes:

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.