# Users

Manage extension users.

## List roles

> List a collection of roles.

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/roles":{"get":{"tags":["User"],"operationId":"listRoles","summary":"List roles","description":"List a collection of roles.","parameters":[{"name":"filter","in":"query","schema":{"type":"string"},"description":"Use the `filter` query parameter to retrieve just a subset of a collection.\n"},{"name":"search","in":"query","schema":{"type":"string"},"description":"Use the `search` query parameter to restrict the results of a request to match a search criterion.\n"},{"name":"orderby","in":"query","schema":{"type":"string"},"description":"Use the `orderby` query parameter to specify the sort order of the items returned from server.  \nThe default order is ascending order.\n"},{"name":"skip","in":"query","schema":{"type":"integer","format":"int32","minimum":0,"default":0},"description":"Use the `skip` query parameter to set the number of items to skip at the start of a collection.\n"},{"name":"top","in":"query","schema":{"type":"integer","format":"int32","minimum":1,"maximum":100,"default":100},"description":"Use the `top` query parameter to specify the page size of the result set.\n"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","format":"int64","minimum":0,"description":"Total number of resource.\n"},"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"Roles include built-in roles and custom roles.   \nBuilt-in roles roles cannot be modified.   \nAlso, the names of built-in roles are reserved words, \ncustom roles are not allowed to use these names to avoid unnecessary confusion.   \nBuilt-in roles include:   \n- `SystemAdmin`: the system administrator has almost all permissions.\n- `Replicator`: the application permissions collection.\n- `Dealer`: the sales manager has all sold tenant resource permissions\n- `Admin`: the admin has all tenant-wide resource permissions.\n- `StandardUser`: the user all user-wide resource permissions.\n- `StandardInternationalUser`: the user all user-wide resource permissions with international call permissions.\n- `QueueManager`: The call queue manager.\n"},"description":{"type":"string","maxLength":1024,"description":"Role's description.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Create a role

