Tenants

Manage your tenants. Admin user has access to details for his account and other tenant users, whilst tenant user has access to his account info only.

Retrieve current configurations

get

Get detailed properties for current tenant.

Authorizations
Responses
200
OK
application/json
get
GET /api/tenant HTTP/1.1
Host: hostname:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "id": "NzAwNTUxOTA5NzczMTQ4MTYw",
  "name": "text",
  "domain": "text",
  "website": "text",
  "timezone": "text",
  "currency": "USD",
  "region": "text",
  "enable_video_recording": false,
  "enable_audio_recording": false,
  "enable_dual_track_recording": false,
  "enable_billing": false,
  "enable_feature_billing": false,
  "enable_feature_call_statistics": true,
  "enable_feature_contact_center": true,
  "enable_feature_message_channels": true,
  "enable_feature_microsoft_teams": true,
  "enable_feature_trunks": true,
  "enable_feature_whats_app": true,
  "enable_night_mode": false,
  "enable_two_factor_authentication": false,
  "custom_options": "text",
  "max_extensions": 1000,
  "max_concurrent_calls": 20,
  "max_ring_groups": 20,
  "max_virtual_receptionists": 20,
  "max_call_queues": 20,
  "max_conference_rooms": 20,
  "disk_quota": "",
  "used_disk_quota": "text",
  "im_disk_quota": "",
  "extension_im_disk_quota": "1GB",
  "recording_retention": 180,
  "call_report_retention": 30,
  "log_retention": 180,
  "temp_file_retention": 30,
  "office_hours": {
    "monday": {
      "enabled": true,
      "ranges": [
        {
          "from": "09:00",
          "to": "17:00"
        }
      ]
    },
    "tuesday": {
      "enabled": true,
      "ranges": [
        {
          "from": "09:00",
          "to": "17:00"
        }
      ]
    },
    "wednesday": {
      "enabled": true,
      "ranges": [
        {
          "from": "09:00",
          "to": "17:00"
        }
      ]
    },
    "thursday": {
      "enabled": true,
      "ranges": [
        {
          "from": "09:00",
          "to": "17:00"
        }
      ]
    },
    "friday": {
      "enabled": true,
      "ranges": [
        {
          "from": "09:00",
          "to": "17:00"
        }
      ]
    },
    "saturday": {
      "enabled": true,
      "ranges": [
        {
          "from": "09:00",
          "to": "17:00"
        }
      ]
    },
    "sunday": {
      "enabled": true,
      "ranges": [
        {
          "from": "09:00",
          "to": "17:00"
        }
      ]
    }
  },
  "outbound_caller_ids": [
    {
      "provider_id": "NzAwNTUxOTA5NzczMTQ4MTYw",
      "caller_id": "text",
      "description": "text"
    }
  ],
  "e164": {
    "enabled": false,
    "international_code": "text",
    "country": "Angola(244)",
    "area_code": "text",
    "national_code": "text",
    "prefix": "text",
    "remove_special_chars": false,
    "remove_duplicate_countries": true,
    "remove_duplicate_area_codes": true
  },
  "cdr_event": {
    "enabled": false,
    "auth": "DISABLE",
    "username": "text",
    "password": "text",
    "token": "text",
    "url": "text"
  },
  "extension_event": {
    "enabled": false,
    "auth": "DISABLE",
    "username": "text",
    "password": "text",
    "token": "text",
    "url": "text"
  },
  "contact_match_type": "MATCH_EXACTLY",
  "contact_match_length": 1,
  "contact_append_type": "APPEND",
  "contact_update_interval": 720,
  "password_force_reset": false,
  "avatar_file_name": "text",
  "avatar_file_size": 0,
  "avatar_file_url": "/api/blobs/WexWdABcd5D4PDgzTKV3gAAAEu00WcK",
  "stir_shaken_cert": "text",
  "stir_shaken_key": "text"
}

Update a tenant

post

Set tenant object that already exists.

Authorizations
Body
namestring · min: 1 · max: 1024Optional

The name of the tenant.

