diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES
index 8c4baaf..8766494 100644
--- a/.openapi-generator/FILES
+++ b/.openapi-generator/FILES
@@ -22,6 +22,7 @@ docs/CallDirection.md
docs/CallEndedReason.md
docs/CallList.md
docs/CallResult.md
+docs/CallResultAllOfSubresourceUris.md
docs/CallStatus.md
docs/CallStatusWebhook.md
docs/Capabilities.md
@@ -187,6 +188,7 @@ freeclimb/models/call_direction.py
freeclimb/models/call_ended_reason.py
freeclimb/models/call_list.py
freeclimb/models/call_result.py
+freeclimb/models/call_result_all_of_subresource_uris.py
freeclimb/models/call_status.py
freeclimb/models/call_status_webhook.py
freeclimb/models/capabilities.py
@@ -350,6 +352,7 @@ test/test_call_direction.py
test/test_call_ended_reason.py
test/test_call_list.py
test/test_call_result.py
+test/test_call_result_all_of_subresource_uris.py
test/test_call_status.py
test/test_call_status_webhook.py
test/test_capabilities.py
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6bccedd..5aef6fb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,15 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
None
+
+
+## [5.3.1] - 2026-03-04
+
+### Added
+
+- New parameters for fetching recordings (start time and end time)
+- Audio Streaming feature
+
## [5.3.0] - 2025-10-27
diff --git a/README.md b/README.md
index 45a3a4d..157c813 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@ FreeClimb is a cloud-based application programming interface (API) that puts the
This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 1.0.0
-- Package version: 5.3.0
+- Package version: 5.3.1
- Generator version: 7.9.0
- Build package: org.openapitools.codegen.languages.PythonClientCodegen
For more information, please visit [https://www.freeclimb.com/support/](https://www.freeclimb.com/support/)
@@ -210,6 +210,7 @@ Class | Method | HTTP request | Description
- [CallEndedReason](docs/CallEndedReason.md)
- [CallList](docs/CallList.md)
- [CallResult](docs/CallResult.md)
+ - [CallResultAllOfSubresourceUris](docs/CallResultAllOfSubresourceUris.md)
- [CallStatus](docs/CallStatus.md)
- [CallStatusWebhook](docs/CallStatusWebhook.md)
- [Capabilities](docs/Capabilities.md)
@@ -389,4 +390,3 @@ Authentication schemes defined for the API:
support@freeclimb.com
-
diff --git a/docs/AvailableNumber.md b/docs/AvailableNumber.md
index cea521a..756cfdf 100644
--- a/docs/AvailableNumber.md
+++ b/docs/AvailableNumber.md
@@ -8,6 +8,7 @@ Name | Type | Description | Notes
**capabilities** | [**Capabilities**](Capabilities.md) | | [optional]
**campaign_id** | **str** | The campaign ID generated by the campaign registry | [optional]
**phone_number** | **str** | The phone number, in E.164 format (+ country code and phone number: +18003608245). | [optional]
+**alias** | **str** | A nicely-formatted version of the phone number. | [optional]
**region** | **str** | The state or province of this phone number. | [optional]
**country** | **str** | The country of this phone number. | [optional]
diff --git a/docs/CallResult.md b/docs/CallResult.md
index fbf17a1..2a2f5b6 100644
--- a/docs/CallResult.md
+++ b/docs/CallResult.md
@@ -9,6 +9,8 @@ Name | Type | Description | Notes
**date_created** | **str** | The date that this resource was created (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). | [optional]
**date_updated** | **str** | The date that this resource was last updated (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). | [optional]
**revision** | **int** | Revision count for the resource. This count is set to 1 on creation and is incremented every time it is updated. | [optional]
+**date_created_iso** | **datetime** | The date that this resource was created in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). | [optional]
+**date_updated_iso** | **datetime** | The date that this resource was last updated in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). | [optional]
**call_id** | **str** | String that uniquely identifies this Call resource. | [optional]
**parent_call_id** | **str** | ID of the Call that created this leg (child Call). | [optional]
**account_id** | **str** | ID of the account that owns this Call. | [optional]
@@ -17,13 +19,19 @@ Name | Type | Description | Notes
**phone_number_id** | **str** | If the Call was inbound, this is the ID of the IncomingPhoneNumber that received the Call (DNIS). If the Call was outbound, this is the ID of the phone number from which the Call was placed (ANI). | [optional]
**status** | [**CallStatus**](CallStatus.md) | | [optional]
**start_time** | **str** | Start time of the Call (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call has not yet been dialed. | [optional]
+**start_time_iso** | **datetime** | Start time of the Call in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). Empty if the Call has not yet been dialed. | [optional]
**connect_time** | **str** | Time the Call was answered (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call has not yet been dialed. | [optional]
+**connect_time_iso** | **datetime** | Time the Call was answered in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). Empty if the Call has not yet been dialed. | [optional]
**end_time** | **str** | End time of the Call (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call did not complete successfully. | [optional]
+**end_time_iso** | **datetime** | End time of the Call in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). Empty if the Call did not complete successfully. | [optional]
**duration** | **int** | Total length of the Call in seconds. Measures time between startTime and endTime. This value is empty for busy, failed, unanswered or ongoing Calls. | [optional]
**connect_duration** | **int** | Length of time that the Call was connected in seconds. Measures time between connectTime and endTime. This value is empty for busy, failed, unanswered or ongoing Calls. | [optional]
+**audio_stream_duration** | **int** | Length of time that the Call used the audio stream in seconds. This value is empty or zero when the Call did not use the audio stream. | [optional]
**direction** | [**CallDirection**](CallDirection.md) | | [optional]
**answered_by** | [**AnsweredBy**](AnsweredBy.md) | | [optional]
-**subresource_uris** | **object** | The list of subresources for this Call. These include things like logs and recordings associated with the Call. | [optional]
+**caller_name** | **str** | The caller ID name (CNAM) for this Call. Empty if unavailable. | [optional]
+**web_rtc** | **bool** | Indicates whether this Call was initiated via WebRTC. | [optional]
+**subresource_uris** | [**CallResultAllOfSubresourceUris**](CallResultAllOfSubresourceUris.md) | | [optional]
**application_id** | **str** | ApplicationId associated with the Call. | [optional]
## Example
diff --git a/docs/CallResultAllOfSubresourceUris.md b/docs/CallResultAllOfSubresourceUris.md
new file mode 100644
index 0000000..50e62d5
--- /dev/null
+++ b/docs/CallResultAllOfSubresourceUris.md
@@ -0,0 +1,31 @@
+# CallResultAllOfSubresourceUris
+
+The list of subresources for this Call. These include things like logs and recordings associated with the Call.
+
+## Properties
+
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**logs** | **str** | The URI for the logs associated with this Call. | [optional]
+**recordings** | **str** | The URI for the recordings associated with this Call. | [optional]
+
+## Example
+
+```python
+from freeclimb.models.call_result_all_of_subresource_uris import CallResultAllOfSubresourceUris
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of CallResultAllOfSubresourceUris from a JSON string
+call_result_all_of_subresource_uris_instance = CallResultAllOfSubresourceUris.from_json(json)
+# print the JSON string representation of the object
+print(CallResultAllOfSubresourceUris.to_json())
+
+# convert the object into a dict
+call_result_all_of_subresource_uris_dict = call_result_all_of_subresource_uris_instance.to_dict()
+# create an instance of CallResultAllOfSubresourceUris from a dict
+call_result_all_of_subresource_uris_from_dict = CallResultAllOfSubresourceUris.from_dict(call_result_all_of_subresource_uris_dict)
+```
+[[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/DefaultApi.md b/docs/DefaultApi.md
index 42f6a4c..603ca69 100644
--- a/docs/DefaultApi.md
+++ b/docs/DefaultApi.md
@@ -310,7 +310,7 @@ Name | Type | Description | Notes
| Status code | Description | Response headers |
|-------------|-------------|------------------|
-**200** | Successfuly created queue | - |
+**201** | Successfuly created queue | - |
[[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)
@@ -3583,7 +3583,7 @@ 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)
# **list_call_recordings**
-> RecordingList list_call_recordings(account_id, call_id, date_created=date_created)
+> RecordingList list_call_recordings(account_id, call_id, date_created=date_created, start_time=start_time, end_time=end_time)
List Call Recordings
@@ -3621,10 +3621,12 @@ with freeclimb.ApiClient(configuration) as api_client:
account_id = 'AC170e4c66d358aa1755931da0452561933d1b8fd5' # str | ID of the account
call_id = 'call_id_example' # str | String that uniquely identifies this call resource.
date_created = 'date_created_example' # str | Only show recordings created on the specified date, in the form *YYYY-MM-DD*. (optional)
+ start_time = 'start_time_example' # str | Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional)
+ end_time = 'end_time_example' # str | Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional)
try:
# List Call Recordings
- api_response = api_instance.list_call_recordings(account_id, call_id, date_created=date_created)
+ api_response = api_instance.list_call_recordings(account_id, call_id, date_created=date_created, start_time=start_time, end_time=end_time)
print("The response of DefaultApi->list_call_recordings:\n")
pprint(api_response)
except Exception as e:
@@ -3641,6 +3643,8 @@ Name | Type | Description | Notes
**account_id** | **str**| ID of the account |
**call_id** | **str**| String that uniquely identifies this call resource. |
**date_created** | **str**| Only show recordings created on the specified date, in the form *YYYY-MM-DD*. | [optional]
+ **start_time** | **str**| Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. | [optional]
+ **end_time** | **str**| Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. | [optional]
### Return type
@@ -3664,7 +3668,7 @@ 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)
# **list_calls**
-> CallList list_calls(account_id, active=active, to=to, var_from=var_from, status=status, start_time=start_time, end_time=end_time, parent_call_id=parent_call_id, application_id=application_id, risk_score_min=risk_score_min, risk_score_max=risk_score_max)
+> CallList list_calls(account_id, used_audio_stream=used_audio_stream, active=active, to=to, var_from=var_from, status=status, start_time=start_time, end_time=end_time, parent_call_id=parent_call_id, application_id=application_id, risk_score_min=risk_score_min, risk_score_max=risk_score_max, web_rtc=web_rtc)
List Calls
@@ -3701,6 +3705,7 @@ with freeclimb.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = freeclimb.DefaultApi(api_client)
account_id = 'AC170e4c66d358aa1755931da0452561933d1b8fd5' # str | ID of the account
+ used_audio_stream = False # bool | If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned (optional) (default to False)
active = False # bool | If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query. (optional) (default to False)
to = 'to_example' # str | Only show Calls to this phone number. (optional)
var_from = 'var_from_example' # str | Only show Calls from this phone number. (optional)
@@ -3711,10 +3716,11 @@ with freeclimb.ApiClient(configuration) as api_client:
application_id = ['application_id_example'] # List[str] | Only show calls belonging to the given applicationId. This parameter can be repeated to return calls from multiple Applications. (optional)
risk_score_min = 56 # int | The minimum riskScore that should be included in the list. (optional)
risk_score_max = 56 # int | The maximum riskScore that should be included in the list. (optional)
+ web_rtc = False # bool | Only show Calls that were originated via WebRTC. (optional) (default to False)
try:
# List Calls
- api_response = api_instance.list_calls(account_id, active=active, to=to, var_from=var_from, status=status, start_time=start_time, end_time=end_time, parent_call_id=parent_call_id, application_id=application_id, risk_score_min=risk_score_min, risk_score_max=risk_score_max)
+ api_response = api_instance.list_calls(account_id, used_audio_stream=used_audio_stream, active=active, to=to, var_from=var_from, status=status, start_time=start_time, end_time=end_time, parent_call_id=parent_call_id, application_id=application_id, risk_score_min=risk_score_min, risk_score_max=risk_score_max, web_rtc=web_rtc)
print("The response of DefaultApi->list_calls:\n")
pprint(api_response)
except Exception as e:
@@ -3729,6 +3735,7 @@ with freeclimb.ApiClient(configuration) as api_client:
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**account_id** | **str**| ID of the account |
+ **used_audio_stream** | **bool**| If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned | [optional] [default to False]
**active** | **bool**| If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query. | [optional] [default to False]
**to** | **str**| Only show Calls to this phone number. | [optional]
**var_from** | **str**| Only show Calls from this phone number. | [optional]
@@ -3739,6 +3746,7 @@ Name | Type | Description | Notes
**application_id** | [**List[str]**](str.md)| Only show calls belonging to the given applicationId. This parameter can be repeated to return calls from multiple Applications. | [optional]
**risk_score_min** | **int**| The minimum riskScore that should be included in the list. | [optional]
**risk_score_max** | **int**| The maximum riskScore that should be included in the list. | [optional]
+ **web_rtc** | **bool**| Only show Calls that were originated via WebRTC. | [optional] [default to False]
### Return type
@@ -3762,7 +3770,7 @@ 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)
# **list_conference_recordings**
-> RecordingList list_conference_recordings(account_id, conference_id, call_id=call_id, date_created=date_created)
+> RecordingList list_conference_recordings(account_id, conference_id, call_id=call_id, date_created=date_created, start_time=start_time, end_time=end_time)
List Conference Recordings
@@ -3801,10 +3809,12 @@ with freeclimb.ApiClient(configuration) as api_client:
conference_id = 'conference_id_example' # str | Show only Recordings made during the conference with this ID.
call_id = 'call_id_example' # str | Show only Recordings made during the Call with this ID. (optional)
date_created = 'date_created_example' # str | Only show Recordings created on this date, formatted as *YYYY-MM-DD*. (optional)
+ start_time = 'start_time_example' # str | Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional)
+ end_time = 'end_time_example' # str | Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional)
try:
# List Conference Recordings
- api_response = api_instance.list_conference_recordings(account_id, conference_id, call_id=call_id, date_created=date_created)
+ api_response = api_instance.list_conference_recordings(account_id, conference_id, call_id=call_id, date_created=date_created, start_time=start_time, end_time=end_time)
print("The response of DefaultApi->list_conference_recordings:\n")
pprint(api_response)
except Exception as e:
@@ -3822,6 +3832,8 @@ Name | Type | Description | Notes
**conference_id** | **str**| Show only Recordings made during the conference with this ID. |
**call_id** | **str**| Show only Recordings made during the Call with this ID. | [optional]
**date_created** | **str**| Only show Recordings created on this date, formatted as *YYYY-MM-DD*. | [optional]
+ **start_time** | **str**| Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. | [optional]
+ **end_time** | **str**| Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. | [optional]
### Return type
@@ -4281,7 +4293,7 @@ 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)
# **list_recordings**
-> RecordingList list_recordings(account_id, call_id=call_id, conference_id=conference_id, date_created=date_created)
+> RecordingList list_recordings(account_id, call_id=call_id, conference_id=conference_id, date_created=date_created, start_time=start_time, end_time=end_time)
List Recordings
@@ -4320,10 +4332,12 @@ with freeclimb.ApiClient(configuration) as api_client:
call_id = 'call_id_example' # str | Show only Recordings made during the Call with this ID. (optional)
conference_id = 'conference_id_example' # str | Show only Recordings made during the conference with this ID. (optional)
date_created = 'date_created_example' # str | Only show Recordings created on this date, formatted as *YYYY-MM-DD*. (optional)
+ start_time = 'start_time_example' # str | Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. (optional)
+ end_time = 'end_time_example' # str | Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. (optional)
try:
# List Recordings
- api_response = api_instance.list_recordings(account_id, call_id=call_id, conference_id=conference_id, date_created=date_created)
+ api_response = api_instance.list_recordings(account_id, call_id=call_id, conference_id=conference_id, date_created=date_created, start_time=start_time, end_time=end_time)
print("The response of DefaultApi->list_recordings:\n")
pprint(api_response)
except Exception as e:
@@ -4341,6 +4355,8 @@ Name | Type | Description | Notes
**call_id** | **str**| Show only Recordings made during the Call with this ID. | [optional]
**conference_id** | **str**| Show only Recordings made during the conference with this ID. | [optional]
**date_created** | **str**| Only show Recordings created on this date, formatted as *YYYY-MM-DD*. | [optional]
+ **start_time** | **str**| Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss. | [optional]
+ **end_time** | **str**| Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss. | [optional]
### Return type
diff --git a/docs/QueueResult.md b/docs/QueueResult.md
index 87359b3..7eaa838 100644
--- a/docs/QueueResult.md
+++ b/docs/QueueResult.md
@@ -15,6 +15,7 @@ Name | Type | Description | Notes
**max_size** | **int** | The maximum number of Calls permitted in the Queue. Default is 100. Maximum is 1000. | [optional]
**current_size** | **int** | Count of Calls currently in the Queue. | [optional]
**average_queue_removal_time** | **int** | The average amount of time (in seconds) for a call to be removed from the queue. | [optional]
+**average_wait_time** | **int** | The average wait time (in seconds) of all Calls in the Queue. | [optional]
**subresource_uris** | **object** | List of subresources for this Queue (which includes Queue members). | [optional]
## Example
diff --git a/freeclimb/__init__.py b/freeclimb/__init__.py
index 73df7e2..1199724 100644
--- a/freeclimb/__init__.py
+++ b/freeclimb/__init__.py
@@ -15,7 +15,7 @@
""" # noqa: E501
-__version__ = "5.3.0"
+__version__ = "5.3.1"
# import apis into sdk package
from freeclimb.api.default_api import DefaultApi as DefaultApi
@@ -66,6 +66,9 @@
from freeclimb.models.call_ended_reason import CallEndedReason as CallEndedReason
from freeclimb.models.call_list import CallList as CallList
from freeclimb.models.call_result import CallResult as CallResult
+from freeclimb.models.call_result_all_of_subresource_uris import (
+ CallResultAllOfSubresourceUris as CallResultAllOfSubresourceUris,
+)
from freeclimb.models.call_status import CallStatus as CallStatus
from freeclimb.models.call_status_webhook import CallStatusWebhook as CallStatusWebhook
from freeclimb.models.capabilities import Capabilities as Capabilities
diff --git a/freeclimb/api/default_api.py b/freeclimb/api/default_api.py
index 57d827a..239cc38 100644
--- a/freeclimb/api/default_api.py
+++ b/freeclimb/api/default_api.py
@@ -801,7 +801,7 @@ def create_a_queue(
)
_response_types_map: Dict[str, Optional[str]] = {
- "200": "QueueResult",
+ "201": "QueueResult",
}
response_data = self.api_client.call_api(
*_param, _request_timeout=_request_timeout
@@ -870,7 +870,7 @@ def create_a_queue_with_http_info(
)
_response_types_map: Dict[str, Optional[str]] = {
- "200": "QueueResult",
+ "201": "QueueResult",
}
response_data = self.api_client.call_api(
*_param, _request_timeout=_request_timeout
@@ -939,7 +939,7 @@ def create_a_queue_without_preload_content(
)
_response_types_map: Dict[str, Optional[str]] = {
- "200": "QueueResult",
+ "201": "QueueResult",
}
response_data = self.api_client.call_api(
*_param, _request_timeout=_request_timeout
@@ -12100,6 +12100,18 @@ def list_call_recordings(
description="Only show recordings created on the specified date, in the form *YYYY-MM-DD*."
),
] = None,
+ start_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
+ end_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -12121,6 +12133,12 @@ def list_call_recordings(
:param date_created: Only show recordings created on the specified date, in the form *YYYY-MM-DD*.
:type date_created: str
+ :param start_time: Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss.
+ :type start_time: str
+
+ :param end_time: Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss.
+ :type end_time: str
+
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
@@ -12148,6 +12166,8 @@ def list_call_recordings(
account_id=account_id,
call_id=call_id,
date_created=date_created,
+ start_time=start_time,
+ end_time=end_time,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -12179,6 +12199,18 @@ def list_call_recordings_with_http_info(
description="Only show recordings created on the specified date, in the form *YYYY-MM-DD*."
),
] = None,
+ start_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
+ end_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -12200,6 +12232,12 @@ def list_call_recordings_with_http_info(
:param date_created: Only show recordings created on the specified date, in the form *YYYY-MM-DD*.
:type date_created: str
+ :param start_time: Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss.
+ :type start_time: str
+
+ :param end_time: Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss.
+ :type end_time: str
+
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
@@ -12227,6 +12265,8 @@ def list_call_recordings_with_http_info(
account_id=account_id,
call_id=call_id,
date_created=date_created,
+ start_time=start_time,
+ end_time=end_time,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -12258,6 +12298,18 @@ def list_call_recordings_without_preload_content(
description="Only show recordings created on the specified date, in the form *YYYY-MM-DD*."
),
] = None,
+ start_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
+ end_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -12279,6 +12331,12 @@ def list_call_recordings_without_preload_content(
:param date_created: Only show recordings created on the specified date, in the form *YYYY-MM-DD*.
:type date_created: str
+ :param start_time: Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss.
+ :type start_time: str
+
+ :param end_time: Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss.
+ :type end_time: str
+
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
@@ -12306,6 +12364,8 @@ def list_call_recordings_without_preload_content(
account_id=account_id,
call_id=call_id,
date_created=date_created,
+ start_time=start_time,
+ end_time=end_time,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -12325,6 +12385,8 @@ def _list_call_recordings_serialize(
account_id,
call_id,
date_created,
+ start_time,
+ end_time,
_request_auth,
_content_type,
_headers,
@@ -12354,6 +12416,14 @@ def _list_call_recordings_serialize(
_query_params.append(("dateCreated", date_created))
+ if start_time is not None:
+
+ _query_params.append(("startTime", start_time))
+
+ if end_time is not None:
+
+ _query_params.append(("endTime", end_time))
+
# process the header parameters
# process the form parameters
# process the body parameter
@@ -12385,6 +12455,12 @@ def _list_call_recordings_serialize(
@validate_call
def list_calls(
self,
+ used_audio_stream: Annotated[
+ Optional[StrictBool],
+ Field(
+ description="If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned "
+ ),
+ ] = None,
active: Annotated[
Optional[StrictBool],
Field(
@@ -12443,6 +12519,10 @@ def list_calls(
description="The maximum riskScore that should be included in the list."
),
] = None,
+ web_rtc: Annotated[
+ Optional[StrictBool],
+ Field(description="Only show Calls that were originated via WebRTC."),
+ ] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -12458,6 +12538,9 @@ def list_calls(
"""List Calls
+ :param used_audio_stream: If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned
+ :type used_audio_stream: bool
+
:param active: If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query.
:type active: bool
@@ -12488,6 +12571,9 @@ def list_calls(
:param risk_score_max: The maximum riskScore that should be included in the list.
:type risk_score_max: int
+ :param web_rtc: Only show Calls that were originated via WebRTC.
+ :type web_rtc: bool
+
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
@@ -12513,6 +12599,7 @@ def list_calls(
_param = self._list_calls_serialize(
account_id=account_id,
+ used_audio_stream=used_audio_stream,
active=active,
to=to,
var_from=var_from,
@@ -12523,6 +12610,7 @@ def list_calls(
application_id=application_id,
risk_score_min=risk_score_min,
risk_score_max=risk_score_max,
+ web_rtc=web_rtc,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -12544,6 +12632,12 @@ def list_calls(
@validate_call
def list_calls_with_http_info(
self,
+ used_audio_stream: Annotated[
+ Optional[StrictBool],
+ Field(
+ description="If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned "
+ ),
+ ] = None,
active: Annotated[
Optional[StrictBool],
Field(
@@ -12602,6 +12696,10 @@ def list_calls_with_http_info(
description="The maximum riskScore that should be included in the list."
),
] = None,
+ web_rtc: Annotated[
+ Optional[StrictBool],
+ Field(description="Only show Calls that were originated via WebRTC."),
+ ] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -12617,6 +12715,9 @@ def list_calls_with_http_info(
"""List Calls
+ :param used_audio_stream: If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned
+ :type used_audio_stream: bool
+
:param active: If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query.
:type active: bool
@@ -12647,6 +12748,9 @@ def list_calls_with_http_info(
:param risk_score_max: The maximum riskScore that should be included in the list.
:type risk_score_max: int
+ :param web_rtc: Only show Calls that were originated via WebRTC.
+ :type web_rtc: bool
+
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
@@ -12672,6 +12776,7 @@ def list_calls_with_http_info(
_param = self._list_calls_serialize(
account_id=account_id,
+ used_audio_stream=used_audio_stream,
active=active,
to=to,
var_from=var_from,
@@ -12682,6 +12787,7 @@ def list_calls_with_http_info(
application_id=application_id,
risk_score_min=risk_score_min,
risk_score_max=risk_score_max,
+ web_rtc=web_rtc,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -12703,6 +12809,12 @@ def list_calls_with_http_info(
@validate_call
def list_calls_without_preload_content(
self,
+ used_audio_stream: Annotated[
+ Optional[StrictBool],
+ Field(
+ description="If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned "
+ ),
+ ] = None,
active: Annotated[
Optional[StrictBool],
Field(
@@ -12761,6 +12873,10 @@ def list_calls_without_preload_content(
description="The maximum riskScore that should be included in the list."
),
] = None,
+ web_rtc: Annotated[
+ Optional[StrictBool],
+ Field(description="Only show Calls that were originated via WebRTC."),
+ ] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -12776,6 +12892,9 @@ def list_calls_without_preload_content(
"""List Calls
+ :param used_audio_stream: If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned
+ :type used_audio_stream: bool
+
:param active: If active is set to true then all calls of the nature queued, ringing, inProgress are returned in the query.
:type active: bool
@@ -12806,6 +12925,9 @@ def list_calls_without_preload_content(
:param risk_score_max: The maximum riskScore that should be included in the list.
:type risk_score_max: int
+ :param web_rtc: Only show Calls that were originated via WebRTC.
+ :type web_rtc: bool
+
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
@@ -12831,6 +12953,7 @@ def list_calls_without_preload_content(
_param = self._list_calls_serialize(
account_id=account_id,
+ used_audio_stream=used_audio_stream,
active=active,
to=to,
var_from=var_from,
@@ -12841,6 +12964,7 @@ def list_calls_without_preload_content(
application_id=application_id,
risk_score_min=risk_score_min,
risk_score_max=risk_score_max,
+ web_rtc=web_rtc,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -12858,6 +12982,7 @@ def list_calls_without_preload_content(
def _list_calls_serialize(
self,
account_id,
+ used_audio_stream,
active,
to,
var_from,
@@ -12868,6 +12993,7 @@ def _list_calls_serialize(
application_id,
risk_score_min,
risk_score_max,
+ web_rtc,
_request_auth,
_content_type,
_headers,
@@ -12893,6 +13019,10 @@ def _list_calls_serialize(
if account_id is not None:
_path_params["accountId"] = account_id
# process the query parameters
+ if used_audio_stream is not None:
+
+ _query_params.append(("usedAudioStream", used_audio_stream))
+
if active is not None:
_query_params.append(("active", active))
@@ -12933,6 +13063,10 @@ def _list_calls_serialize(
_query_params.append(("riskScoreMax", risk_score_max))
+ if web_rtc is not None:
+
+ _query_params.append(("webRTC", web_rtc))
+
# process the header parameters
# process the form parameters
# process the body parameter
@@ -12982,6 +13116,18 @@ def list_conference_recordings(
description="Only show Recordings created on this date, formatted as *YYYY-MM-DD*."
),
] = None,
+ start_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
+ end_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -13006,6 +13152,12 @@ def list_conference_recordings(
:param date_created: Only show Recordings created on this date, formatted as *YYYY-MM-DD*.
:type date_created: str
+ :param start_time: Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss.
+ :type start_time: str
+
+ :param end_time: Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss.
+ :type end_time: str
+
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
@@ -13034,6 +13186,8 @@ def list_conference_recordings(
conference_id=conference_id,
call_id=call_id,
date_created=date_created,
+ start_time=start_time,
+ end_time=end_time,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -13073,6 +13227,18 @@ def list_conference_recordings_with_http_info(
description="Only show Recordings created on this date, formatted as *YYYY-MM-DD*."
),
] = None,
+ start_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
+ end_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -13097,6 +13263,12 @@ def list_conference_recordings_with_http_info(
:param date_created: Only show Recordings created on this date, formatted as *YYYY-MM-DD*.
:type date_created: str
+ :param start_time: Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss.
+ :type start_time: str
+
+ :param end_time: Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss.
+ :type end_time: str
+
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
@@ -13125,6 +13297,8 @@ def list_conference_recordings_with_http_info(
conference_id=conference_id,
call_id=call_id,
date_created=date_created,
+ start_time=start_time,
+ end_time=end_time,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -13164,6 +13338,18 @@ def list_conference_recordings_without_preload_content(
description="Only show Recordings created on this date, formatted as *YYYY-MM-DD*."
),
] = None,
+ start_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
+ end_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -13188,6 +13374,12 @@ def list_conference_recordings_without_preload_content(
:param date_created: Only show Recordings created on this date, formatted as *YYYY-MM-DD*.
:type date_created: str
+ :param start_time: Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss.
+ :type start_time: str
+
+ :param end_time: Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss.
+ :type end_time: str
+
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
@@ -13216,6 +13408,8 @@ def list_conference_recordings_without_preload_content(
conference_id=conference_id,
call_id=call_id,
date_created=date_created,
+ start_time=start_time,
+ end_time=end_time,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -13236,6 +13430,8 @@ def _list_conference_recordings_serialize(
conference_id,
call_id,
date_created,
+ start_time,
+ end_time,
_request_auth,
_content_type,
_headers,
@@ -13269,6 +13465,14 @@ def _list_conference_recordings_serialize(
_query_params.append(("dateCreated", date_created))
+ if start_time is not None:
+
+ _query_params.append(("startTime", start_time))
+
+ if end_time is not None:
+
+ _query_params.append(("endTime", end_time))
+
# process the header parameters
# process the form parameters
# process the body parameter
@@ -15228,6 +15432,18 @@ def list_recordings(
description="Only show Recordings created on this date, formatted as *YYYY-MM-DD*."
),
] = None,
+ start_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
+ end_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -15252,6 +15468,12 @@ def list_recordings(
:param date_created: Only show Recordings created on this date, formatted as *YYYY-MM-DD*.
:type date_created: str
+ :param start_time: Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss.
+ :type start_time: str
+
+ :param end_time: Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss.
+ :type end_time: str
+
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
@@ -15280,6 +15502,8 @@ def list_recordings(
call_id=call_id,
conference_id=conference_id,
date_created=date_created,
+ start_time=start_time,
+ end_time=end_time,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -15319,6 +15543,18 @@ def list_recordings_with_http_info(
description="Only show Recordings created on this date, formatted as *YYYY-MM-DD*."
),
] = None,
+ start_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
+ end_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -15343,6 +15579,12 @@ def list_recordings_with_http_info(
:param date_created: Only show Recordings created on this date, formatted as *YYYY-MM-DD*.
:type date_created: str
+ :param start_time: Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss.
+ :type start_time: str
+
+ :param end_time: Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss.
+ :type end_time: str
+
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
@@ -15371,6 +15613,8 @@ def list_recordings_with_http_info(
call_id=call_id,
conference_id=conference_id,
date_created=date_created,
+ start_time=start_time,
+ end_time=end_time,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -15410,6 +15654,18 @@ def list_recordings_without_preload_content(
description="Only show Recordings created on this date, formatted as *YYYY-MM-DD*."
),
] = None,
+ start_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
+ end_time: Annotated[
+ Optional[StrictStr],
+ Field(
+ description="Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss."
+ ),
+ ] = None,
_request_timeout: Union[
None,
Annotated[StrictFloat, Field(gt=0)],
@@ -15434,6 +15690,12 @@ def list_recordings_without_preload_content(
:param date_created: Only show Recordings created on this date, formatted as *YYYY-MM-DD*.
:type date_created: str
+ :param start_time: Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss.
+ :type start_time: str
+
+ :param end_time: Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss.
+ :type end_time: str
+
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
@@ -15462,6 +15724,8 @@ def list_recordings_without_preload_content(
call_id=call_id,
conference_id=conference_id,
date_created=date_created,
+ start_time=start_time,
+ end_time=end_time,
_request_auth=_request_auth,
_content_type=_content_type,
_headers=_headers,
@@ -15482,6 +15746,8 @@ def _list_recordings_serialize(
call_id,
conference_id,
date_created,
+ start_time,
+ end_time,
_request_auth,
_content_type,
_headers,
@@ -15517,6 +15783,14 @@ def _list_recordings_serialize(
_query_params.append(("dateCreated", date_created))
+ if start_time is not None:
+
+ _query_params.append(("startTime", start_time))
+
+ if end_time is not None:
+
+ _query_params.append(("endTime", end_time))
+
# process the header parameters
# process the form parameters
# process the body parameter
diff --git a/freeclimb/api_client.py b/freeclimb/api_client.py
index 882c5bb..c024d1b 100644
--- a/freeclimb/api_client.py
+++ b/freeclimb/api_client.py
@@ -88,7 +88,7 @@ def __init__(
self.default_headers[header_name] = header_value
self.cookie = cookie
# Set default User-Agent.
- self.user_agent = "OpenAPI-Generator/5.3.0/python"
+ self.user_agent = "OpenAPI-Generator/5.3.1/python"
self.client_side_validation = configuration.client_side_validation
def __enter__(self):
diff --git a/freeclimb/configuration.py b/freeclimb/configuration.py
index e2beb3d..493857f 100644
--- a/freeclimb/configuration.py
+++ b/freeclimb/configuration.py
@@ -427,7 +427,7 @@ def to_debug_report(self):
"OS: {env}\n"
"Python Version: {pyversion}\n"
"Version of the API: 1.0.0\n"
- "SDK Package Version: 5.3.0".format(env=sys.platform, pyversion=sys.version)
+ "SDK Package Version: 5.3.1".format(env=sys.platform, pyversion=sys.version)
)
def get_host_settings(self):
diff --git a/freeclimb/models/__init__.py b/freeclimb/models/__init__.py
index cd23dda..a4d36e1 100644
--- a/freeclimb/models/__init__.py
+++ b/freeclimb/models/__init__.py
@@ -49,6 +49,9 @@
from freeclimb.models.call_ended_reason import CallEndedReason as CallEndedReason
from freeclimb.models.call_list import CallList as CallList
from freeclimb.models.call_result import CallResult as CallResult
+from freeclimb.models.call_result_all_of_subresource_uris import (
+ CallResultAllOfSubresourceUris as CallResultAllOfSubresourceUris,
+)
from freeclimb.models.call_status import CallStatus as CallStatus
from freeclimb.models.call_status_webhook import CallStatusWebhook as CallStatusWebhook
from freeclimb.models.capabilities import Capabilities as Capabilities
diff --git a/freeclimb/models/available_number.py b/freeclimb/models/available_number.py
index 9875f1b..b20488d 100644
--- a/freeclimb/models/available_number.py
+++ b/freeclimb/models/available_number.py
@@ -44,6 +44,9 @@ class AvailableNumber(
description="The phone number, in E.164 format (+ country code and phone number: +18003608245).",
alias="phoneNumber",
)
+ alias: Optional[StrictStr] = Field(
+ default=None, description="A nicely-formatted version of the phone number."
+ )
region: Optional[StrictStr] = Field(
default=None, description="The state or province of this phone number."
)
@@ -55,6 +58,7 @@ class AvailableNumber(
"capabilities",
"campaignId",
"phoneNumber",
+ "alias",
"region",
"country",
]
@@ -103,6 +107,11 @@ def to_dict(self) -> Dict[str, Any]:
if self.phone_number is None and "phone_number" in self.model_fields_set:
_dict["phoneNumber"] = None
+ # set to None if alias (nullable) is None
+ # and model_fields_set contains the field
+ if self.alias is None and "alias" in self.model_fields_set:
+ _dict["alias"] = None
+
# set to None if region (nullable) is None
# and model_fields_set contains the field
if self.region is None and "region" in self.model_fields_set:
@@ -133,6 +142,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
),
"campaignId": obj.get("campaignId"),
"phoneNumber": obj.get("phoneNumber"),
+ "alias": obj.get("alias"),
"region": obj.get("region"),
"country": obj.get("country"),
}
diff --git a/freeclimb/models/call_result.py b/freeclimb/models/call_result.py
index d659fa9..5eb4037 100644
--- a/freeclimb/models/call_result.py
+++ b/freeclimb/models/call_result.py
@@ -18,10 +18,14 @@
import re # noqa: F401
import json
-from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
+from datetime import datetime
+from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional
from freeclimb.models.answered_by import AnsweredBy
from freeclimb.models.call_direction import CallDirection
+from freeclimb.models.call_result_all_of_subresource_uris import (
+ CallResultAllOfSubresourceUris,
+)
from freeclimb.models.call_status import CallStatus
from pydantic import StrictStr
from typing import Optional, Set
@@ -52,6 +56,16 @@ class CallResult(
default=None,
description="Revision count for the resource. This count is set to 1 on creation and is incremented every time it is updated.",
)
+ date_created_iso: Optional[datetime] = Field(
+ default=None,
+ description="The date that this resource was created in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z).",
+ alias="dateCreatedISO",
+ )
+ date_updated_iso: Optional[datetime] = Field(
+ default=None,
+ description="The date that this resource was last updated in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z).",
+ alias="dateUpdatedISO",
+ )
call_id: Optional[StrictStr] = Field(
default=None,
description="String that uniquely identifies this Call resource.",
@@ -84,16 +98,31 @@ class CallResult(
description="Start time of the Call (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call has not yet been dialed.",
alias="startTime",
)
+ start_time_iso: Optional[datetime] = Field(
+ default=None,
+ description="Start time of the Call in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). Empty if the Call has not yet been dialed.",
+ alias="startTimeISO",
+ )
connect_time: Optional[StrictStr] = Field(
default=None,
description="Time the Call was answered (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call has not yet been dialed.",
alias="connectTime",
)
+ connect_time_iso: Optional[datetime] = Field(
+ default=None,
+ description="Time the Call was answered in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). Empty if the Call has not yet been dialed.",
+ alias="connectTimeISO",
+ )
end_time: Optional[StrictStr] = Field(
default=None,
description="End time of the Call (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call did not complete successfully.",
alias="endTime",
)
+ end_time_iso: Optional[datetime] = Field(
+ default=None,
+ description="End time of the Call in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). Empty if the Call did not complete successfully.",
+ alias="endTimeISO",
+ )
duration: Optional[StrictInt] = Field(
default=None,
description="Total length of the Call in seconds. Measures time between startTime and endTime. This value is empty for busy, failed, unanswered or ongoing Calls.",
@@ -103,12 +132,25 @@ class CallResult(
description="Length of time that the Call was connected in seconds. Measures time between connectTime and endTime. This value is empty for busy, failed, unanswered or ongoing Calls.",
alias="connectDuration",
)
+ audio_stream_duration: Optional[StrictInt] = Field(
+ default=None,
+ description="Length of time that the Call used the audio stream in seconds. This value is empty or zero when the Call did not use the audio stream.",
+ alias="audioStreamDuration",
+ )
direction: Optional[CallDirection] = None
answered_by: Optional[AnsweredBy] = Field(default=None, alias="answeredBy")
- subresource_uris: Optional[Dict[str, Any]] = Field(
+ caller_name: Optional[StrictStr] = Field(
default=None,
- description="The list of subresources for this Call. These include things like logs and recordings associated with the Call.",
- alias="subresourceUris",
+ description="The caller ID name (CNAM) for this Call. Empty if unavailable.",
+ alias="callerName",
+ )
+ web_rtc: Optional[StrictBool] = Field(
+ default=None,
+ description="Indicates whether this Call was initiated via WebRTC.",
+ alias="webRTC",
+ )
+ subresource_uris: Optional[CallResultAllOfSubresourceUris] = Field(
+ default=None, alias="subresourceUris"
)
application_id: Optional[StrictStr] = Field(
default=None,
@@ -121,6 +163,8 @@ class CallResult(
"dateCreated",
"dateUpdated",
"revision",
+ "dateCreatedISO",
+ "dateUpdatedISO",
"callId",
"parentCallId",
"accountId",
@@ -129,12 +173,18 @@ class CallResult(
"phoneNumberId",
"status",
"startTime",
+ "startTimeISO",
"connectTime",
+ "connectTimeISO",
"endTime",
+ "endTimeISO",
"duration",
"connectDuration",
+ "audioStreamDuration",
"direction",
"answeredBy",
+ "callerName",
+ "webRTC",
"subresourceUris",
"applicationId",
]
@@ -170,6 +220,25 @@ def to_dict(self) -> Dict[str, Any]:
exclude=excluded_fields,
exclude_none=True,
)
+ # override the default output from pydantic by calling `to_dict()` of subresource_uris
+ if self.subresource_uris:
+ _dict["subresourceUris"] = self.subresource_uris.to_dict()
+ # set to None if date_created_iso (nullable) is None
+ # and model_fields_set contains the field
+ if (
+ self.date_created_iso is None
+ and "date_created_iso" in self.model_fields_set
+ ):
+ _dict["dateCreatedISO"] = None
+
+ # set to None if date_updated_iso (nullable) is None
+ # and model_fields_set contains the field
+ if (
+ self.date_updated_iso is None
+ and "date_updated_iso" in self.model_fields_set
+ ):
+ _dict["dateUpdatedISO"] = None
+
# set to None if call_id (nullable) is None
# and model_fields_set contains the field
if self.call_id is None and "call_id" in self.model_fields_set:
@@ -210,16 +279,34 @@ def to_dict(self) -> Dict[str, Any]:
if self.start_time is None and "start_time" in self.model_fields_set:
_dict["startTime"] = None
+ # set to None if start_time_iso (nullable) is None
+ # and model_fields_set contains the field
+ if self.start_time_iso is None and "start_time_iso" in self.model_fields_set:
+ _dict["startTimeISO"] = None
+
# set to None if connect_time (nullable) is None
# and model_fields_set contains the field
if self.connect_time is None and "connect_time" in self.model_fields_set:
_dict["connectTime"] = None
+ # set to None if connect_time_iso (nullable) is None
+ # and model_fields_set contains the field
+ if (
+ self.connect_time_iso is None
+ and "connect_time_iso" in self.model_fields_set
+ ):
+ _dict["connectTimeISO"] = None
+
# set to None if end_time (nullable) is None
# and model_fields_set contains the field
if self.end_time is None and "end_time" in self.model_fields_set:
_dict["endTime"] = None
+ # set to None if end_time_iso (nullable) is None
+ # and model_fields_set contains the field
+ if self.end_time_iso is None and "end_time_iso" in self.model_fields_set:
+ _dict["endTimeISO"] = None
+
# set to None if duration (nullable) is None
# and model_fields_set contains the field
if self.duration is None and "duration" in self.model_fields_set:
@@ -233,6 +320,14 @@ def to_dict(self) -> Dict[str, Any]:
):
_dict["connectDuration"] = None
+ # set to None if audio_stream_duration (nullable) is None
+ # and model_fields_set contains the field
+ if (
+ self.audio_stream_duration is None
+ and "audio_stream_duration" in self.model_fields_set
+ ):
+ _dict["audioStreamDuration"] = None
+
# set to None if direction (nullable) is None
# and model_fields_set contains the field
if self.direction is None and "direction" in self.model_fields_set:
@@ -243,6 +338,16 @@ def to_dict(self) -> Dict[str, Any]:
if self.answered_by is None and "answered_by" in self.model_fields_set:
_dict["answeredBy"] = None
+ # set to None if caller_name (nullable) is None
+ # and model_fields_set contains the field
+ if self.caller_name is None and "caller_name" in self.model_fields_set:
+ _dict["callerName"] = None
+
+ # set to None if web_rtc (nullable) is None
+ # and model_fields_set contains the field
+ if self.web_rtc is None and "web_rtc" in self.model_fields_set:
+ _dict["webRTC"] = None
+
# set to None if subresource_uris (nullable) is None
# and model_fields_set contains the field
if (
@@ -273,6 +378,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"dateCreated": obj.get("dateCreated"),
"dateUpdated": obj.get("dateUpdated"),
"revision": obj.get("revision"),
+ "dateCreatedISO": obj.get("dateCreatedISO"),
+ "dateUpdatedISO": obj.get("dateUpdatedISO"),
"callId": obj.get("callId"),
"parentCallId": obj.get("parentCallId"),
"accountId": obj.get("accountId"),
@@ -281,13 +388,23 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"phoneNumberId": obj.get("phoneNumberId"),
"status": obj.get("status"),
"startTime": obj.get("startTime"),
+ "startTimeISO": obj.get("startTimeISO"),
"connectTime": obj.get("connectTime"),
+ "connectTimeISO": obj.get("connectTimeISO"),
"endTime": obj.get("endTime"),
+ "endTimeISO": obj.get("endTimeISO"),
"duration": obj.get("duration"),
"connectDuration": obj.get("connectDuration"),
+ "audioStreamDuration": obj.get("audioStreamDuration"),
"direction": obj.get("direction"),
"answeredBy": obj.get("answeredBy"),
- "subresourceUris": obj.get("subresourceUris"),
+ "callerName": obj.get("callerName"),
+ "webRTC": obj.get("webRTC"),
+ "subresourceUris": (
+ CallResultAllOfSubresourceUris.from_dict(obj["subresourceUris"])
+ if obj.get("subresourceUris") is not None
+ else None
+ ),
"applicationId": obj.get("applicationId"),
}
)
diff --git a/freeclimb/models/call_result_all_of_subresource_uris.py b/freeclimb/models/call_result_all_of_subresource_uris.py
new file mode 100644
index 0000000..719df25
--- /dev/null
+++ b/freeclimb/models/call_result_all_of_subresource_uris.py
@@ -0,0 +1,90 @@
+# coding: utf-8
+
+"""
+ FreeClimb API
+
+ FreeClimb is a cloud-based application programming interface (API) that puts the power of the Vail platform in your hands. FreeClimb simplifies the process of creating applications that can use a full range of telephony features without requiring specialized or on-site telephony equipment. Using the FreeClimb REST API to write applications is easy! You have the option to use the language of your choice or hit the API directly. Your application can execute a command by issuing a RESTful request to the FreeClimb API. The base URL to send HTTP requests to the FreeClimb REST API is: /apiserver. FreeClimb authenticates and processes your request.
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: support@freeclimb.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+from pydantic import BaseModel, ConfigDict, Field, StrictStr
+from typing import Any, ClassVar, Dict, List, Optional
+from pydantic import StrictStr
+from typing import Optional, Set
+from typing_extensions import Self
+
+
+class CallResultAllOfSubresourceUris(
+ BaseModel, populate_by_name=True, validate_assignment=True, protected_namespaces=()
+):
+ """
+ The list of subresources for this Call. These include things like logs and recordings associated with the Call.
+ """ # noqa: E501
+
+ logs: Optional[StrictStr] = Field(
+ default=None, description="The URI for the logs associated with this Call."
+ )
+ recordings: Optional[StrictStr] = Field(
+ default=None,
+ description="The URI for the recordings associated with this Call.",
+ )
+
+ __properties: ClassVar[List[str]] = ["logs", "recordings"]
+
+ def to_str(self) -> str:
+ """Returns the string representation of the model using alias"""
+ return pprint.pformat(self.model_dump(by_alias=True))
+
+ def to_json(self) -> str:
+ """Returns the JSON representation of the model using alias"""
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
+ return json.dumps(self.to_dict())
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Optional[Self]:
+ """Create an instance of CallResultAllOfSubresourceUris from a JSON string"""
+ return cls.from_dict(json.loads(json_str))
+
+ def to_dict(self) -> Dict[str, Any]:
+ """Return the dictionary representation of the model using alias.
+
+ This has the following differences from calling pydantic's
+ `self.model_dump(by_alias=True)`:
+
+ * `None` is only added to the output dict for nullable fields that
+ were set at model initialization. Other fields with value `None`
+ are ignored.
+ """
+ excluded_fields: Set[str] = set([])
+
+ _dict = self.model_dump(
+ by_alias=True,
+ exclude=excluded_fields,
+ exclude_none=True,
+ )
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
+ """Create an instance of CallResultAllOfSubresourceUris from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return cls.model_validate(obj)
+
+ _obj = cls.model_validate(
+ {"logs": obj.get("logs"), "recordings": obj.get("recordings")}
+ )
+ return _obj
diff --git a/freeclimb/models/queue_result.py b/freeclimb/models/queue_result.py
index dfbe367..61413b0 100644
--- a/freeclimb/models/queue_result.py
+++ b/freeclimb/models/queue_result.py
@@ -77,6 +77,11 @@ class QueueResult(
description="The average amount of time (in seconds) for a call to be removed from the queue.",
alias="averageQueueRemovalTime",
)
+ average_wait_time: Optional[StrictInt] = Field(
+ default=None,
+ description="The average wait time (in seconds) of all Calls in the Queue.",
+ alias="averageWaitTime",
+ )
subresource_uris: Optional[Dict[str, Any]] = Field(
default=None,
description="List of subresources for this Queue (which includes Queue members).",
@@ -94,6 +99,7 @@ class QueueResult(
"maxSize",
"currentSize",
"averageQueueRemovalTime",
+ "averageWaitTime",
"subresourceUris",
]
@@ -161,6 +167,14 @@ def to_dict(self) -> Dict[str, Any]:
):
_dict["averageQueueRemovalTime"] = None
+ # set to None if average_wait_time (nullable) is None
+ # and model_fields_set contains the field
+ if (
+ self.average_wait_time is None
+ and "average_wait_time" in self.model_fields_set
+ ):
+ _dict["averageWaitTime"] = None
+
# set to None if subresource_uris (nullable) is None
# and model_fields_set contains the field
if (
@@ -192,6 +206,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
"maxSize": obj.get("maxSize"),
"currentSize": obj.get("currentSize"),
"averageQueueRemovalTime": obj.get("averageQueueRemovalTime"),
+ "averageWaitTime": obj.get("averageWaitTime"),
"subresourceUris": obj.get("subresourceUris"),
}
)
diff --git a/openapi.json b/openapi.json
index d89e37c..c759411 100644
--- a/openapi.json
+++ b/openapi.json
@@ -2935,6 +2935,11 @@
"description": "The phone number, in E.164 format (+ country code and phone number: +18003608245).",
"nullable": true
},
+ "alias": {
+ "type": "string",
+ "description": "A nicely-formatted version of the phone number.",
+ "nullable": true
+ },
"voiceEnabled": {
"type": "boolean",
"description": "Typically set to true for all numbers.",
@@ -3109,6 +3114,21 @@
}
}
},
+ "CallResultAllOfSubresourceUris": {
+ "type": "object",
+ "description": "The list of subresources for this Call. These include things like logs and recordings associated with the Call.",
+ "nullable": true,
+ "properties": {
+ "logs": {
+ "type": "string",
+ "description": "The URI for the logs associated with this Call."
+ },
+ "recordings": {
+ "type": "string",
+ "description": "The URI for the recordings associated with this Call."
+ }
+ }
+ },
"CallResult": {
"allOf": [
{
@@ -3117,6 +3137,18 @@
{
"type": "object",
"properties": {
+ "dateCreatedISO": {
+ "type": "string",
+ "format": "date-time",
+ "description": "The date that this resource was created in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z).",
+ "nullable": true
+ },
+ "dateUpdatedISO": {
+ "type": "string",
+ "format": "date-time",
+ "description": "The date that this resource was last updated in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z).",
+ "nullable": true
+ },
"callId": {
"type": "string",
"description": "String that uniquely identifies this Call resource.",
@@ -3155,16 +3187,34 @@
"description": "Start time of the Call (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call has not yet been dialed.",
"nullable": true
},
+ "startTimeISO": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Start time of the Call in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). Empty if the Call has not yet been dialed.",
+ "nullable": true
+ },
"connectTime": {
"type": "string",
"description": "Time the Call was answered (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call has not yet been dialed.",
"nullable": true
},
+ "connectTimeISO": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Time the Call was answered in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). Empty if the Call has not yet been dialed.",
+ "nullable": true
+ },
"endTime": {
"type": "string",
"description": "End time of the Call (GMT) in RFC 1123 format (e.g., Mon, 15 Jun 2009 20:45:30 GMT). Empty if the Call did not complete successfully.",
"nullable": true
},
+ "endTimeISO": {
+ "type": "string",
+ "format": "date-time",
+ "description": "End time of the Call in ISO 8601 format (e.g., 2022-01-01T00:00:00.000Z). Empty if the Call did not complete successfully.",
+ "nullable": true
+ },
"duration": {
"type": "integer",
"description": "Total length of the Call in seconds. Measures time between startTime and endTime. This value is empty for busy, failed, unanswered or ongoing Calls.",
@@ -3175,17 +3225,30 @@
"description": "Length of time that the Call was connected in seconds. Measures time between connectTime and endTime. This value is empty for busy, failed, unanswered or ongoing Calls.",
"nullable": true
},
+ "audioStreamDuration": {
+ "type": "integer",
+ "description": "Length of time that the Call used the audio stream in seconds. This value is empty or zero when the Call did not use the audio stream.",
+ "nullable": true
+ },
"direction": {
"$ref": "#/components/schemas/CallDirection"
},
"answeredBy": {
"$ref": "#/components/schemas/AnsweredBy"
},
- "subresourceUris": {
- "type": "object",
- "description": "The list of subresources for this Call. These include things like logs and recordings associated with the Call.",
+ "callerName": {
+ "type": "string",
+ "description": "The caller ID name (CNAM) for this Call. Empty if unavailable.",
"nullable": true
},
+ "webRTC": {
+ "type": "boolean",
+ "description": "Indicates whether this Call was initiated via WebRTC.",
+ "nullable": true
+ },
+ "subresourceUris": {
+ "$ref": "#/components/schemas/CallResultAllOfSubresourceUris"
+ },
"applicationId": {
"type": "string",
"description": "ApplicationId associated with the Call.",
@@ -3853,6 +3916,11 @@
"description": "The average amount of time (in seconds) for a call to be removed from the queue.",
"nullable": true
},
+ "averageWaitTime": {
+ "type": "integer",
+ "description": "The average wait time (in seconds) of all Calls in the Queue.",
+ "nullable": true
+ },
"subresourceUris": {
"type": "object",
"description": "List of subresources for this Queue (which includes Queue members).",
@@ -6003,6 +6071,16 @@
"summary": "List Calls",
"operationId": "list-calls",
"parameters": [
+ {
+ "name": "usedAudioStream",
+ "in": "query",
+ "description": "If usedAudioStream is set to true then all calls that have a audioStreamDuration > 0 will be returned ",
+ "required": false,
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
+ },
{
"name": "active",
"in": "query",
@@ -6102,6 +6180,16 @@
"schema": {
"type": "integer"
}
+ },
+ {
+ "name": "webRTC",
+ "in": "query",
+ "description": "Only show Calls that were originated via WebRTC.",
+ "required": false,
+ "schema": {
+ "type": "boolean",
+ "default": false
+ }
}
],
"deprecated": false,
@@ -6145,6 +6233,24 @@
"schema": {
"type": "string"
}
+ },
+ {
+ "name": "startTime",
+ "in": "query",
+ "description": "Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss.",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "endTime",
+ "in": "query",
+ "description": "Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss.",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
}
],
"deprecated": false,
@@ -6619,6 +6725,24 @@
"schema": {
"type": "string"
}
+ },
+ {
+ "name": "startTime",
+ "in": "query",
+ "description": "Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss.",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "endTime",
+ "in": "query",
+ "description": "Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss.",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
}
],
"responses": {
@@ -6766,7 +6890,7 @@
},
"deprecated": false,
"responses": {
- "200": {
+ "201": {
"description": "Successfuly created queue",
"content": {
"application/json": {
@@ -7057,6 +7181,24 @@
},
{
"$ref": "#/components/parameters/AccountId"
+ },
+ {
+ "name": "startTime",
+ "in": "query",
+ "description": "Only show Recordings created at or after this time, given as YYYY-MM-DD hh:mm:ss.",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "endTime",
+ "in": "query",
+ "description": "Only show Recordings created at or before this time, given as YYYY-MM-DD hh:mm:ss.",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
}
],
"responses": {
diff --git a/package.json b/package.json
index ad7a5a6..8677816 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"dependencies": {
"@stoplight/json": "3.21.7",
"@stoplight/prism-cli": "5.14.2",
- "fast-xml-parser": "^4.5.0",
+ "fast-xml-parser": "^5.3.8",
"jsonpath-plus": "^10.3.0"
},
"resolutions": {
diff --git a/pyproject.toml b/pyproject.toml
index 0904b06..f359150 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "freeclimb"
-version = "5.3.0"
+version = "5.3.1"
description = "FreeClimb API"
authors = ["FreeClimb API Support "]
license = "NoLicense"
diff --git a/setup.py b/setup.py
index 9680322..d487924 100644
--- a/setup.py
+++ b/setup.py
@@ -22,7 +22,7 @@
# prerequisite: setuptools
# http://pypi.python.org/pypi/setuptools
NAME = "FreeClimb"
-VERSION = "5.3.0"
+VERSION = "5.3.1"
PYTHON_REQUIRES = ">= 3.8"
REQUIRES = [
"urllib3 >= 1.25.3, < 3.0.0",
diff --git a/test/api/test_default_api.py b/test/api/test_default_api.py
index c8d3ada..d17526c 100644
--- a/test/api/test_default_api.py
+++ b/test/api/test_default_api.py
@@ -77,6 +77,7 @@
from freeclimb.models.export_request import ExportRequest
from freeclimb.models.export_result import ExportResult
from freeclimb.models.export_result_output import ExportResultOutput
+from freeclimb.models.export_result_output import ExportResultOutput
from freeclimb.models.create_blob_request import CreateBlobRequest
from freeclimb.models.modify_blob_request import ModifyBlobRequest
from freeclimb.models.replace_blob_request import ReplaceBlobRequest
@@ -686,8 +687,15 @@ def test_list_call_recordings(self) -> None:
date_created = date_created_list_call_recordings_test_value
+ start_time = start_time_list_call_recordings_test_value
+
+ end_time = end_time_list_call_recordings_test_value
+
api_response = self.api.list_call_recordings(
- call_id=call_id, date_created=date_created
+ call_id=call_id,
+ date_created=date_created,
+ start_time=start_time,
+ end_time=end_time,
)
assert isinstance(api_response, RecordingList)
@@ -698,6 +706,8 @@ def test_list_calls(self) -> None:
List Calls
"""
+ used_audio_stream = used_audio_stream_list_calls_test_value
+
active = active_list_calls_test_value
to = to_list_calls_test_value
@@ -718,7 +728,10 @@ def test_list_calls(self) -> None:
risk_score_max = risk_score_max_list_calls_test_value
+ web_rtc = web_rtc_list_calls_test_value
+
api_response = self.api.list_calls(
+ used_audio_stream=used_audio_stream,
active=active,
to=to,
var_from=var_from,
@@ -729,6 +742,7 @@ def test_list_calls(self) -> None:
application_id=application_id,
risk_score_min=risk_score_min,
risk_score_max=risk_score_max,
+ web_rtc=web_rtc,
)
assert isinstance(api_response, CallList)
@@ -745,8 +759,16 @@ def test_list_conference_recordings(self) -> None:
date_created = date_created_list_conference_recordings_test_value
+ start_time = start_time_list_conference_recordings_test_value
+
+ end_time = end_time_list_conference_recordings_test_value
+
api_response = self.api.list_conference_recordings(
- conference_id=conference_id, call_id=call_id, date_created=date_created
+ conference_id=conference_id,
+ call_id=call_id,
+ date_created=date_created,
+ start_time=start_time,
+ end_time=end_time,
)
assert isinstance(api_response, RecordingList)
@@ -890,8 +912,16 @@ def test_list_recordings(self) -> None:
date_created = date_created_list_recordings_test_value
+ start_time = start_time_list_recordings_test_value
+
+ end_time = end_time_list_recordings_test_value
+
api_response = self.api.list_recordings(
- call_id=call_id, conference_id=conference_id, date_created=date_created
+ call_id=call_id,
+ conference_id=conference_id,
+ date_created=date_created,
+ start_time=start_time,
+ end_time=end_time,
)
assert isinstance(api_response, RecordingList)
@@ -1329,9 +1359,14 @@ def test_list_call_recordings_get_next_page(self):
call_id = call_id_list_call_recordings_test_value
date_created = date_created_list_call_recordings_test_value
+ start_time = start_time_list_call_recordings_test_value
+ end_time = end_time_list_call_recordings_test_value
api_response = self.api.list_call_recordings(
- call_id=call_id, date_created=date_created
+ call_id=call_id,
+ date_created=date_created,
+ start_time=start_time,
+ end_time=end_time,
)
api_response.next_page_uri = (
"/Accounts/{accountId}/Calls/{callId}/Recordings?cursor=1"
@@ -1346,6 +1381,7 @@ def test_list_calls_get_next_page(self):
Get Next Page for List Calls # noqa: E501
"""
+ used_audio_stream = used_audio_stream_list_calls_test_value
active = active_list_calls_test_value
to = to_list_calls_test_value
var_from = var_from_list_calls_test_value
@@ -1356,8 +1392,10 @@ def test_list_calls_get_next_page(self):
application_id = application_id_list_calls_test_value
risk_score_min = risk_score_min_list_calls_test_value
risk_score_max = risk_score_max_list_calls_test_value
+ web_rtc = web_rtc_list_calls_test_value
api_response = self.api.list_calls(
+ used_audio_stream=used_audio_stream,
active=active,
to=to,
var_from=var_from,
@@ -1368,6 +1406,7 @@ def test_list_calls_get_next_page(self):
application_id=application_id,
risk_score_min=risk_score_min,
risk_score_max=risk_score_max,
+ web_rtc=web_rtc,
)
api_response.next_page_uri = "/Accounts/{accountId}/Calls?cursor=1"
next_page_api_response = self.api.get_next_page(api_response)
@@ -1383,9 +1422,15 @@ def test_list_conference_recordings_get_next_page(self):
conference_id = conference_id_list_conference_recordings_test_value
call_id = call_id_list_conference_recordings_test_value
date_created = date_created_list_conference_recordings_test_value
+ start_time = start_time_list_conference_recordings_test_value
+ end_time = end_time_list_conference_recordings_test_value
api_response = self.api.list_conference_recordings(
- conference_id=conference_id, call_id=call_id, date_created=date_created
+ conference_id=conference_id,
+ call_id=call_id,
+ date_created=date_created,
+ start_time=start_time,
+ end_time=end_time,
)
api_response.next_page_uri = (
"/Accounts/{accountId}/Conferences/{conferenceId}/Recordings?cursor=1"
@@ -1526,9 +1571,15 @@ def test_list_recordings_get_next_page(self):
call_id = call_id_list_recordings_test_value
conference_id = conference_id_list_recordings_test_value
date_created = date_created_list_recordings_test_value
+ start_time = start_time_list_recordings_test_value
+ end_time = end_time_list_recordings_test_value
api_response = self.api.list_recordings(
- call_id=call_id, conference_id=conference_id, date_created=date_created
+ call_id=call_id,
+ conference_id=conference_id,
+ date_created=date_created,
+ start_time=start_time,
+ end_time=end_time,
)
api_response.next_page_uri = "/Accounts/{accountId}/Recordings?cursor=1"
next_page_api_response = self.api.get_next_page(api_response)
@@ -1915,5 +1966,21 @@ def test_list_sms_messages_get_next_page(self):
replace_blob_request_replace_blob_test_value = ReplaceBlobRequest(blob={})
+start_time_list_call_recordings_test_value = "start_time_test_value"
+
+end_time_list_call_recordings_test_value = "end_time_test_value"
+
+used_audio_stream_list_calls_test_value = True
+
+start_time_list_conference_recordings_test_value = "start_time_test_value"
+
+end_time_list_conference_recordings_test_value = "end_time_test_value"
+
+start_time_list_recordings_test_value = "start_time_test_value"
+
+end_time_list_recordings_test_value = "end_time_test_value"
+
+web_rtc_list_calls_test_value = True
+
if __name__ == "__main__":
unittest.main()
diff --git a/test/models/test_available_number.py b/test/models/test_available_number.py
index 4eba6f2..e2b400c 100644
--- a/test/models/test_available_number.py
+++ b/test/models/test_available_number.py
@@ -51,6 +51,12 @@ def test_phone_number(self):
self.model.phone_number = "TEST_STRING"
assert self.model.phone_number == "TEST_STRING"
+ def test_alias(self):
+ """Test AvailableNumber.alias"""
+
+ self.model.alias = "TEST_STRING"
+ assert self.model.alias == "TEST_STRING"
+
def test_region(self):
"""Test AvailableNumber.region"""
diff --git a/test/models/test_call_result.py b/test/models/test_call_result.py
index 4a1aeb0..8bd332d 100644
--- a/test/models/test_call_result.py
+++ b/test/models/test_call_result.py
@@ -50,6 +50,16 @@ def test_revision(self):
self.model.revision = 1
assert self.model.revision == 1
+ def test_date_created_iso(self):
+ """Test CallResult.date_created_iso"""
+ self.model.date_created_iso = datetime.fromtimestamp(1691592436)
+ assert self.model.date_created_iso == datetime.fromtimestamp(1691592436)
+
+ def test_date_updated_iso(self):
+ """Test CallResult.date_updated_iso"""
+ self.model.date_updated_iso = datetime.fromtimestamp(1691592436)
+ assert self.model.date_updated_iso == datetime.fromtimestamp(1691592436)
+
def test_call_id(self):
"""Test CallResult.call_id"""
@@ -111,18 +121,33 @@ def test_start_time(self):
self.model.start_time = "TEST_STRING"
assert self.model.start_time == "TEST_STRING"
+ def test_start_time_iso(self):
+ """Test CallResult.start_time_iso"""
+ self.model.start_time_iso = datetime.fromtimestamp(1691592436)
+ assert self.model.start_time_iso == datetime.fromtimestamp(1691592436)
+
def test_connect_time(self):
"""Test CallResult.connect_time"""
self.model.connect_time = "TEST_STRING"
assert self.model.connect_time == "TEST_STRING"
+ def test_connect_time_iso(self):
+ """Test CallResult.connect_time_iso"""
+ self.model.connect_time_iso = datetime.fromtimestamp(1691592436)
+ assert self.model.connect_time_iso == datetime.fromtimestamp(1691592436)
+
def test_end_time(self):
"""Test CallResult.end_time"""
self.model.end_time = "TEST_STRING"
assert self.model.end_time == "TEST_STRING"
+ def test_end_time_iso(self):
+ """Test CallResult.end_time_iso"""
+ self.model.end_time_iso = datetime.fromtimestamp(1691592436)
+ assert self.model.end_time_iso == datetime.fromtimestamp(1691592436)
+
def test_duration(self):
"""Test CallResult.duration"""
self.model.duration = 1
@@ -133,6 +158,11 @@ def test_connect_duration(self):
self.model.connect_duration = 1
assert self.model.connect_duration == 1
+ def test_audio_stream_duration(self):
+ """Test CallResult.audio_stream_duration"""
+ self.model.audio_stream_duration = 1
+ assert self.model.audio_stream_duration == 1
+
def test_direction(self):
"""Test CallResult.direction"""
self.model.direction = CallDirection.INBOUND
@@ -149,9 +179,23 @@ def test_answered_by(self):
self.model.answered_by = AnsweredBy.MACHINE
assert self.model.answered_by == AnsweredBy.MACHINE
+ def test_caller_name(self):
+ """Test CallResult.caller_name"""
+
+ self.model.caller_name = "TEST_STRING"
+ assert self.model.caller_name == "TEST_STRING"
+
+ def test_web_rtc(self):
+ """Test CallResult.web_rtc"""
+ self.model.web_rtc = False
+ assert self.model.web_rtc == False
+
def test_subresource_uris(self):
"""Test CallResult.subresource_uris"""
- object = {}
+ object = freeclimb.models.call_result_all_of_subresource_uris.CallResultAllOfSubresourceUris(
+ logs="",
+ recordings="",
+ )
self.model.subresource_uris = object
assert self.model.subresource_uris == object
diff --git a/test/models/test_call_result_all_of_subresource_uris.py b/test/models/test_call_result_all_of_subresource_uris.py
new file mode 100644
index 0000000..bea0887
--- /dev/null
+++ b/test/models/test_call_result_all_of_subresource_uris.py
@@ -0,0 +1,46 @@
+# coding: utf-8
+
+"""
+ FreeClimb API
+
+ FreeClimb is a cloud-based application programming interface (API) that puts the power of the Vail platform in your hands. FreeClimb simplifies the process of creating applications that can use a full range of telephony features without requiring specialized or on-site telephony equipment. Using the FreeClimb REST API to write applications is easy! You have the option to use the language of your choice or hit the API directly. Your application can execute a command by issuing a RESTful request to the FreeClimb API. The base URL to send HTTP requests to the FreeClimb REST API is: /apiserver. FreeClimb authenticates and processes your request.
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: support@freeclimb.com
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+import unittest
+import pydantic_core
+from datetime import datetime
+import freeclimb
+from freeclimb import *
+from freeclimb.models.call_result_all_of_subresource_uris import (
+ CallResultAllOfSubresourceUris,
+)
+
+
+class TestCallResultAllOfSubresourceUris(unittest.TestCase):
+ """CallResultAllOfSubresourceUris unit test stubs"""
+
+ def setUp(self):
+ self.model = CallResultAllOfSubresourceUris()
+
+ def test_logs(self):
+ """Test CallResultAllOfSubresourceUris.logs"""
+
+ self.model.logs = "TEST_STRING"
+ assert self.model.logs == "TEST_STRING"
+
+ def test_recordings(self):
+ """Test CallResultAllOfSubresourceUris.recordings"""
+
+ self.model.recordings = "TEST_STRING"
+ assert self.model.recordings == "TEST_STRING"
+
+
+if __name__ == "__main__":
+ unittest.main()
diff --git a/test/models/test_queue_result.py b/test/models/test_queue_result.py
index a66efb6..2ec8c65 100644
--- a/test/models/test_queue_result.py
+++ b/test/models/test_queue_result.py
@@ -83,6 +83,11 @@ def test_average_queue_removal_time(self):
self.model.average_queue_removal_time = 1
assert self.model.average_queue_removal_time == 1
+ def test_average_wait_time(self):
+ """Test QueueResult.average_wait_time"""
+ self.model.average_wait_time = 1
+ assert self.model.average_wait_time == 1
+
def test_subresource_uris(self):
"""Test QueueResult.subresource_uris"""
object = {}
diff --git a/yarn.lock b/yarn.lock
index 577e70c..e844a6a 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -528,6 +528,11 @@ fast-uri@^3.0.1:
resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa"
integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==
+fast-xml-builder@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fast-xml-builder/-/fast-xml-builder-1.0.0.tgz#a485d7e8381f1db983cf006f849d1066e2935241"
+ integrity sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ==
+
fast-xml-parser@^4.2.0:
version "4.5.3"
resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz#c54d6b35aa0f23dc1ea60b6c884340c006dc6efb"
@@ -535,12 +540,13 @@ fast-xml-parser@^4.2.0:
dependencies:
strnum "^1.1.1"
-fast-xml-parser@^4.5.0:
- version "4.5.1"
- resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.1.tgz#a7e665ff79b7919100a5202f23984b6150f9b31e"
- integrity sha512-y655CeyUQ+jj7KBbYMc4FG01V8ZQqjN+gDYGJ50RtfsUB8iG9AmwmwoAgeKLJdmueKKMrH1RJ7yXHTSoczdv5w==
+fast-xml-parser@^5.3.8:
+ version "5.4.2"
+ resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.4.2.tgz#7fc66463b59260b0c5fd57edf46148a418bde68b"
+ integrity sha512-pw/6pIl4k0CSpElPEJhDppLzaixDEuWui2CUQQBH/ECDf7+y6YwA4Gf7Tyb0Rfe4DIMuZipYj4AEL0nACKglvQ==
dependencies:
- strnum "^1.0.5"
+ fast-xml-builder "^1.0.0"
+ strnum "^2.1.2"
fastestsmallesttextencoderdecoder@^1.0.22:
version "1.0.22"
@@ -1122,11 +1128,16 @@ strip-bom@^3.0.0:
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
-strnum@^1.0.5, strnum@^1.1.1:
+strnum@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4"
integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==
+strnum@^2.1.2:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.2.0.tgz#8b582b637e4621f62ff714493e0ce30846f903a6"
+ integrity sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==
+
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"