> Create a new role.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/roles":{"post":{"tags":["User"],"operationId":"createRole","summary":"Create a role","description":"Create a new role.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"Roles include built-in roles and custom roles.   \nBuilt-in roles roles cannot be modified.   \nAlso, the names of built-in roles are reserved words, \ncustom roles are not allowed to use these names to avoid unnecessary confusion.   \nBuilt-in roles include:   \n- `SystemAdmin`: the system administrator has almost all permissions.\n- `Replicator`: the application permissions collection.\n- `Dealer`: the sales manager has all sold tenant resource permissions\n- `Admin`: the admin has all tenant-wide resource permissions.\n- `StandardUser`: the user all user-wide resource permissions.\n- `StandardInternationalUser`: the user all user-wide resource permissions with international call permissions.\n- `QueueManager`: The call queue manager.\n"},"permissions":{"type":"object","properties":{"general":{"type":"object","properties":{"voicemail_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"voicemail_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"meeting":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"system":{"type":"object","properties":{"information":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"dealer":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"tenant":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"trunk":{"type":"object","properties":{"view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"company":{"type":"object","properties":{"view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"company_call_log":{"type":"object","properties":{"call_log_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_log_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_recording_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_recording_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"phone_system":{"type":"object","properties":{"view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"user_management":{"type":"object","properties":{"roles":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"users":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"user_call_log":{"type":"object","properties":{"call_log_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_log_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_recording_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_recording_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"policies":{"type":"object","properties":{"domestic_calls":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"internal_calls":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"international_calls":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"analytics":{"type":"object","properties":{"call_report_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_report_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"billing":{"type":"object","properties":{"view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}}},"description":"The permission list of role.\n"},"description":{"type":"string","maxLength":1024,"description":"Role's description.\n"}},"required":["name","permissions"]}}},"required":true},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"Roles include built-in roles and custom roles.   \nBuilt-in roles roles cannot be modified.   \nAlso, the names of built-in roles are reserved words, \ncustom roles are not allowed to use these names to avoid unnecessary confusion.   \nBuilt-in roles include:   \n- `SystemAdmin`: the system administrator has almost all permissions.\n- `Replicator`: the application permissions collection.\n- `Dealer`: the sales manager has all sold tenant resource permissions\n- `Admin`: the admin has all tenant-wide resource permissions.\n- `StandardUser`: the user all user-wide resource permissions.\n- `StandardInternationalUser`: the user all user-wide resource permissions with international call permissions.\n- `QueueManager`: The call queue manager.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve a role

> Retrieves the settings of a role.

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/roles/{name}":{"get":{"tags":["User"],"operationId":"showRole","summary":"Retrieve a role","description":"Retrieves the settings of a role.","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Roles include built-in roles and custom roles.   \nBuilt-in roles roles cannot be modified.   \nAlso, the names of built-in roles are reserved words, \ncustom roles are not allowed to use these names to avoid unnecessary confusion.   \nBuilt-in roles include:   \n- `SystemAdmin`: the system administrator has almost all permissions.\n- `Replicator`: the application permissions collection.\n- `Dealer`: the sales manager has all sold tenant resource permissions\n- `Admin`: the admin has all tenant-wide resource permissions.\n- `StandardUser`: the user all user-wide resource permissions.\n- `StandardInternationalUser`: the user all user-wide resource permissions with international call permissions.\n- `QueueManager`: The call queue manager.\n"},"description":"The name of the role."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"Roles include built-in roles and custom roles.   \nBuilt-in roles roles cannot be modified.   \nAlso, the names of built-in roles are reserved words, \ncustom roles are not allowed to use these names to avoid unnecessary confusion.   \nBuilt-in roles include:   \n- `SystemAdmin`: the system administrator has almost all permissions.\n- `Replicator`: the application permissions collection.\n- `Dealer`: the sales manager has all sold tenant resource permissions\n- `Admin`: the admin has all tenant-wide resource permissions.\n- `StandardUser`: the user all user-wide resource permissions.\n- `StandardInternationalUser`: the user all user-wide resource permissions with international call permissions.\n- `QueueManager`: The call queue manager.\n"},"permissions":{"type":"object","properties":{"general":{"type":"object","properties":{"voicemail_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"voicemail_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"meeting":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"system":{"type":"object","properties":{"information":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"dealer":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"tenant":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"trunk":{"type":"object","properties":{"view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"company":{"type":"object","properties":{"view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"company_call_log":{"type":"object","properties":{"call_log_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_log_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_recording_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_recording_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"phone_system":{"type":"object","properties":{"view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"user_management":{"type":"object","properties":{"roles":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"users":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"user_call_log":{"type":"object","properties":{"call_log_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_log_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_recording_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_recording_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"policies":{"type":"object","properties":{"domestic_calls":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"internal_calls":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"international_calls":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"analytics":{"type":"object","properties":{"call_report_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_report_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"billing":{"type":"object","properties":{"view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}}},"description":"The permission list of role.\n"},"description":{"type":"string","maxLength":1024,"description":"Role's description.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update a role

> Modify the settings of a role.

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/roles/{name}":{"post":{"tags":["User"],"operationId":"updateRole","summary":"Update a role","description":"Modify the settings of a role.","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Roles include built-in roles and custom roles.   \nBuilt-in roles roles cannot be modified.   \nAlso, the names of built-in roles are reserved words, \ncustom roles are not allowed to use these names to avoid unnecessary confusion.   \nBuilt-in roles include:   \n- `SystemAdmin`: the system administrator has almost all permissions.\n- `Replicator`: the application permissions collection.\n- `Dealer`: the sales manager has all sold tenant resource permissions\n- `Admin`: the admin has all tenant-wide resource permissions.\n- `StandardUser`: the user all user-wide resource permissions.\n- `StandardInternationalUser`: the user all user-wide resource permissions with international call permissions.\n- `QueueManager`: The call queue manager.\n"},"description":"The name of the role."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"Roles include built-in roles and custom roles.   \nBuilt-in roles roles cannot be modified.   \nAlso, the names of built-in roles are reserved words, \ncustom roles are not allowed to use these names to avoid unnecessary confusion.   \nBuilt-in roles include:   \n- `SystemAdmin`: the system administrator has almost all permissions.\n- `Replicator`: the application permissions collection.\n- `Dealer`: the sales manager has all sold tenant resource permissions\n- `Admin`: the admin has all tenant-wide resource permissions.\n- `StandardUser`: the user all user-wide resource permissions.\n- `StandardInternationalUser`: the user all user-wide resource permissions with international call permissions.\n- `QueueManager`: The call queue manager.\n"},"permissions":{"type":"object","properties":{"general":{"type":"object","properties":{"voicemail_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"voicemail_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"meeting":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"system":{"type":"object","properties":{"information":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"dealer":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"tenant":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"trunk":{"type":"object","properties":{"view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"company":{"type":"object","properties":{"view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"company_call_log":{"type":"object","properties":{"call_log_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_log_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_recording_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_recording_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"phone_system":{"type":"object","properties":{"view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"user_management":{"type":"object","properties":{"roles":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"users":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"user_call_log":{"type":"object","properties":{"call_log_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_log_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_recording_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_recording_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"policies":{"type":"object","properties":{"domestic_calls":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"internal_calls":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"international_calls":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"analytics":{"type":"object","properties":{"call_report_view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"call_report_full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}},"billing":{"type":"object","properties":{"view_only":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"},"full_access":{"type":"boolean","default":false,"description":"The flag whether the permission is enabled.\n"}}}},"description":"The permission list of role.\n"},"description":{"type":"string","maxLength":1024,"description":"Role's description.\n"}}}}},"required":true},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Delete a role

> Delete a certain role.

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/roles/{name}/destroy":{"post":{"tags":["User"],"operationId":"deleteRole","summary":"Delete a role","description":"Delete a certain role.","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"description":"Roles include built-in roles and custom roles.   \nBuilt-in roles roles cannot be modified.   \nAlso, the names of built-in roles are reserved words, \ncustom roles are not allowed to use these names to avoid unnecessary confusion.   \nBuilt-in roles include:   \n- `SystemAdmin`: the system administrator has almost all permissions.\n- `Replicator`: the application permissions collection.\n- `Dealer`: the sales manager has all sold tenant resource permissions\n- `Admin`: the admin has all tenant-wide resource permissions.\n- `StandardUser`: the user all user-wide resource permissions.\n- `StandardInternationalUser`: the user all user-wide resource permissions with international call permissions.\n- `QueueManager`: The call queue manager.\n"},"description":"The name of the role."}],"responses":{"204":{"description":"No Content"},"4XX":{"description":"Error"}}}}}}
```

## Retrieve current user

> Retrieve details of current user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user":{"get":{"tags":["User"],"operationId":"getDetailsOfCurrentUser","summary":"Retrieve current user","description":"Retrieve details of current user.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The user's account name.   \nOnly letters, numbers, and the following special characters can be added: underscore, dash, single quote, and period (_, -, ', and .).   \nUsername cannot start or end with period (.).   \n`admin`, `system`, `administrator`, and `root` are reserved names for system admin only with case ignored.\n"},"email":{"allOf":[{"type":"string","maxLength":128,"description":"The email address.\n"}],"description":"The email address of user.\n"},"display_name":{"type":"string","maxLength":1024,"description":"The display name of user.\n"},"role":{"type":"string","minLength":1,"maxLength":64,"description":"Roles include built-in roles and custom roles.   \nBuilt-in roles roles cannot be modified.   \nAlso, the names of built-in roles are reserved words, \ncustom roles are not allowed to use these names to avoid unnecessary confusion.   \nBuilt-in roles include:   \n- `SystemAdmin`: the system administrator has almost all permissions.\n- `Replicator`: the application permissions collection.\n- `Dealer`: the sales manager has all sold tenant resource permissions\n- `Admin`: the admin has all tenant-wide resource permissions.\n- `StandardUser`: the user all user-wide resource permissions.\n- `StandardInternationalUser`: the user all user-wide resource permissions with international call permissions.\n- `QueueManager`: The call queue manager.\n"},"enabled":{"type":"boolean","default":true,"description":"Allows temporarily disabling the extension.\n"},"mobile_phone":{"type":"string","maxLength":32,"description":"The mobile phone number of user.\n"},"work_phone":{"type":"string","maxLength":32,"description":"The office phone number of user.\n"},"home_phone":{"type":"string","maxLength":32,"description":"The home phone number of user.\n"},"address":{"type":"string","maxLength":128,"description":"The address.\n"},"department":{"type":"string","maxLength":128,"description":"The department of user.\n"},"extension_number":{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"},"enable_audio_recording":{"type":"boolean","default":false,"description":"Records all calls and saves audio recordings on server.\n"},"enable_video_recording":{"type":"boolean","default":false,"description":"Records all calls and saves video recordings on server.\n"},"enable_dnd":{"type":"boolean","description":"Enable `Do Not Disturb` or not.\n"},"enable_acb":{"type":"boolean","description":"Enable `Automatic Callback` or not.\n"},"enable_hot_desking":{"type":"boolean","default":false,"description":"Enable hot desking feature or not.\n"},"anonymous_outbound_calls":{"type":"boolean","default":false,"description":"Always make outbound anonymous calls or not.\n"},"delivery_outbound_cid":{"type":"boolean","default":true,"description":"Always delivery outbound caller ID or not.\n"},"sms":{"type":"string","enum":["DISABLE","ALLOW","ALLOW_WITH_SENDER_ID"],"default":"DISABLE","description":"The preferred configuration for SMS/MMS.   \nNote: Only users with `UserManagement::Users` privilege can change this property.   \n  - `DISABLE`: Disable user SMS/MMS feature.\n  - `ALLOW`: Enable user SMS/MMS feature but with outbound caller ID.\n  - `ALLOW_WITH_SENDER_ID`: Enable user SMS/MMS but with trunk sender ID.\n"},"outbound_caller_ids":{"type":"array","items":{"type":"object","properties":{"provider_id":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"}],"description":"The unique ID of trunk.\n"},"caller_id":{"allOf":[{"type":"string","minLength":1,"maxLength":64,"description":"Outbound caller id.\n"}],"description":"The caller ID.\n"},"preferred":{"type":"boolean","description":"Whether this outbound caller id preferred.\n"},"description":{"type":"string","maxLength":1024,"description":"The descriptive information about this outbound caller id.\n"}}},"description":"A collection of outbound caller IDs.\n"},"custom_options":{"type":"string","description":"Some custom configuration options serialized as json string\n"},"office_hours":{"allOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["GLOBAL","CUSTOM"],"description":"The office hours mode can be either:  \n- `GLOBAL`: Use global office hours.\n- `CUSTOM`: Use specific office hours.\n"}}},{"type":"object","properties":{"monday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"tuesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"wednesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"thursday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"friday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"saturday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"sunday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}}}}]},"available_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"available_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"available_no_answer_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"},"timeout":{"type":"integer","format":"int32","minimum":0,"default":60,"description":"Duration that the call will remain ringing when no one answered, in seconds.\n"}}},"busy_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"busy_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"busy_no_answer_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"},"timeout":{"type":"integer","format":"int32","minimum":0,"default":60,"description":"Duration that the call will remain ringing when no one answered, in seconds.\n"}}},"dnd_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"dnd_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"away_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"away_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"lunch_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"lunch_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"trip_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"trip_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"offline_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"offline_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"custom_forward_rules":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"},"caller_id":{"type":"string","description":"Specify the caller ID mask.\n"},"type":{"type":"string","enum":["ALL_HOURS","SPECIFIC_HOURS","OUTSIDE_SPECIFIC_HOURS"],"description":"Specify hours mode for forward rule:\n- `ALL_HOURS`:\n- `SPECIFIC_HOURS`:\n- `OUTSIDE_SPECIFIC_HOURS`:\n"},"hours":{"allOf":[{"type":"object","properties":{"monday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"tuesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"wednesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"thursday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"friday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"saturday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"sunday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}}}}],"description":"Specify hours for this custom forward rule.\n"}}}},"voicemail_prompt":{"type":"string","description":"BCP 47 Language Tags (The Internet Best Current Practices (BCP) for language tags).\nA language tag is composed of a sequence of one or more subtags such as language, region, variant and script subtags.\nWhen a language tag is comprised of more than one subtag, the subtag values are separated by the \"-\" character.\nYou will most commonly find language tags written with 2 subtags - language and region. For example: en-US.\n"},"enable_voicemail_pin":{"type":"boolean","default":true,"description":"Whether the PIN is required to access voice mail of extension.\n"},"voicemail_pin":{"type":"string","minLength":6,"maxLength":10,"description":"The PIN number for accessing.   \nThe PIN policies include:  \n1. A sequence of numbers 6-10 digits in length.  \n2. No repeating numbers (e.g. \"111\", \"222\")\n3. No sequential numbers (e.g. \"012\", \"789\")\n"},"enable_voicemail_notify":{"type":"boolean","default":false,"description":"Enable voicemail to email notify.\n"},"voicemail_play_datetime":{"type":"string","enum":["DISABLE","12_HOUR_CLOCK","24_HOUR_CLOCK"],"description":"Announces Date and Time of Message.\n- `DISABLE`: Do not read;\n- `12_HOUR_CLOCK`: Read in 12-hour clock;\n- `24_HOUR_CLOCK`: Read in 24-hour clock.\n"},"interface":{"type":"string","enum":["WEB_DOMAIN","PUBLIC_IPV4","PUBLIC_IPV6","PRIVATE_IPV4","PRIVATE_IPV6","SBC_DOMAIN"],"description":"The interface type for QR code or auto provisioning.   \nCan be neither:  \n- `WEB_DOMAIN`:\n- `PUBLIC_IPV4`:\n- `PUBLIC_IPV6`:\n- `PRIVATE_IPV4`:\n- `PRIVATE_IPV6`:\n- `SBC_DOMAIN`:\n"},"preferred_transport":{"type":"string","enum":["UDP","TCP","TLS"],"description":"The transport protocol:  \nCan be either:  \n- `UDP`:\n- `TCP`:\n- `TLS`:\n"},"blfs":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The key of BLF.\n"},"value":{"type":"string","description":"The value of BLF.\n"},"first_name":{"type":"string","description":"The first name of BLF.\n"},"last_name":{"type":"string","description":"The last name of BLF.\n"}}},"description":"A collection of BLFs.\n"},"created_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The creation time of user.\n"},"avatar_file_name":{"type":"string","description":"The name of the file.\n"},"avatar_file_size":{"type":"integer","format":"int64","minimum":0,"description":"The file size in bytes.\n"},"avatar_file_url":{"type":"string","readOnly":true,"description":"The relative path to file url for file downloading.\n"},"transports":{"type":"array","items":{"type":"object","properties":{"protocol":{"type":"string","enum":["UDP","TCP","TLS"],"description":"The transport protocol:  \nCan be either:  \n- `UDP`:\n- `TCP`:\n- `TLS`:\n"},"port":{"allOf":[{"type":"integer","format":"int32","minimum":0,"maximum":65535,"description":"A port number is a 16-bit unsigned integer, thus ranging from 0 to 65535.\nFor TCP, port number 0 is reserved and cannot be used, while for UDP, the source port is optional and a value of zero means no port\n"}],"description":"The port of transport.\n"},"verification":{"type":"string","enum":["DISABLE","OPTIONAL","MANDATORY"],"description":"Indicates if PBX wishes (Optional) or requires (Mandatory) TLS clients to present a client certificate:\n- `DISABLE`: disable client certificate.\n- `OPTIONAL`: client authentication optional.\n- `MANDATORY`: force client authentication.\n"}}}},"profile":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user profile file.\n"},"sync_type":{"type":"string","enum":["Microsoft 365"],"description":"The synchronization method.   \nCan be either:   \n- `Microsoft 365`: Sync from Microsoft 365.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update current user properties.

> Update current user properties.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user":{"post":{"tags":["User"],"operationId":"updateCurrentUser","summary":"Update current user properties.","description":"Update current user properties.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"allOf":[{"type":"string","maxLength":128,"description":"The email address.\n"}],"description":"The email address of user.\n"},"display_name":{"type":"string","maxLength":1024,"description":"The display name of user.\n"},"mobile_phone":{"type":"string","maxLength":32,"description":"The mobile phone number of user.\n"},"work_phone":{"type":"string","maxLength":32,"description":"The office phone number of user.\n"},"home_phone":{"type":"string","maxLength":32,"description":"The home phone number of user.\n"},"address":{"type":"string","maxLength":128,"description":"The address.\n"},"department":{"type":"string","maxLength":128,"description":"The department of user.\n"},"enable_audio_recording":{"type":"boolean","default":false,"description":"Records all calls and saves audio recordings on server.\n"},"enable_video_recording":{"type":"boolean","default":false,"description":"Records all calls and saves video recordings on server.\n"},"enable_dnd":{"type":"boolean","description":"Enable `Do Not Disturb` or not.\n"},"enable_acb":{"type":"boolean","description":"Enable `Automatic Callback` or not.\n"},"enable_hot_desking":{"type":"boolean","default":false,"description":"Enable hot desking feature or not.\n"},"anonymous_outbound_calls":{"type":"boolean","default":false,"description":"Always make outbound anonymous calls or not.\n"},"delivery_outbound_cid":{"type":"boolean","default":true,"description":"Always delivery outbound caller ID or not.\n"},"sms":{"type":"string","enum":["DISABLE","ALLOW","ALLOW_WITH_SENDER_ID"],"default":"DISABLE","description":"The preferred configuration for SMS/MMS.   \nNote: Only users with `UserManagement::Users` privilege can change this property.   \n  - `DISABLE`: Disable user SMS/MMS feature.\n  - `ALLOW`: Enable user SMS/MMS feature but with outbound caller ID.\n  - `ALLOW_WITH_SENDER_ID`: Enable user SMS/MMS but with trunk sender ID.\n"},"outbound_caller_ids":{"type":"array","items":{"type":"object","properties":{"provider_id":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"}],"description":"The unique ID of trunk.\n"},"caller_id":{"allOf":[{"type":"string","minLength":1,"maxLength":64,"description":"Outbound caller id.\n"}],"description":"The caller ID.\n"},"preferred":{"type":"boolean","description":"Whether this outbound caller id preferred.\n"},"description":{"type":"string","maxLength":1024,"description":"The descriptive information about this outbound caller id.\n"}}},"description":"A collection of outbound caller IDs.\n"},"custom_options":{"type":"string","description":"Some custom configuration options serialized as json string\n"},"office_hours":{"allOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["GLOBAL","CUSTOM"],"description":"The office hours mode can be either:  \n- `GLOBAL`: Use global office hours.\n- `CUSTOM`: Use specific office hours.\n"}}},{"type":"object","properties":{"monday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"tuesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"wednesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"thursday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"friday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"saturday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"sunday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}}}}]},"available_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"available_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"available_no_answer_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"},"timeout":{"type":"integer","format":"int32","minimum":0,"default":60,"description":"Duration that the call will remain ringing when no one answered, in seconds.\n"}}},"busy_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"busy_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"busy_no_answer_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"},"timeout":{"type":"integer","format":"int32","minimum":0,"default":60,"description":"Duration that the call will remain ringing when no one answered, in seconds.\n"}}},"dnd_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"dnd_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"away_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"away_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"lunch_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"lunch_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"trip_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"trip_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"offline_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"offline_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"custom_forward_rules":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"},"caller_id":{"type":"string","description":"Specify the caller ID mask.\n"},"type":{"type":"string","enum":["ALL_HOURS","SPECIFIC_HOURS","OUTSIDE_SPECIFIC_HOURS"],"description":"Specify hours mode for forward rule:\n- `ALL_HOURS`:\n- `SPECIFIC_HOURS`:\n- `OUTSIDE_SPECIFIC_HOURS`:\n"},"hours":{"allOf":[{"type":"object","properties":{"monday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"tuesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"wednesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"thursday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"friday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"saturday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"sunday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}}}}],"description":"Specify hours for this custom forward rule.\n"}}}},"voicemail_prompt":{"type":"string","description":"BCP 47 Language Tags (The Internet Best Current Practices (BCP) for language tags).\nA language tag is composed of a sequence of one or more subtags such as language, region, variant and script subtags.\nWhen a language tag is comprised of more than one subtag, the subtag values are separated by the \"-\" character.\nYou will most commonly find language tags written with 2 subtags - language and region. For example: en-US.\n"},"enable_voicemail_pin":{"type":"boolean","default":true,"description":"Whether the PIN is required to access voice mail of extension.\n"},"voicemail_pin":{"type":"string","minLength":6,"maxLength":10,"description":"The PIN number for accessing.   \nThe PIN policies include:  \n1. A sequence of numbers 6-10 digits in length.  \n2. No repeating numbers (e.g. \"111\", \"222\")\n3. No sequential numbers (e.g. \"012\", \"789\")\n"},"enable_voicemail_notify":{"type":"boolean","default":false,"description":"Enable voicemail to email notify.\n"},"voicemail_play_datetime":{"type":"string","enum":["DISABLE","12_HOUR_CLOCK","24_HOUR_CLOCK"],"description":"Announces Date and Time of Message.\n- `DISABLE`: Do not read;\n- `12_HOUR_CLOCK`: Read in 12-hour clock;\n- `24_HOUR_CLOCK`: Read in 24-hour clock.\n"},"interface":{"type":"string","enum":["WEB_DOMAIN","PUBLIC_IPV4","PUBLIC_IPV6","PRIVATE_IPV4","PRIVATE_IPV6","SBC_DOMAIN"],"description":"The interface type for QR code or auto provisioning.   \nCan be neither:  \n- `WEB_DOMAIN`:\n- `PUBLIC_IPV4`:\n- `PUBLIC_IPV6`:\n- `PRIVATE_IPV4`:\n- `PRIVATE_IPV6`:\n- `SBC_DOMAIN`:\n"},"preferred_transport":{"type":"string","enum":["UDP","TCP","TLS"],"description":"The transport protocol:  \nCan be either:  \n- `UDP`:\n- `TCP`:\n- `TLS`:\n"},"blfs":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The key of BLF.\n"},"value":{"type":"string","description":"The value of BLF.\n"},"first_name":{"type":"string","description":"The first name of BLF.\n"},"last_name":{"type":"string","description":"The last name of BLF.\n"}}},"description":"A collection of BLFs.\n"},"avatar_file_id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of the file.\n"}}}}},"required":true},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Reset current user password

> Reset current user password.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/password":{"post":{"tags":["User"],"operationId":"resetCurrentUserPassword","summary":"Reset current user password","description":"Reset current user password.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"old_password":{"type":"string","description":"The password of user.\n"},"new_password":{"type":"string","description":"The password of user.\n"}}}}},"required":true},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Reset current user extension password

> Reset current user extension password.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/extension_password":{"post":{"tags":["User"],"operationId":"resetCurrentUserExtensionPassword","summary":"Reset current user extension password","description":"Reset current user extension password.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"old_password":{"type":"string","description":"The extension password.\n"},"new_password":{"type":"string","description":"The extension password.\n"}}}}},"required":true},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Reset current user profile

> Reset current user profile.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/profile":{"post":{"tags":["User"],"operationId":"resetCurrentUserProfile","summary":"Reset current user profile","description":"Reset current user profile.\n","responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Retrieves current user status

> Get status of current user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/status":{"get":{"tags":["User"],"operationId":"getCurrentUserStatus","summary":"Retrieves current user status","description":"Get status of current user.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ONLINE","ON_CALL","OFFLINE"],"description":"Status of extension:\n  - `ONLINE`   \n  - `ON_CALL`   \n  - `OFFLINE`\n"},"presence":{"type":"string","enum":["DO_NOT_DISTURB","AVAILABLE","AWAY","BUSINESS_TRIP","LUNCH","ON_CALL","OFFLINE"],"description":"The current presence of extension:   \n- `DO_NOT_DISTURB`:   \n- `AVAILABLE`:   \n- `AWAY`:   \n- `BUSINESS_TRIP`:   \n- `LUNCH`:   \n- `ON_CALL`   \n- `OFFLINE`\n"},"presence_note":{"type":"string","maxLength":128,"description":"The presence note.\n"},"registration":{"type":"array","items":{"type":"object","properties":{"instance_id":{"type":"string","description":"The instance ID of registration.\n"},"user_agent":{"type":"string","description":"User agent of login device.\n"},"application":{"type":"string","description":"The application name of login device.\n"},"ip":{"type":"string","description":"The IP address of login device.\n"},"enable_push":{"type":"boolean","description":"Whether push is enabled of login device.\n"},"contact_address":{"type":"string","description":"The contact address information.\n"}}},"description":"Collection of registration information.\n"},"enable_dnd":{"type":"boolean","description":"`Do Not Disturb` enabled or not.\n"},"enable_acb":{"type":"boolean","description":"`Automatic Callback` enabled or not.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Set current extension user presence

> Set current extension user presence.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/presence":{"post":{"tags":["User"],"operationId":"setCurrentUserPresence","summary":"Set current extension user presence","description":"Set current extension user presence.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"presence":{"type":"string","enum":["DO_NOT_DISTURB","AVAILABLE","AWAY","BUSINESS_TRIP","LUNCH"],"description":"The specified presence of extension:\n- `DO_NOT_DISTURB`:   \n- `AVAILABLE`:   \n- `AWAY`:   \n- `BUSINESS_TRIP`:   \n- `LUNCH`:\n"},"presence_note":{"type":"string","maxLength":128,"description":"The presence note.\n"}}}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Retrieve current user balance.

> Retrieve current user's balance.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/balance":{"get":{"tags":["User"],"operationId":"getCurrentUserBalance","summary":"Retrieve current user balance.","description":"Retrieve current user's balance.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"balance":{"type":"number","format":"double","description":"User balance. Precision is five digits.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## List current user voicemail greetings

> Retrieves a collection of greetings for current user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/greetings":{"get":{"tags":["User"],"operationId":"listCurrentUserGreetings","summary":"List current user voicemail greetings","description":"Retrieves a collection of greetings for current user.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of greeting.\n"},"enabled":{"type":"boolean","description":"Whether the greeting is enabled or not.\n"},"file_name":{"type":"string","description":"The name of the file.\n"},"file_size":{"type":"integer","format":"int64","minimum":0,"description":"The file size in bytes.\n"},"file_url":{"type":"string","readOnly":true,"description":"The relative path to file url for file downloading.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Create voicemail greeting for current user

> Create voicemail greeting for current user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/greetings":{"post":{"tags":["User"],"operationId":"createGreetingForCurrentUser","summary":"Create voicemail greeting for current user","description":"Create voicemail greeting for current user.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"file_id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of the file.\n"}}}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of greeting.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Enable one of current user's greetings.

> Set one of current user's greetings to activated state.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/greetings/{id}/enable":{"post":{"tags":["User"],"operationId":"enableCurrentUserGreeting","summary":"Enable one of current user's greetings.","description":"Set one of current user's greetings to activated state.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of greeting.\n"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid extension number supplied"},"404":{"description":"User not found"}}}}}}
```

## Disable current user greeting

> Disable current user voicemail greeting by it's unique ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/greetings/{id}/disable":{"post":{"tags":["User"],"operationId":"disableCurrentUserGreeting","summary":"Disable current user greeting","description":"Disable current user voicemail greeting by it's unique ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of greeting.\n"},"description":"The unique ID of the greeting."}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid extension number supplied"},"404":{"description":"User not found"}}}}}}
```

## Delete voicemail greeting

> Destroy a voicemail greeting from user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/greetings/{id}/destroy":{"post":{"tags":["User"],"operationId":"delCurrentUserGreeting","summary":"Delete voicemail greeting","description":"Destroy a voicemail greeting from user.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of greeting.\n"}}],"responses":{"204":{"description":"No Content"},"4XX":{"description":"Error"}}}}}}
```

## List current user's IP phones

> Retrieve a collection of IP Phones for current user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/phones":{"get":{"tags":["User"],"operationId":"listCurrentUserPhones","summary":"List current user's IP phones","description":"Retrieve a collection of IP Phones for current user.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of phone.\n"},"mac":{"allOf":[{"type":"string","description":"MAC address.\n"}],"description":"MAC address of this IP phone.\n"},"filename":{"type":"string","description":"Template XML file name for phone provisioning.\n"},"vendor":{"type":"string","description":"The phone vendor of IP phone.\n"},"model":{"type":"string","description":"The name of IP phone model.\n"},"fwver":{"type":"string","description":"The firmware version of IP phone.\n"},"password":{"type":"string","description":"Password for accessing the Web interface of phone.\nThe username remains default because most phone manufacturers do not\nallow modification of the user name. This is supported for some phone model, such as \"Snom 300\".\n"},"language":{"type":"string","enum":["ENGLISH","CHINESE","DUTCH","FRENCH","GERMAN","GREEK","ITALIAN","JAPANESE","POLISH","RUSSIAN","SPANISH","SWEDISH","UKRAINIAN","BULGARIAN"],"description":"Language for strings displayed on Phone Display LCD.\nSupported languages include ENGLISH, CHINESE, DUTCH, FRENCH, GERMAN,\nGREEK, ITALIAN, JAPANESE, POLISH, RUSSIAN, SPANISH, SWEDISH, UKRAINIAN, and BULGARIAN.\n"},"transfer":{"type":"string","enum":["BLIND","ATTENDED","NEW_CALL"],"default":"BLIND","description":"The transfer method for auto provision.  \nCan be either: \n- `BLIND`: After the IP phone is configured with the BLF of a certain key, during a call on the IP phone, press the key, and the phone will directly initiate a Blind transfer to the configured number.\n- `ATTENDED`: After the IP phone is configured with the BLF of a key, during a call on the IP phone, press the key, and the phone will directly initiate an Attended transfer to the configured number.\n- `NEW_CALL`: After the IP phone is configured with the BLF of a certain key, during a call on the IP phone, press the key, and the phone will initiate a new call to the configured number.\n"},"timezone":{"type":"string","description":"The timezone of phone.\n"},"ringtone":{"type":"string","description":"The ringtone of phone.\n"},"queue_ringtone":{"type":"string","description":"The queue ringtone of phone for queue calls or ring group calls.\n"},"external_ringtone":{"type":"string","description":"The ringtone of phone for external calls.\n"},"date_format":{"type":"string","description":"The date format of phone.\n"},"time_format":{"type":"string","description":"The time format of phone.\n"},"powerled":{"type":"string","description":"The power led of phone.\n"},"backlight":{"type":"string","description":"The backlight of phone.\n"},"screensaver":{"type":"string","description":"The screensaver of phone.\n"},"rps":{"type":"boolean","description":"Send to RPS or not.\n"},"https":{"type":"boolean","description":"Whether to use https\n"},"codecs":{"type":"array","items":{"type":"string"},"description":"Settings for the priority of the codecs in this phone.\nThis indicates the first preferred codec.\n"},"enable_lldp":{"type":"boolean","default":false,"description":"Enable or disable Link Layer Discovery Protocol."},"enable_vlan_wan_port":{"type":"boolean","default":false,"description":"Enable or disable VLAN for WAN Port.\n"},"wan_port_id":{"type":"integer","minimum":1,"maximum":4094,"description":"VLAN ID for WAN PORT.\n"},"wan_port_priority":{"type":"integer","minimum":0,"maximum":7,"description":"VLAN priority for WAN Port.\n"},"enable_vlan_pc_port":{"type":"boolean","default":false,"description":"Enable or disable VLAN for PC Port.\n"},"pc_port_id":{"type":"integer","minimum":1,"maximum":4094,"description":"VLAN ID for PC PORT.\n"},"pc_port_priority":{"type":"integer","minimum":0,"maximum":7,"description":"VLAN priority for PC Port.\n"},"interface":{"type":"string","enum":["WEB_DOMAIN","PUBLIC_IPV4","PUBLIC_IPV6","PRIVATE_IPV4","PRIVATE_IPV6","SBC_DOMAIN"],"description":"The interface type for QR code or auto provisioning.   \nCan be neither:  \n- `WEB_DOMAIN`:\n- `PUBLIC_IPV4`:\n- `PUBLIC_IPV6`:\n- `PRIVATE_IPV4`:\n- `PRIVATE_IPV6`:\n- `SBC_DOMAIN`:\n"},"preferred_transport":{"type":"string","enum":["UDP","TCP","TLS"],"description":"The transport protocol:  \nCan be either:  \n- `UDP`:\n- `TCP`:\n- `TLS`:\n"},"serial_number":{"type":"string","description":"The serial number of phone.\n"},"door_password1":{"type":"string","minLength":4,"maxLength":8,"description":"The primary door password of phone. Only numeric sequences are allowed.\n"},"door_password2":{"type":"string","minLength":4,"maxLength":8,"description":"The secondary door password of phone. Only numeric sequences are allowed.\n"},"url":{"type":"string","description":"Auto provision server URL.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Assign phone to current user

> Assign a phone to current user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/phones":{"post":{"tags":["User"],"operationId":"createCurrentUserPhone","summary":"Assign phone to current user","description":"Assign a phone to current user.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"mac":{"allOf":[{"type":"string","description":"MAC address.\n"}],"description":"MAC address of this IP phone.\n"},"filename":{"type":"string","description":"Template XML file name for phone provisioning.\n"},"vendor":{"type":"string","description":"The phone vendor of IP phone.\n"},"model":{"type":"string","description":"The name of IP phone model.\n"},"password":{"type":"string","description":"Password for accessing the Web interface of phone.\nThe username remains default because most phone manufacturers do not\nallow modification of the user name. This is supported for some phone model, such as \"Snom 300\".\n"},"language":{"type":"string","enum":["ENGLISH","CHINESE","DUTCH","FRENCH","GERMAN","GREEK","ITALIAN","JAPANESE","POLISH","RUSSIAN","SPANISH","SWEDISH","UKRAINIAN","BULGARIAN"],"description":"Language for strings displayed on Phone Display LCD.\nSupported languages include ENGLISH, CHINESE, DUTCH, FRENCH, GERMAN,\nGREEK, ITALIAN, JAPANESE, POLISH, RUSSIAN, SPANISH, SWEDISH, UKRAINIAN, and BULGARIAN.\n"},"transfer":{"type":"string","enum":["BLIND","ATTENDED","NEW_CALL"],"default":"BLIND","description":"The transfer method for auto provision.  \nCan be either: \n- `BLIND`: After the IP phone is configured with the BLF of a certain key, during a call on the IP phone, press the key, and the phone will directly initiate a Blind transfer to the configured number.\n- `ATTENDED`: After the IP phone is configured with the BLF of a key, during a call on the IP phone, press the key, and the phone will directly initiate an Attended transfer to the configured number.\n- `NEW_CALL`: After the IP phone is configured with the BLF of a certain key, during a call on the IP phone, press the key, and the phone will initiate a new call to the configured number.\n"},"timezone":{"type":"string","description":"The timezone of phone.\n"},"ringtone":{"type":"string","description":"The ringtone of phone.\n"},"queue_ringtone":{"type":"string","description":"The queue ringtone of phone for queue calls or ring group calls.\n"},"external_ringtone":{"type":"string","description":"The ringtone of phone for external calls.\n"},"date_format":{"type":"string","description":"The date format of phone.\n"},"time_format":{"type":"string","description":"The time format of phone.\n"},"powerled":{"type":"string","description":"The power led of phone.\n"},"backlight":{"type":"string","description":"The backlight of phone.\n"},"screensaver":{"type":"string","description":"The screensaver of phone.\n"},"rps":{"type":"boolean","description":"Send to RPS or not.\n"},"https":{"type":"boolean","description":"Whether to use https\n"},"codecs":{"type":"array","items":{"type":"string"},"description":"Settings for the priority of the codecs in this phone.\nThis indicates the first preferred codec.\n"},"enable_lldp":{"type":"boolean","default":false,"description":"Enable or disable Link Layer Discovery Protocol."},"enable_vlan_wan_port":{"type":"boolean","default":false,"description":"Enable or disable VLAN for WAN Port.\n"},"wan_port_id":{"type":"integer","minimum":1,"maximum":4094,"description":"VLAN ID for WAN PORT.\n"},"wan_port_priority":{"type":"integer","minimum":0,"maximum":7,"description":"VLAN priority for WAN Port.\n"},"enable_vlan_pc_port":{"type":"boolean","default":false,"description":"Enable or disable VLAN for PC Port.\n"},"pc_port_id":{"type":"integer","minimum":1,"maximum":4094,"description":"VLAN ID for PC PORT.\n"},"pc_port_priority":{"type":"integer","minimum":0,"maximum":7,"description":"VLAN priority for PC Port.\n"},"interface":{"type":"string","enum":["WEB_DOMAIN","PUBLIC_IPV4","PUBLIC_IPV6","PRIVATE_IPV4","PRIVATE_IPV6","SBC_DOMAIN"],"description":"The interface type for QR code or auto provisioning.   \nCan be neither:  \n- `WEB_DOMAIN`:\n- `PUBLIC_IPV4`:\n- `PUBLIC_IPV6`:\n- `PRIVATE_IPV4`:\n- `PRIVATE_IPV6`:\n- `SBC_DOMAIN`:\n"},"preferred_transport":{"type":"string","enum":["UDP","TCP","TLS"],"description":"The transport protocol:  \nCan be either:  \n- `UDP`:\n- `TCP`:\n- `TLS`:\n"},"serial_number":{"type":"string","description":"The serial number of phone.\n"},"door_password1":{"type":"string","minLength":4,"maxLength":8,"description":"The primary door password of phone. Only numeric sequences are allowed.\n"},"door_password2":{"type":"string","minLength":4,"maxLength":8,"description":"The secondary door password of phone. Only numeric sequences are allowed.\n"}},"required":["mac","filename","vendor","model","password","language","transfer","timezone","codecs","interface","preferred_transport"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of phone.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve current user phone details

> Retrieve phone details of current user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/phones/{id}":{"get":{"tags":["User"],"operationId":"showCurrentUserPhone","summary":"Retrieve current user phone details","description":"Retrieve phone details of current user.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of phone.\n"},"description":"The unique ID of the phone."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of phone.\n"},"mac":{"allOf":[{"type":"string","description":"MAC address.\n"}],"description":"MAC address of this IP phone.\n"},"filename":{"type":"string","description":"Template XML file name for phone provisioning.\n"},"vendor":{"type":"string","description":"The phone vendor of IP phone.\n"},"model":{"type":"string","description":"The name of IP phone model.\n"},"password":{"type":"string","description":"Password for accessing the Web interface of phone.\nThe username remains default because most phone manufacturers do not\nallow modification of the user name. This is supported for some phone model, such as \"Snom 300\".\n"},"language":{"type":"string","enum":["ENGLISH","CHINESE","DUTCH","FRENCH","GERMAN","GREEK","ITALIAN","JAPANESE","POLISH","RUSSIAN","SPANISH","SWEDISH","UKRAINIAN","BULGARIAN"],"description":"Language for strings displayed on Phone Display LCD.\nSupported languages include ENGLISH, CHINESE, DUTCH, FRENCH, GERMAN,\nGREEK, ITALIAN, JAPANESE, POLISH, RUSSIAN, SPANISH, SWEDISH, UKRAINIAN, and BULGARIAN.\n"},"transfer":{"type":"string","enum":["BLIND","ATTENDED","NEW_CALL"],"default":"BLIND","description":"The transfer method for auto provision.  \nCan be either: \n- `BLIND`: After the IP phone is configured with the BLF of a certain key, during a call on the IP phone, press the key, and the phone will directly initiate a Blind transfer to the configured number.\n- `ATTENDED`: After the IP phone is configured with the BLF of a key, during a call on the IP phone, press the key, and the phone will directly initiate an Attended transfer to the configured number.\n- `NEW_CALL`: After the IP phone is configured with the BLF of a certain key, during a call on the IP phone, press the key, and the phone will initiate a new call to the configured number.\n"},"timezone":{"type":"string","description":"The timezone of phone.\n"},"ringtone":{"type":"string","description":"The ringtone of phone.\n"},"queue_ringtone":{"type":"string","description":"The queue ringtone of phone for queue calls or ring group calls.\n"},"external_ringtone":{"type":"string","description":"The ringtone of phone for external calls.\n"},"date_format":{"type":"string","description":"The date format of phone.\n"},"time_format":{"type":"string","description":"The time format of phone.\n"},"powerled":{"type":"string","description":"The power led of phone.\n"},"backlight":{"type":"string","description":"The backlight of phone.\n"},"screensaver":{"type":"string","description":"The screensaver of phone.\n"},"rps":{"type":"boolean","description":"Send to RPS or not.\n"},"https":{"type":"boolean","description":"Whether to use https\n"},"codecs":{"type":"array","items":{"type":"string"},"description":"Settings for the priority of the codecs in this phone.\nThis indicates the first preferred codec.\n"},"enable_lldp":{"type":"boolean","default":false,"description":"Enable or disable Link Layer Discovery Protocol."},"enable_vlan_wan_port":{"type":"boolean","default":false,"description":"Enable or disable VLAN for WAN Port.\n"},"wan_port_id":{"type":"integer","minimum":1,"maximum":4094,"description":"VLAN ID for WAN PORT.\n"},"wan_port_priority":{"type":"integer","minimum":0,"maximum":7,"description":"VLAN priority for WAN Port.\n"},"enable_vlan_pc_port":{"type":"boolean","default":false,"description":"Enable or disable VLAN for PC Port.\n"},"pc_port_id":{"type":"integer","minimum":1,"maximum":4094,"description":"VLAN ID for PC PORT.\n"},"pc_port_priority":{"type":"integer","minimum":0,"maximum":7,"description":"VLAN priority for PC Port.\n"},"interface":{"type":"string","enum":["WEB_DOMAIN","PUBLIC_IPV4","PUBLIC_IPV6","PRIVATE_IPV4","PRIVATE_IPV6","SBC_DOMAIN"],"description":"The interface type for QR code or auto provisioning.   \nCan be neither:  \n- `WEB_DOMAIN`:\n- `PUBLIC_IPV4`:\n- `PUBLIC_IPV6`:\n- `PRIVATE_IPV4`:\n- `PRIVATE_IPV6`:\n- `SBC_DOMAIN`:\n"},"preferred_transport":{"type":"string","enum":["UDP","TCP","TLS"],"description":"The transport protocol:  \nCan be either:  \n- `UDP`:\n- `TCP`:\n- `TLS`:\n"},"serial_number":{"type":"string","description":"The serial number of phone.\n"},"door_password1":{"type":"string","minLength":4,"maxLength":8,"description":"The primary door password of phone. Only numeric sequences are allowed.\n"},"door_password2":{"type":"string","minLength":4,"maxLength":8,"description":"The secondary door password of phone. Only numeric sequences are allowed.\n"},"url":{"type":"string","description":"Auto provision server URL.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update a phone of current user

> Update phone of current user by it's unique ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/phones/{id}":{"post":{"tags":["User"],"operationId":"updateCurrentUserPhone","summary":"Update a phone of current user","description":"Update phone of current user by it's unique ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of phone.\n"},"description":"The unique ID of the phone."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"Password for accessing the Web interface of phone.\nThe username remains default because most phone manufacturers do not\nallow modification of the user name. This is supported for some phone model, such as \"Snom 300\".\n"},"language":{"type":"string","enum":["ENGLISH","CHINESE","DUTCH","FRENCH","GERMAN","GREEK","ITALIAN","JAPANESE","POLISH","RUSSIAN","SPANISH","SWEDISH","UKRAINIAN","BULGARIAN"],"description":"Language for strings displayed on Phone Display LCD.\nSupported languages include ENGLISH, CHINESE, DUTCH, FRENCH, GERMAN,\nGREEK, ITALIAN, JAPANESE, POLISH, RUSSIAN, SPANISH, SWEDISH, UKRAINIAN, and BULGARIAN.\n"},"transfer":{"type":"string","enum":["BLIND","ATTENDED","NEW_CALL"],"default":"BLIND","description":"The transfer method for auto provision.  \nCan be either: \n- `BLIND`: After the IP phone is configured with the BLF of a certain key, during a call on the IP phone, press the key, and the phone will directly initiate a Blind transfer to the configured number.\n- `ATTENDED`: After the IP phone is configured with the BLF of a key, during a call on the IP phone, press the key, and the phone will directly initiate an Attended transfer to the configured number.\n- `NEW_CALL`: After the IP phone is configured with the BLF of a certain key, during a call on the IP phone, press the key, and the phone will initiate a new call to the configured number.\n"},"timezone":{"type":"string","description":"The timezone of phone.\n"},"ringtone":{"type":"string","description":"The ringtone of phone.\n"},"queue_ringtone":{"type":"string","description":"The queue ringtone of phone for queue calls or ring group calls.\n"},"external_ringtone":{"type":"string","description":"The ringtone of phone for external calls.\n"},"date_format":{"type":"string","description":"The date format of phone.\n"},"time_format":{"type":"string","description":"The time format of phone.\n"},"powerled":{"type":"string","description":"The power led of phone.\n"},"backlight":{"type":"string","description":"The backlight of phone.\n"},"screensaver":{"type":"string","description":"The screensaver of phone.\n"},"rps":{"type":"boolean","description":"Send to RPS or not.\n"},"https":{"type":"boolean","description":"Whether to use https\n"},"codecs":{"type":"array","items":{"type":"string"},"description":"Settings for the priority of the codecs in this phone.\nThis indicates the first preferred codec.\n"},"enable_lldp":{"type":"boolean","default":false,"description":"Enable or disable Link Layer Discovery Protocol."},"enable_vlan_wan_port":{"type":"boolean","default":false,"description":"Enable or disable VLAN for WAN Port.\n"},"wan_port_id":{"type":"integer","minimum":1,"maximum":4094,"description":"VLAN ID for WAN PORT.\n"},"wan_port_priority":{"type":"integer","minimum":0,"maximum":7,"description":"VLAN priority for WAN Port.\n"},"enable_vlan_pc_port":{"type":"boolean","default":false,"description":"Enable or disable VLAN for PC Port.\n"},"pc_port_id":{"type":"integer","minimum":1,"maximum":4094,"description":"VLAN ID for PC PORT.\n"},"pc_port_priority":{"type":"integer","minimum":0,"maximum":7,"description":"VLAN priority for PC Port.\n"},"interface":{"type":"string","enum":["WEB_DOMAIN","PUBLIC_IPV4","PUBLIC_IPV6","PRIVATE_IPV4","PRIVATE_IPV6","SBC_DOMAIN"],"description":"The interface type for QR code or auto provisioning.   \nCan be neither:  \n- `WEB_DOMAIN`:\n- `PUBLIC_IPV4`:\n- `PUBLIC_IPV6`:\n- `PRIVATE_IPV4`:\n- `PRIVATE_IPV6`:\n- `SBC_DOMAIN`:\n"},"preferred_transport":{"type":"string","enum":["UDP","TCP","TLS"],"description":"The transport protocol:  \nCan be either:  \n- `UDP`:\n- `TCP`:\n- `TLS`:\n"},"serial_number":{"type":"string","description":"The serial number of phone.\n"},"door_password1":{"type":"string","minLength":4,"maxLength":8,"description":"The primary door password of phone. Only numeric sequences are allowed.\n"},"door_password2":{"type":"string","minLength":4,"maxLength":8,"description":"The secondary door password of phone. Only numeric sequences are allowed.\n"}}}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Remove a phone of current user

> Remove a phone profile from current user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/phones/{id}/destroy":{"post":{"tags":["User"],"operationId":"deleteCurrentUserPhone","summary":"Remove a phone of current user","description":"Remove a phone profile from current user.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of phone.\n"},"description":"The unique ID of the phone."}],"responses":{"204":{"description":"No Content"},"4XX":{"description":"Error"}}}}}}
```

## List user call detail records

> Retrieve a collection of user call detail records.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/cdrs":{"get":{"tags":["User"],"operationId":"listUserCDRs","summary":"List user call detail records","description":"Retrieve a collection of user call detail records.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","format":"int64","minimum":0,"description":"Total number of resource.\n"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of CDR.\n"},"caller":{"type":"string","maxLength":256,"description":"The caller number of the call.\n"},"caller_domain":{"type":"string","maxLength":1024,"description":"The caller domain of the call.\n"},"caller_display_name":{"type":"string","maxLength":1024,"description":"The caller display name of the call.\n"},"callee":{"type":"string","maxLength":256,"description":"The callee number of the call.\n"},"callee_domain":{"type":"string","maxLength":1024,"description":"The callee domain of the call.\n"},"callee_display_name":{"type":"string","maxLength":1024,"description":"The callee display name of the call.\n"},"started_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The start time of the call.\n"},"rang_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The ringing time of the call.\n"},"answered_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The answer time of the call.\n"},"ended_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The end time of the call.\n"},"call_id":{"type":"string","description":"The call ID of CDR.\n"},"direction":{"type":"string","enum":["INBOUND_CALL","OUTBOUND_CALL","EXTENSION_CALL","INBOUND_OUTBOUND_CALL"],"description":"The direction of CDR:\n- `INBOUND_CALL`:\n- `OUTBOUND_CALL`:\n- `EXTENSION_CALL`:\n- `INBOUND_OUTBOUND_CALL`:\n"},"end_reason":{"type":"string","enum":["CALLER_DISCONNECTED","CALLEE_DISCONNECTED","BLIND_TRANSFER_COMPLETED","CONSULT_TRANSFER_COMPLETED","REPLACED","REFERRED","REDIRECTED","CANCELLED"],"description":"The ended reason of CDR:  \nCan be either:  \n- `CALLER_DISCONNECTED`:\n- `CALLEE_DISCONNECTED`:\n- `BLIND_TRANSFER_COMPLETED`:\n- `CONSULT_TRANSFER_COMPLETED`:\n- `REPLACED`:\n- `REFERRED`:\n- `REDIRECTED`:\n- `CANCELLED`:\n"},"reroute_reason":{"type":"string","enum":["TRANSFER","OVERFLOW"],"description":"The reroute reason of CDR:  \nCan be either:  \n- `TRANSFER`:\n- `OVERFLOW`:\n"},"status_code":{"type":"integer","description":"The status code of CDR.\n"},"destination":{"type":"string","description":"The destination number of CDR.\n"},"outbound_caller_id":{"type":"string","minLength":1,"maxLength":64,"description":"Outbound caller id.\n"},"did_cid":{"type":"string","description":"The DID CID of CDR.\n"},"trunk":{"type":"string","description":"The trunk name of CDR.\n"},"duration":{"type":"integer","format":"int32","description":"The total talk time for a session (in seconds).\n"},"service_number":{"type":"string","description":"The service number of the call.\n"},"user_data":{"type":"string","description":"The additional custom user data of CDR.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve user call detail record

> Retrieve user call detail record.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/cdrs/{id}":{"get":{"tags":["User"],"operationId":"retrieveUserCDR","summary":"Retrieve user call detail record","description":"Retrieve user call detail record.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of CDR.\n"},"description":"The unique ID of the CDR."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"object","properties":{"caller":{"type":"string","maxLength":256,"description":"The caller number of the call.\n"},"caller_domain":{"type":"string","maxLength":1024,"description":"The caller domain of the call.\n"},"caller_display_name":{"type":"string","maxLength":1024,"description":"The caller display name of the call.\n"},"callee":{"type":"string","maxLength":256,"description":"The callee number of the call.\n"},"callee_domain":{"type":"string","maxLength":1024,"description":"The callee domain of the call.\n"},"callee_display_name":{"type":"string","maxLength":1024,"description":"The callee display name of the call.\n"},"started_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The start time of the call.\n"},"rang_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The ringing time of the call.\n"},"answered_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The answer time of the call.\n"},"ended_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The end time of the call.\n"},"call_id":{"type":"string","description":"The call ID of CDR.\n"},"direction":{"type":"string","enum":["INBOUND_CALL","OUTBOUND_CALL","EXTENSION_CALL","INBOUND_OUTBOUND_CALL"],"description":"The direction of CDR:\n- `INBOUND_CALL`:\n- `OUTBOUND_CALL`:\n- `EXTENSION_CALL`:\n- `INBOUND_OUTBOUND_CALL`:\n"},"end_reason":{"type":"string","enum":["CALLER_DISCONNECTED","CALLEE_DISCONNECTED","BLIND_TRANSFER_COMPLETED","CONSULT_TRANSFER_COMPLETED","REPLACED","REFERRED","REDIRECTED","CANCELLED"],"description":"The ended reason of CDR:  \nCan be either:  \n- `CALLER_DISCONNECTED`:\n- `CALLEE_DISCONNECTED`:\n- `BLIND_TRANSFER_COMPLETED`:\n- `CONSULT_TRANSFER_COMPLETED`:\n- `REPLACED`:\n- `REFERRED`:\n- `REDIRECTED`:\n- `CANCELLED`:\n"},"reroute_reason":{"type":"string","enum":["TRANSFER","OVERFLOW"],"description":"The reroute reason of CDR:  \nCan be either:  \n- `TRANSFER`:\n- `OVERFLOW`:\n"},"status_code":{"type":"integer","description":"The status code of CDR.\n"},"destination":{"type":"string","description":"The destination number of CDR.\n"},"outbound_caller_id":{"type":"string","minLength":1,"maxLength":64,"description":"Outbound caller id.\n"},"did_cid":{"type":"string","description":"The DID CID of CDR.\n"},"trunk":{"type":"string","description":"The trunk name of CDR.\n"},"cost":{"type":"number","format":"double","description":"The cost for this call.\n"},"billed_account":{"type":"string","description":"The account name for billing.\n"},"service_number":{"type":"string","description":"The service number of the call.\n"},"user_data":{"type":"string","description":"The additional custom user data of CDR.\n"}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## POST /user/cdrs/sync\_tokens

> Create new personal cdr sync token

````json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/cdrs/sync_tokens":{"post":{"tags":["User"],"operationId":"createPersonalCdrSyncToken","summary":"Create new personal cdr sync token","parameters":[{"name":"date_from","in":"query","required":false,"schema":{"type":"string","format":"date_time","description":"The start time sync token in RFC 3339 format, for example, ```2017-07-21T17:32:28Z```.\nThe RFC 3339 format is defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6)\n"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"The sync token.   \nClients should treat the sync token as an opaque string and should never try to assemble it.   \nThis document imposes no constraints on the format and clients should never impose any.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
````

## List personal cdr changes

> List personal cdr changes.

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/cdrs/sync_tokens/{token}/diff":{"post":{"tags":["User"],"operationId":"listPersonalCdrChanges","summary":"List personal cdr changes","description":"List personal cdr changes.","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","description":"The sync token.   \nClients should treat the sync token as an opaque string and should never try to assemble it.   \nThis document imposes no constraints on the format and clients should never impose any.\n"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"The sync token.   \nClients should treat the sync token as an opaque string and should never try to assemble it.   \nThis document imposes no constraints on the format and clients should never impose any.\n"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of CDR.\n"},"change_type":{"type":"string","enum":["CREATED","UPDATED","DELETED"],"description":"The resource change types can be either:  \n- `CREATED`: The resource has been created.   \n- `UPDATED`: The resource has been updated.   \n- `DELETED`: The resource has been deleted.   \n"},"items":{"type":"array","items":{"type":"object","properties":{"caller":{"type":"string","maxLength":256,"description":"The caller number of the call.\n"},"callee":{"type":"string","maxLength":256,"description":"The callee number of the call.\n"},"started_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The start time of the call.\n"},"answered_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The answer time of the call.\n"},"ended_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The end time of the call.\n"},"outbound_caller_id":{"type":"string","minLength":1,"maxLength":64,"description":"Outbound caller id.\n"},"did_cid":{"type":"string","description":"The DID CID of CDR.\n"},"trunk":{"type":"string","description":"The trunk name of CDR.\n"},"status_code":{"type":"integer","description":"The status code of CDR.\n"}}}}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## List user external messages

> Retrieve a collection of user external messages.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/external_messages":{"get":{"tags":["User"],"operationId":"listUserExternalMessages","summary":"List user external messages","description":"Retrieve a collection of user external messages.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","format":"int64","minimum":0,"description":"Total number of resource.\n"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of external message.\n"},"config_id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of external message.\n"},"sender":{"type":"string","description":"The sender number of the message.\n"},"sender_name":{"type":"string","description":"The sender name of the message.\n"},"receiver":{"type":"string","description":"The receiver number of the message.\n"},"receiver_name":{"type":"string","description":"The receiver name of the message.\n"},"channel_name":{"type":"string","description":"The channel name of the message.\n"},"channel_number":{"type":"string","description":"The channel number of the message.\n"},"brand":{"type":"string","description":"The brand of the message.\n"},"did":{"type":"string","description":"The did of the message.\n"},"msg_type":{"type":"string","enum":["UNKNOWN","SMS","WHATSAPP"],"description":"The type of message:  \nCan be either:  \n- `UNKNOWN`:   \n- `SMS`:   \n- `WHATSAPP`:\n"},"direction":{"type":"string","enum":["IN","OUT"],"description":"The direction of message:   \n- `IN`:   \n- `OUT`:\n"},"content":{"type":"string","description":"The content of the message.\n"},"reason":{"type":"string","description":"The reason of the message.\n"},"delivery":{"type":"string","enum":["ERR","SENT","RECV","DELIVERED"],"description":"The delivery status of message:  \nCan be either:  \n- `ERR`:\n- `SENT`:\n- `RECV`:\n- `DELIVERED`:   \n"},"provider_msg_id":{"type":"string","description":"The provider message ID of the message.\n"},"created_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The creation time of the message.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve user external message

> Retrieve user external message.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/external_messages/{id}":{"get":{"tags":["User"],"operationId":"retrieveUserExternalMessage","summary":"Retrieve user external message","description":"Retrieve user external message.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of external message.\n"},"description":"The unique ID of the external message."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of external message.\n"},"config_id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of external message.\n"},"sender":{"type":"string","description":"The sender number of the message.\n"},"sender_name":{"type":"string","description":"The sender name of the message.\n"},"receiver":{"type":"string","description":"The receiver number of the message.\n"},"receiver_name":{"type":"string","description":"The receiver name of the message.\n"},"channel_name":{"type":"string","description":"The channel name of the message.\n"},"channel_number":{"type":"string","description":"The channel number of the message.\n"},"brand":{"type":"string","description":"The brand of the message.\n"},"did":{"type":"string","description":"The did of the message.\n"},"msg_type":{"type":"string","enum":["UNKNOWN","SMS","WHATSAPP"],"description":"The type of message:  \nCan be either:  \n- `UNKNOWN`:   \n- `SMS`:   \n- `WHATSAPP`:\n"},"direction":{"type":"string","enum":["IN","OUT"],"description":"The direction of message:   \n- `IN`:   \n- `OUT`:\n"},"content":{"type":"string","description":"The content of the message.\n"},"reason":{"type":"string","description":"The reason of the message.\n"},"delivery":{"type":"string","enum":["ERR","SENT","RECV","DELIVERED"],"description":"The delivery status of message:  \nCan be either:  \n- `ERR`:\n- `SENT`:\n- `RECV`:\n- `DELIVERED`:   \n"},"provider_msg_id":{"type":"string","description":"The provider message ID of the message.\n"},"created_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The creation time of the message.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## List user call recordings

> Retrieve a collection of user call recordings.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/recordings":{"get":{"tags":["User"],"operationId":"listUserRecordings","summary":"List user call recordings","description":"Retrieve a collection of user call recordings.\n","parameters":[{"name":"filter","in":"query","schema":{"type":"string"},"description":"Use the `filter` query parameter to retrieve just a subset of a collection.\n"},{"name":"search","in":"query","schema":{"type":"string"},"description":"Use the `search` query parameter to restrict the results of a request to match a search criterion.\n"},{"name":"orderby","in":"query","schema":{"type":"string"},"description":"Use the `orderby` query parameter to specify the sort order of the items returned from server.  \nThe default order is ascending order.\n"},{"name":"skip","in":"query","schema":{"type":"integer","format":"int32","minimum":0,"default":0},"description":"Use the `skip` query parameter to set the number of items to skip at the start of a collection.\n"},{"name":"top","in":"query","schema":{"type":"integer","format":"int32","minimum":1,"maximum":100,"default":100},"description":"Use the `top` query parameter to specify the page size of the result set.\n"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","format":"int64","minimum":0,"description":"Total number of resource.\n"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of call recording.\n"},"caller":{"type":"string","description":"Caller who started the call.\n"},"callee":{"type":"string","description":"Callee who answered the call.\n"},"started_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"Time on which the call is answered.\n"},"ended_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"Time on which the call is ended.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve an user call recording

> Get details of an user call recording.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/recordings/{id}":{"get":{"tags":["User"],"operationId":"getUserRecording","summary":"Retrieve an user call recording","description":"Get details of an user call recording.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of call recording.\n"},"description":"The unique ID of the call recording."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"caller":{"type":"string","description":"Caller who started the call.\n"},"callee":{"type":"string","description":"Callee who answered the call.\n"},"started_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"Time on which the call is answered.\n"},"ended_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"Time on which the call is ended.\n"},"duration":{"type":"integer","format":"int32","description":"The playback time (in seconds).\n"},"file_name":{"type":"string","description":"The name of the file.\n"},"file_size":{"type":"integer","format":"int64","minimum":0,"description":"The file size in bytes.\n"},"file_url":{"type":"string","readOnly":true,"description":"The relative path to file url for file downloading.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Delete user call recording

> Delete an user call recording<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/recordings/{id}/destroy":{"post":{"tags":["User"],"operationId":"deleteUserRecording","summary":"Delete user call recording","description":"Delete an user call recording\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of call recording.\n"},"description":"The unique ID of the recording."}],"responses":{"204":{"description":"No Content"},"4XX":{"description":"Error"}}}}}}
```

## List speed dial 8

> List speed dial 8.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/speed_dial_8":{"get":{"tags":["User"],"operationId":"listSpeedDial8","summary":"List speed dial 8","description":"List speed dial 8.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"},"code":{"type":"string","minLength":1,"maxLength":1,"description":"The speed dial 8 dialing code.   \nAvailable code range from `2` to `9`.\n"},"phone_number":{"type":"string","description":"The phone number that you want to call.\n"},"description":{"type":"string","maximum":1024,"description":"The description of speed dial.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Add new speed dial 8

> Create new speed dial 8.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/speed_dial_8":{"post":{"tags":["User"],"operationId":"addSpeedDial8","summary":"Add new speed dial 8","description":"Create new speed dial 8.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":1,"description":"The speed dial 8 dialing code.   \nAvailable code range from `2` to `9`.\n"},"phone_number":{"type":"string","description":"The phone number that you want to call.\n"},"description":{"type":"string","maximum":1024,"description":"The description of speed dial.\n"}},"required":["code","phone_number"]}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve details of speed dial 8

> Retrieve details of speed dial 8 by it's ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/speed_dial_8/{id}":{"get":{"tags":["User"],"operationId":"retrieveSpeedDial8","summary":"Retrieve details of speed dial 8","description":"Retrieve details of speed dial 8 by it's ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"},"code":{"type":"string","minLength":1,"maxLength":1,"description":"The speed dial 8 dialing code.   \nAvailable code range from `2` to `9`.\n"},"phone_number":{"type":"string","description":"The phone number that you want to call.\n"},"description":{"type":"string","maximum":1024,"description":"The description of speed dial.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update speed dial 8

> Update speed dial 8.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/speed_dial_8/{id}":{"post":{"tags":["User"],"operationId":"updateSpeedDial8","summary":"Update speed dial 8","description":"Update speed dial 8.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":1,"description":"The speed dial 8 dialing code.   \nAvailable code range from `2` to `9`.\n"},"phone_number":{"type":"string","description":"The phone number that you want to call.\n"},"description":{"type":"string","maximum":1024,"description":"The description of speed dial.\n"}}}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Delete speed dial 8

> Remove speed dial 8 by ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/speed_dial_8/{id}/destroy":{"post":{"tags":["User"],"operationId":"deleteSpeedDial8","summary":"Delete speed dial 8","description":"Remove speed dial 8 by ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"}}],"responses":{"204":{"description":"No Content"},"4XX":{"description":"Error"}}}}}}
```

## List speed dial 100

> List speed dial 100.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/speed_dial_100":{"get":{"tags":["User"],"operationId":"listSpeedDial100","summary":"List speed dial 100","description":"List speed dial 100.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"},"code":{"type":"string","minLength":2,"maxLength":2,"description":"The speed dial 100 dialing code.   \nAvailable code range from `00` to `99`.\n"},"phone_number":{"type":"string","description":"The phone number that you want to call.\n"},"description":{"type":"string","maximum":1024,"description":"The description of speed dial.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Add new speed dial 100

> Create new speed dial 100.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/speed_dial_100":{"post":{"tags":["User"],"operationId":"addSpeedDial100","summary":"Add new speed dial 100","description":"Create new speed dial 100.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":2,"maxLength":2,"description":"The speed dial 100 dialing code.   \nAvailable code range from `00` to `99`.\n"},"phone_number":{"type":"string","description":"The phone number that you want to call.\n"},"description":{"type":"string","maximum":1024,"description":"The description of speed dial.\n"}},"required":["code","phone_number"]}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve details of speed dial 100

> Retrieve details of speed dial 100 by it's ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/speed_dial_100/{id}":{"get":{"tags":["User"],"operationId":"retrieveSpeedDial100","summary":"Retrieve details of speed dial 100","description":"Retrieve details of speed dial 100 by it's ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"},"code":{"type":"string","minLength":2,"maxLength":2,"description":"The speed dial 100 dialing code.   \nAvailable code range from `00` to `99`.\n"},"phone_number":{"type":"string","description":"The phone number that you want to call.\n"},"description":{"type":"string","maximum":1024,"description":"The description of speed dial.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update speed dial 100

> Update speed dial 100.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/speed_dial_100/{id}":{"post":{"tags":["User"],"operationId":"updateSpeedDial100","summary":"Update speed dial 100","description":"Update speed dial 100.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":2,"maxLength":2,"description":"The speed dial 100 dialing code.   \nAvailable code range from `00` to `99`.\n"},"phone_number":{"type":"string","description":"The phone number that you want to call.\n"},"description":{"type":"string","maximum":1024,"description":"The description of speed dial.\n"}}}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Delete speed dial 100

> Remove speed dial 100 by ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/speed_dial_100/{id}/destroy":{"post":{"tags":["User"],"operationId":"deleteSpeedDial100","summary":"Delete speed dial 100","description":"Remove speed dial 100 by ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"}}],"responses":{"204":{"description":"No Content"},"4XX":{"description":"Error"}}}}}}
```

## List user meetings

> Retrieve a collection of meetings.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings":{"get":{"tags":["User"],"operationId":"listUserMeetings","summary":"List user meetings","description":"Retrieve a collection of meetings.\n","parameters":[{"name":"filter","in":"query","schema":{"type":"string"},"description":"Use the `filter` query parameter to retrieve just a subset of a collection.\n"},{"name":"search","in":"query","schema":{"type":"string"},"description":"Use the `search` query parameter to restrict the results of a request to match a search criterion.\n"},{"name":"orderby","in":"query","schema":{"type":"string"},"description":"Use the `orderby` query parameter to specify the sort order of the items returned from server.  \nThe default order is ascending order.\n"},{"name":"skip","in":"query","schema":{"type":"integer","format":"int32","minimum":0,"default":0},"description":"Use the `skip` query parameter to set the number of items to skip at the start of a collection.\n"},{"name":"top","in":"query","schema":{"type":"integer","format":"int32","minimum":1,"maximum":100,"default":100},"description":"Use the `top` query parameter to specify the page size of the result set.\n"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","format":"int64","minimum":0,"description":"Total number of resource.\n"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"extension_number":{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"},"mode":{"type":"string","enum":["AUDIO","VIDEO"],"description":"The conference room mode.  \nCan be either:  \n- `AUDIO`: audio conference room.\n- `VIDEO`: video conference room.\n"},"control":{"type":"string","enum":["FREE","MASTER"],"default":"FREE","description":"The conference control type.  \nCan be either:  \n- `FREE`: the free mode.  \n- `MASTER`: the master mode.\n"},"height":{"type":"integer","format":"int32","minimum":144,"maximum":1920,"default":720,"description":"The height for video conference room.  \nOnly valid in `VIDEO` mode.\n"},"width":{"type":"integer","format":"int32","minimum":144,"maximum":1920,"default":1280,"description":"The width for video conference room.  \nOnly valid in `VIDEO` mode.\n"},"bitrate":{"type":"integer","format":"int32","minimum":128,"maximum":10240,"default":1024,"description":"The transmission rate for video conference room.  \nOnly valid in `VIDEO` mode.\n"},"framerate":{"type":"integer","minimum":5,"maximum":30,"default":15,"description":"The framerate for video conference room.  \nOnly valid in `VIDEO` mode.\n"},"layout":{"type":"string","enum":["LAYOUT0","LAYOUT1","LAYOUT2","LAYOUT3","LAYOUT4","LAYOUT6","LAYOUT9"],"default":"LAYOUT0","description":"The number of grids allowed for video conference room.  \nOnly valid in `VIDEO` mode.  \nCan be either:  \n- LAYOUT0:\n- LAYOUT1:\n- LAYOUT2:\n- LAYOUT3:\n- LAYOUT4:\n- LAYOUT6:\n- LAYOUT9:\n"},"subject":{"type":"string","minLength":1,"maxLength":64,"description":"The subject of conference room.\n"},"language":{"type":"string","description":"BCP 47 Language Tags (The Internet Best Current Practices (BCP) for language tags).\nA language tag is composed of a sequence of one or more subtags such as language, region, variant and script subtags.\nWhen a language tag is comprised of more than one subtag, the subtag values are separated by the \"-\" character.\nYou will most commonly find language tags written with 2 subtags - language and region. For example: en-US.\n"},"capacity":{"type":"integer","format":"int32","minimum":1,"maximum":200,"default":9,"description":"The maximum number of participants allowed in the room.\n"},"admin_pin":{"type":"string","minLength":3,"maxLength":6,"description":"The PIN for admin of the conference room. Only numeric sequences are allowed.\n"},"room_pin":{"type":"string","minLength":3,"maxLength":6,"description":"The PIN for the conference room. Only numeric sequences are allowed.\n"},"enable_recording":{"type":"boolean","default":false,"description":"Whether to enable recording when created.\n"},"enable_prompt":{"type":"boolean","default":true,"description":"Whether to enable voice menu.\n"},"timezone":{"type":"string","description":"The IANA Time Zone names, such as \"Asia/Shanghai\".\n"},"created_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The creation time of conference room.\n"},"scheduled_start_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The scheduled start time of meeting.\n"},"scheduled_end_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The scheduled end time of meeting.\n"},"internal_invitees":{"type":"array","items":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"}],"description":"A collection of extension's ID for sending invitation emails.\n"}},"external_invitees":{"type":"string","description":"The invitees to send invitation emails to.\n"},"close_on_nobody":{"type":"boolean","default":false,"description":"Whether to close the meeting if the nobody in.\n"},"outbound_caller_ids":{"type":"array","items":{"type":"object","properties":{"provider_id":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of trunk.\n"}],"description":"The unique ID of trunk.\n"},"caller_id":{"allOf":[{"type":"string","minLength":1,"maxLength":64,"description":"Outbound caller id.\n"}],"description":"The caller ID.\n"},"description":{"type":"string","maxLength":1024,"description":"The descriptive information about this outbound caller id.\n"}}},"description":"A collection of outbound caller IDs.\n"},"ownership":{"type":"boolean","description":"Whether the user has ownership of the meeting.\n"},"custom_options":{"type":"string","description":"Some custom configuration options serialized as json string\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Create a Meeting

> Create a meeting.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings":{"post":{"tags":["User"],"operationId":"createMeeting","summary":"Create a Meeting","description":"Create a meeting.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["AUDIO","VIDEO"],"description":"The conference room mode.  \nCan be either:  \n- `AUDIO`: audio conference room.\n- `VIDEO`: video conference room.\n"},"control":{"type":"string","enum":["FREE","MASTER"],"default":"FREE","description":"The conference control type.  \nCan be either:  \n- `FREE`: the free mode.  \n- `MASTER`: the master mode.\n"},"height":{"type":"integer","format":"int32","minimum":144,"maximum":1920,"default":720,"description":"The height for video conference room.  \nOnly valid in `VIDEO` mode.\n"},"width":{"type":"integer","format":"int32","minimum":144,"maximum":1920,"default":1280,"description":"The width for video conference room.  \nOnly valid in `VIDEO` mode.\n"},"bitrate":{"type":"integer","format":"int32","minimum":128,"maximum":10240,"default":1024,"description":"The transmission rate for video conference room.  \nOnly valid in `VIDEO` mode.\n"},"framerate":{"type":"integer","minimum":5,"maximum":30,"default":15,"description":"The framerate for video conference room.  \nOnly valid in `VIDEO` mode.\n"},"layout":{"type":"string","enum":["LAYOUT0","LAYOUT1","LAYOUT2","LAYOUT3","LAYOUT4","LAYOUT6","LAYOUT9"],"default":"LAYOUT0","description":"The number of grids allowed for video conference room.  \nOnly valid in `VIDEO` mode.  \nCan be either:  \n- LAYOUT0:\n- LAYOUT1:\n- LAYOUT2:\n- LAYOUT3:\n- LAYOUT4:\n- LAYOUT6:\n- LAYOUT9:\n"},"subject":{"type":"string","minLength":1,"maxLength":64,"description":"The subject of conference room.\n"},"language":{"type":"string","description":"BCP 47 Language Tags (The Internet Best Current Practices (BCP) for language tags).\nA language tag is composed of a sequence of one or more subtags such as language, region, variant and script subtags.\nWhen a language tag is comprised of more than one subtag, the subtag values are separated by the \"-\" character.\nYou will most commonly find language tags written with 2 subtags - language and region. For example: en-US.\n"},"admin_pin":{"type":"string","minLength":3,"maxLength":6,"description":"The PIN for admin of the conference room. Only numeric sequences are allowed.\n"},"room_pin":{"type":"string","minLength":3,"maxLength":6,"description":"The PIN for the conference room. Only numeric sequences are allowed.\n"},"enable_recording":{"type":"boolean","default":false,"description":"Whether to enable recording when created.\n"},"enable_prompt":{"type":"boolean","default":true,"description":"Whether to enable voice menu.\n"},"timezone":{"type":"string","description":"The IANA Time Zone names, such as \"Asia/Shanghai\".\n"},"scheduled_start_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The scheduled start time of meeting.\n"},"scheduled_end_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The scheduled end time of meeting.\n"},"internal_invitees":{"type":"array","items":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"}],"description":"A collection of extension's ID for sending invitation emails.\n"}},"external_invitees":{"type":"string","description":"The invitees to send invitation emails to.\n"},"close_on_nobody":{"type":"boolean","default":false,"description":"Whether to close the meeting if the nobody in.\n"},"outbound_caller_ids":{"type":"array","items":{"type":"object","properties":{"provider_id":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of trunk.\n"}],"description":"The unique ID of trunk.\n"},"caller_id":{"allOf":[{"type":"string","minLength":1,"maxLength":64,"description":"Outbound caller id.\n"}],"description":"The caller ID.\n"},"description":{"type":"string","maxLength":1024,"description":"The descriptive information about this outbound caller id.\n"}}},"description":"A collection of outbound caller IDs.\n"},"custom_options":{"type":"string","description":"Some custom configuration options serialized as json string\n"}},"required":["mode","subject","timezone"]}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"extension_number":{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve a meeting

> Retrieve a meeting.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}":{"get":{"tags":["User"],"operationId":"getMeeting","summary":"Retrieve a meeting","description":"Retrieve a meeting.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"extension_number":{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"},"mode":{"type":"string","enum":["AUDIO","VIDEO"],"description":"The conference room mode.  \nCan be either:  \n- `AUDIO`: audio conference room.\n- `VIDEO`: video conference room.\n"},"control":{"type":"string","enum":["FREE","MASTER"],"default":"FREE","description":"The conference control type.  \nCan be either:  \n- `FREE`: the free mode.  \n- `MASTER`: the master mode.\n"},"height":{"type":"integer","format":"int32","minimum":144,"maximum":1920,"default":720,"description":"The height for video conference room.  \nOnly valid in `VIDEO` mode.\n"},"width":{"type":"integer","format":"int32","minimum":144,"maximum":1920,"default":1280,"description":"The width for video conference room.  \nOnly valid in `VIDEO` mode.\n"},"bitrate":{"type":"integer","format":"int32","minimum":128,"maximum":10240,"default":1024,"description":"The transmission rate for video conference room.  \nOnly valid in `VIDEO` mode.\n"},"framerate":{"type":"integer","minimum":5,"maximum":30,"default":15,"description":"The framerate for video conference room.  \nOnly valid in `VIDEO` mode.\n"},"layout":{"type":"string","enum":["LAYOUT0","LAYOUT1","LAYOUT2","LAYOUT3","LAYOUT4","LAYOUT6","LAYOUT9"],"default":"LAYOUT0","description":"The number of grids allowed for video conference room.  \nOnly valid in `VIDEO` mode.  \nCan be either:  \n- LAYOUT0:\n- LAYOUT1:\n- LAYOUT2:\n- LAYOUT3:\n- LAYOUT4:\n- LAYOUT6:\n- LAYOUT9:\n"},"subject":{"type":"string","minLength":1,"maxLength":64,"description":"The subject of conference room.\n"},"language":{"type":"string","description":"BCP 47 Language Tags (The Internet Best Current Practices (BCP) for language tags).\nA language tag is composed of a sequence of one or more subtags such as language, region, variant and script subtags.\nWhen a language tag is comprised of more than one subtag, the subtag values are separated by the \"-\" character.\nYou will most commonly find language tags written with 2 subtags - language and region. For example: en-US.\n"},"capacity":{"type":"integer","format":"int32","minimum":1,"maximum":200,"default":9,"description":"The maximum number of participants allowed in the room.\n"},"admin_pin":{"type":"string","minLength":3,"maxLength":6,"description":"The PIN for admin of the conference room. Only numeric sequences are allowed.\n"},"room_pin":{"type":"string","minLength":3,"maxLength":6,"description":"The PIN for the conference room. Only numeric sequences are allowed.\n"},"enable_recording":{"type":"boolean","default":false,"description":"Whether to enable recording when created.\n"},"enable_prompt":{"type":"boolean","default":true,"description":"Whether to enable voice menu.\n"},"timezone":{"type":"string","description":"The IANA Time Zone names, such as \"Asia/Shanghai\".\n"},"created_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The creation time of conference room.\n"},"scheduled_start_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The scheduled start time of meeting.\n"},"scheduled_end_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The scheduled end time of meeting.\n"},"internal_invitees":{"type":"array","items":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"}],"description":"A collection of extension's ID for sending invitation emails.\n"}},"external_invitees":{"type":"string","description":"The invitees to send invitation emails to.\n"},"close_on_nobody":{"type":"boolean","default":false,"description":"Whether to close the meeting if the nobody in.\n"},"domain":{"type":"string","minLength":1,"maxLength":280,"description":"The SIP domain of tenant.  \nIt is usually a fully qualified domain name (FQDN).\nIf there is no FQDN, you can also use the IP address of the PBX server as the SIP domain.\nThe SIP domain name is only used for SIP message authentication and does not require analysis.\n"},"sbc_host":{"type":"string","description":"The SBC domain.\n"},"sbc_port":{"allOf":[{"type":"integer","format":"int32","minimum":0,"maximum":65535,"description":"A port number is a 16-bit unsigned integer, thus ranging from 0 to 65535.\nFor TCP, port number 0 is reserved and cannot be used, while for UDP, the source port is optional and a value of zero means no port\n"}],"default":8883,"description":"The SBC web port fot https.\n"},"token":{"type":"string","description":"Access token to be passed as a header\n"},"outbound_caller_ids":{"type":"array","items":{"type":"object","properties":{"provider_id":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of trunk.\n"}],"description":"The unique ID of trunk.\n"},"caller_id":{"allOf":[{"type":"string","minLength":1,"maxLength":64,"description":"Outbound caller id.\n"}],"description":"The caller ID.\n"},"description":{"type":"string","maxLength":1024,"description":"The descriptive information about this outbound caller id.\n"}}},"description":"A collection of outbound caller IDs.\n"},"ownership":{"type":"boolean","description":"Whether the user has ownership of the meeting.\n"},"custom_options":{"type":"string","description":"Some custom configuration options serialized as json string\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update a meeting

> Update a meeting<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}":{"post":{"tags":["User"],"operationId":"updateMeeting","summary":"Update a meeting","description":"Update a meeting\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"control":{"type":"string","enum":["FREE","MASTER"],"default":"FREE","description":"The conference control type.  \nCan be either:  \n- `FREE`: the free mode.  \n- `MASTER`: the master mode.\n"},"height":{"type":"integer","format":"int32","minimum":144,"maximum":1920,"default":720,"description":"The height for video conference room.  \nOnly valid in `VIDEO` mode.\n"},"width":{"type":"integer","format":"int32","minimum":144,"maximum":1920,"default":1280,"description":"The width for video conference room.  \nOnly valid in `VIDEO` mode.\n"},"bitrate":{"type":"integer","format":"int32","minimum":128,"maximum":10240,"default":1024,"description":"The transmission rate for video conference room.  \nOnly valid in `VIDEO` mode.\n"},"framerate":{"type":"integer","minimum":5,"maximum":30,"default":15,"description":"The framerate for video conference room.  \nOnly valid in `VIDEO` mode.\n"},"layout":{"type":"string","enum":["LAYOUT0","LAYOUT1","LAYOUT2","LAYOUT3","LAYOUT4","LAYOUT6","LAYOUT9"],"default":"LAYOUT0","description":"The number of grids allowed for video conference room.  \nOnly valid in `VIDEO` mode.  \nCan be either:  \n- LAYOUT0:\n- LAYOUT1:\n- LAYOUT2:\n- LAYOUT3:\n- LAYOUT4:\n- LAYOUT6:\n- LAYOUT9:\n"},"subject":{"type":"string","minLength":1,"maxLength":64,"description":"The subject of conference room.\n"},"language":{"type":"string","description":"BCP 47 Language Tags (The Internet Best Current Practices (BCP) for language tags).\nA language tag is composed of a sequence of one or more subtags such as language, region, variant and script subtags.\nWhen a language tag is comprised of more than one subtag, the subtag values are separated by the \"-\" character.\nYou will most commonly find language tags written with 2 subtags - language and region. For example: en-US.\n"},"capacity":{"type":"integer","format":"int32","minimum":1,"maximum":200,"default":9,"description":"The maximum number of participants allowed in the room.\n"},"admin_pin":{"type":"string","minLength":3,"maxLength":6,"description":"The PIN for admin of the conference room. Only numeric sequences are allowed.\n"},"room_pin":{"type":"string","minLength":3,"maxLength":6,"description":"The PIN for the conference room. Only numeric sequences are allowed.\n"},"enable_recording":{"type":"boolean","default":false,"description":"Whether to enable recording when created.\n"},"enable_prompt":{"type":"boolean","default":true,"description":"Whether to enable voice menu.\n"},"timezone":{"type":"string","description":"The IANA Time Zone names, such as \"Asia/Shanghai\".\n"},"scheduled_start_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The scheduled start time of meeting.\n"},"scheduled_end_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The scheduled end time of meeting.\n"},"internal_invitees":{"type":"array","items":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"}],"description":"A collection of extension's ID for sending invitation emails.\n"}},"external_invitees":{"type":"string","description":"The invitees to send invitation emails to.\n"},"close_on_nobody":{"type":"boolean","default":false,"description":"Whether to close the meeting if the nobody in.\n"},"outbound_caller_ids":{"type":"array","items":{"type":"object","properties":{"provider_id":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of trunk.\n"}],"description":"The unique ID of trunk.\n"},"caller_id":{"allOf":[{"type":"string","minLength":1,"maxLength":64,"description":"Outbound caller id.\n"}],"description":"The caller ID.\n"},"description":{"type":"string","maxLength":1024,"description":"The descriptive information about this outbound caller id.\n"}}},"description":"A collection of outbound caller IDs.\n"},"custom_options":{"type":"string","description":"Some custom configuration options serialized as json string\n"}}}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Delete meeting

> Destroy a conference room<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/destroy":{"post":{"tags":["User"],"operationId":"deleteMeeting","summary":"Delete meeting","description":"Destroy a conference room\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."}],"responses":{"204":{"description":"No Content"},"400":{"description":"Invalid username supplied"},"404":{"description":"Not found"}}}}}}
```

## Get meeting status

> Retrieve meeting status.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/status":{"get":{"tags":["User"],"operationId":"getUserMeetingStatus","summary":"Get meeting status","description":"Retrieve meeting status.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ONLINE","OFFLINE","ON_CALL"],"description":"The conference room status.\nCan be either:  \n- `ONLINE`:\n- `OFFLINE`:\n- `ON_CALL`:\n"},"locked":{"type":"boolean","description":"Whether the conference room was locked.\n"},"muted":{"type":"boolean","description":"Whether the conference room was muted.\n"},"recording":{"type":"boolean","description":"Whether the conference room is recording.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Mute meeting

> Mute meeting.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/mute":{"post":{"tags":["User"],"operationId":"muteMeeting","summary":"Mute meeting","description":"Mute meeting.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Unmute meeting

> Unmute meeting by it's unique ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/unmute":{"post":{"tags":["User"],"operationId":"unmuteMeeting","summary":"Unmute meeting","description":"Unmute meeting by it's unique ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Lock meeting

> Lock meeting by it's unique ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/lock":{"post":{"tags":["User"],"operationId":"lockMeeting","summary":"Lock meeting","description":"Lock meeting by it's unique ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Unlock meeting

> Unlock meeting by it's unique ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/unlock":{"post":{"tags":["User"],"operationId":"unlockMeeting","summary":"Unlock meeting","description":"Unlock meeting by it's unique ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Start meeting

> Start meeting by it's unique ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/start":{"post":{"tags":["User"],"operationId":"startMeeting","summary":"Start meeting","description":"Start meeting by it's unique ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Stop meeting

> Stop meeting by it's unique ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/stop":{"post":{"tags":["User"],"operationId":"stopMeeting","summary":"Stop meeting","description":"Stop meeting by it's unique ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Start recording in meeting

> Start recording in meeting.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/start_recording":{"post":{"tags":["User"],"operationId":"startRecordingMeeting","summary":"Start recording in meeting","description":"Start recording in meeting.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Stop recording in meeting

> Stop recording in meeting.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/stop_recording":{"post":{"tags":["User"],"operationId":"stopRecordingMeeting","summary":"Stop recording in meeting","description":"Stop recording in meeting.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## List meeting participants

> Retrieve a collection of meeting participants.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/participants":{"get":{"tags":["User"],"operationId":"listMeetingParticipants","summary":"List meeting participants","description":"Retrieve a collection of meeting participants.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of meeting."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room participant.\n"},"display_name":{"type":"string","description":"The display name of conference room participant.\n"},"muted":{"type":"boolean","description":"Whether the participant is muted.\n"},"chairman":{"type":"boolean","description":"Indicates whether the user is chairman of the conference room.\n"},"position":{"type":"integer","format":"int32","minimum":-1,"maximum":8,"description":"The position of room member.  \nThe member will not be displayed when *-1* is specified.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update meeting participants layout

> Modify participants layout based on meeting layout.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/participants/layout":{"post":{"tags":["User"],"operationId":"updateMeetingParticipantsLayout","summary":"Update meeting participants layout","description":"Modify participants layout based on meeting layout.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room participant.\n"},"description":"A collection of participant's id.\n"}}}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Get meeting participant details

> Get meeting participant details.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/participants/{participant_id}":{"get":{"tags":["User"],"operationId":"getMeetingParticipant","summary":"Get meeting participant details","description":"Get meeting participant details.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of meeting."},{"name":"participant_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room participant.\n"},"description":"The id of the participant."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room participant.\n"},"display_name":{"type":"string","description":"The display name of conference room participant.\n"},"muted":{"type":"boolean","description":"Whether the participant is muted.\n"},"chairman":{"type":"boolean","description":"Indicates whether the user is chairman of the conference room.\n"},"position":{"type":"integer","format":"int32","minimum":-1,"maximum":8,"description":"The position of room member.  \nThe member will not be displayed when *-1* is specified.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Invite meeting participant

> Invite an user as meeting participant.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/participants/invite":{"post":{"tags":["User"],"operationId":"inviteMeetingParticipant","summary":"Invite meeting participant","description":"Invite an user as meeting participant.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"number":{"type":"string","description":"The number of invited participant.\n"}}}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Mute meeting participant

> Mute meeting participant.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/participants/{participant_id}/mute":{"post":{"tags":["User"],"operationId":"muteMeetingParticipant","summary":"Mute meeting participant","description":"Mute meeting participant.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."},{"name":"participant_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room participant.\n"},"description":"The id of the participant."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Unmute meeting participant

> Unmute meeting participant.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/participants/{participant_id}/unmute":{"post":{"tags":["User"],"operationId":"unmuteMeetingParticipant","summary":"Unmute meeting participant","description":"Unmute meeting participant.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."},{"name":"participant_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room participant.\n"},"description":"The id of the participant."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Transfer meeting ownership

> Transfer meeting ownership to another participant.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/participants/{participant_id}/chairman":{"post":{"tags":["User"],"operationId":"transferMeetingOwnership","summary":"Transfer meeting ownership","description":"Transfer meeting ownership to another participant.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of meeting."},{"name":"participant_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room participant.\n"},"description":"The id of the participant."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Set meeting participant position

> Set meeting participant position.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/participants/{participant_id}/position":{"post":{"tags":["User"],"operationId":"setMeetingParticipantPosition","summary":"Set meeting participant position","description":"Set meeting participant position.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."},{"name":"participant_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room participant.\n"},"description":"The id of the participant."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"position":{"type":"integer","format":"int32","minimum":-1,"maximum":8,"description":"The position of room member.  \nThe member will not be displayed when *-1* is specified.\n"}}}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Kick out meeting participant

> Kick out meeting participant.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/meetings/{id}/participants/{participant_id}/destroy":{"post":{"tags":["User"],"operationId":"kickOutMeetingParticipant","summary":"Kick out meeting participant","description":"Kick out meeting participant.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room.\n"},"description":"The unique ID of the meeting."},{"name":"participant_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of conference room participant.\n"},"description":"The id of the participant."}],"responses":{"204":{"description":"No Content"},"4XX":{"description":"Error"}}}}}}
```

## List current user's holidays

> Retrieve a collection of current user's holidays.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/holidays":{"get":{"tags":["User"],"operationId":"listCurrentUserHolidays","summary":"List current user's holidays","description":"Retrieve a collection of current user's holidays.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","format":"int64","minimum":0,"description":"Total number of resource.\n"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of the holiday.\n"},"region":{"type":"string","description":"A valid country code based on iso3166-1 alpha-3 standard. see: https://www.iso.org/iso-3166-country-codes.html\n"},"consecutive":{"type":"boolean","description":"Whether the holiday consists of consecutive days.\n"},"every_year":{"type":"boolean","description":"Does the holiday take effect every year.\n"},"year_start":{"type":"integer","description":"The start year of holiday.\n"},"year_end":{"type":"integer","description":"The end year of holiday.\n"},"month_start":{"type":"integer","description":"The start month of holiday.\n"},"month_end":{"type":"integer","description":"The end month of holiday.\n"},"day_start":{"type":"integer","description":"The start day of holiday.\n"},"day_end":{"type":"integer","description":"The end day of holiday.\n"},"hour_start":{"type":"integer","description":"The start hour of holiday.\n"},"hour_end":{"type":"integer","description":"The end hour of holiday.\n"},"minute_start":{"type":"integer","description":"The start minute of holiday.\n"},"minute_end":{"type":"integer","description":"The end minute of holiday.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Create a new holiday for current user

> Create a new holiday for current user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/holidays":{"post":{"tags":["User"],"operationId":"createCurrentUserHoliday","summary":"Create a new holiday for current user","description":"Create a new holiday for current user.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of the holiday.\n"},"region":{"type":"string","description":"A valid country code based on iso3166-1 alpha-3 standard. see: https://www.iso.org/iso-3166-country-codes.html\n"},"consecutive":{"type":"boolean","description":"Whether the holiday consists of consecutive days.\n"},"every_year":{"type":"boolean","description":"Does the holiday take effect every year.\n"},"year_start":{"type":"integer","description":"The start year of holiday.\n"},"year_end":{"type":"integer","description":"The end year of holiday.\n"},"month_start":{"type":"integer","description":"The start month of holiday.\n"},"month_end":{"type":"integer","description":"The end month of holiday.\n"},"day_start":{"type":"integer","description":"The start day of holiday.\n"},"day_end":{"type":"integer","description":"The end day of holiday.\n"},"hour_start":{"type":"integer","description":"The start hour of holiday.\n"},"hour_end":{"type":"integer","description":"The end hour of holiday.\n"},"minute_start":{"type":"integer","description":"The start minute of holiday.\n"},"minute_end":{"type":"integer","description":"The end minute of holiday.\n"}},"required":["name","region","consecutive","every_year"]}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## GET /user/holidays/{id}

> Retrieve a holiday of current user

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/holidays/{id}":{"get":{"tags":["User"],"operationId":"retrieveCurrentUserHoliday","summary":"Retrieve a holiday of current user","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"description":"The unique ID of the holiday."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of the holiday.\n"},"region":{"type":"string","description":"A valid country code based on iso3166-1 alpha-3 standard. see: https://www.iso.org/iso-3166-country-codes.html\n"},"consecutive":{"type":"boolean","description":"Whether the holiday consists of consecutive days.\n"},"every_year":{"type":"boolean","description":"Does the holiday take effect every year.\n"},"year_start":{"type":"integer","description":"The start year of holiday.\n"},"year_end":{"type":"integer","description":"The end year of holiday.\n"},"month_start":{"type":"integer","description":"The start month of holiday.\n"},"month_end":{"type":"integer","description":"The end month of holiday.\n"},"day_start":{"type":"integer","description":"The start day of holiday.\n"},"day_end":{"type":"integer","description":"The end day of holiday.\n"},"hour_start":{"type":"integer","description":"The start hour of holiday.\n"},"hour_end":{"type":"integer","description":"The end hour of holiday.\n"},"minute_start":{"type":"integer","description":"The start minute of holiday.\n"},"minute_end":{"type":"integer","description":"The end minute of holiday.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update a holiday of current user

> Update a holiday of current user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/holidays/{id}":{"post":{"tags":["User"],"operationId":"updateCurrentUserHoliday","summary":"Update a holiday of current user","description":"Update a holiday of current user.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"description":"The unique ID of the holiday."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of the holiday.\n"},"region":{"type":"string","description":"A valid country code based on iso3166-1 alpha-3 standard. see: https://www.iso.org/iso-3166-country-codes.html\n"},"consecutive":{"type":"boolean","description":"Whether the holiday consists of consecutive days.\n"},"every_year":{"type":"boolean","description":"Does the holiday take effect every year.\n"},"year_start":{"type":"integer","description":"The start year of holiday.\n"},"year_end":{"type":"integer","description":"The end year of holiday.\n"},"month_start":{"type":"integer","description":"The start month of holiday.\n"},"month_end":{"type":"integer","description":"The end month of holiday.\n"},"day_start":{"type":"integer","description":"The start day of holiday.\n"},"day_end":{"type":"integer","description":"The end day of holiday.\n"},"hour_start":{"type":"integer","description":"The start hour of holiday.\n"},"hour_end":{"type":"integer","description":"The end hour of holiday.\n"},"minute_start":{"type":"integer","description":"The start minute of holiday.\n"},"minute_end":{"type":"integer","description":"The end minute of holiday.\n"}},"required":["name","consecutive","every_year"]}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Destroy a holiday of current user

> Destroy a holiday of current user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/holidays/{id}/destroy":{"post":{"tags":["User"],"operationId":"deleteCurrentUserHoliday","summary":"Destroy a holiday of current user","description":"Destroy a holiday of current user.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"description":"The unique ID of the holiday."}],"responses":{"204":{"description":"No Content"},"400":{"description":"Invalid ID supplied."}}}}}}
```

## List current user's global holidays

> Retrieve a collection of current user's global holidays.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/global_holidays":{"get":{"tags":["User"],"operationId":"listCurrentUserGlobalHolidays","summary":"List current user's global holidays","description":"Retrieve a collection of current user's global holidays.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of the holiday.\n"},"region":{"type":"string","description":"A valid country code based on iso3166-1 alpha-3 standard. see: https://www.iso.org/iso-3166-country-codes.html\n"},"consecutive":{"type":"boolean","description":"Whether the holiday consists of consecutive days.\n"},"every_year":{"type":"boolean","description":"Does the holiday take effect every year.\n"},"year_start":{"type":"integer","description":"The start year of holiday.\n"},"year_end":{"type":"integer","description":"The end year of holiday.\n"},"month_start":{"type":"integer","description":"The start month of holiday.\n"},"month_end":{"type":"integer","description":"The end month of holiday.\n"},"day_start":{"type":"integer","description":"The start day of holiday.\n"},"day_end":{"type":"integer","description":"The end day of holiday.\n"},"hour_start":{"type":"integer","description":"The start hour of holiday.\n"},"hour_end":{"type":"integer","description":"The end hour of holiday.\n"},"minute_start":{"type":"integer","description":"The start minute of holiday.\n"},"minute_end":{"type":"integer","description":"The end minute of holiday.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update current user's global holidays

> Update current user's global holidays from tenant holidays.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/global_holidays":{"post":{"tags":["User"],"operationId":"updateCurrentUserGlobalHoliday","summary":"Update current user's global holidays","description":"Update current user's global holidays from tenant holidays.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"description":"A collection of ID of tenant's holiday.\n"}}}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## List personal contact

> Retrieve a collection of personal contacts.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/contacts":{"get":{"tags":["User"],"operationId":"listPersonalContacts","summary":"List personal contact","description":"Retrieve a collection of personal contacts.\n","parameters":[{"name":"skip","in":"query","schema":{"type":"integer","format":"int32","minimum":0,"default":0},"description":"Use the `skip` query parameter to set the number of items to skip at the start of a collection.\n"},{"name":"top","in":"query","schema":{"type":"integer","format":"int32","minimum":1,"maximum":100,"default":100},"description":"Use the `top` query parameter to specify the page size of the result set.\n"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","format":"int64","minimum":0,"description":"Total number of resource.\n"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of contact.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of contact.\n"},"email":{"type":"string","maxLength":128,"description":"The email of contact.\n"},"company":{"type":"string","maxLength":128,"description":"The company name of contact.\n"},"title":{"type":"string","maxLength":128,"description":"The title of contact.\n"},"business":{"type":"string","maxLength":128,"description":"The business phone number of contact.\n"},"business2":{"type":"string","maxLength":128,"description":"The secondary business phone number of contact.\n"},"mobile_phone":{"type":"string","maxLength":128,"description":"The mobile phone number of contact.\n"},"mobile_phone2":{"type":"string","maxLength":128,"description":"The secondary mobile phone number of contact.\n"},"home_phone":{"type":"string","maxLength":128,"description":"The home phone number of contact.\n"},"home_phone2":{"type":"string","maxLength":128,"description":"The secondary home phone number of contact.\n"},"other":{"type":"string","maxLength":128,"description":"The other phone number of contact.\n"},"business_fax":{"type":"string","maxLength":128,"description":"The business fax of contact.\n"},"home_fax":{"type":"string","maxLength":128,"description":"The home fax of contact.\n"},"address":{"type":"string","maxLength":128,"description":"The address.\n"},"notes":{"type":"string","maxLength":1024,"description":"The notes of contact.\n"},"sync_type":{"type":"string","enum":["Microsoft 365"],"description":"The synchronization method.   \nCan be either:   \n- `Microsoft 365`: Sync from Microsoft 365.\n"},"favorite":{"type":"boolean","description":"Mark if a contact has been added to the favorites list.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## POST /user/contacts

> Add a new personal contact

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/contacts":{"post":{"tags":["User"],"operationId":"createPersonalContact","summary":"Add a new personal contact","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of contact.\n"},"email":{"type":"string","maxLength":128,"description":"The email of contact.\n"},"company":{"type":"string","maxLength":128,"description":"The company name of contact.\n"},"title":{"type":"string","maxLength":128,"description":"The title of contact.\n"},"business":{"type":"string","maxLength":128,"description":"The business phone number of contact.\n"},"business2":{"type":"string","maxLength":128,"description":"The secondary business phone number of contact.\n"},"mobile_phone":{"type":"string","maxLength":128,"description":"The mobile phone number of contact.\n"},"mobile_phone2":{"type":"string","maxLength":128,"description":"The secondary mobile phone number of contact.\n"},"home_phone":{"type":"string","maxLength":128,"description":"The home phone number of contact.\n"},"home_phone2":{"type":"string","maxLength":128,"description":"The secondary home phone number of contact.\n"},"other":{"type":"string","maxLength":128,"description":"The other phone number of contact.\n"},"business_fax":{"type":"string","maxLength":128,"description":"The business fax of contact.\n"},"home_fax":{"type":"string","maxLength":128,"description":"The home fax of contact.\n"},"address":{"type":"string","maxLength":128,"description":"The address.\n"},"notes":{"type":"string","maxLength":1024,"description":"The notes of contact.\n"}}}}},"required":true},"responses":{"201":{"description":"Created contact","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of contact.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve personal contact details

> Retrieves details of a personal contact.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/contacts/{id}":{"get":{"tags":["User"],"operationId":"retrievePersonalContact","summary":"Retrieve personal contact details","description":"Retrieves details of a personal contact.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of contact.\n"},"description":"The unique ID of the contact."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of contact.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of contact.\n"},"email":{"type":"string","maxLength":128,"description":"The email of contact.\n"},"company":{"type":"string","maxLength":128,"description":"The company name of contact.\n"},"title":{"type":"string","maxLength":128,"description":"The title of contact.\n"},"business":{"type":"string","maxLength":128,"description":"The business phone number of contact.\n"},"business2":{"type":"string","maxLength":128,"description":"The secondary business phone number of contact.\n"},"mobile_phone":{"type":"string","maxLength":128,"description":"The mobile phone number of contact.\n"},"mobile_phone2":{"type":"string","maxLength":128,"description":"The secondary mobile phone number of contact.\n"},"home_phone":{"type":"string","maxLength":128,"description":"The home phone number of contact.\n"},"home_phone2":{"type":"string","maxLength":128,"description":"The secondary home phone number of contact.\n"},"other":{"type":"string","maxLength":128,"description":"The other phone number of contact.\n"},"business_fax":{"type":"string","maxLength":128,"description":"The business fax of contact.\n"},"home_fax":{"type":"string","maxLength":128,"description":"The home fax of contact.\n"},"address":{"type":"string","maxLength":128,"description":"The address.\n"},"notes":{"type":"string","maxLength":1024,"description":"The notes of contact.\n"},"sync_type":{"type":"string","enum":["Microsoft 365"],"description":"The synchronization method.   \nCan be either:   \n- `Microsoft 365`: Sync from Microsoft 365.\n"},"favorite":{"type":"boolean","description":"Mark if a contact has been added to the favorites list.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update a personal contact

> Update a personal contact.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/contacts/{id}":{"post":{"tags":["User"],"operationId":"updatePersonalContact","summary":"Update a personal contact","description":"Update a personal contact.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of contact.\n"},"description":"The unique ID of the contact."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of contact.\n"},"email":{"type":"string","maxLength":128,"description":"The email of contact.\n"},"company":{"type":"string","maxLength":128,"description":"The company name of contact.\n"},"title":{"type":"string","maxLength":128,"description":"The title of contact.\n"},"business":{"type":"string","maxLength":128,"description":"The business phone number of contact.\n"},"business2":{"type":"string","maxLength":128,"description":"The secondary business phone number of contact.\n"},"mobile_phone":{"type":"string","maxLength":128,"description":"The mobile phone number of contact.\n"},"mobile_phone2":{"type":"string","maxLength":128,"description":"The secondary mobile phone number of contact.\n"},"home_phone":{"type":"string","maxLength":128,"description":"The home phone number of contact.\n"},"home_phone2":{"type":"string","maxLength":128,"description":"The secondary home phone number of contact.\n"},"other":{"type":"string","maxLength":128,"description":"The other phone number of contact.\n"},"business_fax":{"type":"string","maxLength":128,"description":"The business fax of contact.\n"},"home_fax":{"type":"string","maxLength":128,"description":"The home fax of contact.\n"},"address":{"type":"string","maxLength":128,"description":"The address.\n"},"notes":{"type":"string","maxLength":1024,"description":"The notes of contact.\n"}}}}},"required":true},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Favorite a personal contact

> Favorite a personal contact.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/contacts/{id}/favorite":{"post":{"tags":["User"],"operationId":"favoritePersonalContact","summary":"Favorite a personal contact","description":"Favorite a personal contact.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of contact.\n"},"description":"The unique ID of the contact."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Unfavorite a personal contact

> Favorite a personal contact.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/contacts/{id}/unfavorite":{"post":{"tags":["User"],"operationId":"unfavoritePersonalContact","summary":"Unfavorite a personal contact","description":"Favorite a personal contact.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of contact.\n"},"description":"The unique ID of the contact."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Delete a personal contact

> Delete a personal contact by it's unique id.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/contacts/{id}/destroy":{"post":{"tags":["User"],"operationId":"deletePersonalContact","summary":"Delete a personal contact","description":"Delete a personal contact by it's unique id.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of contact.\n"},"description":"The unique ID of the contact."}],"responses":{"204":{"description":"No Content"},"4XX":{"description":"Error"}}}}}}
```