domainstring · min: 1 · max: 280Optional

The SIP domain of tenant.
It is usually a fully qualified domain name (FQDN). If there is no FQDN, you can also use the IP address of the PBX server as the SIP domain. The SIP domain name is only used for SIP message authentication and does not require analysis.

websitestring · max: 255Optional

The official website of tenant.

timezoneall ofOptional

Timezone for tenant.

stringOptional

The IANA Time Zone names, such as "Asia/Shanghai".

currencystringOptional

The Currency code (ISO 4217).

Example: USD
regionstringOptional

A valid country code based on iso3166-1 alpha-3 standard. see: https://www.iso.org/iso-3166-country-codes.html

enable_video_recordingbooleanOptional

Allow extension video recording.

Default: false
enable_audio_recordingbooleanOptional

Allow extension audio recording.

Default: false
enable_dual_track_recordingbooleanOptional

Allow dual track recording for calls.

Default: false
enable_night_modebooleanOptional

Whether to enable night mode.

Default: false
enable_two_factor_authenticationbooleanOptional

Whether to enable two-factor authentication.

Default: false
custom_optionsstringOptional

Some custom configuration options serialized as json string

recording_retentioninteger · int32 · min: 1Optional

The retention period in days of recordings.

Default: 180
call_report_retentioninteger · min: 1Optional

The retention period in days of call report files.

Default: 30
log_retentioninteger · min: 1Optional

The retention period in days of audit logs and event logs.

Default: 180
temp_file_retentioninteger · min: 1Optional

The retention period in days of temporary files.

Default: 30
extension_im_disk_quotastringOptional

The maximum size of disk space that the extension user is allowed to have for IM service.
Specify a positive number and specify the unit at the same time, KB, MB, GB, PB are all allowed.
For example: 100MB, 1000GB. Leave it empty, means unlimited.

Default: 1GB
contact_match_typestring · enumOptional

The match method of contact:
Can be either:

  • DISABLE: Disable match.
  • MATCH_EXACTLY: Match exactly.
  • MATCH_LENGTH: Match at least specified number of characters.
Default: MATCH_EXACTLYPossible values:
contact_match_lengthinteger · int32Optional

The matched length of characters when contact_match_type is MATCH_LENGTH.

contact_append_typestring · enumOptional

Method for adding Group, Queue or DID/DDI Names to Caller ID:
Can be either:

  • DISABLE: Do not add.
  • APPEND: Append names.
  • PREPEND: Prepend names.
Default: APPENDPossible values:
contact_update_intervalinteger · uint32 · min: 1 · max: 43200Optional

The interval for synchronizing contacts from the server, in minutes.

Default: 720
password_force_resetbooleanOptional

Whether to force reset the initial password.

Default: false
avatar_file_idall ofOptional

The unique ID of the file.

stringOptional

The unique ID of the resource.

Example: NzAwNTUxOTA5NzczMTQ4MTYw
stir_shaken_certstringOptional

Content of this certificate file for STIR/SHAKEN support.

stir_shaken_keystringOptional

Content of this private certificate file for STIR/SHAKEN support.

Responses
200
OK
post
POST /api/tenant HTTP/1.1
Host: hostname:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 1727

