From 73bed724d96482bf47cab0623e076fa76f832c79 Mon Sep 17 00:00:00 2001 From: ruslanlazin Date: Fri, 28 Feb 2025 09:46:53 +0000 Subject: [PATCH 1/2] test API changes --- README.md | 4 +- docs/AgentStatus.md | 1 + docs/CallsApi.md | 118 +++++++++++++ docs/DeviceDepartment.md | 1 + docs/PhoneNumber.md | 2 +- docs/PhoneNumbersApi.md | 4 +- docs/PhonesApi.md | 72 ++++---- gradle/wrapper/gradle-wrapper.jar | Bin 56177 -> 55740 bytes liveagent_api/api/calls_api.py | 205 ++++++++++++++++++++++ liveagent_api/api/phone_numbers_api.py | 4 +- liveagent_api/api/phones_api.py | 160 +++++++++-------- liveagent_api/models/agent_status.py | 32 +++- liveagent_api/models/device_department.py | 32 +++- liveagent_api/models/phone_number.py | 6 +- test/test_calls_api.py | 14 ++ test/test_phones_api.py | 14 +- 16 files changed, 536 insertions(+), 133 deletions(-) diff --git a/README.md b/README.md index 14cf2ce..ad8a10d 100644 --- a/README.md +++ b/README.md @@ -114,6 +114,7 @@ Class | Method | HTTP request | Description *BansApi* | [**get_ban**](docs/BansApi.md#get_ban) | **GET** /bans/{banId} | Get ban item *BansApi* | [**get_bans**](docs/BansApi.md#get_bans) | **GET** /bans | Bans list *BansApi* | [**update_ban**](docs/BansApi.md#update_ban) | **PUT** /bans/{banId} | Update ban +*CallsApi* | [**blind_call_transfer**](docs/CallsApi.md#blind_call_transfer) | **POST** /calls/{callId}/_blind_transfer | Transfers call to different department / agent *CallsApi* | [**call_add_message**](docs/CallsApi.md#call_add_message) | **POST** /calls/{callId}/messages | Adds a message to the call group in corresponding ticket *CallsApi* | [**call_add_recording**](docs/CallsApi.md#call_add_recording) | **POST** /calls/{callId}/recordings | Adds a recording to the call group in corresponding ticket *CallsApi* | [**call_answer**](docs/CallsApi.md#call_answer) | **POST** /calls/{callId}/_answer | Set call as answered by agent @@ -121,6 +122,7 @@ Class | Method | HTTP request | Description *CallsApi* | [**call_create**](docs/CallsApi.md#call_create) | **POST** /calls/{callId} | Create new call *CallsApi* | [**call_fetch_ivr**](docs/CallsApi.md#call_fetch_ivr) | **POST** /calls/{callId}/_fetchIvr | Fetches IVR for the call from external URL *CallsApi* | [**call_get_status**](docs/CallsApi.md#call_get_status) | **GET** /calls/{callId}/status | Return the status of call +*CallsApi* | [**call_get_transfer_status**](docs/CallsApi.md#call_get_transfer_status) | **GET** /calls/{callId}/transfer_status | Return the status of call *CallsApi* | [**call_id**](docs/CallsApi.md#call_id) | **GET** /calls/channels/{channelId}/call_id | Return the call ID *CallsApi* | [**call_move_channel**](docs/CallsApi.md#call_move_channel) | **POST** /calls/{callId}/channels/{channelId}/_move | Moves existing channel to target call *CallsApi* | [**call_pickup**](docs/CallsApi.md#call_pickup) | **POST** /calls/_pickup | Pick up call from queue @@ -251,9 +253,9 @@ Class | Method | HTTP request | Description *PhonesApi* | [**get_phone**](docs/PhonesApi.md#get_phone) | **GET** /phones/{phoneId} | Gets phone device (use _app_ for LiveAgent Phone app device and _web_ for web device) *PhonesApi* | [**get_phones_list**](docs/PhonesApi.md#get_phones_list) | **GET** /phones | Gets list of available phone devices. Special filters (userId - filter phones available for specified user only) *PhonesApi* | [**remove_phone**](docs/PhonesApi.md#remove_phone) | **DELETE** /phones/{phoneId} | Remove phone +*PhonesApi* | [**update_browser_registration**](docs/PhonesApi.md#update_browser_registration) | **PUT** /phones/{phoneId}/_updateBrowserRegistration | Update browser registration status *PhonesApi* | [**update_phone**](docs/PhonesApi.md#update_phone) | **PUT** /phones/{phoneId} | Update phone *PhonesApi* | [**update_phone_params**](docs/PhonesApi.md#update_phone_params) | **PUT** /phones/{phoneId}/_updateParams | Update phone params -*PhonesApi* | [**update_reg_status**](docs/PhonesApi.md#update_reg_status) | **PUT** /phones/{phoneId}/_updateRegStatus | Update registration status *PingApi* | [**ping**](docs/PingApi.md#ping) | **GET** /ping | Check that API is responding *PredefinedAnswersApi* | [**create_predefined_answer**](docs/PredefinedAnswersApi.md#create_predefined_answer) | **POST** /predefined_answers | Create predefined answer *PredefinedAnswersApi* | [**delete_predefined_answer**](docs/PredefinedAnswersApi.md#delete_predefined_answer) | **DELETE** /predefined_answers/{predefinedAnswerId} | Predefined answer diff --git a/docs/AgentStatus.md b/docs/AgentStatus.md index bb69ba5..4807f57 100644 --- a/docs/AgentStatus.md +++ b/docs/AgentStatus.md @@ -6,6 +6,7 @@ Name | Type | Description | Notes **departmentid** | **str** | | [optional] **online_status** | **str** | R - read<br> M - message<br> T - chat<br> P - phone | [optional] **preset_status** | **str** | R - read<br> M - message<br> T - chat<br> P - phone | [optional] +**work_allocation_allowed** | **bool** | | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/CallsApi.md b/docs/CallsApi.md index d7f8457..710e00c 100644 --- a/docs/CallsApi.md +++ b/docs/CallsApi.md @@ -4,6 +4,7 @@ All URIs are relative to *https://localhost/api/v3* Method | HTTP request | Description ------------- | ------------- | ------------- +[**blind_call_transfer**](CallsApi.md#blind_call_transfer) | **POST** /calls/{callId}/_blind_transfer | Transfers call to different department / agent [**call_add_message**](CallsApi.md#call_add_message) | **POST** /calls/{callId}/messages | Adds a message to the call group in corresponding ticket [**call_add_recording**](CallsApi.md#call_add_recording) | **POST** /calls/{callId}/recordings | Adds a recording to the call group in corresponding ticket [**call_answer**](CallsApi.md#call_answer) | **POST** /calls/{callId}/_answer | Set call as answered by agent @@ -11,6 +12,7 @@ Method | HTTP request | Description [**call_create**](CallsApi.md#call_create) | **POST** /calls/{callId} | Create new call [**call_fetch_ivr**](CallsApi.md#call_fetch_ivr) | **POST** /calls/{callId}/_fetchIvr | Fetches IVR for the call from external URL [**call_get_status**](CallsApi.md#call_get_status) | **GET** /calls/{callId}/status | Return the status of call +[**call_get_transfer_status**](CallsApi.md#call_get_transfer_status) | **GET** /calls/{callId}/transfer_status | Return the status of call [**call_id**](CallsApi.md#call_id) | **GET** /calls/channels/{channelId}/call_id | Return the call ID [**call_move_channel**](CallsApi.md#call_move_channel) | **POST** /calls/{callId}/channels/{channelId}/_move | Moves existing channel to target call [**call_pickup**](CallsApi.md#call_pickup) | **POST** /calls/_pickup | Pick up call from queue @@ -35,6 +37,65 @@ Method | HTTP request | Description [**unmute_channel**](CallsApi.md#unmute_channel) | **POST** /calls/{callId}/channels/{channelId}/_unmute | Unmute channel +# **blind_call_transfer** +> CallTransferResult blind_call_transfer(call_id, to=to) + +Transfers call to different department / agent + +Blind transfer can be called on active calls to transfer them to another department / agent + +### Example +```python +from __future__ import print_function +import time +import liveagent_api +from liveagent_api.rest import ApiException +from pprint import pprint + +# Configure API key authorization: apikey +configuration = liveagent_api.Configuration() +configuration.api_key['apikey'] = 'YOUR_API_KEY' +# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed +# configuration.api_key_prefix['apikey'] = 'Bearer' +# Configure OAuth2 access token for authorization: privileges +configuration = liveagent_api.Configuration() +configuration.access_token = 'YOUR_ACCESS_TOKEN' + +# create an instance of the API class +api_instance = liveagent_api.CallsApi(liveagent_api.ApiClient(configuration)) +call_id = 'call_id_example' # str | +to = 'to_example' # str | Pnone device or extension number (optional) + +try: + # Transfers call to different department / agent + api_response = api_instance.blind_call_transfer(call_id, to=to) + pprint(api_response) +except ApiException as e: + print("Exception when calling CallsApi->blind_call_transfer: %s\n" % e) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **call_id** | **str**| | + **to** | **str**| Pnone device or extension number | [optional] + +### Return type + +[**CallTransferResult**](CallTransferResult.md) + +### Authorization + +[apikey](../README.md#apikey), [privileges](../README.md#privileges) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **call_add_message** > OkResponse call_add_message(call_id, body=body) @@ -452,6 +513,63 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **call_get_transfer_status** +> CallStatus call_get_transfer_status(call_id, unreachable_agents=unreachable_agents) + +Return the status of call + +### Example +```python +from __future__ import print_function +import time +import liveagent_api +from liveagent_api.rest import ApiException +from pprint import pprint + +# Configure API key authorization: apikey +configuration = liveagent_api.Configuration() +configuration.api_key['apikey'] = 'YOUR_API_KEY' +# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed +# configuration.api_key_prefix['apikey'] = 'Bearer' +# Configure OAuth2 access token for authorization: privileges +configuration = liveagent_api.Configuration() +configuration.access_token = 'YOUR_ACCESS_TOKEN' + +# create an instance of the API class +api_instance = liveagent_api.CallsApi(liveagent_api.ApiClient(configuration)) +call_id = 'call_id_example' # str | +unreachable_agents = ['unreachable_agents_example'] # list[str] | Identifiers of unreachable agents that should be excluded from routing (optional) + +try: + # Return the status of call + api_response = api_instance.call_get_transfer_status(call_id, unreachable_agents=unreachable_agents) + pprint(api_response) +except ApiException as e: + print("Exception when calling CallsApi->call_get_transfer_status: %s\n" % e) +``` + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **call_id** | **str**| | + **unreachable_agents** | [**list[str]**](str.md)| Identifiers of unreachable agents that should be excluded from routing | [optional] + +### Return type + +[**CallStatus**](CallStatus.md) + +### Authorization + +[apikey](../README.md#apikey), [privileges](../README.md#privileges) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + # **call_id** > CallId call_id(channel_id) diff --git a/docs/DeviceDepartment.md b/docs/DeviceDepartment.md index 31da7ff..54186d3 100644 --- a/docs/DeviceDepartment.md +++ b/docs/DeviceDepartment.md @@ -9,6 +9,7 @@ Name | Type | Description | Notes **department_name** | **str** | | [optional] **online_status** | **str** | | [optional] **preset_status** | **str** | | [optional] +**work_allocation_allowed** | **bool** | | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/PhoneNumber.md b/docs/PhoneNumber.md index c7217b4..84041e2 100644 --- a/docs/PhoneNumber.md +++ b/docs/PhoneNumber.md @@ -4,7 +4,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **id** | **str** | | -**type** | **str** | A - API controlled number, T - Twilio number, T-O - Twilio outgoing number, D - Digitale, S - Asterisk | [optional] +**type** | **str** | A - API controlled number, T - Twilio number, T-O - Twilio outgoing number, S - Asterisk | [optional] **dial_out_prefix** | **int** | Prefix needed to originate call using this number | [optional] **dial_out_prefix_formatted** | **str** | Dial out prefix in 2 or 3 digits string format according to application settings | [optional] **record_in_call** | **bool** | | [optional] diff --git a/docs/PhoneNumbersApi.md b/docs/PhoneNumbersApi.md index 4d1802e..ecc4981 100644 --- a/docs/PhoneNumbersApi.md +++ b/docs/PhoneNumbersApi.md @@ -37,7 +37,7 @@ configuration.access_token = 'YOUR_ACCESS_TOKEN' # create an instance of the API class api_instance = liveagent_api.PhoneNumbersApi(liveagent_api.ApiClient(configuration)) -type = 'type_example' # str | A - API controlled number, T - Twilio number, T-O - Twilio outgoing number, D - Digitale, S - Asterisk +type = 'type_example' # str | A - API controlled number, T - Twilio number, T-O - Twilio outgoing number, S - Asterisk number = 'number_example' # str | status = 'status_example' # str | A - Active, I - Inactive dial_out_prefix = 56 # int | Prefix needed to originate call using this number (optional) @@ -69,7 +69,7 @@ except ApiException as e: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **type** | **str**| A - API controlled number, T - Twilio number, T-O - Twilio outgoing number, D - Digitale, S - Asterisk | + **type** | **str**| A - API controlled number, T - Twilio number, T-O - Twilio outgoing number, S - Asterisk | **number** | **str**| | **status** | **str**| A - Active, I - Inactive | **dial_out_prefix** | **int**| Prefix needed to originate call using this number | [optional] diff --git a/docs/PhonesApi.md b/docs/PhonesApi.md index 186e323..f49111e 100644 --- a/docs/PhonesApi.md +++ b/docs/PhonesApi.md @@ -8,9 +8,9 @@ Method | HTTP request | Description [**get_phone**](PhonesApi.md#get_phone) | **GET** /phones/{phoneId} | Gets phone device (use _app_ for LiveAgent Phone app device and _web_ for web device) [**get_phones_list**](PhonesApi.md#get_phones_list) | **GET** /phones | Gets list of available phone devices. Special filters (userId - filter phones available for specified user only) [**remove_phone**](PhonesApi.md#remove_phone) | **DELETE** /phones/{phoneId} | Remove phone +[**update_browser_registration**](PhonesApi.md#update_browser_registration) | **PUT** /phones/{phoneId}/_updateBrowserRegistration | Update browser registration status [**update_phone**](PhonesApi.md#update_phone) | **PUT** /phones/{phoneId} | Update phone [**update_phone_params**](PhonesApi.md#update_phone_params) | **PUT** /phones/{phoneId}/_updateParams | Update phone params -[**update_reg_status**](PhonesApi.md#update_reg_status) | **PUT** /phones/{phoneId}/_updateRegStatus | Update registration status # **create_phone** @@ -38,7 +38,7 @@ configuration.access_token = 'YOUR_ACCESS_TOKEN' # create an instance of the API class api_instance = liveagent_api.PhonesApi(liveagent_api.ApiClient(configuration)) number = 'number_example' # str | -type = 'S' # str | S - SIP phone, E - PSTN phone, R - SIP provider extension (optional) (default to S) +type = 'S' # str | S - SIP phone, E - PSTN phone, R - SIP provider extension, I - API phone (optional) (default to S) name = 'name_example' # str | (optional) trunk_id = 8.14 # float | (optional) agent_id = 'agent_id_example' # str | (optional) @@ -57,7 +57,7 @@ except ApiException as e: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **number** | **str**| | - **type** | **str**| S - SIP phone, E - PSTN phone, R - SIP provider extension | [optional] [default to S] + **type** | **str**| S - SIP phone, E - PSTN phone, R - SIP provider extension, I - API phone | [optional] [default to S] **name** | **str**| | [optional] **trunk_id** | **float**| | [optional] **agent_id** | **str**| | [optional] @@ -255,10 +255,10 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **update_phone** -> PhoneDevice update_phone(phone_id, number=number, name=name, trunk_id=trunk_id, pass_original_caller_id=pass_original_caller_id) +# **update_browser_registration** +> OkResponse update_browser_registration(phone_id, reg_status, user_agent) -Update phone +Update browser registration status ### Example ```python @@ -280,17 +280,15 @@ configuration.access_token = 'YOUR_ACCESS_TOKEN' # create an instance of the API class api_instance = liveagent_api.PhonesApi(liveagent_api.ApiClient(configuration)) phone_id = 'phone_id_example' # str | -number = 'number_example' # str | (optional) -name = 'name_example' # str | (optional) -trunk_id = 56 # int | (optional) -pass_original_caller_id = 'pass_original_caller_id_example' # str | (optional) +reg_status = 'reg_status_example' # str | F - Phone is not registered (offline). N - Phone is registered (online). +user_agent = 'user_agent_example' # str | try: - # Update phone - api_response = api_instance.update_phone(phone_id, number=number, name=name, trunk_id=trunk_id, pass_original_caller_id=pass_original_caller_id) + # Update browser registration status + api_response = api_instance.update_browser_registration(phone_id, reg_status, user_agent) pprint(api_response) except ApiException as e: - print("Exception when calling PhonesApi->update_phone: %s\n" % e) + print("Exception when calling PhonesApi->update_browser_registration: %s\n" % e) ``` ### Parameters @@ -298,14 +296,12 @@ except ApiException as e: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **phone_id** | **str**| | - **number** | **str**| | [optional] - **name** | **str**| | [optional] - **trunk_id** | **int**| | [optional] - **pass_original_caller_id** | **str**| | [optional] + **reg_status** | **str**| F - Phone is not registered (offline). N - Phone is registered (online). | + **user_agent** | **str**| | ### Return type -[**PhoneDevice**](PhoneDevice.md) +[**OkResponse**](OkResponse.md) ### Authorization @@ -318,10 +314,10 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **update_phone_params** -> OkResponse update_phone_params(phone_id, params) +# **update_phone** +> PhoneDevice update_phone(phone_id, number=number, name=name, trunk_id=trunk_id, pass_original_caller_id=pass_original_caller_id) -Update phone params +Update phone ### Example ```python @@ -343,14 +339,17 @@ configuration.access_token = 'YOUR_ACCESS_TOKEN' # create an instance of the API class api_instance = liveagent_api.PhonesApi(liveagent_api.ApiClient(configuration)) phone_id = 'phone_id_example' # str | -params = 'params_example' # str | New params +number = 'number_example' # str | (optional) +name = 'name_example' # str | (optional) +trunk_id = 56 # int | (optional) +pass_original_caller_id = 'pass_original_caller_id_example' # str | (optional) try: - # Update phone params - api_response = api_instance.update_phone_params(phone_id, params) + # Update phone + api_response = api_instance.update_phone(phone_id, number=number, name=name, trunk_id=trunk_id, pass_original_caller_id=pass_original_caller_id) pprint(api_response) except ApiException as e: - print("Exception when calling PhonesApi->update_phone_params: %s\n" % e) + print("Exception when calling PhonesApi->update_phone: %s\n" % e) ``` ### Parameters @@ -358,11 +357,14 @@ except ApiException as e: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **phone_id** | **str**| | - **params** | **str**| New params | + **number** | **str**| | [optional] + **name** | **str**| | [optional] + **trunk_id** | **int**| | [optional] + **pass_original_caller_id** | **str**| | [optional] ### Return type -[**OkResponse**](OkResponse.md) +[**PhoneDevice**](PhoneDevice.md) ### Authorization @@ -375,10 +377,10 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **update_reg_status** -> OkResponse update_reg_status(phone_id, reg_status) +# **update_phone_params** +> OkResponse update_phone_params(phone_id, params) -Update registration status +Update phone params ### Example ```python @@ -400,14 +402,14 @@ configuration.access_token = 'YOUR_ACCESS_TOKEN' # create an instance of the API class api_instance = liveagent_api.PhonesApi(liveagent_api.ApiClient(configuration)) phone_id = 'phone_id_example' # str | -reg_status = 'reg_status_example' # str | F - Phone is not registered (offline). N - Phone is registered (online). +params = 'params_example' # str | New params try: - # Update registration status - api_response = api_instance.update_reg_status(phone_id, reg_status) + # Update phone params + api_response = api_instance.update_phone_params(phone_id, params) pprint(api_response) except ApiException as e: - print("Exception when calling PhonesApi->update_reg_status: %s\n" % e) + print("Exception when calling PhonesApi->update_phone_params: %s\n" % e) ``` ### Parameters @@ -415,7 +417,7 @@ except ApiException as e: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **phone_id** | **str**| | - **reg_status** | **str**| F - Phone is not registered (offline). N - Phone is registered (online). | + **params** | **str**| New params | ### Return type diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 29953ea141f55e3b8fc691d31b5ca8816d89fa87..2b75fe403ab55de3adb5760ec7987e6c6b3c8a6c 100644 GIT binary patch delta 46475 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 diff --git a/liveagent_api/api/calls_api.py b/liveagent_api/api/calls_api.py index 2cdfffa..acbfe9e 100644 --- a/liveagent_api/api/calls_api.py +++ b/liveagent_api/api/calls_api.py @@ -33,6 +33,109 @@ def __init__(self, api_client=None): api_client = ApiClient() self.api_client = api_client + def blind_call_transfer(self, call_id, **kwargs): # noqa: E501 + """Transfers call to different department / agent # noqa: E501 + + Blind transfer can be called on active calls to transfer them to another department / agent # noqa: E501 + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.blind_call_transfer(call_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str call_id: (required) + :param str to: Pnone device or extension number + :return: CallTransferResult + If the method is called asynchronously, + returns the request thread. + """ + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.blind_call_transfer_with_http_info(call_id, **kwargs) # noqa: E501 + else: + (data) = self.blind_call_transfer_with_http_info(call_id, **kwargs) # noqa: E501 + return data + + def blind_call_transfer_with_http_info(self, call_id, **kwargs): # noqa: E501 + """Transfers call to different department / agent # noqa: E501 + + Blind transfer can be called on active calls to transfer them to another department / agent # noqa: E501 + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.blind_call_transfer_with_http_info(call_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str call_id: (required) + :param str to: Pnone device or extension number + :return: CallTransferResult + If the method is called asynchronously, + returns the request thread. + """ + + all_params = ['call_id', 'to'] # noqa: E501 + all_params.append('async_req') + all_params.append('_return_http_data_only') + all_params.append('_preload_content') + all_params.append('_request_timeout') + + params = locals() + for key, val in six.iteritems(params['kwargs']): + if key not in all_params: + raise TypeError( + "Got an unexpected keyword argument '%s'" + " to method blind_call_transfer" % key + ) + params[key] = val + del params['kwargs'] + # verify the required parameter 'call_id' is set + if self.api_client.client_side_validation and ('call_id' not in params or + params['call_id'] is None): # noqa: E501 + raise ValueError("Missing the required parameter `call_id` when calling `blind_call_transfer`") # noqa: E501 + + collection_formats = {} + + path_params = {} + if 'call_id' in params: + path_params['callId'] = params['call_id'] # noqa: E501 + + query_params = [] + if 'to' in params: + query_params.append(('to', params['to'])) # noqa: E501 + + header_params = {} + + form_params = [] + local_var_files = {} + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + # Authentication setting + auth_settings = ['apikey', 'privileges'] # noqa: E501 + + return self.api_client.call_api( + '/calls/{callId}/_blind_transfer', 'POST', + path_params, + query_params, + header_params, + body=body_params, + post_params=form_params, + files=local_var_files, + response_type='CallTransferResult', # noqa: E501 + auth_settings=auth_settings, + async_req=params.get('async_req'), + _return_http_data_only=params.get('_return_http_data_only'), + _preload_content=params.get('_preload_content', True), + _request_timeout=params.get('_request_timeout'), + collection_formats=collection_formats) + def call_add_message(self, call_id, **kwargs): # noqa: E501 """Adds a message to the call group in corresponding ticket # noqa: E501 @@ -799,6 +902,108 @@ def call_get_status_with_http_info(self, call_id, **kwargs): # noqa: E501 _request_timeout=params.get('_request_timeout'), collection_formats=collection_formats) + def call_get_transfer_status(self, call_id, **kwargs): # noqa: E501 + """Return the status of call # noqa: E501 + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.call_get_transfer_status(call_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str call_id: (required) + :param list[str] unreachable_agents: Identifiers of unreachable agents that should be excluded from routing + :return: CallStatus + If the method is called asynchronously, + returns the request thread. + """ + kwargs['_return_http_data_only'] = True + if kwargs.get('async_req'): + return self.call_get_transfer_status_with_http_info(call_id, **kwargs) # noqa: E501 + else: + (data) = self.call_get_transfer_status_with_http_info(call_id, **kwargs) # noqa: E501 + return data + + def call_get_transfer_status_with_http_info(self, call_id, **kwargs): # noqa: E501 + """Return the status of call # noqa: E501 + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + >>> thread = api.call_get_transfer_status_with_http_info(call_id, async_req=True) + >>> result = thread.get() + + :param async_req bool + :param str call_id: (required) + :param list[str] unreachable_agents: Identifiers of unreachable agents that should be excluded from routing + :return: CallStatus + If the method is called asynchronously, + returns the request thread. + """ + + all_params = ['call_id', 'unreachable_agents'] # noqa: E501 + all_params.append('async_req') + all_params.append('_return_http_data_only') + all_params.append('_preload_content') + all_params.append('_request_timeout') + + params = locals() + for key, val in six.iteritems(params['kwargs']): + if key not in all_params: + raise TypeError( + "Got an unexpected keyword argument '%s'" + " to method call_get_transfer_status" % key + ) + params[key] = val + del params['kwargs'] + # verify the required parameter 'call_id' is set + if self.api_client.client_side_validation and ('call_id' not in params or + params['call_id'] is None): # noqa: E501 + raise ValueError("Missing the required parameter `call_id` when calling `call_get_transfer_status`") # noqa: E501 + + collection_formats = {} + + path_params = {} + if 'call_id' in params: + path_params['callId'] = params['call_id'] # noqa: E501 + + query_params = [] + if 'unreachable_agents' in params: + query_params.append(('unreachableAgents', params['unreachable_agents'])) # noqa: E501 + collection_formats['unreachableAgents'] = 'csv' # noqa: E501 + + header_params = {} + + form_params = [] + local_var_files = {} + + body_params = None + # HTTP header `Accept` + header_params['Accept'] = self.api_client.select_header_accept( + ['application/json']) # noqa: E501 + + # HTTP header `Content-Type` + header_params['Content-Type'] = self.api_client.select_header_content_type( # noqa: E501 + ['application/json']) # noqa: E501 + + # Authentication setting + auth_settings = ['apikey', 'privileges'] # noqa: E501 + + return self.api_client.call_api( + '/calls/{callId}/transfer_status', 'GET', + path_params, + query_params, + header_params, + body=body_params, + post_params=form_params, + files=local_var_files, + response_type='CallStatus', # noqa: E501 + auth_settings=auth_settings, + async_req=params.get('async_req'), + _return_http_data_only=params.get('_return_http_data_only'), + _preload_content=params.get('_preload_content', True), + _request_timeout=params.get('_request_timeout'), + collection_formats=collection_formats) + def call_id(self, channel_id, **kwargs): # noqa: E501 """Return the call ID # noqa: E501 diff --git a/liveagent_api/api/phone_numbers_api.py b/liveagent_api/api/phone_numbers_api.py index 4692fab..21cf719 100644 --- a/liveagent_api/api/phone_numbers_api.py +++ b/liveagent_api/api/phone_numbers_api.py @@ -42,7 +42,7 @@ def add_number(self, type, number, status, **kwargs): # noqa: E501 >>> result = thread.get() :param async_req bool - :param str type: A - API controlled number, T - Twilio number, T-O - Twilio outgoing number, D - Digitale, S - Asterisk (required) + :param str type: A - API controlled number, T - Twilio number, T-O - Twilio outgoing number, S - Asterisk (required) :param str number: (required) :param str status: A - Active, I - Inactive (required) :param int dial_out_prefix: Prefix needed to originate call using this number @@ -81,7 +81,7 @@ def add_number_with_http_info(self, type, number, status, **kwargs): # noqa: E5 >>> result = thread.get() :param async_req bool - :param str type: A - API controlled number, T - Twilio number, T-O - Twilio outgoing number, D - Digitale, S - Asterisk (required) + :param str type: A - API controlled number, T - Twilio number, T-O - Twilio outgoing number, S - Asterisk (required) :param str number: (required) :param str status: A - Active, I - Inactive (required) :param int dial_out_prefix: Prefix needed to originate call using this number diff --git a/liveagent_api/api/phones_api.py b/liveagent_api/api/phones_api.py index 9f4bf41..801213f 100644 --- a/liveagent_api/api/phones_api.py +++ b/liveagent_api/api/phones_api.py @@ -43,7 +43,7 @@ def create_phone(self, number, **kwargs): # noqa: E501 :param async_req bool :param str number: (required) - :param str type: S - SIP phone, E - PSTN phone, R - SIP provider extension + :param str type: S - SIP phone, E - PSTN phone, R - SIP provider extension, I - API phone :param str name: :param float trunk_id: :param str agent_id: @@ -69,7 +69,7 @@ def create_phone_with_http_info(self, number, **kwargs): # noqa: E501 :param async_req bool :param str number: (required) - :param str type: S - SIP phone, E - PSTN phone, R - SIP provider extension + :param str type: S - SIP phone, E - PSTN phone, R - SIP provider extension, I - API phone :param str name: :param float trunk_id: :param str agent_id: @@ -461,51 +461,47 @@ def remove_phone_with_http_info(self, phone_id, **kwargs): # noqa: E501 _request_timeout=params.get('_request_timeout'), collection_formats=collection_formats) - def update_phone(self, phone_id, **kwargs): # noqa: E501 - """Update phone # noqa: E501 + def update_browser_registration(self, phone_id, reg_status, user_agent, **kwargs): # noqa: E501 + """Update browser registration status # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.update_phone(phone_id, async_req=True) + >>> thread = api.update_browser_registration(phone_id, reg_status, user_agent, async_req=True) >>> result = thread.get() :param async_req bool :param str phone_id: (required) - :param str number: - :param str name: - :param int trunk_id: - :param str pass_original_caller_id: - :return: PhoneDevice + :param str reg_status: F - Phone is not registered (offline). N - Phone is registered (online). (required) + :param str user_agent: (required) + :return: OkResponse If the method is called asynchronously, returns the request thread. """ kwargs['_return_http_data_only'] = True if kwargs.get('async_req'): - return self.update_phone_with_http_info(phone_id, **kwargs) # noqa: E501 + return self.update_browser_registration_with_http_info(phone_id, reg_status, user_agent, **kwargs) # noqa: E501 else: - (data) = self.update_phone_with_http_info(phone_id, **kwargs) # noqa: E501 + (data) = self.update_browser_registration_with_http_info(phone_id, reg_status, user_agent, **kwargs) # noqa: E501 return data - def update_phone_with_http_info(self, phone_id, **kwargs): # noqa: E501 - """Update phone # noqa: E501 + def update_browser_registration_with_http_info(self, phone_id, reg_status, user_agent, **kwargs): # noqa: E501 + """Update browser registration status # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.update_phone_with_http_info(phone_id, async_req=True) + >>> thread = api.update_browser_registration_with_http_info(phone_id, reg_status, user_agent, async_req=True) >>> result = thread.get() :param async_req bool :param str phone_id: (required) - :param str number: - :param str name: - :param int trunk_id: - :param str pass_original_caller_id: - :return: PhoneDevice + :param str reg_status: F - Phone is not registered (offline). N - Phone is registered (online). (required) + :param str user_agent: (required) + :return: OkResponse If the method is called asynchronously, returns the request thread. """ - all_params = ['phone_id', 'number', 'name', 'trunk_id', 'pass_original_caller_id'] # noqa: E501 + all_params = ['phone_id', 'reg_status', 'user_agent'] # noqa: E501 all_params.append('async_req') all_params.append('_return_http_data_only') all_params.append('_preload_content') @@ -516,14 +512,22 @@ def update_phone_with_http_info(self, phone_id, **kwargs): # noqa: E501 if key not in all_params: raise TypeError( "Got an unexpected keyword argument '%s'" - " to method update_phone" % key + " to method update_browser_registration" % key ) params[key] = val del params['kwargs'] # verify the required parameter 'phone_id' is set if self.api_client.client_side_validation and ('phone_id' not in params or params['phone_id'] is None): # noqa: E501 - raise ValueError("Missing the required parameter `phone_id` when calling `update_phone`") # noqa: E501 + raise ValueError("Missing the required parameter `phone_id` when calling `update_browser_registration`") # noqa: E501 + # verify the required parameter 'reg_status' is set + if self.api_client.client_side_validation and ('reg_status' not in params or + params['reg_status'] is None): # noqa: E501 + raise ValueError("Missing the required parameter `reg_status` when calling `update_browser_registration`") # noqa: E501 + # verify the required parameter 'user_agent' is set + if self.api_client.client_side_validation and ('user_agent' not in params or + params['user_agent'] is None): # noqa: E501 + raise ValueError("Missing the required parameter `user_agent` when calling `update_browser_registration`") # noqa: E501 collection_formats = {} @@ -532,19 +536,15 @@ def update_phone_with_http_info(self, phone_id, **kwargs): # noqa: E501 path_params['phoneId'] = params['phone_id'] # noqa: E501 query_params = [] + if 'reg_status' in params: + query_params.append(('reg_status', params['reg_status'])) # noqa: E501 + if 'user_agent' in params: + query_params.append(('user_agent', params['user_agent'])) # noqa: E501 header_params = {} form_params = [] local_var_files = {} - if 'number' in params: - form_params.append(('number', params['number'])) # noqa: E501 - if 'name' in params: - form_params.append(('name', params['name'])) # noqa: E501 - if 'trunk_id' in params: - form_params.append(('trunk_id', params['trunk_id'])) # noqa: E501 - if 'pass_original_caller_id' in params: - form_params.append(('pass_original_caller_id', params['pass_original_caller_id'])) # noqa: E501 body_params = None # HTTP header `Accept` @@ -559,14 +559,14 @@ def update_phone_with_http_info(self, phone_id, **kwargs): # noqa: E501 auth_settings = ['apikey', 'privileges'] # noqa: E501 return self.api_client.call_api( - '/phones/{phoneId}', 'PUT', + '/phones/{phoneId}/_updateBrowserRegistration', 'PUT', path_params, query_params, header_params, body=body_params, post_params=form_params, files=local_var_files, - response_type='PhoneDevice', # noqa: E501 + response_type='OkResponse', # noqa: E501 auth_settings=auth_settings, async_req=params.get('async_req'), _return_http_data_only=params.get('_return_http_data_only'), @@ -574,45 +574,51 @@ def update_phone_with_http_info(self, phone_id, **kwargs): # noqa: E501 _request_timeout=params.get('_request_timeout'), collection_formats=collection_formats) - def update_phone_params(self, phone_id, params, **kwargs): # noqa: E501 - """Update phone params # noqa: E501 + def update_phone(self, phone_id, **kwargs): # noqa: E501 + """Update phone # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.update_phone_params(phone_id, params, async_req=True) + >>> thread = api.update_phone(phone_id, async_req=True) >>> result = thread.get() :param async_req bool :param str phone_id: (required) - :param str params: New params (required) - :return: OkResponse + :param str number: + :param str name: + :param int trunk_id: + :param str pass_original_caller_id: + :return: PhoneDevice If the method is called asynchronously, returns the request thread. """ kwargs['_return_http_data_only'] = True if kwargs.get('async_req'): - return self.update_phone_params_with_http_info(phone_id, params, **kwargs) # noqa: E501 + return self.update_phone_with_http_info(phone_id, **kwargs) # noqa: E501 else: - (data) = self.update_phone_params_with_http_info(phone_id, params, **kwargs) # noqa: E501 + (data) = self.update_phone_with_http_info(phone_id, **kwargs) # noqa: E501 return data - def update_phone_params_with_http_info(self, phone_id, params, **kwargs): # noqa: E501 - """Update phone params # noqa: E501 + def update_phone_with_http_info(self, phone_id, **kwargs): # noqa: E501 + """Update phone # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.update_phone_params_with_http_info(phone_id, params, async_req=True) + >>> thread = api.update_phone_with_http_info(phone_id, async_req=True) >>> result = thread.get() :param async_req bool :param str phone_id: (required) - :param str params: New params (required) - :return: OkResponse + :param str number: + :param str name: + :param int trunk_id: + :param str pass_original_caller_id: + :return: PhoneDevice If the method is called asynchronously, returns the request thread. """ - all_params = ['phone_id', 'params'] # noqa: E501 + all_params = ['phone_id', 'number', 'name', 'trunk_id', 'pass_original_caller_id'] # noqa: E501 all_params.append('async_req') all_params.append('_return_http_data_only') all_params.append('_preload_content') @@ -623,18 +629,14 @@ def update_phone_params_with_http_info(self, phone_id, params, **kwargs): # noq if key not in all_params: raise TypeError( "Got an unexpected keyword argument '%s'" - " to method update_phone_params" % key + " to method update_phone" % key ) params[key] = val del params['kwargs'] # verify the required parameter 'phone_id' is set if self.api_client.client_side_validation and ('phone_id' not in params or params['phone_id'] is None): # noqa: E501 - raise ValueError("Missing the required parameter `phone_id` when calling `update_phone_params`") # noqa: E501 - # verify the required parameter 'params' is set - if self.api_client.client_side_validation and ('params' not in params or - params['params'] is None): # noqa: E501 - raise ValueError("Missing the required parameter `params` when calling `update_phone_params`") # noqa: E501 + raise ValueError("Missing the required parameter `phone_id` when calling `update_phone`") # noqa: E501 collection_formats = {} @@ -648,8 +650,14 @@ def update_phone_params_with_http_info(self, phone_id, params, **kwargs): # noq form_params = [] local_var_files = {} - if 'params' in params: - form_params.append(('params', params['params'])) # noqa: E501 + if 'number' in params: + form_params.append(('number', params['number'])) # noqa: E501 + if 'name' in params: + form_params.append(('name', params['name'])) # noqa: E501 + if 'trunk_id' in params: + form_params.append(('trunk_id', params['trunk_id'])) # noqa: E501 + if 'pass_original_caller_id' in params: + form_params.append(('pass_original_caller_id', params['pass_original_caller_id'])) # noqa: E501 body_params = None # HTTP header `Accept` @@ -664,14 +672,14 @@ def update_phone_params_with_http_info(self, phone_id, params, **kwargs): # noq auth_settings = ['apikey', 'privileges'] # noqa: E501 return self.api_client.call_api( - '/phones/{phoneId}/_updateParams', 'PUT', + '/phones/{phoneId}', 'PUT', path_params, query_params, header_params, body=body_params, post_params=form_params, files=local_var_files, - response_type='OkResponse', # noqa: E501 + response_type='PhoneDevice', # noqa: E501 auth_settings=auth_settings, async_req=params.get('async_req'), _return_http_data_only=params.get('_return_http_data_only'), @@ -679,45 +687,45 @@ def update_phone_params_with_http_info(self, phone_id, params, **kwargs): # noq _request_timeout=params.get('_request_timeout'), collection_formats=collection_formats) - def update_reg_status(self, phone_id, reg_status, **kwargs): # noqa: E501 - """Update registration status # noqa: E501 + def update_phone_params(self, phone_id, params, **kwargs): # noqa: E501 + """Update phone params # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.update_reg_status(phone_id, reg_status, async_req=True) + >>> thread = api.update_phone_params(phone_id, params, async_req=True) >>> result = thread.get() :param async_req bool :param str phone_id: (required) - :param str reg_status: F - Phone is not registered (offline). N - Phone is registered (online). (required) + :param str params: New params (required) :return: OkResponse If the method is called asynchronously, returns the request thread. """ kwargs['_return_http_data_only'] = True if kwargs.get('async_req'): - return self.update_reg_status_with_http_info(phone_id, reg_status, **kwargs) # noqa: E501 + return self.update_phone_params_with_http_info(phone_id, params, **kwargs) # noqa: E501 else: - (data) = self.update_reg_status_with_http_info(phone_id, reg_status, **kwargs) # noqa: E501 + (data) = self.update_phone_params_with_http_info(phone_id, params, **kwargs) # noqa: E501 return data - def update_reg_status_with_http_info(self, phone_id, reg_status, **kwargs): # noqa: E501 - """Update registration status # noqa: E501 + def update_phone_params_with_http_info(self, phone_id, params, **kwargs): # noqa: E501 + """Update phone params # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.update_reg_status_with_http_info(phone_id, reg_status, async_req=True) + >>> thread = api.update_phone_params_with_http_info(phone_id, params, async_req=True) >>> result = thread.get() :param async_req bool :param str phone_id: (required) - :param str reg_status: F - Phone is not registered (offline). N - Phone is registered (online). (required) + :param str params: New params (required) :return: OkResponse If the method is called asynchronously, returns the request thread. """ - all_params = ['phone_id', 'reg_status'] # noqa: E501 + all_params = ['phone_id', 'params'] # noqa: E501 all_params.append('async_req') all_params.append('_return_http_data_only') all_params.append('_preload_content') @@ -728,18 +736,18 @@ def update_reg_status_with_http_info(self, phone_id, reg_status, **kwargs): # n if key not in all_params: raise TypeError( "Got an unexpected keyword argument '%s'" - " to method update_reg_status" % key + " to method update_phone_params" % key ) params[key] = val del params['kwargs'] # verify the required parameter 'phone_id' is set if self.api_client.client_side_validation and ('phone_id' not in params or params['phone_id'] is None): # noqa: E501 - raise ValueError("Missing the required parameter `phone_id` when calling `update_reg_status`") # noqa: E501 - # verify the required parameter 'reg_status' is set - if self.api_client.client_side_validation and ('reg_status' not in params or - params['reg_status'] is None): # noqa: E501 - raise ValueError("Missing the required parameter `reg_status` when calling `update_reg_status`") # noqa: E501 + raise ValueError("Missing the required parameter `phone_id` when calling `update_phone_params`") # noqa: E501 + # verify the required parameter 'params' is set + if self.api_client.client_side_validation and ('params' not in params or + params['params'] is None): # noqa: E501 + raise ValueError("Missing the required parameter `params` when calling `update_phone_params`") # noqa: E501 collection_formats = {} @@ -748,13 +756,13 @@ def update_reg_status_with_http_info(self, phone_id, reg_status, **kwargs): # n path_params['phoneId'] = params['phone_id'] # noqa: E501 query_params = [] - if 'reg_status' in params: - query_params.append(('reg_status', params['reg_status'])) # noqa: E501 header_params = {} form_params = [] local_var_files = {} + if 'params' in params: + form_params.append(('params', params['params'])) # noqa: E501 body_params = None # HTTP header `Accept` @@ -769,7 +777,7 @@ def update_reg_status_with_http_info(self, phone_id, reg_status, **kwargs): # n auth_settings = ['apikey', 'privileges'] # noqa: E501 return self.api_client.call_api( - '/phones/{phoneId}/_updateRegStatus', 'PUT', + '/phones/{phoneId}/_updateParams', 'PUT', path_params, query_params, header_params, diff --git a/liveagent_api/models/agent_status.py b/liveagent_api/models/agent_status.py index 335e125..8781fc2 100644 --- a/liveagent_api/models/agent_status.py +++ b/liveagent_api/models/agent_status.py @@ -35,16 +35,18 @@ class AgentStatus(object): swagger_types = { 'departmentid': 'str', 'online_status': 'str', - 'preset_status': 'str' + 'preset_status': 'str', + 'work_allocation_allowed': 'bool' } attribute_map = { 'departmentid': 'departmentid', 'online_status': 'online_status', - 'preset_status': 'preset_status' + 'preset_status': 'preset_status', + 'work_allocation_allowed': 'work_allocation_allowed' } - def __init__(self, departmentid=None, online_status=None, preset_status=None, _configuration=None): # noqa: E501 + def __init__(self, departmentid=None, online_status=None, preset_status=None, work_allocation_allowed=None, _configuration=None): # noqa: E501 """AgentStatus - a model defined in Swagger""" # noqa: E501 if _configuration is None: _configuration = Configuration() @@ -53,6 +55,7 @@ def __init__(self, departmentid=None, online_status=None, preset_status=None, _c self._departmentid = None self._online_status = None self._preset_status = None + self._work_allocation_allowed = None self.discriminator = None if departmentid is not None: @@ -61,6 +64,8 @@ def __init__(self, departmentid=None, online_status=None, preset_status=None, _c self.online_status = online_status if preset_status is not None: self.preset_status = preset_status + if work_allocation_allowed is not None: + self.work_allocation_allowed = work_allocation_allowed @property def departmentid(self): @@ -129,6 +134,27 @@ def preset_status(self, preset_status): self._preset_status = preset_status + @property + def work_allocation_allowed(self): + """Gets the work_allocation_allowed of this AgentStatus. # noqa: E501 + + + :return: The work_allocation_allowed of this AgentStatus. # noqa: E501 + :rtype: bool + """ + return self._work_allocation_allowed + + @work_allocation_allowed.setter + def work_allocation_allowed(self, work_allocation_allowed): + """Sets the work_allocation_allowed of this AgentStatus. + + + :param work_allocation_allowed: The work_allocation_allowed of this AgentStatus. # noqa: E501 + :type: bool + """ + + self._work_allocation_allowed = work_allocation_allowed + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/liveagent_api/models/device_department.py b/liveagent_api/models/device_department.py index 9c4f38b..27e06c6 100644 --- a/liveagent_api/models/device_department.py +++ b/liveagent_api/models/device_department.py @@ -38,7 +38,8 @@ class DeviceDepartment(object): 'user_id': 'str', 'department_name': 'str', 'online_status': 'str', - 'preset_status': 'str' + 'preset_status': 'str', + 'work_allocation_allowed': 'bool' } attribute_map = { @@ -47,10 +48,11 @@ class DeviceDepartment(object): 'user_id': 'user_id', 'department_name': 'department_name', 'online_status': 'online_status', - 'preset_status': 'preset_status' + 'preset_status': 'preset_status', + 'work_allocation_allowed': 'work_allocation_allowed' } - def __init__(self, device_id=None, department_id=None, user_id=None, department_name=None, online_status=None, preset_status=None, _configuration=None): # noqa: E501 + def __init__(self, device_id=None, department_id=None, user_id=None, department_name=None, online_status=None, preset_status=None, work_allocation_allowed=None, _configuration=None): # noqa: E501 """DeviceDepartment - a model defined in Swagger""" # noqa: E501 if _configuration is None: _configuration = Configuration() @@ -62,6 +64,7 @@ def __init__(self, device_id=None, department_id=None, user_id=None, department_ self._department_name = None self._online_status = None self._preset_status = None + self._work_allocation_allowed = None self.discriminator = None if device_id is not None: @@ -76,6 +79,8 @@ def __init__(self, device_id=None, department_id=None, user_id=None, department_ self.online_status = online_status if preset_status is not None: self.preset_status = preset_status + if work_allocation_allowed is not None: + self.work_allocation_allowed = work_allocation_allowed @property def device_id(self): @@ -203,6 +208,27 @@ def preset_status(self, preset_status): self._preset_status = preset_status + @property + def work_allocation_allowed(self): + """Gets the work_allocation_allowed of this DeviceDepartment. # noqa: E501 + + + :return: The work_allocation_allowed of this DeviceDepartment. # noqa: E501 + :rtype: bool + """ + return self._work_allocation_allowed + + @work_allocation_allowed.setter + def work_allocation_allowed(self, work_allocation_allowed): + """Sets the work_allocation_allowed of this DeviceDepartment. + + + :param work_allocation_allowed: The work_allocation_allowed of this DeviceDepartment. # noqa: E501 + :type: bool + """ + + self._work_allocation_allowed = work_allocation_allowed + def to_dict(self): """Returns the model properties as a dict""" result = {} diff --git a/liveagent_api/models/phone_number.py b/liveagent_api/models/phone_number.py index 2d2537c..5f2745e 100644 --- a/liveagent_api/models/phone_number.py +++ b/liveagent_api/models/phone_number.py @@ -187,7 +187,7 @@ def id(self, id): def type(self): """Gets the type of this PhoneNumber. # noqa: E501 - A - API controlled number, T - Twilio number, T-O - Twilio outgoing number, D - Digitale, S - Asterisk # noqa: E501 + A - API controlled number, T - Twilio number, T-O - Twilio outgoing number, S - Asterisk # noqa: E501 :return: The type of this PhoneNumber. # noqa: E501 :rtype: str @@ -198,12 +198,12 @@ def type(self): def type(self, type): """Sets the type of this PhoneNumber. - A - API controlled number, T - Twilio number, T-O - Twilio outgoing number, D - Digitale, S - Asterisk # noqa: E501 + A - API controlled number, T - Twilio number, T-O - Twilio outgoing number, S - Asterisk # noqa: E501 :param type: The type of this PhoneNumber. # noqa: E501 :type: str """ - allowed_values = ["A", "C", "T", "T-O", "D", "S"] # noqa: E501 + allowed_values = ["A", "C", "T", "T-O", "S"] # noqa: E501 if (self._configuration.client_side_validation and type not in allowed_values): raise ValueError( diff --git a/test/test_calls_api.py b/test/test_calls_api.py index c349c05..2438de7 100644 --- a/test/test_calls_api.py +++ b/test/test_calls_api.py @@ -29,6 +29,13 @@ def setUp(self): def tearDown(self): pass + def test_blind_call_transfer(self): + """Test case for blind_call_transfer + + Transfers call to different department / agent # noqa: E501 + """ + pass + def test_call_add_message(self): """Test case for call_add_message @@ -78,6 +85,13 @@ def test_call_get_status(self): """ pass + def test_call_get_transfer_status(self): + """Test case for call_get_transfer_status + + Return the status of call # noqa: E501 + """ + pass + def test_call_id(self): """Test case for call_id diff --git a/test/test_phones_api.py b/test/test_phones_api.py index 22a5e32..35e8182 100644 --- a/test/test_phones_api.py +++ b/test/test_phones_api.py @@ -57,6 +57,13 @@ def test_remove_phone(self): """ pass + def test_update_browser_registration(self): + """Test case for update_browser_registration + + Update browser registration status # noqa: E501 + """ + pass + def test_update_phone(self): """Test case for update_phone @@ -71,13 +78,6 @@ def test_update_phone_params(self): """ pass - def test_update_reg_status(self): - """Test case for update_reg_status - - Update registration status # noqa: E501 - """ - pass - if __name__ == '__main__': unittest.main() From f133a85fa1577a7929dbac0b876f81ff6fcd8237 Mon Sep 17 00:00:00 2001 From: ruslanlazin Date: Mon, 3 Mar 2025 13:55:59 +0000 Subject: [PATCH 2/2] use CallStatusResult --- docs/CallsApi.md | 4 ++-- liveagent_api/api/calls_api.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/CallsApi.md b/docs/CallsApi.md index 710e00c..71589e7 100644 --- a/docs/CallsApi.md +++ b/docs/CallsApi.md @@ -38,7 +38,7 @@ Method | HTTP request | Description # **blind_call_transfer** -> CallTransferResult blind_call_transfer(call_id, to=to) +> CallStatus blind_call_transfer(call_id, to=to) Transfers call to different department / agent @@ -83,7 +83,7 @@ Name | Type | Description | Notes ### Return type -[**CallTransferResult**](CallTransferResult.md) +[**CallStatus**](CallStatus.md) ### Authorization diff --git a/liveagent_api/api/calls_api.py b/liveagent_api/api/calls_api.py index acbfe9e..88163b0 100644 --- a/liveagent_api/api/calls_api.py +++ b/liveagent_api/api/calls_api.py @@ -45,7 +45,7 @@ def blind_call_transfer(self, call_id, **kwargs): # noqa: E501 :param async_req bool :param str call_id: (required) :param str to: Pnone device or extension number - :return: CallTransferResult + :return: CallStatus If the method is called asynchronously, returns the request thread. """ @@ -68,7 +68,7 @@ def blind_call_transfer_with_http_info(self, call_id, **kwargs): # noqa: E501 :param async_req bool :param str call_id: (required) :param str to: Pnone device or extension number - :return: CallTransferResult + :return: CallStatus If the method is called asynchronously, returns the request thread. """ @@ -128,7 +128,7 @@ def blind_call_transfer_with_http_info(self, call_id, **kwargs): # noqa: E501 body=body_params, post_params=form_params, files=local_var_files, - response_type='CallTransferResult', # noqa: E501 + response_type='CallStatus', # noqa: E501 auth_settings=auth_settings, async_req=params.get('async_req'), _return_http_data_only=params.get('_return_http_data_only'),