## POST /user/contacts/sync\_tokens

> Create new personal contact sync token

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/contacts/sync_tokens":{"post":{"tags":["User"],"operationId":"createPersonalContactSyncToken","summary":"Create new personal contact sync token","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"The sync token.   \nClients should treat the sync token as an opaque string and should never try to assemble it.   \nThis document imposes no constraints on the format and clients should never impose any.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## List personal contact changes

> List personal contact changes.

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/contacts/sync_tokens/{token}/diff":{"post":{"tags":["User"],"operationId":"listPersonalContactChanges","summary":"List personal contact changes","description":"List personal contact changes.","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","description":"The sync token.   \nClients should treat the sync token as an opaque string and should never try to assemble it.   \nThis document imposes no constraints on the format and clients should never impose any.\n"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"The sync token.   \nClients should treat the sync token as an opaque string and should never try to assemble it.   \nThis document imposes no constraints on the format and clients should never impose any.\n"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of contact.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of contact.\n"},"email":{"type":"string","maxLength":128,"description":"The email of contact.\n"},"company":{"type":"string","maxLength":128,"description":"The company name of contact.\n"},"title":{"type":"string","maxLength":128,"description":"The title of contact.\n"},"business":{"type":"string","maxLength":128,"description":"The business phone number of contact.\n"},"business2":{"type":"string","maxLength":128,"description":"The secondary business phone number of contact.\n"},"mobile_phone":{"type":"string","maxLength":128,"description":"The mobile phone number of contact.\n"},"mobile_phone2":{"type":"string","maxLength":128,"description":"The secondary mobile phone number of contact.\n"},"home_phone":{"type":"string","maxLength":128,"description":"The home phone number of contact.\n"},"home_phone2":{"type":"string","maxLength":128,"description":"The secondary home phone number of contact.\n"},"other":{"type":"string","maxLength":128,"description":"The other phone number of contact.\n"},"business_fax":{"type":"string","maxLength":128,"description":"The business fax of contact.\n"},"home_fax":{"type":"string","maxLength":128,"description":"The home fax of contact.\n"},"address":{"type":"string","maxLength":128,"description":"The address.\n"},"notes":{"type":"string","maxLength":1024,"description":"The notes of contact.\n"},"favorite":{"type":"boolean","description":"Mark if a contact has been added to the favorites list.\n"},"change_type":{"type":"string","enum":["CREATED","UPDATED","DELETED"],"description":"The resource change types can be either:  \n- `CREATED`: The resource has been created.   \n- `UPDATED`: The resource has been updated.   \n- `DELETED`: The resource has been deleted.   \n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Favorite a business contact

> Favorite a business contact.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/business_contacts/{id}/favorite":{"post":{"tags":["User"],"operationId":"favoriteBusinessContact","summary":"Favorite a business contact","description":"Favorite a business contact.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of contact.\n"},"description":"The unique ID of the contact."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Unfavorite a business contact

> Favorite a business contact.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/business_contacts/{id}/unfavorite":{"post":{"tags":["User"],"operationId":"unfavoriteBusinessContact","summary":"Unfavorite a business contact","description":"Favorite a business contact.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of contact.\n"},"description":"The unique ID of the contact."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## POST /user/business\_contacts/sync\_tokens

> Create a business contact sync token

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/business_contacts/sync_tokens":{"post":{"tags":["User"],"operationId":"createBusinessContactSyncToken","summary":"Create a business contact sync token","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"The sync token.   \nClients should treat the sync token as an opaque string and should never try to assemble it.   \nThis document imposes no constraints on the format and clients should never impose any.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## List business contact changes

> List business contact changes.

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/business_contacts/sync_tokens/{token}/diff":{"post":{"tags":["User"],"operationId":"listBusinessContactChanges","summary":"List business contact changes","description":"List business contact changes.","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","description":"The sync token.   \nClients should treat the sync token as an opaque string and should never try to assemble it.   \nThis document imposes no constraints on the format and clients should never impose any.\n"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"The sync token.   \nClients should treat the sync token as an opaque string and should never try to assemble it.   \nThis document imposes no constraints on the format and clients should never impose any.\n"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of contact.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of contact.\n"},"email":{"type":"string","maxLength":128,"description":"The email of contact.\n"},"company":{"type":"string","maxLength":128,"description":"The company name of contact.\n"},"title":{"type":"string","maxLength":128,"description":"The title of contact.\n"},"business":{"type":"string","maxLength":128,"description":"The business phone number of contact.\n"},"business2":{"type":"string","maxLength":128,"description":"The secondary business phone number of contact.\n"},"mobile_phone":{"type":"string","maxLength":128,"description":"The mobile phone number of contact.\n"},"mobile_phone2":{"type":"string","maxLength":128,"description":"The secondary mobile phone number of contact.\n"},"home_phone":{"type":"string","maxLength":128,"description":"The home phone number of contact.\n"},"home_phone2":{"type":"string","maxLength":128,"description":"The secondary home phone number of contact.\n"},"other":{"type":"string","maxLength":128,"description":"The other phone number of contact.\n"},"business_fax":{"type":"string","maxLength":128,"description":"The business fax of contact.\n"},"home_fax":{"type":"string","maxLength":128,"description":"The home fax of contact.\n"},"address":{"type":"string","maxLength":128,"description":"The address.\n"},"notes":{"type":"string","maxLength":1024,"description":"The notes of contact.\n"},"favorite":{"type":"boolean","description":"Mark if a contact has been added to the favorites list.\n"},"change_type":{"type":"string","enum":["CREATED","UPDATED","DELETED"],"description":"The resource change types can be either:  \n- `CREATED`: The resource has been created.   \n- `UPDATED`: The resource has been updated.   \n- `DELETED`: The resource has been deleted.   \n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Favorite an extension contact

> Favorite an extension contact.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/extension_contacts/{id}/favorite":{"post":{"tags":["User"],"operationId":"favoriteExtensionContact","summary":"Favorite an extension contact","description":"Favorite an extension contact.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of contact.\n"},"description":"The unique ID of the contact."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Unfavorite an extension contact

> Favorite an extension contact.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/extension_contacts/{id}/unfavorite":{"post":{"tags":["User"],"operationId":"unfavoriteExtensionContact","summary":"Unfavorite an extension contact","description":"Favorite an extension contact.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of contact.\n"},"description":"The unique ID of the contact."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## POST /user/extension\_contacts/sync\_tokens

> Create a extension contact sync token

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/extension_contacts/sync_tokens":{"post":{"tags":["User"],"operationId":"createExtensionContactSyncToken","summary":"Create a extension contact sync token","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"The sync token.   \nClients should treat the sync token as an opaque string and should never try to assemble it.   \nThis document imposes no constraints on the format and clients should never impose any.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## List extension contact changes

> List extension contact changes.

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/extension_contacts/sync_tokens/{token}/diff":{"post":{"tags":["User"],"operationId":"listExtensionContactChanges","summary":"List extension contact changes","description":"List extension contact changes.","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","description":"The sync token.   \nClients should treat the sync token as an opaque string and should never try to assemble it.   \nThis document imposes no constraints on the format and clients should never impose any.\n"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","description":"The sync token.   \nClients should treat the sync token as an opaque string and should never try to assemble it.   \nThis document imposes no constraints on the format and clients should never impose any.\n"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"display_name":{"type":"string","maxLength":1024,"description":"The display name of user.\n"},"email":{"allOf":[{"type":"string","maxLength":128,"description":"The email address.\n"}],"description":"The email address of user.\n"},"mobile_phone":{"allOf":[{"type":"string","maxLength":128,"description":"The email address.\n"}],"description":"The email address of user.\n"},"work_phone":{"allOf":[{"type":"string","maxLength":128,"description":"The email address.\n"}],"description":"The email address of user.\n"},"home_phone":{"allOf":[{"type":"string","maxLength":128,"description":"The email address.\n"}],"description":"The email address of user.\n"},"address":{"type":"string","maxLength":128,"description":"The address.\n"},"department":{"type":"string","maxLength":128,"description":"The department of user.\n"},"avatar_file_url":{"type":"string","readOnly":true,"description":"The relative path to file url for file downloading.\n"},"extension_number":{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"},"favorite":{"type":"boolean","description":"Mark if a contact has been added to the favorites list.\n"},"change_type":{"type":"string","enum":["CREATED","UPDATED","DELETED"],"description":"The resource change types can be either:  \n- `CREATED`: The resource has been created.   \n- `UPDATED`: The resource has been updated.   \n- `DELETED`: The resource has been deleted.   \n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve the call queues which current user belongs

> Retrieve the call queues which current user belongs.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/call_queues":{"get":{"tags":["User"],"operationId":"listCurrentUserBelongedCallQueues","summary":"Retrieve the call queues which current user belongs","description":"Retrieve the call queues which current user belongs.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of call queue.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of call queue.\n"},"extension_number":{"allOf":[{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"}],"description":"The extension number of call queue.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve call queue agent