{
  "name": "text",
  "domain": "text",
  "website": "text",
  "timezone": "text",
  "currency": "USD",
  "region": "text",
  "enable_video_recording": false,
  "enable_audio_recording": false,
  "enable_dual_track_recording": false,
  "enable_night_mode": false,
  "enable_two_factor_authentication": false,
  "custom_options": "text",
  "recording_retention": 180,
  "call_report_retention": 30,
  "log_retention": 180,
  "temp_file_retention": 30,
  "extension_im_disk_quota": "1GB",
  "office_hours": {
    "monday": {
      "enabled": true,
      "ranges": [
        {
          "from": "09:00",
          "to": "17:00"
        }
      ]
    },
    "tuesday": {
      "enabled": true,
      "ranges": [
        {
          "from": "09:00",
          "to": "17:00"
        }
      ]
    },
    "wednesday": {
      "enabled": true,
      "ranges": [
        {
          "from": "09:00",
          "to": "17:00"
        }
      ]
    },
    "thursday": {
      "enabled": true,
      "ranges": [
        {
          "from": "09:00",
          "to": "17:00"
        }
      ]
    },
    "friday": {
      "enabled": true,
      "ranges": [
        {
          "from": "09:00",
          "to": "17:00"
        }
      ]
    },
    "saturday": {
      "enabled": true,
      "ranges": [
        {
          "from": "09:00",
          "to": "17:00"
        }
      ]
    },
    "sunday": {
      "enabled": true,
      "ranges": [
        {
          "from": "09:00",
          "to": "17:00"
        }
      ]
    }
  },
  "outbound_caller_ids": [
    {
      "provider_id": "NzAwNTUxOTA5NzczMTQ4MTYw",
      "caller_id": "text",
      "description": "text"
    }
  ],
  "e164": {
    "enabled": false,
    "international_code": "text",
    "country": "Angola(244)",
    "area_code": "text",
    "national_code": "text",
    "prefix": "text",
    "remove_special_chars": false,
    "remove_duplicate_countries": true,
    "remove_duplicate_area_codes": true
  },
  "cdr_event": {
    "enabled": false,
    "auth": "DISABLE",
    "username": "text",
    "password": "text",
    "token": "text",
    "url": "text"
  },
  "extension_event": {
    "enabled": false,
    "auth": "DISABLE",
    "username": "text",
    "password": "text",
    "token": "text",
    "url": "text"
  },
  "contact_match_type": "MATCH_EXACTLY",
  "contact_match_length": 1,
  "contact_append_type": "APPEND",
  "contact_update_interval": 720,
  "password_force_reset": false,
  "avatar_file_id": "NzAwNTUxOTA5NzczMTQ4MTYw",
  "stir_shaken_cert": "text",
  "stir_shaken_key": "text"
}

No content

Retrieve current tenant status

get

Get status of current tenant.

Authorizations
Responses
200
OK
application/json
get
GET /api/tenant/status HTTP/1.1
Host: hostname:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "version": "text",
  "licensed_users": 1,
  "current_users": 1,
  "online_users": 1,
  "current_calls": 1,
  "current_queues": 1,
  "current_conference_rooms": 1,
  "current_ring_groups": 1,
  "current_ivrs": 1,
  "current_trunks": 1,
  "calls_in_24_hours": [
    {
      "time": "2017-07-21T17:32:28Z",
      "count": 1
    }
  ]
}

Retrieve tenant password policy

get

Retrieve details of tenant password policy.

Authorizations
Responses
200
OK
application/json
get
GET /api/tenant/password_policy HTTP/1.1
Host: hostname:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "min_length": 6,
  "max_length": 32,
  "contains_letters": true,
  "contains_numbers": true,
  "contains_special_letters": true,
  "disable_sequential_characters": true,
  "disable_repeating_characters": true,
  "disable_account_information": true
}

Update tenant password policy

post

Update tenant password policy.

Authorizations
Body
min_lengthinteger · int32 · min: 6 · max: 32Optional

The password must contains at least min_length characters.
Must be less than or equal the value of max_length.

Default: 6
max_lengthinteger · int32 · min: 6 · max: 32Optional

The password must contains at most max_length characters.
Must be greater than or equal the value of min_length.

Default: 32
contains_lettersbooleanOptional

The password must contains at least one letter (latin characters).

Default: true
contains_numbersbooleanOptional

The password must contains at least one number (0-9).

Default: true
contains_special_lettersbooleanOptional