> Retrieve information of call queue agent.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/call_queues/{id}/agent":{"get":{"tags":["User"],"operationId":"getCurrentUserCallQueueAgentStatus","summary":"Retrieve call queue agent","description":"Retrieve information of call queue agent.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of call queue.\n"},"description":"The unique ID of the call queue."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"extension_number":{"allOf":[{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"}],"description":"The extension number of agent.\n"},"display_name":{"allOf":[{"type":"string","maxLength":1024,"description":"The display name of user.\n"}],"description":"The display name of agent.\n"},"skill_level":{"type":"integer","format":"int32","minimum":1,"maximum":100,"default":1,"description":"The skill level of agent in queue.   \nOnly valid when `polling_strategy` is skill based.\n"},"status":{"type":"string","enum":["READY","NOT_READY","QUEUE_CALL","OTHER_CALL","WRAP_UP","BREAK","LUNCH","LOGGED_OUT","OFFLINE"],"readOnly":true,"description":"Current status of agent: \n- `READY`:  \n- `NOT_READY`:  \n- `QUEUE_CALL`:  \n- `OTHER_CALL`:  \n- `WRAP_UP`:  \n- `BREAK`:  \n- `LUNCH`:  \n- `TRANSFER`:   \n- `CONSULT_TRANSFER`:   \n- `ON_HOLD`:   \n- `LOGGED_OUT`:  \n- `OFFLINE`:\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Set call queue agent status

> Set call queue agent status.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/call_queues/{id}/agent":{"post":{"tags":["User"],"operationId":"setCurrentUserCallQueueAgentStatus","summary":"Set call queue agent status","description":"Set call queue agent status.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of call queue.\n"},"description":"The unique ID of call queue."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["READY","NOT_READY","WRAP_UP","BREAK","LUNCH","LOGGED_IN","LOGGED_OUT"],"description":"Change call queue agent status to one of the following: \n- `READY`:  \n- `NOT_READY`:  \n- `WRAP_UP`:  \n- `BREAK`:  \n- `LUNCH`:   \n- `LOGGED_IN`:   \n- `LOGGED_OUT`:\n"}}}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Retrieve a collection of outbound caller ids

> Retrieve a collection of outbound caller ids.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/outbound_caller_ids":{"get":{"tags":["User"],"operationId":"listCurrentUserOutboundCallerIds","summary":"Retrieve a collection of outbound caller ids","description":"Retrieve a collection of outbound caller ids.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"provider_id":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of trunk.\n"}],"description":"The unique ID of trunk.\n"},"caller_id":{"allOf":[{"type":"string","minLength":1,"maxLength":64,"description":"Outbound caller id.\n"}],"description":"The caller ID.\n"},"description":{"type":"string","maxLength":1024,"description":"The descriptive information about this outbound caller id.\n"}}},"description":"A collection of outbound caller IDs.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve the ring groups which current user belongs

> Retrieve the ring groups which current user belongs.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/user/ring_groups":{"get":{"tags":["User"],"operationId":"listCurrentUserBelongedRingGroups","summary":"Retrieve the ring groups which current user belongs","description":"Retrieve the ring groups which current user belongs.\n","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of ring group.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of ring group.\n"},"extension_number":{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## List users

> List a collection of users.

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users":{"get":{"tags":["User"],"operationId":"listUsers","summary":"List users","description":"List a collection of users.","parameters":[{"name":"filter","in":"query","schema":{"type":"string"},"description":"Use the `filter` query parameter to retrieve just a subset of a collection.\n"},{"name":"search","in":"query","schema":{"type":"string"},"description":"Use the `search` query parameter to restrict the results of a request to match a search criterion.\n"},{"name":"orderby","in":"query","schema":{"type":"string"},"description":"Use the `orderby` query parameter to specify the sort order of the items returned from server.  \nThe default order is ascending order.\n"},{"name":"skip","in":"query","schema":{"type":"integer","format":"int32","minimum":0,"default":0},"description":"Use the `skip` query parameter to set the number of items to skip at the start of a collection.\n"},{"name":"top","in":"query","schema":{"type":"integer","format":"int32","minimum":1,"maximum":100,"default":100},"description":"Use the `top` query parameter to specify the page size of the result set.\n"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","format":"int64","minimum":0,"description":"Total number of resource.\n"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The user's account name.   \nOnly letters, numbers, and the following special characters can be added: underscore, dash, single quote, and period (_, -, ', and .).   \nUsername cannot start or end with period (.).   \n`admin`, `system`, `administrator`, and `root` are reserved names for system admin only with case ignored.\n"},"enabled":{"type":"boolean","default":true,"description":"Allows temporarily disabling the extension.\n"},"email":{"allOf":[{"type":"string","maxLength":128,"description":"The email address.\n"}],"description":"The email address of user.\n"},"display_name":{"type":"string","maxLength":1024,"description":"The display name of user.\n"},"role":{"type":"string","minLength":1,"maxLength":64,"description":"Roles include built-in roles and custom roles.   \nBuilt-in roles roles cannot be modified.   \nAlso, the names of built-in roles are reserved words, \ncustom roles are not allowed to use these names to avoid unnecessary confusion.   \nBuilt-in roles include:   \n- `SystemAdmin`: the system administrator has almost all permissions.\n- `Replicator`: the application permissions collection.\n- `Dealer`: the sales manager has all sold tenant resource permissions\n- `Admin`: the admin has all tenant-wide resource permissions.\n- `StandardUser`: the user all user-wide resource permissions.\n- `StandardInternationalUser`: the user all user-wide resource permissions with international call permissions.\n- `QueueManager`: The call queue manager.\n"},"mobile_phone":{"type":"string","maxLength":32,"description":"The mobile phone number of user.\n"},"work_phone":{"type":"string","maxLength":32,"description":"The office phone number of user.\n"},"home_phone":{"type":"string","maxLength":32,"description":"The home phone number of user.\n"},"address":{"type":"string","maxLength":128,"description":"The address.\n"},"department":{"type":"string","maxLength":128,"description":"The department of user.\n"},"extension_number":{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"},"created_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The creation time of user.\n"},"avatar_file_name":{"type":"string","description":"The name of the file.\n"},"avatar_file_size":{"type":"integer","format":"int64","minimum":0,"description":"The file size in bytes.\n"},"avatar_file_url":{"type":"string","readOnly":true,"description":"The relative path to file url for file downloading.\n"},"sync_type":{"type":"string","enum":["Microsoft 365"],"description":"The synchronization method.   \nCan be either:   \n- `Microsoft 365`: Sync from Microsoft 365.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Create a user

> Create a new user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users":{"post":{"tags":["User"],"operationId":"createUser","summary":"Create a user","description":"Create a new user.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"The user's account name.   \nOnly letters, numbers, and the following special characters can be added: underscore, dash, single quote, and period (_, -, ', and .).   \nUsername cannot start or end with period (.).   \n`admin`, `system`, `administrator`, and `root` are reserved names for system admin only with case ignored.\n"},"password":{"type":"string","description":"The password of user.\n"},"email":{"allOf":[{"type":"string","maxLength":128,"description":"The email address.\n"}],"description":"The email address of user.\n"},"display_name":{"type":"string","maxLength":1024,"description":"The display name of user.\n"},"enabled":{"type":"boolean","default":true,"description":"Allows temporarily disabling the extension.\n"},"role":{"type":"string","minLength":1,"maxLength":64,"description":"Roles include built-in roles and custom roles.   \nBuilt-in roles roles cannot be modified.   \nAlso, the names of built-in roles are reserved words, \ncustom roles are not allowed to use these names to avoid unnecessary confusion.   \nBuilt-in roles include:   \n- `SystemAdmin`: the system administrator has almost all permissions.\n- `Replicator`: the application permissions collection.\n- `Dealer`: the sales manager has all sold tenant resource permissions\n- `Admin`: the admin has all tenant-wide resource permissions.\n- `StandardUser`: the user all user-wide resource permissions.\n- `StandardInternationalUser`: the user all user-wide resource permissions with international call permissions.\n- `QueueManager`: The call queue manager.\n"},"mobile_phone":{"type":"string","maxLength":32,"description":"The mobile phone number of user.\n"},"work_phone":{"type":"string","maxLength":32,"description":"The office phone number of user.\n"},"home_phone":{"type":"string","maxLength":32,"description":"The home phone number of user.\n"},"address":{"type":"string","maxLength":128,"description":"The address.\n"},"department":{"type":"string","maxLength":128,"description":"The department of user.\n"},"extension_number":{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"},"extension_password":{"type":"string","description":"The extension password.\n"},"enable_audio_recording":{"type":"boolean","default":false,"description":"Records all calls and saves audio recordings on server.\n"},"enable_video_recording":{"type":"boolean","default":false,"description":"Records all calls and saves video recordings on server.\n"},"enable_dnd":{"type":"boolean","description":"Enable `Do Not Disturb` or not.\n"},"enable_acb":{"type":"boolean","description":"Enable `Automatic Callback` or not.\n"},"enable_hot_desking":{"type":"boolean","default":false,"description":"Enable hot desking feature or not.\n"},"anonymous_outbound_calls":{"type":"boolean","default":false,"description":"Always make outbound anonymous calls or not.\n"},"sms":{"type":"string","enum":["DISABLE","ALLOW","ALLOW_WITH_SENDER_ID"],"default":"DISABLE","description":"The preferred configuration for SMS/MMS.   \nNote: Only users with `UserManagement::Users` privilege can change this property.   \n  - `DISABLE`: Disable user SMS/MMS feature.\n  - `ALLOW`: Enable user SMS/MMS feature but with outbound caller ID.\n  - `ALLOW_WITH_SENDER_ID`: Enable user SMS/MMS but with trunk sender ID.\n"},"delivery_outbound_cid":{"type":"boolean","default":true,"description":"Always delivery outbound caller ID or not.\n"},"outbound_caller_ids":{"type":"array","items":{"type":"object","properties":{"provider_id":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"}],"description":"The unique ID of trunk.\n"},"caller_id":{"allOf":[{"type":"string","minLength":1,"maxLength":64,"description":"Outbound caller id.\n"}],"description":"The caller ID.\n"},"preferred":{"type":"boolean","description":"Whether this outbound caller id preferred.\n"},"description":{"type":"string","maxLength":1024,"description":"The descriptive information about this outbound caller id.\n"}}},"description":"A collection of outbound caller IDs.\n"},"custom_options":{"type":"string","description":"Some custom configuration options serialized as json string\n"},"office_hours":{"allOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["GLOBAL","CUSTOM"],"description":"The office hours mode can be either:  \n- `GLOBAL`: Use global office hours.\n- `CUSTOM`: Use specific office hours.\n"}}},{"type":"object","properties":{"monday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"tuesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"wednesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"thursday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"friday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"saturday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"sunday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}}}}]},"available_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"available_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"available_no_answer_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"},"timeout":{"type":"integer","format":"int32","minimum":0,"default":60,"description":"Duration that the call will remain ringing when no one answered, in seconds.\n"}}},"busy_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"busy_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"busy_no_answer_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"},"timeout":{"type":"integer","format":"int32","minimum":0,"default":60,"description":"Duration that the call will remain ringing when no one answered, in seconds.\n"}}},"dnd_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"dnd_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"away_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"away_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"lunch_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"lunch_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"trip_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"trip_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"offline_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"offline_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"custom_forward_rules":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"},"caller_id":{"type":"string","description":"Specify the caller ID mask.\n"},"type":{"type":"string","enum":["ALL_HOURS","SPECIFIC_HOURS","OUTSIDE_SPECIFIC_HOURS"],"description":"Specify hours mode for forward rule:\n- `ALL_HOURS`:\n- `SPECIFIC_HOURS`:\n- `OUTSIDE_SPECIFIC_HOURS`:\n"},"hours":{"allOf":[{"type":"object","properties":{"monday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"tuesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"wednesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"thursday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"friday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"saturday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"sunday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}}}}],"description":"Specify hours for this custom forward rule.\n"}}}},"voicemail_prompt":{"type":"string","description":"BCP 47 Language Tags (The Internet Best Current Practices (BCP) for language tags).\nA language tag is composed of a sequence of one or more subtags such as language, region, variant and script subtags.\nWhen a language tag is comprised of more than one subtag, the subtag values are separated by the \"-\" character.\nYou will most commonly find language tags written with 2 subtags - language and region. For example: en-US.\n"},"enable_voicemail_pin":{"type":"boolean","default":true,"description":"Whether the PIN is required to access voice mail of extension.\n"},"voicemail_pin":{"type":"string","minLength":6,"maxLength":10,"description":"The PIN number for accessing.   \nThe PIN policies include:  \n1. A sequence of numbers 6-10 digits in length.  \n2. No repeating numbers (e.g. \"111\", \"222\")\n3. No sequential numbers (e.g. \"012\", \"789\")\n"},"enable_voicemail_notify":{"type":"boolean","default":false,"description":"Enable voicemail to email notify.\n"},"voicemail_play_datetime":{"type":"string","enum":["DISABLE","12_HOUR_CLOCK","24_HOUR_CLOCK"],"description":"Announces Date and Time of Message.\n- `DISABLE`: Do not read;\n- `12_HOUR_CLOCK`: Read in 12-hour clock;\n- `24_HOUR_CLOCK`: Read in 24-hour clock.\n"},"interface":{"type":"string","enum":["WEB_DOMAIN","PUBLIC_IPV4","PUBLIC_IPV6","PRIVATE_IPV4","PRIVATE_IPV6","SBC_DOMAIN"],"description":"The interface type for QR code or auto provisioning.   \nCan be neither:  \n- `WEB_DOMAIN`:\n- `PUBLIC_IPV4`:\n- `PUBLIC_IPV6`:\n- `PRIVATE_IPV4`:\n- `PRIVATE_IPV6`:\n- `SBC_DOMAIN`:\n"},"preferred_transport":{"type":"string","enum":["UDP","TCP","TLS"],"description":"The transport protocol:  \nCan be either:  \n- `UDP`:\n- `TCP`:\n- `TLS`:\n"},"blfs":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The key of BLF.\n"},"value":{"type":"string","description":"The value of BLF.\n"},"first_name":{"type":"string","description":"The first name of BLF.\n"},"last_name":{"type":"string","description":"The last name of BLF.\n"}}},"description":"A collection of BLFs.\n"}},"required":["name","display_name","password","email","role","extension_number","extension_password","voicemail_pin"]}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Reset all user profiles

> Reset the active user profile with the specified ID, or reset all active user profiles when \`id\` is not specified.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/profile":{"post":{"tags":["User"],"operationId":"resetAllUserProfiles","summary":"Reset all user profiles","description":"Reset the active user profile with the specified ID, or reset all active user profiles when `id` is not specified.\n","parameters":[{"name":"id","in":"query","schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Retrieve a user

> Retrieves the settings of a user.

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}":{"get":{"tags":["User"],"operationId":"showUser","summary":"Retrieve a user","description":"Retrieves the settings of a user.","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The user's account name.   \nOnly letters, numbers, and the following special characters can be added: underscore, dash, single quote, and period (_, -, ', and .).   \nUsername cannot start or end with period (.).   \n`admin`, `system`, `administrator`, and `root` are reserved names for system admin only with case ignored.\n"},"email":{"allOf":[{"type":"string","maxLength":128,"description":"The email address.\n"}],"description":"The email address of user.\n"},"display_name":{"type":"string","maxLength":1024,"description":"The display name of user.\n"},"role":{"type":"string","minLength":1,"maxLength":64,"description":"Roles include built-in roles and custom roles.   \nBuilt-in roles roles cannot be modified.   \nAlso, the names of built-in roles are reserved words, \ncustom roles are not allowed to use these names to avoid unnecessary confusion.   \nBuilt-in roles include:   \n- `SystemAdmin`: the system administrator has almost all permissions.\n- `Replicator`: the application permissions collection.\n- `Dealer`: the sales manager has all sold tenant resource permissions\n- `Admin`: the admin has all tenant-wide resource permissions.\n- `StandardUser`: the user all user-wide resource permissions.\n- `StandardInternationalUser`: the user all user-wide resource permissions with international call permissions.\n- `QueueManager`: The call queue manager.\n"},"enabled":{"type":"boolean","default":true,"description":"Allows temporarily disabling the extension.\n"},"mobile_phone":{"type":"string","maxLength":32,"description":"The mobile phone number of user.\n"},"work_phone":{"type":"string","maxLength":32,"description":"The office phone number of user.\n"},"home_phone":{"type":"string","maxLength":32,"description":"The home phone number of user.\n"},"address":{"type":"string","maxLength":128,"description":"The address.\n"},"department":{"type":"string","maxLength":128,"description":"The department of user.\n"},"extension_number":{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"},"enable_audio_recording":{"type":"boolean","default":false,"description":"Records all calls and saves audio recordings on server.\n"},"enable_video_recording":{"type":"boolean","default":false,"description":"Records all calls and saves video recordings on server.\n"},"enable_dnd":{"type":"boolean","description":"Enable `Do Not Disturb` or not.\n"},"enable_acb":{"type":"boolean","description":"Enable `Automatic Callback` or not.\n"},"enable_hot_desking":{"type":"boolean","default":false,"description":"Enable hot desking feature or not.\n"},"anonymous_outbound_calls":{"type":"boolean","default":false,"description":"Always make outbound anonymous calls or not.\n"},"delivery_outbound_cid":{"type":"boolean","default":true,"description":"Always delivery outbound caller ID or not.\n"},"sms":{"type":"string","enum":["DISABLE","ALLOW","ALLOW_WITH_SENDER_ID"],"default":"DISABLE","description":"The preferred configuration for SMS/MMS.   \nNote: Only users with `UserManagement::Users` privilege can change this property.   \n  - `DISABLE`: Disable user SMS/MMS feature.\n  - `ALLOW`: Enable user SMS/MMS feature but with outbound caller ID.\n  - `ALLOW_WITH_SENDER_ID`: Enable user SMS/MMS but with trunk sender ID.\n"},"outbound_caller_ids":{"type":"array","items":{"type":"object","properties":{"provider_id":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"}],"description":"The unique ID of trunk.\n"},"caller_id":{"allOf":[{"type":"string","minLength":1,"maxLength":64,"description":"Outbound caller id.\n"}],"description":"The caller ID.\n"},"preferred":{"type":"boolean","description":"Whether this outbound caller id preferred.\n"},"description":{"type":"string","maxLength":1024,"description":"The descriptive information about this outbound caller id.\n"}}},"description":"A collection of outbound caller IDs.\n"},"custom_options":{"type":"string","description":"Some custom configuration options serialized as json string\n"},"office_hours":{"allOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["GLOBAL","CUSTOM"],"description":"The office hours mode can be either:  \n- `GLOBAL`: Use global office hours.\n- `CUSTOM`: Use specific office hours.\n"}}},{"type":"object","properties":{"monday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"tuesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"wednesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"thursday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"friday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"saturday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"sunday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}}}}]},"available_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"available_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"available_no_answer_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"},"timeout":{"type":"integer","format":"int32","minimum":0,"default":60,"description":"Duration that the call will remain ringing when no one answered, in seconds.\n"}}},"busy_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"busy_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"busy_no_answer_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"},"timeout":{"type":"integer","format":"int32","minimum":0,"default":60,"description":"Duration that the call will remain ringing when no one answered, in seconds.\n"}}},"dnd_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"dnd_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"away_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"away_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"lunch_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"lunch_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"trip_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"trip_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"offline_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"offline_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"custom_forward_rules":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"},"caller_id":{"type":"string","description":"Specify the caller ID mask.\n"},"type":{"type":"string","enum":["ALL_HOURS","SPECIFIC_HOURS","OUTSIDE_SPECIFIC_HOURS"],"description":"Specify hours mode for forward rule:\n- `ALL_HOURS`:\n- `SPECIFIC_HOURS`:\n- `OUTSIDE_SPECIFIC_HOURS`:\n"},"hours":{"allOf":[{"type":"object","properties":{"monday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"tuesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"wednesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"thursday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"friday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"saturday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"sunday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}}}}],"description":"Specify hours for this custom forward rule.\n"}}}},"voicemail_prompt":{"type":"string","description":"BCP 47 Language Tags (The Internet Best Current Practices (BCP) for language tags).\nA language tag is composed of a sequence of one or more subtags such as language, region, variant and script subtags.\nWhen a language tag is comprised of more than one subtag, the subtag values are separated by the \"-\" character.\nYou will most commonly find language tags written with 2 subtags - language and region. For example: en-US.\n"},"enable_voicemail_pin":{"type":"boolean","default":true,"description":"Whether the PIN is required to access voice mail of extension.\n"},"voicemail_pin":{"type":"string","minLength":6,"maxLength":10,"description":"The PIN number for accessing.   \nThe PIN policies include:  \n1. A sequence of numbers 6-10 digits in length.  \n2. No repeating numbers (e.g. \"111\", \"222\")\n3. No sequential numbers (e.g. \"012\", \"789\")\n"},"enable_voicemail_notify":{"type":"boolean","default":false,"description":"Enable voicemail to email notify.\n"},"voicemail_play_datetime":{"type":"string","enum":["DISABLE","12_HOUR_CLOCK","24_HOUR_CLOCK"],"description":"Announces Date and Time of Message.\n- `DISABLE`: Do not read;\n- `12_HOUR_CLOCK`: Read in 12-hour clock;\n- `24_HOUR_CLOCK`: Read in 24-hour clock.\n"},"interface":{"type":"string","enum":["WEB_DOMAIN","PUBLIC_IPV4","PUBLIC_IPV6","PRIVATE_IPV4","PRIVATE_IPV6","SBC_DOMAIN"],"description":"The interface type for QR code or auto provisioning.   \nCan be neither:  \n- `WEB_DOMAIN`:\n- `PUBLIC_IPV4`:\n- `PUBLIC_IPV6`:\n- `PRIVATE_IPV4`:\n- `PRIVATE_IPV6`:\n- `SBC_DOMAIN`:\n"},"preferred_transport":{"type":"string","enum":["UDP","TCP","TLS"],"description":"The transport protocol:  \nCan be either:  \n- `UDP`:\n- `TCP`:\n- `TLS`:\n"},"blfs":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The key of BLF.\n"},"value":{"type":"string","description":"The value of BLF.\n"},"first_name":{"type":"string","description":"The first name of BLF.\n"},"last_name":{"type":"string","description":"The last name of BLF.\n"}}},"description":"A collection of BLFs.\n"},"profile":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user profile file.\n"},"created_at":{"allOf":[{"type":"string","format":"date_time","description":"The RFC 3339 format is defined by\nThe date_time notation as defined by [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), \nfor example, 2017-07-21T17:32:28Z\n"}],"description":"The creation time of user.\n"},"avatar_file_name":{"type":"string","description":"The name of the file.\n"},"avatar_file_size":{"type":"integer","format":"int64","minimum":0,"description":"The file size in bytes.\n"},"avatar_file_url":{"type":"string","readOnly":true,"description":"The relative path to file url for file downloading.\n"},"sync_type":{"type":"string","enum":["Microsoft 365"],"description":"The synchronization method.   \nCan be either:   \n- `Microsoft 365`: Sync from Microsoft 365.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update a user

> Modify the settings of a user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}":{"post":{"tags":["User"],"operationId":"updateUser","summary":"Update a user","description":"Modify the settings of a user.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"allOf":[{"type":"string","maxLength":128,"description":"The email address.\n"}],"description":"The email address of user.\n"},"display_name":{"type":"string","maxLength":1024,"description":"The display name of user.\n"},"enabled":{"type":"boolean","default":true,"description":"Allows temporarily disabling the extension.\n"},"mobile_phone":{"type":"string","maxLength":32,"description":"The mobile phone number of user.\n"},"work_phone":{"type":"string","maxLength":32,"description":"The office phone number of user.\n"},"home_phone":{"type":"string","maxLength":32,"description":"The home phone number of user.\n"},"address":{"type":"string","maxLength":128,"description":"The address.\n"},"department":{"type":"string","maxLength":128,"description":"The department of user.\n"},"enable_audio_recording":{"type":"boolean","default":false,"description":"Records all calls and saves audio recordings on server.\n"},"enable_video_recording":{"type":"boolean","default":false,"description":"Records all calls and saves video recordings on server.\n"},"enable_dnd":{"type":"boolean","description":"Enable `Do Not Disturb` or not.\n"},"enable_acb":{"type":"boolean","description":"Enable `Automatic Callback` or not.\n"},"enable_hot_desking":{"type":"boolean","default":false,"description":"Enable hot desking feature or not.\n"},"anonymous_outbound_calls":{"type":"boolean","default":false,"description":"Always make outbound anonymous calls or not.\n"},"delivery_outbound_cid":{"type":"boolean","default":true,"description":"Always delivery outbound caller ID or not.\n"},"sms":{"type":"string","enum":["DISABLE","ALLOW","ALLOW_WITH_SENDER_ID"],"default":"DISABLE","description":"The preferred configuration for SMS/MMS.   \nNote: Only users with `UserManagement::Users` privilege can change this property.   \n  - `DISABLE`: Disable user SMS/MMS feature.\n  - `ALLOW`: Enable user SMS/MMS feature but with outbound caller ID.\n  - `ALLOW_WITH_SENDER_ID`: Enable user SMS/MMS but with trunk sender ID.\n"},"outbound_caller_ids":{"type":"array","items":{"type":"object","properties":{"provider_id":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"}],"description":"The unique ID of trunk.\n"},"caller_id":{"allOf":[{"type":"string","minLength":1,"maxLength":64,"description":"Outbound caller id.\n"}],"description":"The caller ID.\n"},"preferred":{"type":"boolean","description":"Whether this outbound caller id preferred.\n"},"description":{"type":"string","maxLength":1024,"description":"The descriptive information about this outbound caller id.\n"}}},"description":"A collection of outbound caller IDs.\n"},"custom_options":{"type":"string","description":"Some custom configuration options serialized as json string\n"},"office_hours":{"allOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["GLOBAL","CUSTOM"],"description":"The office hours mode can be either:  \n- `GLOBAL`: Use global office hours.\n- `CUSTOM`: Use specific office hours.\n"}}},{"type":"object","properties":{"monday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"tuesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"wednesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"thursday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"friday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"saturday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"sunday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}}}}]},"available_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"available_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"available_no_answer_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"},"timeout":{"type":"integer","format":"int32","minimum":0,"default":60,"description":"Duration that the call will remain ringing when no one answered, in seconds.\n"}}},"busy_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"busy_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"busy_no_answer_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"},"timeout":{"type":"integer","format":"int32","minimum":0,"default":60,"description":"Duration that the call will remain ringing when no one answered, in seconds.\n"}}},"dnd_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"dnd_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"away_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"away_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"lunch_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"lunch_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"trip_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"trip_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"offline_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"offline_non_office_hours_forward_rule":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"}}},"custom_forward_rules":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["FORWARD_TO_NUMBER","FORWARD_TO_VOICEMAIL","RING_ANYWAY","HANGUP"],"description":"Forward action includes:\n- `FORWARD_TO_NUMBER`: Forward to the specified number\n- `FORWARD_TO_VOICEMAIL`: Forward to the specified voicemail.\n- `RING_ANYWAY`: Ring anyway.\n- `HANGUP`: Finish call\n"},"number":{"type":"string","description":"Specify the forwarding destination number.  \nCan be either:  \n- Extension number: The extension number of PortSIP PBX.\n- External number: The numeric sequence of numbers, with or without a plus sign at the beginning.\n"},"caller_id":{"type":"string","description":"Specify the caller ID mask.\n"},"type":{"type":"string","enum":["ALL_HOURS","SPECIFIC_HOURS","OUTSIDE_SPECIFIC_HOURS"],"description":"Specify hours mode for forward rule:\n- `ALL_HOURS`:\n- `SPECIFIC_HOURS`:\n- `OUTSIDE_SPECIFIC_HOURS`:\n"},"hours":{"allOf":[{"type":"object","properties":{"monday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"tuesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"wednesday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"thursday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"friday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"saturday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}},"sunday":{"type":"object","properties":{"enabled":{"type":"boolean","description":"When enabled, all day is working time, when disabled, all day is vacation time.\n"},"ranges":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"09:00\".  \nMust be earlier than `to`.\n"},"to":{"type":"string","description":"The start time for office hour with format `HH:MM` in 24 hour clock, such as \"17:00\".  \nMust be later than `from`.\n"}}},"description":"Multiple start and end time periods make up the working time.\n"}}}}}],"description":"Specify hours for this custom forward rule.\n"}}}},"voicemail_prompt":{"type":"string","description":"BCP 47 Language Tags (The Internet Best Current Practices (BCP) for language tags).\nA language tag is composed of a sequence of one or more subtags such as language, region, variant and script subtags.\nWhen a language tag is comprised of more than one subtag, the subtag values are separated by the \"-\" character.\nYou will most commonly find language tags written with 2 subtags - language and region. For example: en-US.\n"},"enable_voicemail_pin":{"type":"boolean","default":true,"description":"Whether the PIN is required to access voice mail of extension.\n"},"voicemail_pin":{"type":"string","minLength":6,"maxLength":10,"description":"The PIN number for accessing.   \nThe PIN policies include:  \n1. A sequence of numbers 6-10 digits in length.  \n2. No repeating numbers (e.g. \"111\", \"222\")\n3. No sequential numbers (e.g. \"012\", \"789\")\n"},"enable_voicemail_notify":{"type":"boolean","default":false,"description":"Enable voicemail to email notify.\n"},"voicemail_play_datetime":{"type":"string","enum":["DISABLE","12_HOUR_CLOCK","24_HOUR_CLOCK"],"description":"Announces Date and Time of Message.\n- `DISABLE`: Do not read;\n- `12_HOUR_CLOCK`: Read in 12-hour clock;\n- `24_HOUR_CLOCK`: Read in 24-hour clock.\n"},"interface":{"type":"string","enum":["WEB_DOMAIN","PUBLIC_IPV4","PUBLIC_IPV6","PRIVATE_IPV4","PRIVATE_IPV6","SBC_DOMAIN"],"description":"The interface type for QR code or auto provisioning.   \nCan be neither:  \n- `WEB_DOMAIN`:\n- `PUBLIC_IPV4`:\n- `PUBLIC_IPV6`:\n- `PRIVATE_IPV4`:\n- `PRIVATE_IPV6`:\n- `SBC_DOMAIN`:\n"},"preferred_transport":{"type":"string","enum":["UDP","TCP","TLS"],"description":"The transport protocol:  \nCan be either:  \n- `UDP`:\n- `TCP`:\n- `TLS`:\n"},"blfs":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"The key of BLF.\n"},"value":{"type":"string","description":"The value of BLF.\n"},"first_name":{"type":"string","description":"The first name of BLF.\n"},"last_name":{"type":"string","description":"The last name of BLF.\n"}}},"description":"A collection of BLFs.\n"}}}}},"required":true},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Reset user password

> Reset user password.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/password":{"post":{"tags":["User"],"operationId":"resetUserPassword","summary":"Reset user password","description":"Reset user password.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"The password of user.\n"}}}}},"required":true},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Reset user extension password

> Reset user extension password.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/extension_password":{"post":{"tags":["User"],"operationId":"resetUserExtensionPassword","summary":"Reset user extension password","description":"Reset user extension password.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"The extension password.\n"}}}}},"required":true},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Change user role

> Change user role.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/role":{"post":{"tags":["User"],"operationId":"changeUserRole","summary":"Change user role","description":"Change user role.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","minLength":1,"maxLength":64,"description":"Roles include built-in roles and custom roles.   \nBuilt-in roles roles cannot be modified.   \nAlso, the names of built-in roles are reserved words, \ncustom roles are not allowed to use these names to avoid unnecessary confusion.   \nBuilt-in roles include:   \n- `SystemAdmin`: the system administrator has almost all permissions.\n- `Replicator`: the application permissions collection.\n- `Dealer`: the sales manager has all sold tenant resource permissions\n- `Admin`: the admin has all tenant-wide resource permissions.\n- `StandardUser`: the user all user-wide resource permissions.\n- `StandardInternationalUser`: the user all user-wide resource permissions with international call permissions.\n- `QueueManager`: The call queue manager.\n"}}}}},"required":true},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Reset user profile

> Reset user profile.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/profile":{"post":{"tags":["User"],"operationId":"resetUserProfile","summary":"Reset user profile","description":"Reset user profile.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Bind user to ms365 account

> Bind user to ms365 account.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/ms365_binding":{"post":{"tags":["User"],"operationId":"addUserMs365Binding","summary":"Bind user to ms365 account","description":"Bind user to ms365 account.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"The `OID` or `Principal Name` of Microsoft 365 user.\n"}}}}},"required":true},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Unbind user from ms365 account

> Unbind user from ms365 account.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/ms365_binding/destroy":{"post":{"tags":["User"],"operationId":"removeUserMs365Binding","summary":"Unbind user from ms365 account","description":"Unbind user from ms365 account.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"responses":{"204":{"description":"No Content"},"4XX":{"description":"Error"}}}}}}
```