The password must contains at least one upper case letter or special character (e.g. ~,!,@,#,$,%,^,&,*,(,),_,+,=).

Default: true
disable_sequential_charactersbooleanOptional

The password must not contains sequential_characters.

Default: true
disable_repeating_charactersbooleanOptional

The password must not contains repeating_characters.

Default: true
disable_account_informationbooleanOptional

The password must not similar to the account information.

Default: true
Responses
200
OK
post
POST /api/tenant/password_policy HTTP/1.1
Host: hostname:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 220

{
  "min_length": 6,
  "max_length": 32,
  "contains_letters": true,
  "contains_numbers": true,
  "contains_special_letters": true,
  "disable_sequential_characters": true,
  "disable_repeating_characters": true,
  "disable_account_information": true
}

No content

Retrieve tenant balance

get

Retrieve tenant's balance.

Authorizations
Responses
200
OK
application/json
get
GET /api/tenant/balance HTTP/1.1
Host: hostname:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "balance": 1
}

Recharge the tenant

post

Recharge into the tenant's account.

Authorizations
Body
balancenumber · doubleOptional

User balance. Precision is five digits.

Responses
200
OK
post
POST /api/tenant/balance HTTP/1.1
Host: hostname:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 13

{
  "balance": 1
}

No content

Retrieve tenant custom headers

get

Retrieve details of tenant custom headers.

Authorizations
Responses
200
OK
application/json
get
GET /api/tenant/custom_headers HTTP/1.1
Host: hostname:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "add": [
    {
      "name": "text",
      "value": "text",
      "scope": "TRUNK"
    }
  ],
  "relay": [
    {
      "name": "text",
      "scope": "TRUNK"
    }
  ]
}

Update tenant custom headers

post

Update tenant custom headers.

Authorizations
Body

The added custom SIP headers and forwarded SIP headers in tenant scope.

Responses
200
OK
post
POST /api/tenant/custom_headers HTTP/1.1
Host: hostname:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 98

{
  "add": [
    {
      "name": "text",
      "value": "text",
      "scope": "TRUNK"
    }
  ],
  "relay": [
    {
      "name": "text",
      "scope": "TRUNK"
    }
  ]
}

No content

Retrieve voicemail server

get

Retrieve voicemail server information.

Authorizations
Responses
200
OK
application/json
get
GET /api/voicemail HTTP/1.1
Host: hostname:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "extension_number": "text",
  "retain_days": 30,
  "min_seconds": 1
}

Update voicemail server

post

Update voicemail server

Authorizations
Body
extension_numberall ofOptional

The extension number of voicemail server.

string · min: 3 · max: 64Optional

The extension number.

Pattern: [0-9]{3,64}
retain_daysinteger · int32Optional

Duration the voicemail will be kept before auto deleted, in days.

Default: 30
min_secondsinteger · int32Optional

The minimum length of a voicemail, in seconds. Any callings shorter than this value will not be saved as voicemail.

Default: 1
Responses
200
OK
post
POST /api/voicemail HTTP/1.1
Host: hostname:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 60

{
  "extension_number": "text",
  "retain_days": 30,
  "min_seconds": 1
}

No content

List holidays

get

Retrieve a collection of holiday entries.

Authorizations
Query parameters
filterstringOptional

Use the filter query parameter to retrieve just a subset of a collection.

searchstringOptional

Use the search query parameter to restrict the results of a request to match a search criterion.

orderbystringOptional

Use the orderby query parameter to specify the sort order of the items returned from server.
The default order is ascending order.

skipinteger · int32Optional

Use the skip query parameter to set the number of items to skip at the start of a collection.

Default: 0
topinteger · int32 · min: 1 · max: 100Optional

Use the top query parameter to specify the page size of the result set.

Default: 100
Responses
200
OK
application/json
get
GET /api/holidays HTTP/1.1
Host: hostname:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "count": 100,
  "items": [
    {
      "id": "NzAwNTUxOTA5NzczMTQ4MTYw",
      "name": "text",
      "region": "text",
      "consecutive": true,
      "every_year": true,
      "year_start": 1,
      "year_end": 1,
      "month_start": 1,
      "month_end": 1,
      "day_start": 1,
      "day_end": 1,
      "hour_start": 1,
      "hour_end": 1,
      "minute_start": 1,
      "minute_end": 1
    }
  ]
}

Create a new holiday

post

Create a new holiday

Authorizations
Body
namestring · min: 1 · max: 64Required

The name of the holiday.

regionstringRequired