## Delete a user

> Delete a certain user.

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/destroy":{"post":{"tags":["User"],"operationId":"deleteUser","summary":"Delete a user","description":"Delete a certain user.","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"responses":{"204":{"description":"No Content"},"4XX":{"description":"Error"}}}}}}
```

## Retrieves user current status

> Retrieves current status of given user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/status":{"get":{"tags":["User"],"operationId":"getUserStatus","summary":"Retrieves user current status","description":"Retrieves current status of given user.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["ONLINE","ON_CALL","OFFLINE"],"description":"Status of extension:\n  - `ONLINE`   \n  - `ON_CALL`   \n  - `OFFLINE`\n"},"presence":{"type":"string","enum":["DO_NOT_DISTURB","AVAILABLE","AWAY","BUSINESS_TRIP","LUNCH","ON_CALL","OFFLINE"],"description":"The current presence of extension:   \n- `DO_NOT_DISTURB`:   \n- `AVAILABLE`:   \n- `AWAY`:   \n- `BUSINESS_TRIP`:   \n- `LUNCH`:   \n- `ON_CALL`   \n- `OFFLINE`\n"},"presence_note":{"type":"string","maxLength":128,"description":"The presence note.\n"},"registration":{"type":"array","items":{"type":"object","properties":{"instance_id":{"type":"string","description":"The instance ID of registration.\n"},"user_agent":{"type":"string","description":"User agent of login device.\n"},"application":{"type":"string","description":"The application name of login device.\n"},"ip":{"type":"string","description":"The IP address of login device.\n"},"enable_push":{"type":"boolean","description":"Whether push is enabled of login device.\n"},"contact_address":{"type":"string","description":"The contact address information.\n"}}},"description":"Collection of registration information.\n"},"enable_dnd":{"type":"boolean","description":"`Do Not Disturb` enabled or not.\n"},"enable_acb":{"type":"boolean","description":"`Automatic Callback` enabled or not.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Delete user registration

> Delete user registration.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/status/{instance_id}/destroy_status":{"post":{"tags":["User"],"operationId":"delUserRegistration","summary":"Delete user registration","description":"Delete user registration.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."},{"name":"instance_id","in":"path","required":true,"schema":{"type":"string","description":"The instance ID of registration.\n"},"description":"The instance ID of the registration."}],"responses":{"204":{"description":"No Content"},"4XX":{"description":"Error"}}}}}}
```

## Retrieve balance

> Retrieve extension's balance by it's unique ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/balance":{"get":{"tags":["User"],"operationId":"getUserBalance","summary":"Retrieve balance","description":"Retrieve extension's balance by it's unique ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"The unique ID of the resource.\n"},"description":"The unique ID of the extension.\n"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"balance":{"type":"number","format":"double","description":"User balance. Precision is five digits.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update balance

> Update extension's balance<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/balance":{"post":{"tags":["User"],"operationId":"updateUserBalance","summary":"Update balance","description":"Update extension's balance\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"The unique ID of the resource.\n"},"description":"The unique ID of the extension."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"balance":{"type":"number","format":"double","description":"User balance. Precision is five digits.\n"}}}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## List voicemail greetings

> Retrieves a collection of greetings available to certain user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/greetings":{"get":{"tags":["User"],"operationId":"listGreetings","summary":"List voicemail greetings","description":"Retrieves a collection of greetings available to certain user.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"The unique ID of the resource.\n"},"description":"The unique ID of the user."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of greeting.\n"},"enabled":{"type":"boolean","description":"Whether the greeting is enabled or not.\n"},"file_name":{"type":"string","description":"The name of the file.\n"},"file_size":{"type":"integer","format":"int64","minimum":0,"description":"The file size in bytes.\n"},"file_url":{"type":"string","readOnly":true,"description":"The relative path to file url for file downloading.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Create voicemail greeting

> Create a voicemail greeting for user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/greetings":{"post":{"tags":["User"],"operationId":"createGreeting","summary":"Create voicemail greeting","description":"Create a voicemail greeting for user.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"file_id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of the file.\n"}}}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of greeting.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Enable greeting

> Set a voicemail greeting activated.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/greetings/{greeting_id}/enable":{"post":{"tags":["User"],"operationId":"enableGreeting","summary":"Enable greeting","description":"Set a voicemail greeting activated.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"}},{"name":"greeting_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of greeting.\n"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid extension number supplied"},"404":{"description":"User not found"}}}}}}
```

## Disable greeting

> Disable user voicemail greeting.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/greetings/{greeting_id}/disable":{"post":{"tags":["User"],"operationId":"disableGreeting","summary":"Disable greeting","description":"Disable user voicemail greeting.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of user."},{"name":"greeting_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of greeting.\n"},"description":"The unique ID of the greeting."}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid extension number supplied"},"404":{"description":"User not found"}}}}}}
```

## Delete voicemail greeting

> Destroy a voicemail greeting from user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/greetings/{greeting_id}/destroy":{"post":{"tags":["User"],"operationId":"delGreeting","summary":"Delete voicemail greeting","description":"Destroy a voicemail greeting from user.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"}},{"name":"greeting_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of greeting.\n"}}],"responses":{"204":{"description":"No Content"},"4XX":{"description":"Error"}}}}}}
```

## List user's IP phones

> Retrieve a collection of IP Phones.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/phones":{"get":{"tags":["User"],"operationId":"listUserPhones","summary":"List user's IP phones","description":"Retrieve a collection of IP Phones.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of phone.\n"},"mac":{"allOf":[{"type":"string","description":"MAC address.\n"}],"description":"MAC address of this IP phone.\n"},"filename":{"type":"string","description":"Template XML file name for phone provisioning.\n"},"vendor":{"type":"string","description":"The phone vendor of IP phone.\n"},"model":{"type":"string","description":"The name of IP phone model.\n"},"password":{"type":"string","description":"Password for accessing the Web interface of phone.\nThe username remains default because most phone manufacturers do not\nallow modification of the user name. This is supported for some phone model, such as \"Snom 300\".\n"},"language":{"type":"string","enum":["ENGLISH","CHINESE","DUTCH","FRENCH","GERMAN","GREEK","ITALIAN","JAPANESE","POLISH","RUSSIAN","SPANISH","SWEDISH","UKRAINIAN","BULGARIAN"],"description":"Language for strings displayed on Phone Display LCD.\nSupported languages include ENGLISH, CHINESE, DUTCH, FRENCH, GERMAN,\nGREEK, ITALIAN, JAPANESE, POLISH, RUSSIAN, SPANISH, SWEDISH, UKRAINIAN, and BULGARIAN.\n"},"transfer":{"type":"string","enum":["BLIND","ATTENDED","NEW_CALL"],"default":"BLIND","description":"The transfer method for auto provision.  \nCan be either: \n- `BLIND`: After the IP phone is configured with the BLF of a certain key, during a call on the IP phone, press the key, and the phone will directly initiate a Blind transfer to the configured number.\n- `ATTENDED`: After the IP phone is configured with the BLF of a key, during a call on the IP phone, press the key, and the phone will directly initiate an Attended transfer to the configured number.\n- `NEW_CALL`: After the IP phone is configured with the BLF of a certain key, during a call on the IP phone, press the key, and the phone will initiate a new call to the configured number.\n"},"timezone":{"type":"string","description":"The timezone of phone.\n"},"ringtone":{"type":"string","description":"The ringtone of phone.\n"},"queue_ringtone":{"type":"string","description":"The queue ringtone of phone for queue calls or ring group calls.\n"},"external_ringtone":{"type":"string","description":"The ringtone of phone for external calls.\n"},"date_format":{"type":"string","description":"The date format of phone.\n"},"time_format":{"type":"string","description":"The time format of phone.\n"},"powerled":{"type":"string","description":"The power led of phone.\n"},"backlight":{"type":"string","description":"The backlight of phone.\n"},"screensaver":{"type":"string","description":"The screensaver of phone.\n"},"rps":{"type":"boolean","description":"Send to RPS or not.\n"},"https":{"type":"boolean","description":"Whether to use https\n"},"codecs":{"type":"array","items":{"type":"string"},"description":"Settings for the priority of the codecs in this phone.\nThis indicates the first preferred codec.\n"},"enable_lldp":{"type":"boolean","default":false,"description":"Enable or disable Link Layer Discovery Protocol."},"enable_vlan_wan_port":{"type":"boolean","default":false,"description":"Enable or disable VLAN for WAN Port.\n"},"wan_port_id":{"type":"integer","minimum":1,"maximum":4094,"description":"VLAN ID for WAN PORT.\n"},"wan_port_priority":{"type":"integer","minimum":0,"maximum":7,"description":"VLAN priority for WAN Port.\n"},"enable_vlan_pc_port":{"type":"boolean","default":false,"description":"Enable or disable VLAN for PC Port.\n"},"pc_port_id":{"type":"integer","minimum":1,"maximum":4094,"description":"VLAN ID for PC PORT.\n"},"pc_port_priority":{"type":"integer","minimum":0,"maximum":7,"description":"VLAN priority for PC Port.\n"},"interface":{"type":"string","enum":["WEB_DOMAIN","PUBLIC_IPV4","PUBLIC_IPV6","PRIVATE_IPV4","PRIVATE_IPV6","SBC_DOMAIN"],"description":"The interface type for QR code or auto provisioning.   \nCan be neither:  \n- `WEB_DOMAIN`:\n- `PUBLIC_IPV4`:\n- `PUBLIC_IPV6`:\n- `PRIVATE_IPV4`:\n- `PRIVATE_IPV6`:\n- `SBC_DOMAIN`:\n"},"preferred_transport":{"type":"string","enum":["UDP","TCP","TLS"],"description":"The transport protocol:  \nCan be either:  \n- `UDP`:\n- `TCP`:\n- `TLS`:\n"},"serial_number":{"type":"string","description":"The serial number of phone.\n"},"door_password1":{"type":"string","minLength":4,"maxLength":8,"description":"The primary door password of phone. Only numeric sequences are allowed.\n"},"door_password2":{"type":"string","minLength":4,"maxLength":8,"description":"The secondary door password of phone. Only numeric sequences are allowed.\n"},"url":{"type":"string","description":"Auto provision server URL.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Assign phone to user

> Assign a phone to user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/phones":{"post":{"tags":["User"],"operationId":"createUserPhone","summary":"Assign phone to user","description":"Assign a phone to user.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"mac":{"allOf":[{"type":"string","description":"MAC address.\n"}],"description":"MAC address of this IP phone.\n"},"filename":{"type":"string","description":"Template XML file name for phone provisioning.\n"},"vendor":{"type":"string","description":"The phone vendor of IP phone.\n"},"model":{"type":"string","description":"The name of IP phone model.\n"},"password":{"type":"string","description":"Password for accessing the Web interface of phone.\nThe username remains default because most phone manufacturers do not\nallow modification of the user name. This is supported for some phone model, such as \"Snom 300\".\n"},"language":{"type":"string","enum":["ENGLISH","CHINESE","DUTCH","FRENCH","GERMAN","GREEK","ITALIAN","JAPANESE","POLISH","RUSSIAN","SPANISH","SWEDISH","UKRAINIAN","BULGARIAN"],"description":"Language for strings displayed on Phone Display LCD.\nSupported languages include ENGLISH, CHINESE, DUTCH, FRENCH, GERMAN,\nGREEK, ITALIAN, JAPANESE, POLISH, RUSSIAN, SPANISH, SWEDISH, UKRAINIAN, and BULGARIAN.\n"},"transfer":{"type":"string","enum":["BLIND","ATTENDED","NEW_CALL"],"default":"BLIND","description":"The transfer method for auto provision.  \nCan be either: \n- `BLIND`: After the IP phone is configured with the BLF of a certain key, during a call on the IP phone, press the key, and the phone will directly initiate a Blind transfer to the configured number.\n- `ATTENDED`: After the IP phone is configured with the BLF of a key, during a call on the IP phone, press the key, and the phone will directly initiate an Attended transfer to the configured number.\n- `NEW_CALL`: After the IP phone is configured with the BLF of a certain key, during a call on the IP phone, press the key, and the phone will initiate a new call to the configured number.\n"},"timezone":{"type":"string","description":"The timezone of phone.\n"},"ringtone":{"type":"string","description":"The ringtone of phone.\n"},"queue_ringtone":{"type":"string","description":"The queue ringtone of phone for queue calls or ring group calls.\n"},"external_ringtone":{"type":"string","description":"The ringtone of phone for external calls.\n"},"date_format":{"type":"string","description":"The date format of phone.\n"},"time_format":{"type":"string","description":"The time format of phone.\n"},"powerled":{"type":"string","description":"The power led of phone.\n"},"backlight":{"type":"string","description":"The backlight of phone.\n"},"screensaver":{"type":"string","description":"The screensaver of phone.\n"},"rps":{"type":"boolean","description":"Send to RPS or not.\n"},"https":{"type":"boolean","description":"Whether to use https\n"},"codecs":{"type":"array","items":{"type":"string"},"description":"Settings for the priority of the codecs in this phone.\nThis indicates the first preferred codec.\n"},"enable_lldp":{"type":"boolean","default":false,"description":"Enable or disable Link Layer Discovery Protocol."},"enable_vlan_wan_port":{"type":"boolean","default":false,"description":"Enable or disable VLAN for WAN Port.\n"},"wan_port_id":{"type":"integer","minimum":1,"maximum":4094,"description":"VLAN ID for WAN PORT.\n"},"wan_port_priority":{"type":"integer","minimum":0,"maximum":7,"description":"VLAN priority for WAN Port.\n"},"enable_vlan_pc_port":{"type":"boolean","default":false,"description":"Enable or disable VLAN for PC Port.\n"},"pc_port_id":{"type":"integer","minimum":1,"maximum":4094,"description":"VLAN ID for PC PORT.\n"},"pc_port_priority":{"type":"integer","minimum":0,"maximum":7,"description":"VLAN priority for PC Port.\n"},"interface":{"type":"string","enum":["WEB_DOMAIN","PUBLIC_IPV4","PUBLIC_IPV6","PRIVATE_IPV4","PRIVATE_IPV6","SBC_DOMAIN"],"description":"The interface type for QR code or auto provisioning.   \nCan be neither:  \n- `WEB_DOMAIN`:\n- `PUBLIC_IPV4`:\n- `PUBLIC_IPV6`:\n- `PRIVATE_IPV4`:\n- `PRIVATE_IPV6`:\n- `SBC_DOMAIN`:\n"},"preferred_transport":{"type":"string","enum":["UDP","TCP","TLS"],"description":"The transport protocol:  \nCan be either:  \n- `UDP`:\n- `TCP`:\n- `TLS`:\n"},"serial_number":{"type":"string","description":"The serial number of phone.\n"},"door_password1":{"type":"string","minLength":4,"maxLength":8,"description":"The primary door password of phone. Only numeric sequences are allowed.\n"},"door_password2":{"type":"string","minLength":4,"maxLength":8,"description":"The secondary door password of phone. Only numeric sequences are allowed.\n"}},"required":["mac","filename","vendor","model","password","language","transfer","timezone","codecs","interface","preferred_transport"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of phone.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve user phone details

> Retrieve phone details of user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/phones/{phone_id}":{"get":{"tags":["User"],"operationId":"showUserPhone","summary":"Retrieve user phone details","description":"Retrieve phone details of user.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."},{"name":"phone_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of phone.\n"},"description":"The unique ID of the phone."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of phone.\n"},"mac":{"allOf":[{"type":"string","description":"MAC address.\n"}],"description":"MAC address of this IP phone.\n"},"filename":{"type":"string","description":"Template XML file name for phone provisioning.\n"},"vendor":{"type":"string","description":"The phone vendor of IP phone.\n"},"model":{"type":"string","description":"The name of IP phone model.\n"},"password":{"type":"string","description":"Password for accessing the Web interface of phone.\nThe username remains default because most phone manufacturers do not\nallow modification of the user name. This is supported for some phone model, such as \"Snom 300\".\n"},"language":{"type":"string","enum":["ENGLISH","CHINESE","DUTCH","FRENCH","GERMAN","GREEK","ITALIAN","JAPANESE","POLISH","RUSSIAN","SPANISH","SWEDISH","UKRAINIAN","BULGARIAN"],"description":"Language for strings displayed on Phone Display LCD.\nSupported languages include ENGLISH, CHINESE, DUTCH, FRENCH, GERMAN,\nGREEK, ITALIAN, JAPANESE, POLISH, RUSSIAN, SPANISH, SWEDISH, UKRAINIAN, and BULGARIAN.\n"},"transfer":{"type":"string","enum":["BLIND","ATTENDED","NEW_CALL"],"default":"BLIND","description":"The transfer method for auto provision.  \nCan be either: \n- `BLIND`: After the IP phone is configured with the BLF of a certain key, during a call on the IP phone, press the key, and the phone will directly initiate a Blind transfer to the configured number.\n- `ATTENDED`: After the IP phone is configured with the BLF of a key, during a call on the IP phone, press the key, and the phone will directly initiate an Attended transfer to the configured number.\n- `NEW_CALL`: After the IP phone is configured with the BLF of a certain key, during a call on the IP phone, press the key, and the phone will initiate a new call to the configured number.\n"},"timezone":{"type":"string","description":"The timezone of phone.\n"},"ringtone":{"type":"string","description":"The ringtone of phone.\n"},"queue_ringtone":{"type":"string","description":"The queue ringtone of phone for queue calls or ring group calls.\n"},"external_ringtone":{"type":"string","description":"The ringtone of phone for external calls.\n"},"date_format":{"type":"string","description":"The date format of phone.\n"},"time_format":{"type":"string","description":"The time format of phone.\n"},"powerled":{"type":"string","description":"The power led of phone.\n"},"backlight":{"type":"string","description":"The backlight of phone.\n"},"screensaver":{"type":"string","description":"The screensaver of phone.\n"},"rps":{"type":"boolean","description":"Send to RPS or not.\n"},"https":{"type":"boolean","description":"Whether to use https\n"},"codecs":{"type":"array","items":{"type":"string"},"description":"Settings for the priority of the codecs in this phone.\nThis indicates the first preferred codec.\n"},"enable_lldp":{"type":"boolean","default":false,"description":"Enable or disable Link Layer Discovery Protocol."},"enable_vlan_wan_port":{"type":"boolean","default":false,"description":"Enable or disable VLAN for WAN Port.\n"},"wan_port_id":{"type":"integer","minimum":1,"maximum":4094,"description":"VLAN ID for WAN PORT.\n"},"wan_port_priority":{"type":"integer","minimum":0,"maximum":7,"description":"VLAN priority for WAN Port.\n"},"enable_vlan_pc_port":{"type":"boolean","default":false,"description":"Enable or disable VLAN for PC Port.\n"},"pc_port_id":{"type":"integer","minimum":1,"maximum":4094,"description":"VLAN ID for PC PORT.\n"},"pc_port_priority":{"type":"integer","minimum":0,"maximum":7,"description":"VLAN priority for PC Port.\n"},"interface":{"type":"string","enum":["WEB_DOMAIN","PUBLIC_IPV4","PUBLIC_IPV6","PRIVATE_IPV4","PRIVATE_IPV6","SBC_DOMAIN"],"description":"The interface type for QR code or auto provisioning.   \nCan be neither:  \n- `WEB_DOMAIN`:\n- `PUBLIC_IPV4`:\n- `PUBLIC_IPV6`:\n- `PRIVATE_IPV4`:\n- `PRIVATE_IPV6`:\n- `SBC_DOMAIN`:\n"},"preferred_transport":{"type":"string","enum":["UDP","TCP","TLS"],"description":"The transport protocol:  \nCan be either:  \n- `UDP`:\n- `TCP`:\n- `TLS`:\n"},"serial_number":{"type":"string","description":"The serial number of phone.\n"},"door_password1":{"type":"string","minLength":4,"maxLength":8,"description":"The primary door password of phone. Only numeric sequences are allowed.\n"},"door_password2":{"type":"string","minLength":4,"maxLength":8,"description":"The secondary door password of phone. Only numeric sequences are allowed.\n"},"url":{"type":"string","description":"Auto provision server URL.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update a phone of user

> Update phone of user by it's unique ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/phones/{phone_id}":{"post":{"tags":["User"],"operationId":"updateUserPhone","summary":"Update a phone of user","description":"Update phone of user by it's unique ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."},{"name":"phone_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of phone.\n"},"description":"The unique ID of the phone."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"password":{"type":"string","description":"Password for accessing the Web interface of phone.\nThe username remains default because most phone manufacturers do not\nallow modification of the user name. This is supported for some phone model, such as \"Snom 300\".\n"},"language":{"type":"string","enum":["ENGLISH","CHINESE","DUTCH","FRENCH","GERMAN","GREEK","ITALIAN","JAPANESE","POLISH","RUSSIAN","SPANISH","SWEDISH","UKRAINIAN","BULGARIAN"],"description":"Language for strings displayed on Phone Display LCD.\nSupported languages include ENGLISH, CHINESE, DUTCH, FRENCH, GERMAN,\nGREEK, ITALIAN, JAPANESE, POLISH, RUSSIAN, SPANISH, SWEDISH, UKRAINIAN, and BULGARIAN.\n"},"transfer":{"type":"string","enum":["BLIND","ATTENDED","NEW_CALL"],"default":"BLIND","description":"The transfer method for auto provision.  \nCan be either: \n- `BLIND`: After the IP phone is configured with the BLF of a certain key, during a call on the IP phone, press the key, and the phone will directly initiate a Blind transfer to the configured number.\n- `ATTENDED`: After the IP phone is configured with the BLF of a key, during a call on the IP phone, press the key, and the phone will directly initiate an Attended transfer to the configured number.\n- `NEW_CALL`: After the IP phone is configured with the BLF of a certain key, during a call on the IP phone, press the key, and the phone will initiate a new call to the configured number.\n"},"timezone":{"type":"string","description":"The timezone of phone.\n"},"ringtone":{"type":"string","description":"The ringtone of phone.\n"},"queue_ringtone":{"type":"string","description":"The queue ringtone of phone for queue calls or ring group calls.\n"},"external_ringtone":{"type":"string","description":"The ringtone of phone for external calls.\n"},"date_format":{"type":"string","description":"The date format of phone.\n"},"time_format":{"type":"string","description":"The time format of phone.\n"},"powerled":{"type":"string","description":"The power led of phone.\n"},"backlight":{"type":"string","description":"The backlight of phone.\n"},"screensaver":{"type":"string","description":"The screensaver of phone.\n"},"rps":{"type":"boolean","description":"Send to RPS or not.\n"},"https":{"type":"boolean","description":"Whether to use https\n"},"codecs":{"type":"array","items":{"type":"string"},"description":"Settings for the priority of the codecs in this phone.\nThis indicates the first preferred codec.\n"},"enable_lldp":{"type":"boolean","default":false,"description":"Enable or disable Link Layer Discovery Protocol."},"enable_vlan_wan_port":{"type":"boolean","default":false,"description":"Enable or disable VLAN for WAN Port.\n"},"wan_port_id":{"type":"integer","minimum":1,"maximum":4094,"description":"VLAN ID for WAN PORT.\n"},"wan_port_priority":{"type":"integer","minimum":0,"maximum":7,"description":"VLAN priority for WAN Port.\n"},"enable_vlan_pc_port":{"type":"boolean","default":false,"description":"Enable or disable VLAN for PC Port.\n"},"pc_port_id":{"type":"integer","minimum":1,"maximum":4094,"description":"VLAN ID for PC PORT.\n"},"pc_port_priority":{"type":"integer","minimum":0,"maximum":7,"description":"VLAN priority for PC Port.\n"},"interface":{"type":"string","enum":["WEB_DOMAIN","PUBLIC_IPV4","PUBLIC_IPV6","PRIVATE_IPV4","PRIVATE_IPV6","SBC_DOMAIN"],"description":"The interface type for QR code or auto provisioning.   \nCan be neither:  \n- `WEB_DOMAIN`:\n- `PUBLIC_IPV4`:\n- `PUBLIC_IPV6`:\n- `PRIVATE_IPV4`:\n- `PRIVATE_IPV6`:\n- `SBC_DOMAIN`:\n"},"preferred_transport":{"type":"string","enum":["UDP","TCP","TLS"],"description":"The transport protocol:  \nCan be either:  \n- `UDP`:\n- `TCP`:\n- `TLS`:\n"},"serial_number":{"type":"string","description":"The serial number of phone.\n"},"door_password1":{"type":"string","minLength":4,"maxLength":8,"description":"The primary door password of phone. Only numeric sequences are allowed.\n"},"door_password2":{"type":"string","minLength":4,"maxLength":8,"description":"The secondary door password of phone. Only numeric sequences are allowed.\n"}}}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Remove a user phone

> Unassign a phone from extension.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/phones/{phone_id}/destroy":{"post":{"tags":["User"],"operationId":"deleteUserPhone","summary":"Remove a user phone","description":"Unassign a phone from extension.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."},{"name":"phone_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of phone.\n"},"description":"The unique ID of the phone."}],"responses":{"204":{"description":"No Content"},"4XX":{"description":"Error"}}}}}}
```