A valid country code based on iso3166-1 alpha-3 standard. see: https://www.iso.org/iso-3166-country-codes.html

consecutivebooleanRequired

Whether the holiday consists of consecutive days.

every_yearbooleanRequired

Does the holiday take effect every year.

year_startintegerOptional

The start year of holiday.

year_endintegerOptional

The start year of holiday.

month_startintegerOptional

The start month of holiday.

month_endintegerOptional

The end month of holiday.

day_startintegerOptional

The start day of holiday.

day_endintegerOptional

The end day of holiday.

hour_startintegerOptional

The start hour of holiday.

hour_endintegerOptional

The end hour of holiday.

minute_startintegerOptional

The start minute of holiday.

minute_endintegerOptional

The end minute of holiday.

Responses
201
Created
application/json
post
POST /api/holidays HTTP/1.1
Host: hostname:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 212

{
  "name": "text",
  "region": "text",
  "consecutive": true,
  "every_year": true,
  "year_start": 1,
  "year_end": 1,
  "month_start": 1,
  "month_end": 1,
  "day_start": 1,
  "day_end": 1,
  "hour_start": 1,
  "hour_end": 1,
  "minute_start": 1,
  "minute_end": 1
}
{
  "id": "NzAwNTUxOTA5NzczMTQ4MTYw"
}

Retrieve a holiday

get
Authorizations
Path parameters
idall ofRead-onlyRequired

The unique ID of holiday.

stringOptional

The unique ID of the resource.

Example: NzAwNTUxOTA5NzczMTQ4MTYw
Responses
200
OK
application/json
get
GET /api/holidays/{id} HTTP/1.1
Host: hostname:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "id": "NzAwNTUxOTA5NzczMTQ4MTYw",
  "name": "text",
  "region": "text",
  "consecutive": true,
  "every_year": true,
  "year_start": 1,
  "year_end": 1,
  "month_start": 1,
  "month_end": 1,
  "day_start": 1,
  "day_end": 1,
  "hour_start": 1,
  "hour_end": 1,
  "minute_start": 1,
  "minute_end": 1
}

Update a holiday

post

Update a holiday that already exists.

Authorizations
Path parameters
idall ofRead-onlyRequired

The unique ID of holiday.

stringOptional

The unique ID of the resource.

Example: NzAwNTUxOTA5NzczMTQ4MTYw
Body
namestring · min: 1 · max: 64Optional

The name of the holiday.

regionstringOptional

A valid country code based on iso3166-1 alpha-3 standard. see: https://www.iso.org/iso-3166-country-codes.html

consecutivebooleanOptional

Whether the holiday consists of consecutive days.

every_yearbooleanOptional

Does the holiday take effect every year.

year_startintegerOptional

The start year of holiday.

year_endintegerOptional

The start year of holiday.

month_startintegerOptional

The start month of holiday.

month_endintegerOptional

The end month of holiday.

day_startintegerOptional

The start day of holiday.

day_endintegerOptional

The end day of holiday.

hour_startintegerOptional

The start hour of holiday.

hour_endintegerOptional

The end hour of holiday.

minute_startintegerOptional

The start minute of holiday.

minute_endintegerOptional

The end minute of holiday.

Responses
200
OK
post
POST /api/holidays/{id} HTTP/1.1
Host: hostname:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 212

{
  "name": "text",
  "region": "text",
  "consecutive": true,
  "every_year": true,
  "year_start": 1,
  "year_end": 1,
  "month_start": 1,
  "month_end": 1,
  "day_start": 1,
  "day_end": 1,
  "hour_start": 1,
  "hour_end": 1,
  "minute_start": 1,
  "minute_end": 1
}

No content

Destroy a holiday

post

Destroy a certain holiday entry.

Authorizations
Path parameters
idall ofRead-onlyRequired

The unique ID of holiday.

stringOptional

The unique ID of the resource.

Example: NzAwNTUxOTA5NzczMTQ4MTYw
Responses
204
No Content
post
POST /api/holidays/{id}/destroy HTTP/1.1
Host: hostname:8887
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*

No content