## List user's holidays

> Retrieve a collection of user's holidays.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/holidays":{"get":{"tags":["User"],"operationId":"listUserHolidays","summary":"List user's holidays","description":"Retrieve a collection of user's holidays.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","format":"int64","minimum":0,"description":"Total number of resource.\n"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of the holiday.\n"},"region":{"type":"string","description":"A valid country code based on iso3166-1 alpha-3 standard. see: https://www.iso.org/iso-3166-country-codes.html\n"},"consecutive":{"type":"boolean","description":"Whether the holiday consists of consecutive days.\n"},"every_year":{"type":"boolean","description":"Does the holiday take effect every year.\n"},"year_start":{"type":"integer","description":"The start year of holiday.\n"},"year_end":{"type":"integer","description":"The end year of holiday.\n"},"month_start":{"type":"integer","description":"The start month of holiday.\n"},"month_end":{"type":"integer","description":"The end month of holiday.\n"},"day_start":{"type":"integer","description":"The start day of holiday.\n"},"day_end":{"type":"integer","description":"The end day of holiday.\n"},"hour_start":{"type":"integer","description":"The start hour of holiday.\n"},"hour_end":{"type":"integer","description":"The end hour of holiday.\n"},"minute_start":{"type":"integer","description":"The start minute of holiday.\n"},"minute_end":{"type":"integer","description":"The end minute of holiday.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Create a new holiday for user

> Create a new holiday for a user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/holidays":{"post":{"tags":["User"],"operationId":"createUserHoliday","summary":"Create a new holiday for user","description":"Create a new holiday for a user.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of the holiday.\n"},"region":{"type":"string","description":"A valid country code based on iso3166-1 alpha-3 standard. see: https://www.iso.org/iso-3166-country-codes.html\n"},"consecutive":{"type":"boolean","description":"Whether the holiday consists of consecutive days.\n"},"every_year":{"type":"boolean","description":"Does the holiday take effect every year.\n"},"year_start":{"type":"integer","description":"The start year of holiday.\n"},"year_end":{"type":"integer","description":"The end year of holiday.\n"},"month_start":{"type":"integer","description":"The start month of holiday.\n"},"month_end":{"type":"integer","description":"The end month of holiday.\n"},"day_start":{"type":"integer","description":"The start day of holiday.\n"},"day_end":{"type":"integer","description":"The end day of holiday.\n"},"hour_start":{"type":"integer","description":"The start hour of holiday.\n"},"hour_end":{"type":"integer","description":"The end hour of holiday.\n"},"minute_start":{"type":"integer","description":"The start minute of holiday.\n"},"minute_end":{"type":"integer","description":"The end minute of holiday.\n"}},"required":["name","region","consecutive","every_year"]}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## GET /users/{id}/holidays/{holiday\_id}

> Retrieve a holiday of a user

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/holidays/{holiday_id}":{"get":{"tags":["User"],"operationId":"retrieveUserHoliday","summary":"Retrieve a holiday of a user","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"description":"The unique ID of the holiday."},{"name":"holiday_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"description":"The unique ID of the holiday."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of the holiday.\n"},"region":{"type":"string","description":"A valid country code based on iso3166-1 alpha-3 standard. see: https://www.iso.org/iso-3166-country-codes.html\n"},"consecutive":{"type":"boolean","description":"Whether the holiday consists of consecutive days.\n"},"every_year":{"type":"boolean","description":"Does the holiday take effect every year.\n"},"year_start":{"type":"integer","description":"The start year of holiday.\n"},"year_end":{"type":"integer","description":"The end year of holiday.\n"},"month_start":{"type":"integer","description":"The start month of holiday.\n"},"month_end":{"type":"integer","description":"The end month of holiday.\n"},"day_start":{"type":"integer","description":"The start day of holiday.\n"},"day_end":{"type":"integer","description":"The end day of holiday.\n"},"hour_start":{"type":"integer","description":"The start hour of holiday.\n"},"hour_end":{"type":"integer","description":"The end hour of holiday.\n"},"minute_start":{"type":"integer","description":"The start minute of holiday.\n"},"minute_end":{"type":"integer","description":"The end minute of holiday.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update a holiday for a user

> Update a holiday that already exists.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/holidays/{holiday_id}":{"post":{"tags":["User"],"operationId":"updateUserHoliday","summary":"Update a holiday for a user","description":"Update a holiday that already exists.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"description":"The unique ID of the holiday."},{"name":"holiday_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"description":"The unique ID of the holiday."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of the holiday.\n"},"region":{"type":"string","description":"A valid country code based on iso3166-1 alpha-3 standard. see: https://www.iso.org/iso-3166-country-codes.html\n"},"consecutive":{"type":"boolean","description":"Whether the holiday consists of consecutive days.\n"},"every_year":{"type":"boolean","description":"Does the holiday take effect every year.\n"},"year_start":{"type":"integer","description":"The start year of holiday.\n"},"year_end":{"type":"integer","description":"The end year of holiday.\n"},"month_start":{"type":"integer","description":"The start month of holiday.\n"},"month_end":{"type":"integer","description":"The end month of holiday.\n"},"day_start":{"type":"integer","description":"The start day of holiday.\n"},"day_end":{"type":"integer","description":"The end day of holiday.\n"},"hour_start":{"type":"integer","description":"The start hour of holiday.\n"},"hour_end":{"type":"integer","description":"The end hour of holiday.\n"},"minute_start":{"type":"integer","description":"The start minute of holiday.\n"},"minute_end":{"type":"integer","description":"The end minute of holiday.\n"}},"required":["name","consecutive","every_year"]}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Destroy a holiday of user

> Destroy a holiday of user.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/holidays/{holiday_id}/destroy":{"post":{"tags":["User"],"operationId":"deleteUserHoliday","summary":"Destroy a holiday of user","description":"Destroy a holiday of user.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"description":"The unique ID of the holiday."},{"name":"holiday_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"description":"The unique ID of the holiday."}],"responses":{"204":{"description":"No Content"},"400":{"description":"Invalid ID supplied."}}}}}}
```

## List user's global holidays

> Retrieve a collection of global holidays.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/global_holidays":{"get":{"tags":["User"],"operationId":"listUserGlobalHolidays","summary":"List user's global holidays","description":"Retrieve a collection of global holidays.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of the holiday.\n"},"region":{"type":"string","description":"A valid country code based on iso3166-1 alpha-3 standard. see: https://www.iso.org/iso-3166-country-codes.html\n"},"consecutive":{"type":"boolean","description":"Whether the holiday consists of consecutive days.\n"},"every_year":{"type":"boolean","description":"Does the holiday take effect every year.\n"},"year_start":{"type":"integer","description":"The start year of holiday.\n"},"year_end":{"type":"integer","description":"The end year of holiday.\n"},"month_start":{"type":"integer","description":"The start month of holiday.\n"},"month_end":{"type":"integer","description":"The end month of holiday.\n"},"day_start":{"type":"integer","description":"The start day of holiday.\n"},"day_end":{"type":"integer","description":"The end day of holiday.\n"},"hour_start":{"type":"integer","description":"The start hour of holiday.\n"},"hour_end":{"type":"integer","description":"The end hour of holiday.\n"},"minute_start":{"type":"integer","description":"The start minute of holiday.\n"},"minute_end":{"type":"integer","description":"The end minute of holiday.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update user's global holidays

> Update global holidays from tenant holidays.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/global_holidays":{"post":{"tags":["User"],"operationId":"updateUserGlobalHoliday","summary":"Update user's global holidays","description":"Update global holidays from tenant holidays.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"},"description":"A collection of ID of tenant's holiday.\n"}}}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"readOnly":true,"description":"The unique ID of holiday.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve the call queues which the user belongs

> Retrieve the call queues which the user belongs.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/call_queues":{"get":{"tags":["User"],"operationId":"listUserBelongedCallQueues","summary":"Retrieve the call queues which the user belongs","description":"Retrieve the call queues which the user belongs.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of call queue.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of call queue.\n"},"extension_number":{"allOf":[{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"}],"description":"The extension number of call queue.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve call queue agent

> Retrieve information of call queue agent.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/call_queues/{queue_id}/agent":{"get":{"tags":["User"],"operationId":"getUserCallQueueAgentStatus","summary":"Retrieve call queue agent","description":"Retrieve information of call queue agent.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."},{"name":"queue_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of call queue.\n"},"description":"The unique ID of the call queue."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"extension_number":{"allOf":[{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"}],"description":"The extension number of agent.\n"},"display_name":{"allOf":[{"type":"string","maxLength":1024,"description":"The display name of user.\n"}],"description":"The display name of agent.\n"},"skill_level":{"type":"integer","format":"int32","minimum":1,"maximum":100,"default":1,"description":"The skill level of agent in queue.   \nOnly valid when `polling_strategy` is skill based.\n"},"status":{"type":"string","enum":["READY","NOT_READY","QUEUE_CALL","OTHER_CALL","WRAP_UP","BREAK","LUNCH","LOGGED_OUT","OFFLINE"],"readOnly":true,"description":"Current status of agent: \n- `READY`:  \n- `NOT_READY`:  \n- `QUEUE_CALL`:  \n- `OTHER_CALL`:  \n- `WRAP_UP`:  \n- `BREAK`:  \n- `LUNCH`:  \n- `TRANSFER`:   \n- `CONSULT_TRANSFER`:   \n- `ON_HOLD`:   \n- `LOGGED_OUT`:  \n- `OFFLINE`:\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Set call queue agent status

> Set call queue agent status.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/call_queues/{queue_id}/agent":{"post":{"tags":["User"],"operationId":"setUserCallQueueAgentStatus","summary":"Set call queue agent status","description":"Set call queue agent status.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."},{"name":"queue_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of call queue.\n"},"description":"The unique ID of the call queue."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","enum":["READY","NOT_READY","WRAP_UP","BREAK","LUNCH","LOGGED_IN","LOGGED_OUT"],"description":"Change call queue agent status to one of the following: \n- `READY`:  \n- `NOT_READY`:  \n- `WRAP_UP`:  \n- `BREAK`:  \n- `LUNCH`:   \n- `LOGGED_IN`:   \n- `LOGGED_OUT`:\n"}}}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## List speed dial 8

> List speed dial 8.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/speed_dial_8":{"get":{"tags":["User"],"operationId":"usersListSpeedDial8","summary":"List speed dial 8","description":"List speed dial 8.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"},"code":{"type":"string","minLength":1,"maxLength":1,"description":"The speed dial 8 dialing code.   \nAvailable code range from `2` to `9`.\n"},"phone_number":{"type":"string","description":"The phone number that you want to call.\n"},"description":{"type":"string","maximum":1024,"description":"The description of speed dial.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Add new speed dial 8

> Create new speed dial 8.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/speed_dial_8":{"post":{"tags":["User"],"operationId":"usersCreateSpeedDial8","summary":"Add new speed dial 8","description":"Create new speed dial 8.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":1,"description":"The speed dial 8 dialing code.   \nAvailable code range from `2` to `9`.\n"},"phone_number":{"type":"string","description":"The phone number that you want to call.\n"},"description":{"type":"string","maximum":1024,"description":"The description of speed dial.\n"}},"required":["code","phone_number"]}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve details of speed dial 8

> Retrieve details of speed dial 8 by it's ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/speed_dial_8/{dial_id}":{"get":{"tags":["User"],"operationId":"usersRetrieveSpeedDial8","summary":"Retrieve details of speed dial 8","description":"Retrieve details of speed dial 8 by it's ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."},{"name":"dial_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"},"description":"The unique ID of the speed dial."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"},"code":{"type":"string","minLength":1,"maxLength":1,"description":"The speed dial 8 dialing code.   \nAvailable code range from `2` to `9`.\n"},"phone_number":{"type":"string","description":"The phone number that you want to call.\n"},"description":{"type":"string","maximum":1024,"description":"The description of speed dial.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update speed dial 8

> Update speed dial 8.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/speed_dial_8/{dial_id}":{"post":{"tags":["User"],"operationId":"usersUpdateSpeedDial8","summary":"Update speed dial 8","description":"Update speed dial 8.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."},{"name":"dial_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"},"description":"The unique ID of the speed dial."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":1,"description":"The speed dial 8 dialing code.   \nAvailable code range from `2` to `9`.\n"},"phone_number":{"type":"string","description":"The phone number that you want to call.\n"},"description":{"type":"string","maximum":1024,"description":"The description of speed dial.\n"}}}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Delete speed dial 8

> Remove speed dial 8 by ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/speed_dial_8/{dial_id}/destroy":{"post":{"tags":["User"],"operationId":"usersDeleteSpeedDial8","summary":"Delete speed dial 8","description":"Remove speed dial 8 by ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."},{"name":"dial_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"},"description":"The unique ID of the speed dial."}],"responses":{"204":{"description":"No Content"},"4XX":{"description":"Error"}}}}}}
```

## List speed dial 100

> List speed dial 100.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/speed_dial_100":{"get":{"tags":["User"],"operationId":"usersListSpeedDial100","summary":"List speed dial 100","description":"List speed dial 100.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"},"code":{"type":"string","minLength":2,"maxLength":2,"description":"The speed dial 100 dialing code.   \nAvailable code range from `00` to `99`.\n"},"phone_number":{"type":"string","description":"The phone number that you want to call.\n"},"description":{"type":"string","maximum":1024,"description":"The description of speed dial.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Add new speed dial 100

> Create new speed dial 100.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/speed_dial_100":{"post":{"tags":["User"],"operationId":"usersAddSpeedDial100","summary":"Add new speed dial 100","description":"Create new speed dial 100.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":2,"maxLength":2,"description":"The speed dial 100 dialing code.   \nAvailable code range from `00` to `99`.\n"},"phone_number":{"type":"string","description":"The phone number that you want to call.\n"},"description":{"type":"string","maximum":1024,"description":"The description of speed dial.\n"}},"required":["code","phone_number"]}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve details of speed dial 100

> Retrieve details of speed dial 100 by it's ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/speed_dial_100/{dial_id}":{"get":{"tags":["User"],"operationId":"usersRetrieveSpeedDial100","summary":"Retrieve details of speed dial 100","description":"Retrieve details of speed dial 100 by it's ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."},{"name":"dial_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"},"description":"The unique ID of the speed dial."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"},"code":{"type":"string","minLength":2,"maxLength":2,"description":"The speed dial 100 dialing code.   \nAvailable code range from `00` to `99`.\n"},"phone_number":{"type":"string","description":"The phone number that you want to call.\n"},"description":{"type":"string","maximum":1024,"description":"The description of speed dial.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update speed dial 100

> Update speed dial 100.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/speed_dial_100/{dial_id}":{"post":{"tags":["User"],"operationId":"usersUpdateSpeedDial100","summary":"Update speed dial 100","description":"Update speed dial 100.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."},{"name":"dial_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"},"description":"The unique ID of the speed dial."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","minLength":2,"maxLength":2,"description":"The speed dial 100 dialing code.   \nAvailable code range from `00` to `99`.\n"},"phone_number":{"type":"string","description":"The phone number that you want to call.\n"},"description":{"type":"string","maximum":1024,"description":"The description of speed dial.\n"}}}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Delete speed dial 100

> Remove speed dial 100 by ID.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/users/{id}/speed_dial_100/{dial_id}/destroy":{"post":{"tags":["User"],"operationId":"usersDeleteSpeedDial100","summary":"Delete speed dial 100","description":"Remove speed dial 100 by ID.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"description":"The unique ID of the user."},{"name":"dial_id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of speed dial.\n"},"description":"The unique ID of the speed dial."}],"responses":{"204":{"description":"No Content"},"4XX":{"description":"Error"}}}}}}
```

## List user groups

> Get a collection of user groups.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/groups":{"get":{"tags":["User"],"operationId":"listUserGroups","summary":"List user groups","description":"Get a collection of user groups.\n","parameters":[{"name":"filter","in":"query","schema":{"type":"string"},"description":"Use the `filter` query parameter to retrieve just a subset of a collection.\n"},{"name":"search","in":"query","schema":{"type":"string"},"description":"Use the `search` query parameter to restrict the results of a request to match a search criterion.\n"},{"name":"orderby","in":"query","schema":{"type":"string"},"description":"Use the `orderby` query parameter to specify the sort order of the items returned from server.  \nThe default order is ascending order.\n"},{"name":"skip","in":"query","schema":{"type":"integer","format":"int32","minimum":0,"default":0},"description":"Use the `skip` query parameter to set the number of items to skip at the start of a collection.\n"},{"name":"top","in":"query","schema":{"type":"integer","format":"int32","minimum":1,"maximum":100,"default":100},"description":"Use the `top` query parameter to specify the page size of the result set.\n"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","format":"int64","minimum":0,"description":"Total number of resource.\n"},"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user group.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of user group.\n"},"description":{"type":"string","maxLength":1024,"description":"The description of user group.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Create an user group

> Create a new user group.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/groups":{"post":{"tags":["User"],"operationId":"createUserGroup","summary":"Create an user group","description":"Create a new user group.\n","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of user group.\n"},"outbound_caller_ids":{"type":"array","items":{"type":"object","properties":{"provider_id":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of trunk.\n"}],"description":"The unique ID of trunk.\n"},"caller_id":{"allOf":[{"type":"string","minLength":1,"maxLength":64,"description":"Outbound caller id.\n"}],"description":"The caller ID.\n"},"description":{"type":"string","maxLength":1024,"description":"The descriptive information about this outbound caller id.\n"}}},"description":"A collection of outbound caller IDs.\n"},"description":{"type":"string","maxLength":1024,"description":"The description of user group.\n"}}}}}},"responses":{"201":{"description":"Created user group","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user group.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Retrieve an user group

> Retrieves the properties of an user group.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/groups/{id}":{"get":{"tags":["User"],"operationId":"showUserGroup","summary":"Retrieve an user group","description":"Retrieves the properties of an user group.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user group.\n"},"description":"The unique ID of the user group."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user group.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of user group.\n"},"outbound_caller_ids":{"type":"array","items":{"type":"object","properties":{"provider_id":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of trunk.\n"}],"description":"The unique ID of trunk.\n"},"caller_id":{"allOf":[{"type":"string","minLength":1,"maxLength":64,"description":"Outbound caller id.\n"}],"description":"The caller ID.\n"},"description":{"type":"string","maxLength":1024,"description":"The descriptive information about this outbound caller id.\n"}}},"description":"A collection of outbound caller IDs.\n"},"description":{"type":"string","maxLength":1024,"description":"The description of user group.\n"}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Update an user group.

> Update an user group<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/groups/{id}":{"post":{"tags":["User"],"operationId":"updateUserGroup","summary":"Update an user group.","description":"Update an user group\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user group.\n"},"description":"The unique ID of the user group."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"description":"The name of user group.\n"},"outbound_caller_ids":{"type":"array","items":{"type":"object","properties":{"provider_id":{"allOf":[{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of trunk.\n"}],"description":"The unique ID of trunk.\n"},"caller_id":{"allOf":[{"type":"string","minLength":1,"maxLength":64,"description":"Outbound caller id.\n"}],"description":"The caller ID.\n"},"description":{"type":"string","maxLength":1024,"description":"The descriptive information about this outbound caller id.\n"}}},"description":"A collection of outbound caller IDs.\n"},"description":{"type":"string","maxLength":1024,"description":"The description of user group.\n"}}}}}},"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Delete an user group

> Delete a certain user group.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/groups/{id}/destroy":{"post":{"tags":["User"],"operationId":"deleteUserGroup","summary":"Delete an user group","description":"Delete a certain user group.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user group.\n"},"description":"The unique ID of the user group."}],"responses":{"204":{"description":"No Content"},"400":{"description":"Invalid user number supplied"},"404":{"description":"User not found"}}}}}}
```

## List user group members

> Retrieve a collection of user group members.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/groups/{id}/members":{"get":{"tags":["User"],"operationId":"listUserGroupMembers","summary":"List user group members","description":"Retrieve a collection of user group members.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user group.\n"},"description":"The unique ID of the user group."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The user's account name.   \nOnly letters, numbers, and the following special characters can be added: underscore, dash, single quote, and period (_, -, ', and .).   \nUsername cannot start or end with period (.).   \n`admin`, `system`, `administrator`, and `root` are reserved names for system admin only with case ignored.\n"},"display_name":{"type":"string","maxLength":1024,"description":"The display name of user.\n"},"extension_number":{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"}}}}}}}}},"4XX":{"description":"Error"}}}}}}
```

## Check user group member

> Check if extension is in user group.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/groups/{id}/members/{extension_number}":{"get":{"tags":["User"],"operationId":"getUserGroupMember","summary":"Check user group member","description":"Check if extension is in user group.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user group.\n"},"description":"The unique ID of the user group.\n"},{"name":"extension_number","in":"path","required":true,"schema":{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"},"description":"The extension number of the member.\n"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user.\n"},"name":{"type":"string","minLength":1,"maxLength":64,"description":"The user's account name.   \nOnly letters, numbers, and the following special characters can be added: underscore, dash, single quote, and period (_, -, ', and .).   \nUsername cannot start or end with period (.).   \n`admin`, `system`, `administrator`, and `root` are reserved names for system admin only with case ignored.\n"},"display_name":{"type":"string","maxLength":1024,"description":"The display name of user.\n"},"extension_number":{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"}}}}}},"404":{"description":"Not Found"}}}}}}
```

## Add user group member

> Add user member into group.<br>

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/groups/{id}/members/{extension_number}":{"post":{"tags":["User"],"operationId":"createUserGroupMember","summary":"Add user group member","description":"Add user member into group.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user group.\n"},"description":"The unique ID of the user group."},{"name":"extension_number","in":"path","required":true,"schema":{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"},"description":"The extension number of the member."}],"responses":{"200":{"description":"OK"},"4XX":{"description":"Error"}}}}}}
```

## Delete group member

> Delete an user group member.

```json
{"openapi":"3.1.0","info":{"title":"PortSIP PBX Rest API","version":"22.0"},"tags":[{"name":"User","description":"Manage extension users.\n"}],"servers":[{"url":"{protocol}://{hostname}:{port}/api","variables":{"protocol":{"description":"Self-hosted Enterprise Server protocol.","default":"https"},"hostname":{"description":"Self-hosted Enterprise Server hostname.","default":"HOSTNAME"},"port":{"description":"Self-hosted Enterprise Server port.","default":"8887"}}}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/groups/{id}/members/{extension_number}/destroy":{"post":{"tags":["User"],"operationId":"deleteUserGroupMember","summary":"Delete group member","description":"Delete an user group member.","parameters":[{"name":"id","in":"path","required":true,"schema":{"allOf":[{"type":"string","description":"The unique ID of the resource.\n"}],"description":"The unique ID of user group.\n"},"description":"The unique ID of the group."},{"name":"extension_number","in":"path","required":true,"schema":{"type":"string","minLength":3,"maxLength":64,"pattern":"[0-9]{3,64}","description":"The extension number.\n"},"description":"The extension number of the group member."}],"responses":{"204":{"description":"No Content"},"4XX":{"description":"Error"}}}}}}
```
