From d7e4e2fe4434745856785971475241ccb0f92a46 Mon Sep 17 00:00:00 2001
From: AJ Rice <53190766+ajrice6713@users.noreply.github.com>
Date: Mon, 29 Aug 2022 16:28:17 -0400
Subject: [PATCH 1/7] DX-2779 Regenerate SDK using updated `bandwidth.json`
---
.openapi-generator-ignore | 5 +
.openapi-generator/FILES | 83 +-
README.md | 42 +-
bandwidth.json | 2271 ++++++++++++-----
bandwidth/api/messages_api.py | 1 +
bandwidth/api/phone_number_lookup_api.py | 2 +-
bandwidth/api/sessions_api.py | 4 +-
bandwidth/model/answer_callback.py | 322 +++
bandwidth/model/bridge_complete_callback.py | 330 +++
.../model/bridge_target_complete_callback.py | 318 +++
bandwidth/model/call_recording_metadata.py | 64 +-
.../model/conference_completed_callback.py | 280 ++
.../model/conference_created_callback.py | 280 ++
bandwidth/model/conference_member.py | 8 +-
.../model/conference_member_exit_callback.py | 292 +++
.../model/conference_member_join_callback.py | 292 +++
...conference_recording_available_callback.py | 322 +++
.../model/conference_recording_metadata.py | 12 +-
.../model/conference_redirect_callback.py | 280 ++
bandwidth/model/create_call.py | 37 +-
bandwidth/model/create_call_response.py | 28 +-
bandwidth/model/create_lookup_response.py | 4 +-
bandwidth/model/device_api_version_enum.py | 13 +-
bandwidth/model/disconenct_callback.py | 334 +++
bandwidth/model/diversion.py | 28 +-
bandwidth/model/dtmf_callback.py | 334 +++
bandwidth/model/gather_callback.py | 338 +++
bandwidth/model/initiate_callback.py | 318 +++
bandwidth/model/list_message_item.py | 6 +-
.../machine_detection_complete_callback.py | 322 +++
.../model/machine_detection_configuration.py | 70 +-
bandwidth/model/password.py | 290 +++
.../model/recording_available_callback.py | 356 +++
.../model/recording_complete_callback.py | 356 +++
bandwidth/model/redirect_callback.py | 330 +++
bandwidth/model/stir_shaken.py | 272 ++
bandwidth/model/subscriptions.py | 8 +-
bandwidth/model/transcribe_recording.py | 20 +-
.../model/transcription_available_callback.py | 354 +++
bandwidth/model/transcription_metadata.py | 4 +-
bandwidth/model/transfer_answer_callback.py | 326 +++
bandwidth/model/transfer_complete_callback.py | 338 +++
.../model/transfer_disconnect_callback.py | 346 +++
bandwidth/model/update_call.py | 28 +-
bandwidth/model/update_conference.py | 28 +-
bandwidth/model/username.py | 290 +++
bandwidth/models/__init__.py | 26 +-
docs/AnswerCallback.md | 26 +
docs/BridgeCompleteCallback.md | 28 +
docs/BridgeTargetCompleteCallback.md | 25 +
docs/CallRecordingMetadata.md | 28 +-
docs/CallsApi.md | 42 +-
docs/ConferenceCompletedCallback.md | 17 +
docs/ConferenceCreatedCallback.md | 17 +
docs/ConferenceMember.md | 4 +-
docs/ConferenceMemberExitCallback.md | 20 +
docs/ConferenceMemberJoinCallback.md | 20 +
docs/ConferenceRecordingAvailableCallback.md | 26 +
docs/ConferenceRecordingMetadata.md | 6 +-
docs/ConferenceRedirectCallback.md | 17 +
docs/ConferencesApi.md | 8 +-
docs/CreateCall.md | 8 +-
docs/CreateCallResponse.md | 8 +-
docs/CreateLookupResponse.md | 2 +-
docs/DeviceApiVersionEnum.md | 2 +-
docs/DisconenctCallback.md | 29 +
docs/Diversion.md | 11 +-
docs/DtmfCallback.md | 29 +
docs/GatherCallback.md | 30 +
docs/InitiateCallback.md | 24 +
docs/ListMessageItem.md | 2 +-
docs/MachineDetectionCompleteCallback.md | 26 +
docs/MachineDetectionConfiguration.md | 20 +-
docs/MessagesApi.md | 1 +
docs/Password.md | 12 +
docs/PhoneNumberLookupApi.md | 4 +-
docs/RecordingAvailableCallback.md | 34 +
docs/RecordingCompleteCallback.md | 34 +
docs/RecordingsApi.md | 6 +-
docs/RedirectCallback.md | 28 +
docs/SessionsApi.md | 8 +-
docs/StirShaken.md | 14 +
docs/Subscriptions.md | 4 +-
docs/TranscribeRecording.md | 6 +-
docs/TranscriptionAvailableCallback.md | 33 +
docs/TranscriptionMetadata.md | 2 +-
docs/TransferAnswerCallback.md | 27 +
docs/TransferCompleteCallback.md | 30 +
docs/TransferDisconnectCallback.md | 32 +
docs/UpdateCall.md | 8 +-
docs/UpdateConference.md | 8 +-
docs/Username.md | 12 +
92 files changed, 10270 insertions(+), 920 deletions(-)
create mode 100644 bandwidth/model/answer_callback.py
create mode 100644 bandwidth/model/bridge_complete_callback.py
create mode 100644 bandwidth/model/bridge_target_complete_callback.py
create mode 100644 bandwidth/model/conference_completed_callback.py
create mode 100644 bandwidth/model/conference_created_callback.py
create mode 100644 bandwidth/model/conference_member_exit_callback.py
create mode 100644 bandwidth/model/conference_member_join_callback.py
create mode 100644 bandwidth/model/conference_recording_available_callback.py
create mode 100644 bandwidth/model/conference_redirect_callback.py
create mode 100644 bandwidth/model/disconenct_callback.py
create mode 100644 bandwidth/model/dtmf_callback.py
create mode 100644 bandwidth/model/gather_callback.py
create mode 100644 bandwidth/model/initiate_callback.py
create mode 100644 bandwidth/model/machine_detection_complete_callback.py
create mode 100644 bandwidth/model/password.py
create mode 100644 bandwidth/model/recording_available_callback.py
create mode 100644 bandwidth/model/recording_complete_callback.py
create mode 100644 bandwidth/model/redirect_callback.py
create mode 100644 bandwidth/model/stir_shaken.py
create mode 100644 bandwidth/model/transcription_available_callback.py
create mode 100644 bandwidth/model/transfer_answer_callback.py
create mode 100644 bandwidth/model/transfer_complete_callback.py
create mode 100644 bandwidth/model/transfer_disconnect_callback.py
create mode 100644 bandwidth/model/username.py
create mode 100644 docs/AnswerCallback.md
create mode 100644 docs/BridgeCompleteCallback.md
create mode 100644 docs/BridgeTargetCompleteCallback.md
create mode 100644 docs/ConferenceCompletedCallback.md
create mode 100644 docs/ConferenceCreatedCallback.md
create mode 100644 docs/ConferenceMemberExitCallback.md
create mode 100644 docs/ConferenceMemberJoinCallback.md
create mode 100644 docs/ConferenceRecordingAvailableCallback.md
create mode 100644 docs/ConferenceRedirectCallback.md
create mode 100644 docs/DisconenctCallback.md
create mode 100644 docs/DtmfCallback.md
create mode 100644 docs/GatherCallback.md
create mode 100644 docs/InitiateCallback.md
create mode 100644 docs/MachineDetectionCompleteCallback.md
create mode 100644 docs/Password.md
create mode 100644 docs/RecordingAvailableCallback.md
create mode 100644 docs/RecordingCompleteCallback.md
create mode 100644 docs/RedirectCallback.md
create mode 100644 docs/StirShaken.md
create mode 100644 docs/TranscriptionAvailableCallback.md
create mode 100644 docs/TransferAnswerCallback.md
create mode 100644 docs/TransferCompleteCallback.md
create mode 100644 docs/TransferDisconnectCallback.md
create mode 100644 docs/Username.md
diff --git a/.openapi-generator-ignore b/.openapi-generator-ignore
index 7484ee59..278b5fed 100644
--- a/.openapi-generator-ignore
+++ b/.openapi-generator-ignore
@@ -21,3 +21,8 @@
#docs/*.md
# Then explicitly reverse the ignore rule for a single file:
#!docs/README.md
+
+.gitignore
+setup.cfg
+setup.py
+*requirements.txt
diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES
index ea0a37b2..db18adbb 100644
--- a/.openapi-generator/FILES
+++ b/.openapi-generator/FILES
@@ -1,4 +1,3 @@
-.gitignore
.gitlab-ci.yml
.travis.yml
README.md
@@ -20,7 +19,9 @@ bandwidth/configuration.py
bandwidth/exceptions.py
bandwidth/model/__init__.py
bandwidth/model/account_statistics.py
-bandwidth/model/call_callback.py
+bandwidth/model/answer_callback.py
+bandwidth/model/bridge_complete_callback.py
+bandwidth/model/bridge_target_complete_callback.py
bandwidth/model/call_direction_enum.py
bandwidth/model/call_recording_metadata.py
bandwidth/model/call_state.py
@@ -28,9 +29,14 @@ bandwidth/model/call_state_enum.py
bandwidth/model/callback_method_enum.py
bandwidth/model/code_request.py
bandwidth/model/conference.py
-bandwidth/model/conference_callback.py
+bandwidth/model/conference_completed_callback.py
+bandwidth/model/conference_created_callback.py
bandwidth/model/conference_member.py
+bandwidth/model/conference_member_exit_callback.py
+bandwidth/model/conference_member_join_callback.py
+bandwidth/model/conference_recording_available_callback.py
bandwidth/model/conference_recording_metadata.py
+bandwidth/model/conference_redirect_callback.py
bandwidth/model/conference_state_enum.py
bandwidth/model/create_call.py
bandwidth/model/create_call_response.py
@@ -40,16 +46,21 @@ bandwidth/model/create_participant_request.py
bandwidth/model/create_participant_response.py
bandwidth/model/deferred_result.py
bandwidth/model/device_api_version_enum.py
+bandwidth/model/disconenct_callback.py
bandwidth/model/diversion.py
+bandwidth/model/dtmf_callback.py
bandwidth/model/field_error.py
bandwidth/model/file_format_enum.py
bandwidth/model/forbidden_request.py
+bandwidth/model/gather_callback.py
+bandwidth/model/initiate_callback.py
bandwidth/model/list_message_direction_enum.py
bandwidth/model/list_message_item.py
bandwidth/model/lookup_request.py
bandwidth/model/lookup_result.py
bandwidth/model/lookup_status.py
bandwidth/model/lookup_status_enum.py
+bandwidth/model/machine_detection_complete_callback.py
bandwidth/model/machine_detection_configuration.py
bandwidth/model/machine_detection_mode_enum.py
bandwidth/model/media.py
@@ -67,24 +78,34 @@ bandwidth/model/mfa_unauthorized_request_error.py
bandwidth/model/page_info.py
bandwidth/model/participant.py
bandwidth/model/participant_subscription.py
+bandwidth/model/password.py
bandwidth/model/priority_enum.py
bandwidth/model/publish_permissions_enum.py
+bandwidth/model/recording_available_callback.py
+bandwidth/model/recording_complete_callback.py
bandwidth/model/recording_state_enum.py
+bandwidth/model/redirect_callback.py
bandwidth/model/redirect_method_enum.py
bandwidth/model/request_error.py
bandwidth/model/session.py
+bandwidth/model/stir_shaken.py
bandwidth/model/subscriptions.py
bandwidth/model/tag.py
bandwidth/model/tn_lookup_request_error.py
bandwidth/model/transcribe_recording.py
bandwidth/model/transcription.py
+bandwidth/model/transcription_available_callback.py
bandwidth/model/transcription_list.py
bandwidth/model/transcription_metadata.py
+bandwidth/model/transfer_answer_callback.py
+bandwidth/model/transfer_complete_callback.py
+bandwidth/model/transfer_disconnect_callback.py
bandwidth/model/unauthorized_request.py
bandwidth/model/update_call.py
bandwidth/model/update_call_recording.py
bandwidth/model/update_conference.py
bandwidth/model/update_conference_member.py
+bandwidth/model/username.py
bandwidth/model/verify_code_request.py
bandwidth/model/verify_code_response.py
bandwidth/model/voice_api_error.py
@@ -93,7 +114,9 @@ bandwidth/model_utils.py
bandwidth/models/__init__.py
bandwidth/rest.py
docs/AccountStatistics.md
-docs/CallCallback.md
+docs/AnswerCallback.md
+docs/BridgeCompleteCallback.md
+docs/BridgeTargetCompleteCallback.md
docs/CallDirectionEnum.md
docs/CallRecordingMetadata.md
docs/CallState.md
@@ -102,9 +125,14 @@ docs/CallbackMethodEnum.md
docs/CallsApi.md
docs/CodeRequest.md
docs/Conference.md
-docs/ConferenceCallback.md
+docs/ConferenceCompletedCallback.md
+docs/ConferenceCreatedCallback.md
docs/ConferenceMember.md
+docs/ConferenceMemberExitCallback.md
+docs/ConferenceMemberJoinCallback.md
+docs/ConferenceRecordingAvailableCallback.md
docs/ConferenceRecordingMetadata.md
+docs/ConferenceRedirectCallback.md
docs/ConferenceStateEnum.md
docs/ConferencesApi.md
docs/CreateCall.md
@@ -115,10 +143,14 @@ docs/CreateParticipantRequest.md
docs/CreateParticipantResponse.md
docs/DeferredResult.md
docs/DeviceApiVersionEnum.md
+docs/DisconenctCallback.md
docs/Diversion.md
+docs/DtmfCallback.md
docs/FieldError.md
docs/FileFormatEnum.md
docs/ForbiddenRequest.md
+docs/GatherCallback.md
+docs/InitiateCallback.md
docs/ListMessageDirectionEnum.md
docs/ListMessageItem.md
docs/LookupRequest.md
@@ -126,6 +158,7 @@ docs/LookupResult.md
docs/LookupStatus.md
docs/LookupStatusEnum.md
docs/MFAApi.md
+docs/MachineDetectionCompleteCallback.md
docs/MachineDetectionConfiguration.md
docs/MachineDetectionModeEnum.md
docs/Media.md
@@ -146,40 +179,48 @@ docs/PageInfo.md
docs/Participant.md
docs/ParticipantSubscription.md
docs/ParticipantsApi.md
+docs/Password.md
docs/PhoneNumberLookupApi.md
docs/PriorityEnum.md
docs/PublishPermissionsEnum.md
+docs/RecordingAvailableCallback.md
+docs/RecordingCompleteCallback.md
docs/RecordingStateEnum.md
docs/RecordingsApi.md
+docs/RedirectCallback.md
docs/RedirectMethodEnum.md
docs/RequestError.md
docs/Session.md
docs/SessionsApi.md
docs/StatisticsApi.md
+docs/StirShaken.md
docs/Subscriptions.md
docs/Tag.md
docs/TnLookupRequestError.md
docs/TranscribeRecording.md
docs/Transcription.md
+docs/TranscriptionAvailableCallback.md
docs/TranscriptionList.md
docs/TranscriptionMetadata.md
+docs/TransferAnswerCallback.md
+docs/TransferCompleteCallback.md
+docs/TransferDisconnectCallback.md
docs/UnauthorizedRequest.md
docs/UpdateCall.md
docs/UpdateCallRecording.md
docs/UpdateConference.md
docs/UpdateConferenceMember.md
+docs/Username.md
docs/VerifyCodeRequest.md
docs/VerifyCodeResponse.md
docs/VoiceApiError.md
docs/VoiceCodeResponse.md
git_push.sh
-requirements.txt
-setup.cfg
-setup.py
-test-requirements.txt
test/__init__.py
test/test_account_statistics.py
-test/test_call_callback.py
+test/test_answer_callback.py
+test/test_bridge_complete_callback.py
+test/test_bridge_target_complete_callback.py
test/test_call_direction_enum.py
test/test_call_recording_metadata.py
test/test_call_state.py
@@ -188,9 +229,14 @@ test/test_callback_method_enum.py
test/test_calls_api.py
test/test_code_request.py
test/test_conference.py
-test/test_conference_callback.py
+test/test_conference_completed_callback.py
+test/test_conference_created_callback.py
test/test_conference_member.py
+test/test_conference_member_exit_callback.py
+test/test_conference_member_join_callback.py
+test/test_conference_recording_available_callback.py
test/test_conference_recording_metadata.py
+test/test_conference_redirect_callback.py
test/test_conference_state_enum.py
test/test_conferences_api.py
test/test_create_call.py
@@ -201,16 +247,21 @@ test/test_create_participant_request.py
test/test_create_participant_response.py
test/test_deferred_result.py
test/test_device_api_version_enum.py
+test/test_disconenct_callback.py
test/test_diversion.py
+test/test_dtmf_callback.py
test/test_field_error.py
test/test_file_format_enum.py
test/test_forbidden_request.py
+test/test_gather_callback.py
+test/test_initiate_callback.py
test/test_list_message_direction_enum.py
test/test_list_message_item.py
test/test_lookup_request.py
test/test_lookup_result.py
test/test_lookup_status.py
test/test_lookup_status_enum.py
+test/test_machine_detection_complete_callback.py
test/test_machine_detection_configuration.py
test/test_machine_detection_mode_enum.py
test/test_media.py
@@ -232,28 +283,38 @@ test/test_page_info.py
test/test_participant.py
test/test_participant_subscription.py
test/test_participants_api.py
+test/test_password.py
test/test_phone_number_lookup_api.py
test/test_priority_enum.py
test/test_publish_permissions_enum.py
+test/test_recording_available_callback.py
+test/test_recording_complete_callback.py
test/test_recording_state_enum.py
test/test_recordings_api.py
+test/test_redirect_callback.py
test/test_redirect_method_enum.py
test/test_request_error.py
test/test_session.py
test/test_sessions_api.py
test/test_statistics_api.py
+test/test_stir_shaken.py
test/test_subscriptions.py
test/test_tag.py
test/test_tn_lookup_request_error.py
test/test_transcribe_recording.py
test/test_transcription.py
+test/test_transcription_available_callback.py
test/test_transcription_list.py
test/test_transcription_metadata.py
+test/test_transfer_answer_callback.py
+test/test_transfer_complete_callback.py
+test/test_transfer_disconnect_callback.py
test/test_unauthorized_request.py
test/test_update_call.py
test/test_update_call_recording.py
test/test_update_conference.py
test/test_update_conference_member.py
+test/test_username.py
test/test_verify_code_request.py
test/test_verify_code_response.py
test/test_voice_api_error.py
diff --git a/README.md b/README.md
index 1270a252..cc3cebe9 100644
--- a/README.md
+++ b/README.md
@@ -86,12 +86,12 @@ with bandwidth.ApiClient(configuration) as api_client:
application_id="1234-qwer-5679-tyui",
answer_url="https://www.myCallbackServer.com/webhooks/answer",
answer_method=CallbackMethodEnum("POST"),
- username="mySecretUsername",
- password="mySecretPassword1!",
+ username=Username("mySecretUsername"),
+ password=Password("mySecretPassword1!"),
answer_fallback_url="https://www.myFallbackServer.com/webhooks/answer",
answer_fallback_method=CallbackMethodEnum("POST"),
- fallback_username="mySecretUsername",
- fallback_password="mySecretPassword1!",
+ fallback_username=Username("mySecretUsername"),
+ fallback_password=Password("mySecretPassword1!"),
disconnect_url="disconnect_url_example",
disconnect_method=CallbackMethodEnum("POST"),
call_timeout=30,
@@ -106,12 +106,12 @@ with bandwidth.ApiClient(configuration) as api_client:
delay_result=False,
callback_url="https://myServer.com/bandwidth/webhooks/machineDetectionComplete",
callback_method=CallbackMethodEnum("POST"),
- username="mySecretUsername",
- password="mySecretPassword1!",
+ username=Username("mySecretUsername"),
+ password=Password("mySecretPassword1!"),
fallback_url="https://myFallbackServer.com/bandwidth/webhooks/machineDetectionComplete",
fallback_method=CallbackMethodEnum("POST"),
- fallback_username="mySecretUsername",
- fallback_password="mySecretPassword1!",
+ fallback_username=Username("mySecretUsername"),
+ fallback_password=Password("mySecretPassword1!"),
),
priority=5,
tag="tag_example",
@@ -182,7 +182,9 @@ Class | Method | HTTP request | Description
## Documentation For Models
- [AccountStatistics](docs/AccountStatistics.md)
- - [CallCallback](docs/CallCallback.md)
+ - [AnswerCallback](docs/AnswerCallback.md)
+ - [BridgeCompleteCallback](docs/BridgeCompleteCallback.md)
+ - [BridgeTargetCompleteCallback](docs/BridgeTargetCompleteCallback.md)
- [CallDirectionEnum](docs/CallDirectionEnum.md)
- [CallRecordingMetadata](docs/CallRecordingMetadata.md)
- [CallState](docs/CallState.md)
@@ -190,9 +192,14 @@ Class | Method | HTTP request | Description
- [CallbackMethodEnum](docs/CallbackMethodEnum.md)
- [CodeRequest](docs/CodeRequest.md)
- [Conference](docs/Conference.md)
- - [ConferenceCallback](docs/ConferenceCallback.md)
+ - [ConferenceCompletedCallback](docs/ConferenceCompletedCallback.md)
+ - [ConferenceCreatedCallback](docs/ConferenceCreatedCallback.md)
- [ConferenceMember](docs/ConferenceMember.md)
+ - [ConferenceMemberExitCallback](docs/ConferenceMemberExitCallback.md)
+ - [ConferenceMemberJoinCallback](docs/ConferenceMemberJoinCallback.md)
+ - [ConferenceRecordingAvailableCallback](docs/ConferenceRecordingAvailableCallback.md)
- [ConferenceRecordingMetadata](docs/ConferenceRecordingMetadata.md)
+ - [ConferenceRedirectCallback](docs/ConferenceRedirectCallback.md)
- [ConferenceStateEnum](docs/ConferenceStateEnum.md)
- [CreateCall](docs/CreateCall.md)
- [CreateCallResponse](docs/CreateCallResponse.md)
@@ -202,16 +209,21 @@ Class | Method | HTTP request | Description
- [CreateParticipantResponse](docs/CreateParticipantResponse.md)
- [DeferredResult](docs/DeferredResult.md)
- [DeviceApiVersionEnum](docs/DeviceApiVersionEnum.md)
+ - [DisconenctCallback](docs/DisconenctCallback.md)
- [Diversion](docs/Diversion.md)
+ - [DtmfCallback](docs/DtmfCallback.md)
- [FieldError](docs/FieldError.md)
- [FileFormatEnum](docs/FileFormatEnum.md)
- [ForbiddenRequest](docs/ForbiddenRequest.md)
+ - [GatherCallback](docs/GatherCallback.md)
+ - [InitiateCallback](docs/InitiateCallback.md)
- [ListMessageDirectionEnum](docs/ListMessageDirectionEnum.md)
- [ListMessageItem](docs/ListMessageItem.md)
- [LookupRequest](docs/LookupRequest.md)
- [LookupResult](docs/LookupResult.md)
- [LookupStatus](docs/LookupStatus.md)
- [LookupStatusEnum](docs/LookupStatusEnum.md)
+ - [MachineDetectionCompleteCallback](docs/MachineDetectionCompleteCallback.md)
- [MachineDetectionConfiguration](docs/MachineDetectionConfiguration.md)
- [MachineDetectionModeEnum](docs/MachineDetectionModeEnum.md)
- [Media](docs/Media.md)
@@ -229,24 +241,34 @@ Class | Method | HTTP request | Description
- [PageInfo](docs/PageInfo.md)
- [Participant](docs/Participant.md)
- [ParticipantSubscription](docs/ParticipantSubscription.md)
+ - [Password](docs/Password.md)
- [PriorityEnum](docs/PriorityEnum.md)
- [PublishPermissionsEnum](docs/PublishPermissionsEnum.md)
+ - [RecordingAvailableCallback](docs/RecordingAvailableCallback.md)
+ - [RecordingCompleteCallback](docs/RecordingCompleteCallback.md)
- [RecordingStateEnum](docs/RecordingStateEnum.md)
+ - [RedirectCallback](docs/RedirectCallback.md)
- [RedirectMethodEnum](docs/RedirectMethodEnum.md)
- [RequestError](docs/RequestError.md)
- [Session](docs/Session.md)
+ - [StirShaken](docs/StirShaken.md)
- [Subscriptions](docs/Subscriptions.md)
- [Tag](docs/Tag.md)
- [TnLookupRequestError](docs/TnLookupRequestError.md)
- [TranscribeRecording](docs/TranscribeRecording.md)
- [Transcription](docs/Transcription.md)
+ - [TranscriptionAvailableCallback](docs/TranscriptionAvailableCallback.md)
- [TranscriptionList](docs/TranscriptionList.md)
- [TranscriptionMetadata](docs/TranscriptionMetadata.md)
+ - [TransferAnswerCallback](docs/TransferAnswerCallback.md)
+ - [TransferCompleteCallback](docs/TransferCompleteCallback.md)
+ - [TransferDisconnectCallback](docs/TransferDisconnectCallback.md)
- [UnauthorizedRequest](docs/UnauthorizedRequest.md)
- [UpdateCall](docs/UpdateCall.md)
- [UpdateCallRecording](docs/UpdateCallRecording.md)
- [UpdateConference](docs/UpdateConference.md)
- [UpdateConferenceMember](docs/UpdateConferenceMember.md)
+ - [Username](docs/Username.md)
- [VerifyCodeRequest](docs/VerifyCodeRequest.md)
- [VerifyCodeResponse](docs/VerifyCodeResponse.md)
- [VoiceApiError](docs/VoiceApiError.md)
diff --git a/bandwidth.json b/bandwidth.json
index 303edf23..d674e7b1 100644
--- a/bandwidth.json
+++ b/bandwidth.json
@@ -1,5 +1,15 @@
{
"openapi": "3.0.3",
+ "info": {
+ "title": "Bandwidth",
+ "description": "Bandwidth's Communication APIs",
+ "contact": {
+ "name": "Bandwidth",
+ "url": "https://dev.bandwidth.com",
+ "email": "letstalk@bandwidth.com"
+ },
+ "version": "1.0.0"
+ },
"security": [
{
"Basic": []
@@ -79,14 +89,14 @@
"500": {
"$ref": "#/components/responses/messagingInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://messaging.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://messaging.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/users/{accountId}/media/{mediaId}": {
"get": {
@@ -129,13 +139,7 @@
"500": {
"$ref": "#/components/responses/messagingInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://messaging.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
+ }
},
"put": {
"summary": "Upload Media",
@@ -186,13 +190,7 @@
"500": {
"$ref": "#/components/responses/messagingInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://messaging.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
+ }
},
"delete": {
"summary": "Delete Media",
@@ -234,14 +232,14 @@
"500": {
"$ref": "#/components/responses/messagingInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://messaging.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://messaging.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/users/{accountId}/messages": {
"get": {
@@ -320,13 +318,7 @@
"500": {
"$ref": "#/components/responses/messagingInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://messaging.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
+ }
},
"post": {
"summary": "Create Message",
@@ -348,7 +340,7 @@
"$ref": "#/components/responses/createMessageResponse"
},
"400": {
- "$ref": "#/components/responses/messagingBadRequestError"
+ "$ref": "#/components/responses/createMessageBadRequestError"
},
"401": {
"$ref": "#/components/responses/messagingUnauthorizedError"
@@ -368,14 +360,14 @@
"500": {
"$ref": "#/components/responses/messagingInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://messaging.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://messaging.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/calls": {
"post": {
@@ -421,14 +413,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/calls/{callId}": {
"get": {
@@ -474,13 +466,7 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
+ }
},
"post": {
"tags": [
@@ -519,6 +505,9 @@
"405": {
"$ref": "#/components/responses/voiceNotAllowedError"
},
+ "409": {
+ "$ref": "#/components/responses/voiceConflictError"
+ },
"415": {
"$ref": "#/components/responses/voiceUnsupportedMediaTypeError"
},
@@ -528,14 +517,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/calls/{callId}/bxml": {
"put": {
@@ -575,6 +564,9 @@
"405": {
"$ref": "#/components/responses/voiceNotAllowedError"
},
+ "409": {
+ "$ref": "#/components/responses/voiceConflictError"
+ },
"415": {
"$ref": "#/components/responses/voiceUnsupportedMediaTypeError"
},
@@ -584,14 +576,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/conferences": {
"get": {
@@ -649,14 +641,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/conferences/{conferenceId}": {
"get": {
@@ -702,13 +694,7 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
+ }
},
"post": {
"tags": [
@@ -756,14 +742,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/conferences/{conferenceId}/bxml": {
"put": {
@@ -812,14 +798,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/conferences/{conferenceId}/members/{memberId}": {
"get": {
@@ -868,13 +854,7 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
+ }
},
"put": {
"tags": [
@@ -925,14 +905,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/conferences/{conferenceId}/recordings": {
"get": {
@@ -978,14 +958,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/conferences/{conferenceId}/recordings/{recordingId}": {
"get": {
@@ -1034,14 +1014,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/conferences/{conferenceId}/recordings/{recordingId}/media": {
"get": {
@@ -1064,7 +1044,7 @@
],
"responses": {
"200": {
- "$ref": "#/components/responses/downloadCallRecordingResponse"
+ "$ref": "#/components/responses/downloadRecordingMediaResponse"
},
"400": {
"$ref": "#/components/responses/voiceBadRequestError"
@@ -1090,14 +1070,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/recordings": {
"get": {
@@ -1152,14 +1132,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/calls/{callId}/recording": {
"put": {
@@ -1208,14 +1188,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/calls/{callId}/recordings": {
"get": {
@@ -1261,14 +1241,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/calls/{callId}/recordings/{recordingId}": {
"get": {
@@ -1317,13 +1297,7 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
+ }
},
"delete": {
"tags": [
@@ -1371,14 +1345,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/calls/{callId}/recordings/{recordingId}/media": {
"get": {
@@ -1401,7 +1375,7 @@
],
"responses": {
"200": {
- "$ref": "#/components/responses/downloadCallRecordingResponse"
+ "$ref": "#/components/responses/downloadRecordingMediaResponse"
},
"400": {
"$ref": "#/components/responses/voiceBadRequestError"
@@ -1427,13 +1401,7 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
+ }
},
"delete": {
"tags": [
@@ -1481,14 +1449,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/calls/{callId}/recordings/{recordingId}/transcription": {
"get": {
@@ -1537,13 +1505,7 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
+ }
},
"post": {
"tags": [
@@ -1594,13 +1556,7 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
+ }
},
"delete": {
"tags": [
@@ -1648,14 +1604,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/statistics": {
"get": {
@@ -1698,14 +1654,14 @@
"500": {
"$ref": "#/components/responses/voiceInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://voice.bandwidth.com/api/v2",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://voice.bandwidth.com/api/v2",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/code/voice": {
"post": {
@@ -1739,14 +1695,14 @@
"500": {
"$ref": "#/components/responses/mfaInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://mfa.bandwidth.com/api/v1",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://mfa.bandwidth.com/api/v1",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/code/messaging": {
"post": {
@@ -1780,14 +1736,14 @@
"500": {
"$ref": "#/components/responses/mfaInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://mfa.bandwidth.com/api/v1",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://mfa.bandwidth.com/api/v1",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/code/verify": {
"post": {
@@ -1824,14 +1780,14 @@
"500": {
"$ref": "#/components/responses/mfaInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://mfa.bandwidth.com/api/v1",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://mfa.bandwidth.com/api/v1",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/tnlookup": {
"post": {
@@ -1871,16 +1827,16 @@
"500": {
"$ref": "#/components/responses/tnLookupInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://numbers.bandwidth.com/api/v1",
- "description": "Production"
- }
- ]
- }
- },
- "/accounts/{accountId}/tnlookup/{requestId}": {
+ }
+ },
+ "servers": [
+ {
+ "url": "https://numbers.bandwidth.com/api/v1",
+ "description": "Production"
+ }
+ ]
+ },
+ "/accounts/{accountId}/tnlookup/{requestId}": {
"get": {
"summary": "Get Lookup Request Status",
"description": "Get an existing Phone Number Lookup Request.",
@@ -1918,14 +1874,14 @@
"500": {
"$ref": "#/components/responses/tnLookupInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://numbers.bandwidth.com/api/v1",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://numbers.bandwidth.com/api/v1",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/participants": {
"post": {
@@ -1959,14 +1915,14 @@
"500": {
"$ref": "#/components/responses/webrtcInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://api.webrtc.bandwidth.com/v1",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://api.webrtc.bandwidth.com/v1",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/participants/{participantId}": {
"get": {
@@ -2003,13 +1959,7 @@
"500": {
"$ref": "#/components/responses/webrtcInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://api.webrtc.bandwidth.com/v1",
- "description": "Production"
- }
- ]
+ }
},
"delete": {
"tags": [
@@ -2045,14 +1995,14 @@
"500": {
"$ref": "#/components/responses/webrtcInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://api.webrtc.bandwidth.com/v1",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://api.webrtc.bandwidth.com/v1",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/sessions": {
"post": {
@@ -2086,14 +2036,14 @@
"500": {
"$ref": "#/components/responses/webrtcInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://api.webrtc.bandwidth.com/v1",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://api.webrtc.bandwidth.com/v1",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/sessions/{sessionId}": {
"get": {
@@ -2130,13 +2080,7 @@
"500": {
"$ref": "#/components/responses/webrtcInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://api.webrtc.bandwidth.com/v1",
- "description": "Production"
- }
- ]
+ }
},
"delete": {
"tags": [
@@ -2172,14 +2116,14 @@
"500": {
"$ref": "#/components/responses/webrtcInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://api.webrtc.bandwidth.com/v1",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://api.webrtc.bandwidth.com/v1",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/sessions/{sessionId}/participants": {
"get": {
@@ -2219,14 +2163,14 @@
"500": {
"$ref": "#/components/responses/webrtcInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://api.webrtc.bandwidth.com/v1",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://api.webrtc.bandwidth.com/v1",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/sessions/{sessionId}/participants/{participantId}": {
"put": {
@@ -2272,13 +2216,7 @@
"500": {
"$ref": "#/components/responses/webrtcInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://api.webrtc.bandwidth.com/v1",
- "description": "Production"
- }
- ]
+ }
},
"delete": {
"tags": [
@@ -2317,14 +2255,14 @@
"500": {
"$ref": "#/components/responses/webrtcInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://api.webrtc.bandwidth.com/v1",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://api.webrtc.bandwidth.com/v1",
+ "description": "Production"
+ }
+ ]
},
"/accounts/{accountId}/sessions/{sessionId}/participants/{participantId}/subscriptions": {
"get": {
@@ -2367,13 +2305,7 @@
"500": {
"$ref": "#/components/responses/webrtcInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://api.webrtc.bandwidth.com/v1",
- "description": "Production"
- }
- ]
+ }
},
"put": {
"tags": [
@@ -2415,14 +2347,14 @@
"500": {
"$ref": "#/components/responses/webrtcInternalServerError"
}
- },
- "servers": [
- {
- "url": "https://api.webrtc.bandwidth.com/v1",
- "description": "Production"
- }
- ]
- }
+ }
+ },
+ "servers": [
+ {
+ "url": "https://api.webrtc.bandwidth.com/v1",
+ "description": "Production"
+ }
+ ]
}
},
"components": {
@@ -2562,7 +2494,6 @@
"carrierName": {
"type": "string",
"description": "The name of the carrier. Not currently supported for MMS coming soon.",
- "nullable": true,
"example": "other"
},
"messageSize": {
@@ -2658,8 +2589,7 @@
"required": [
"type",
"description"
- ],
- "additionalProperties": true
+ ]
},
"media": {
"title": "Media",
@@ -2917,12 +2847,14 @@
"type": "string",
"nullable": true,
"description": "Basic auth username.",
+ "maxLength": 1024,
"example": "mySecretUsername"
},
"password": {
"type": "string",
"nullable": true,
"description": "Basic auth password.",
+ "maxLength": 1024,
"example": "mySecretPassword1!"
},
"createCall": {
@@ -2959,6 +2891,7 @@
"type": "string",
"format": "uri",
"description": "The full URL to send the Answer\nevent to when the called party answers. This endpoint should return the\nfirst BXML document to be executed in the\ncall.\n\nMust use `https` if specifying `username` and `password`",
+ "maxLength": 2048,
"example": "https://www.myCallbackServer.com/webhooks/answer"
},
"answerMethod": {
@@ -2975,6 +2908,7 @@
"type": "string",
"format": "uri",
"description": "A fallback url which, if provided, will be used to retry the\n`answer` webhook delivery in case `answerUrl` fails to respond\n\nMust use `https` if specifying `fallbackUsername` and `fallbackPassword`",
+ "maxLength": 2048,
"example": "https://www.myFallbackServer.com/webhooks/answer"
},
"answerFallbackMethod": {
@@ -2990,7 +2924,8 @@
"nullable": true,
"type": "string",
"format": "uri",
- "description": "The URL to send the Disconnect event to when the call ends. This event does not expect a BXML response."
+ "description": "The URL to send the Disconnect event to when the call ends. This event does not expect a BXML response.",
+ "maxLength": 2048
},
"disconnectMethod": {
"$ref": "#/components/schemas/callbackMethodEnum"
@@ -3343,92 +3278,55 @@
"type": "object",
"properties": {
"applicationId": {
- "type": "string",
- "description": "The `applicationId` associated with the call",
- "example": "04e88489-df02-4e34-a0ee-27a91849555f"
+ "$ref": "#/components/schemas/applicationId"
},
"accountId": {
- "type": "string",
- "description": "The account that placed the call",
- "example": "9900000"
+ "$ref": "#/components/schemas/accountId"
},
"callId": {
- "type": "string",
- "description": "The `callId` of the call that created this recording",
- "example": "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"
+ "$ref": "#/components/schemas/callId"
},
"parentCallId": {
- "nullable": true,
- "type": "string",
- "description": "If the call was a transferred leg, this field contains the `callId` of the call that executed the [``](/docs/voice/bxml/transfer)",
- "example": "c-25ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"
+ "$ref": "#/components/schemas/parentCallId"
},
"recordingId": {
- "type": "string",
- "description": "The recording's unique ID",
- "example": "r-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"
+ "$ref": "#/components/schemas/recordingId"
},
"to": {
- "type": "string",
- "description": "The phone number that received the call, in E.164 format (e.g. +15555555555), or if the call was to a SIP URI, the SIP URI",
- "example": "+19195551234"
+ "$ref": "#/components/schemas/to"
},
"from": {
- "type": "string",
- "description": "The phone number that made the call, in E.164 format (e.g. +15555555555).",
- "example": "+19195554321"
+ "$ref": "#/components/schemas/from"
},
"transferCallerId": {
- "nullable": true,
- "type": "string",
- "description": "If the call was a transferred leg, the `transferCallerId` field from the [``](/docs/voice/bxml/transfer), if any.",
- "example": "+12125551234"
+ "$ref": "#/components/schemas/transferCallerId"
},
"transferTo": {
- "nullable": true,
- "type": "string",
- "description": "If the call was a transferred leg, the number that the call was transferred to",
- "example": "+12125554321"
+ "$ref": "#/components/schemas/transferTo"
},
"duration": {
- "type": "string",
- "description": "The duration of the recording in ISO-8601 format",
- "example": "PT2.998S"
+ "$ref": "#/components/schemas/duration"
},
"direction": {
"$ref": "#/components/schemas/callDirectionEnum"
},
"channels": {
- "type": "integer",
- "format": "int32",
- "description": "The number of channels in the recording. Either `1` or `2`",
- "example": 1
+ "$ref": "#/components/schemas/channels"
},
"startTime": {
- "type": "string",
- "format": "date-time",
- "description": "The time that the recording started in ISO 8601 format",
- "example": "2022-06-16T13:15:07.160Z"
+ "$ref": "#/components/schemas/startTime"
},
"endTime": {
- "type": "string",
- "format": "date-time",
- "description": "The time that the recording ended in ISO 8601 format",
- "example": "2022-06-16T13:15:18.314Z"
+ "$ref": "#/components/schemas/endTime"
},
"fileFormat": {
"$ref": "#/components/schemas/fileFormatEnum"
},
"status": {
- "type": "string",
- "description": "The current status of the recording. Current values are 'processing', 'partial', 'complete', 'deleted' and 'error'. Additional states may be added in the future, so your application must be tolerant of unknown values.",
- "example": "complete"
+ "$ref": "#/components/schemas/status"
},
"mediaUrl": {
- "type": "string",
- "format": "uri",
- "description": "The URL that can be used to download the audio recording",
- "example": "https://voice.bandwidth.com/api/v2/accounts/9900000/calls/c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85/recordings/r-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85/media"
+ "$ref": "#/components/schemas/mediaUrl"
},
"transcription": {
"$ref": "#/components/schemas/transcriptionMetadata"
@@ -3531,14 +3429,10 @@
"type": "object",
"properties": {
"callId": {
- "type": "string",
- "description": "The call ID of this conference member",
- "example": "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"
+ "$ref": "#/components/schemas/callId"
},
"conferenceId": {
- "type": "string",
- "description": "The Bandwidth-generated conference ID",
- "example": "conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9"
+ "$ref": "#/components/schemas/conferenceId"
},
"memberUrl": {
"type": "string",
@@ -3598,62 +3492,37 @@
"type": "object",
"properties": {
"accountId": {
- "type": "string",
- "description": "Your account ID",
- "example": "9900000"
+ "$ref": "#/components/schemas/accountId"
},
"conferenceId": {
- "type": "string",
- "description": "The unique, Bandwidth-generated ID of the conference that was recorded",
- "example": "conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9"
+ "$ref": "#/components/schemas/conferenceId"
},
"name": {
- "type": "string",
- "description": "The user-specified name of the conference that was recorded",
- "example": "my-conference-name"
+ "$ref": "#/components/schemas/name"
},
"recordingId": {
- "type": "string",
- "description": "The unique ID of this recording",
- "example": "r-fbe05094-9fd2afe9-bf5b-4c68-820a-41a01c1c5833"
+ "$ref": "#/components/schemas/recordingId"
},
"duration": {
- "type": "string",
- "description": "The duration of the recording in ISO-8601 format",
- "example": "PT13.67S"
+ "$ref": "#/components/schemas/duration"
},
"channels": {
- "type": "integer",
- "format": "int32",
- "description": "Always `1` for conference recordings; multi-channel recordings are not supported on conferences.",
- "example": 1
+ "$ref": "#/components/schemas/channels"
},
"startTime": {
- "type": "string",
- "format": "date-time",
- "description": "The time that the recording started in ISO-8601 format",
- "example": "2022-06-17T22:19:40.375Z"
+ "$ref": "#/components/schemas/startTime"
},
"endTime": {
- "type": "string",
- "format": "date-time",
- "description": "The time that the recording ended in ISO-8601 format",
- "example": "2022-06-17T22:20:00.000Z"
+ "$ref": "#/components/schemas/endTime"
},
"fileFormat": {
"$ref": "#/components/schemas/fileFormatEnum"
},
"status": {
- "type": "string",
- "description": "The current status of the recording. Current possible values\nare 'processing', 'partial', 'complete', 'deleted', and 'error'. Additional\nstates may be added in the future, so your application must be tolerant\nof unknown values.",
- "example": "completed"
+ "$ref": "#/components/schemas/status"
},
"mediaUrl": {
- "nullable": true,
- "type": "string",
- "format": "uri",
- "description": "The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded.",
- "example": "https://voice.bandwidth.com/api/v2/accounts/9900000/conferences/conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9/recordings/r-fbe05094-9fd2afe9-bf5b-4c68-820a-41a01c1c5833/media"
+ "$ref": "#/components/schemas/mediaUrl"
}
}
},
@@ -3665,6 +3534,7 @@
"$ref": "#/components/schemas/machineDetectionModeEnum"
},
"detectionTimeout": {
+ "nullable": true,
"type": "number",
"format": "double",
"description": "The timeout used for the whole operation, in seconds. If no\nresult is determined in this period, a callback with a `timeout` result\nis sent.",
@@ -3672,6 +3542,7 @@
"example": 15
},
"silenceTimeout": {
+ "nullable": true,
"type": "number",
"format": "double",
"description": "If no speech is detected in this period, a callback with a 'silence' result is sent.",
@@ -3679,6 +3550,7 @@
"example": 10
},
"speechThreshold": {
+ "nullable": true,
"type": "number",
"format": "double",
"description": "When speech has ended and a result couldn't be determined based\non the audio content itself, this value is used to determine if the speaker\nis a machine based on the speech duration. If the length of the speech\ndetected is greater than or equal to this threshold, the result will be\n'answering-machine'. If the length of speech detected is below this threshold,\nthe result will be 'human'.",
@@ -3686,6 +3558,7 @@
"example": 10
},
"speechEndThreshold": {
+ "nullable": true,
"type": "number",
"format": "double",
"description": "Amount of silence (in seconds) before assuming the callee has finished speaking.",
@@ -3693,14 +3566,16 @@
"example": 5
},
"machineSpeechEndThreshold": {
+ "nullable": true,
"type": "number",
"format": "double",
- "description": "When an answering machine is detected, the amount of silence (in seconds) before assuming the message has finished playing.",
+ "description": "When an answering machine is detected, the amount of silence (in seconds) before assuming the message has finished playing. \nIf not provided it will default to the speechEndThreshold value.",
"example": 5
},
"delayResult": {
+ "nullable": true,
"type": "boolean",
- "description": "If set to 'true' and if an answering machine is detected, the\n'answering-machine' callback will be delayed until the machine is done\nspeaking or until the 'detectionTimeout' is exceeded. If false, the 'answering-machine'\nresult is sent immediately.",
+ "description": "If set to 'true' and if an answering machine is detected, the\n'answering-machine' callback will be delayed until the machine is done\nspeaking, or an end of message tone is detected, or until the 'detectionTimeout' is exceeded. If false, the 'answering-machine'\nresult is sent immediately.",
"default": false,
"example": false
},
@@ -3709,6 +3584,7 @@
"description": "The URL to send the 'machineDetectionComplete' webhook when the detection is completed. Only for 'async' mode.",
"type": "string",
"format": "uri",
+ "maxLength": 2048,
"example": "https://myServer.com/bandwidth/webhooks/machineDetectionComplete"
},
"callbackMethod": {
@@ -3725,6 +3601,7 @@
"type": "string",
"format": "uri",
"description": "A fallback URL which, if provided, will be used to retry the\nmachine detection complete webhook delivery in case `callbackUrl` fails\nto respond",
+ "maxLength": 2048,
"example": "https://myFallbackServer.com/bandwidth/webhooks/machineDetectionComplete"
},
"fallbackMethod": {
@@ -3757,10 +3634,7 @@
"$ref": "#/components/schemas/password"
},
"tag": {
- "nullable": true,
- "type": "string",
- "description": "A custom string that will be sent with the webhook to `callbackUrl`.",
- "example": "my custom tag"
+ "$ref": "#/components/schemas/tag1"
},
"callbackTimeout": {
"nullable": true,
@@ -3796,9 +3670,7 @@
"example": "t-387bd648-18f3-4823-9d16-746bca0003c9"
},
"status": {
- "type": "string",
- "description": "The current status of the transcription. Current values are\n'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big',\nand 'file-size-too-small'. Additional states may be added in the future,\nso your application must be tolerant of unknown values.",
- "example": "available"
+ "$ref": "#/components/schemas/status"
},
"completedTime": {
"type": "string",
@@ -3813,22 +3685,6 @@
}
}
},
- "transcription": {
- "type": "object",
- "properties": {
- "text": {
- "type": "string",
- "description": "The transcribed text",
- "example": "Nice talking to you, friend!"
- },
- "confidence": {
- "type": "number",
- "format": "double",
- "description": "The confidence on the recognized content, ranging from `0.0` to `1.0` with `1.0` being the highest confidence.",
- "example": 0.9
- }
- }
- },
"voiceApiError": {
"type": "object",
"properties": {
@@ -3844,174 +3700,1278 @@
}
}
},
- "callCallback": {
+ "answerCallback": {
"type": "object",
- "description": "This object represents all possible fields that may be included in callbacks related to call events, including events that come from BXML verbs",
+ "description": "The Answer event is sent to the answerUrl specified in the createCall request when an outbound call is answered.",
"properties": {
"eventType": {
- "type": "string"
+ "$ref": "#/components/schemas/eventType"
},
"eventTime": {
- "type": "string"
+ "$ref": "#/components/schemas/eventTime"
},
"accountId": {
- "type": "string"
+ "$ref": "#/components/schemas/accountId"
},
"applicationId": {
- "type": "string"
+ "$ref": "#/components/schemas/applicationId"
},
"from": {
- "type": "string"
+ "$ref": "#/components/schemas/from"
},
"to": {
- "type": "string"
+ "$ref": "#/components/schemas/to"
},
"direction": {
- "type": "string"
+ "$ref": "#/components/schemas/callDirectionEnum"
},
"callId": {
- "type": "string"
+ "$ref": "#/components/schemas/callId"
},
"callUrl": {
- "type": "string"
+ "$ref": "#/components/schemas/callUrl"
+ },
+ "enqueuedTime": {
+ "$ref": "#/components/schemas/enqueuedTime"
},
"startTime": {
- "type": "string"
+ "$ref": "#/components/schemas/startTime"
},
"answerTime": {
- "type": "string"
+ "$ref": "#/components/schemas/answerTime"
},
- "transferCallerId": {
- "type": "string"
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
},
- "transferTo": {
- "type": "string"
+ "machineDetectionResult": {
+ "$ref": "#/components/schemas/machineDetectionResult"
+ }
+ }
+ },
+ "bridgeCompleteCallback": {
+ "type": "object",
+ "description": "If the target call leaves the , then this callback is sent to the bridgeCompleteUrl, and the BXML returned in it is executed on the call. If this webhook is sent, the Bridge Target Complete webhook is NOT sent. This callback is also sent if any problem occurs that prevents the calls to be bridged.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "accountId": {
+ "$ref": "#/components/schemas/accountId"
+ },
+ "applicationId": {
+ "$ref": "#/components/schemas/applicationId"
+ },
+ "from": {
+ "$ref": "#/components/schemas/from"
+ },
+ "to": {
+ "$ref": "#/components/schemas/to"
+ },
+ "direction": {
+ "$ref": "#/components/schemas/callDirectionEnum"
+ },
+ "callId": {
+ "$ref": "#/components/schemas/callId"
+ },
+ "callUrl": {
+ "$ref": "#/components/schemas/callUrl"
+ },
+ "enqueuedTime": {
+ "$ref": "#/components/schemas/enqueuedTime"
+ },
+ "startTime": {
+ "$ref": "#/components/schemas/startTime"
+ },
+ "answerTime": {
+ "$ref": "#/components/schemas/answerTime"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
},
"cause": {
- "type": "string"
+ "$ref": "#/components/schemas/cause"
},
"errorMessage": {
- "type": "string"
+ "$ref": "#/components/schemas/errorMessage"
},
"errorId": {
- "type": "string"
+ "$ref": "#/components/schemas/errorId"
+ }
+ }
+ },
+ "bridgeTargetCompleteCallback": {
+ "type": "object",
+ "description": "If the originating call leaves the , then this callback is sent to the bridgeTargetCompleteUrl, and the BXML returned in it is executed on the target call. If this webhook is sent, the Bridge Complete webhook is NOT sent.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
},
- "endTime": {
- "type": "string"
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
},
- "digit": {
- "type": "string"
+ "accountId": {
+ "$ref": "#/components/schemas/accountId"
},
- "parentCallId": {
- "type": "string"
+ "applicationId": {
+ "$ref": "#/components/schemas/applicationId"
},
- "recordingId": {
- "type": "string"
+ "from": {
+ "$ref": "#/components/schemas/from"
+ },
+ "to": {
+ "$ref": "#/components/schemas/to"
+ },
+ "direction": {
+ "$ref": "#/components/schemas/callDirectionEnum"
+ },
+ "callId": {
+ "$ref": "#/components/schemas/callId"
+ },
+ "callUrl": {
+ "$ref": "#/components/schemas/callUrl"
+ },
+ "enqueuedTime": {
+ "$ref": "#/components/schemas/enqueuedTime"
+ },
+ "startTime": {
+ "$ref": "#/components/schemas/startTime"
+ },
+ "answerTime": {
+ "$ref": "#/components/schemas/answerTime"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ }
+ }
+ },
+ "conferenceCreatedCallback": {
+ "type": "object",
+ "description": "The Conference Created event is fired whenever a new conference that specified a callbackUrl is created. The response may be either empty or a BXML document. Only the following verbs are valid for conferences: PlayAudio, SpeakSentence, StartRecording, StopRecording, PauseRecording, ResumeRecording. Audio verbs will be heard by all members of the conference. Recordings capture audio from all members who are not muted or on hold, as well as any audio verbs that are played into the conference.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "conferenceId": {
+ "$ref": "#/components/schemas/conferenceId"
+ },
+ "name": {
+ "$ref": "#/components/schemas/name"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ }
+ }
+ },
+ "conferenceRedirectCallback": {
+ "type": "object",
+ "description": "The Conference Redirect event is fired whenever an existing conference is modified via a POST request made to the /conferences/{conferenceId} endpoint. The response may be either empty or a BXML document. Only the following verbs are valid for conferences: PlayAudio, SpeakSentence, StartRecording, StopRecording, PauseRecording, ResumeRecording. Audio verbs will be heard by all members of the conference. Recordings capture audio from all members who are not muted or on hold, as well as any audio verbs that are played into the conference.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "conferenceId": {
+ "$ref": "#/components/schemas/conferenceId"
+ },
+ "name": {
+ "$ref": "#/components/schemas/name"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ }
+ }
+ },
+ "conferenceMemberJoinCallback": {
+ "type": "object",
+ "description": "The Conference Member Join event is fired whenever a caller joins a conference that specified a callbackUrl. The response may be either empty or a BXML document. Only the following verbs are valid for conferences: PlayAudio, SpeakSentence, StartRecording, StopRecording, PauseRecording, ResumeRecording. Audio verbs will be heard by all members of the conference. Recordings capture audio from all members who are not muted or on hold, as well as any audio verbs that are played into the conference.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "conferenceId": {
+ "$ref": "#/components/schemas/conferenceId"
+ },
+ "name": {
+ "$ref": "#/components/schemas/name"
+ },
+ "from": {
+ "$ref": "#/components/schemas/from"
+ },
+ "to": {
+ "$ref": "#/components/schemas/to"
+ },
+ "callId": {
+ "$ref": "#/components/schemas/callId"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ }
+ }
+ },
+ "conferenceMemberExitCallback": {
+ "type": "object",
+ "description": "The Conference Member Exit event is fired whenever a caller exits a conference that specified a callbackUrl. The response may be either empty or a BXML document. Only the following verbs are valid for conferences: PlayAudio, SpeakSentence, StartRecording, StopRecording, PauseRecording, ResumeRecording. Audio verbs will be heard by all members of the conference. Recordings capture audio from all members who are not muted or on hold, as well as any audio verbs that are played into the conference.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "conferenceId": {
+ "$ref": "#/components/schemas/conferenceId"
+ },
+ "name": {
+ "$ref": "#/components/schemas/name"
+ },
+ "from": {
+ "$ref": "#/components/schemas/from"
+ },
+ "to": {
+ "$ref": "#/components/schemas/to"
+ },
+ "callId": {
+ "$ref": "#/components/schemas/callId"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ }
+ }
+ },
+ "conferenceCompletedCallback": {
+ "type": "object",
+ "description": "The Conference Completed event is fired when the last member leaves the conference. The response to this event may not contain BXML.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "conferenceId": {
+ "$ref": "#/components/schemas/conferenceId"
+ },
+ "name": {
+ "$ref": "#/components/schemas/name"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ }
+ }
+ },
+ "conferenceRecordingAvailableCallback": {
+ "type": "object",
+ "description": "The Conference Recording Available event is sent after a conference recording has been processed. It indicates that the recording is available for download.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "conferenceId": {
+ "$ref": "#/components/schemas/conferenceId"
+ },
+ "name": {
+ "$ref": "#/components/schemas/name"
+ },
+ "accountId": {
+ "$ref": "#/components/schemas/accountId"
+ },
+ "recordingId": {
+ "$ref": "#/components/schemas/recordingId"
+ },
+ "channels": {
+ "$ref": "#/components/schemas/channels"
+ },
+ "startTime": {
+ "$ref": "#/components/schemas/startTime"
+ },
+ "endTime": {
+ "$ref": "#/components/schemas/endTime"
+ },
+ "duration": {
+ "$ref": "#/components/schemas/duration"
+ },
+ "fileFormat": {
+ "$ref": "#/components/schemas/fileFormatEnum"
+ },
+ "mediaUrl": {
+ "$ref": "#/components/schemas/mediaUrl"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ },
+ "status": {
+ "$ref": "#/components/schemas/status"
+ }
+ }
+ },
+ "disconenctCallback": {
+ "type": "object",
+ "description": "The Disconnect event is fired when a call ends, for any reason.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "accountId": {
+ "$ref": "#/components/schemas/accountId"
+ },
+ "applicationId": {
+ "$ref": "#/components/schemas/applicationId"
+ },
+ "from": {
+ "$ref": "#/components/schemas/from"
+ },
+ "to": {
+ "$ref": "#/components/schemas/to"
+ },
+ "callId": {
+ "$ref": "#/components/schemas/callId"
+ },
+ "direction": {
+ "$ref": "#/components/schemas/callDirectionEnum"
+ },
+ "callUrl": {
+ "$ref": "#/components/schemas/callUrl"
+ },
+ "enqueuedTime": {
+ "$ref": "#/components/schemas/enqueuedTime"
+ },
+ "startTime": {
+ "$ref": "#/components/schemas/startTime"
+ },
+ "answerTime": {
+ "$ref": "#/components/schemas/answerTime"
+ },
+ "endTime": {
+ "$ref": "#/components/schemas/endTime"
+ },
+ "cause": {
+ "$ref": "#/components/schemas/cause"
+ },
+ "errorMessage": {
+ "$ref": "#/components/schemas/errorMessage"
+ },
+ "errorId": {
+ "$ref": "#/components/schemas/errorId"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ }
+ }
+ },
+ "dtmfCallback": {
+ "type": "object",
+ "description": "The DTMF event is sent for every digit detected after a verb is executed. You may not respond to this event with BXML.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "accountId": {
+ "$ref": "#/components/schemas/accountId"
+ },
+ "applicationId": {
+ "$ref": "#/components/schemas/applicationId"
+ },
+ "from": {
+ "$ref": "#/components/schemas/from"
+ },
+ "to": {
+ "$ref": "#/components/schemas/to"
+ },
+ "callId": {
+ "$ref": "#/components/schemas/callId"
+ },
+ "direction": {
+ "$ref": "#/components/schemas/callDirectionEnum"
+ },
+ "digit": {
+ "$ref": "#/components/schemas/digit"
+ },
+ "callUrl": {
+ "$ref": "#/components/schemas/callUrl"
+ },
+ "enqueuedTime": {
+ "$ref": "#/components/schemas/enqueuedTime"
+ },
+ "startTime": {
+ "$ref": "#/components/schemas/startTime"
+ },
+ "answerTime": {
+ "$ref": "#/components/schemas/answerTime"
+ },
+ "parentCallId": {
+ "$ref": "#/components/schemas/parentCallId"
+ },
+ "transferCallerId": {
+ "$ref": "#/components/schemas/transferCallerId"
+ },
+ "transferTo": {
+ "$ref": "#/components/schemas/transferTo"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ }
+ }
+ },
+ "gatherCallback": {
+ "type": "object",
+ "description": "The gather event is sent after a verb is executed. Its purpose is to report the gathered digits to the calling application.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "accountId": {
+ "$ref": "#/components/schemas/accountId"
+ },
+ "applicationId": {
+ "$ref": "#/components/schemas/applicationId"
+ },
+ "from": {
+ "$ref": "#/components/schemas/from"
+ },
+ "to": {
+ "$ref": "#/components/schemas/to"
+ },
+ "direction": {
+ "$ref": "#/components/schemas/callDirectionEnum"
+ },
+ "callId": {
+ "$ref": "#/components/schemas/callId"
+ },
+ "digits": {
+ "$ref": "#/components/schemas/digits"
+ },
+ "callUrl": {
+ "$ref": "#/components/schemas/callUrl"
+ },
+ "enqueuedTime": {
+ "$ref": "#/components/schemas/enqueuedTime"
+ },
+ "startTime": {
+ "$ref": "#/components/schemas/startTime"
+ },
+ "answerTime": {
+ "$ref": "#/components/schemas/answerTime"
+ },
+ "parentCallId": {
+ "$ref": "#/components/schemas/parentCallId"
+ },
+ "terminatingDigit": {
+ "$ref": "#/components/schemas/terminatingDigit"
+ },
+ "transferCallerId": {
+ "$ref": "#/components/schemas/transferCallerId"
+ },
+ "transferTo": {
+ "$ref": "#/components/schemas/transferTo"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ }
+ }
+ },
+ "initiateCallback": {
+ "type": "object",
+ "description": "The Initiate event is fired when an inbound call is received for a Telephone Number on your Account. It is sent to the URL specified in the application associated with the location (sip-peer) that the called telephone number belongs to.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "accountId": {
+ "$ref": "#/components/schemas/accountId"
+ },
+ "applicationId": {
+ "$ref": "#/components/schemas/applicationId"
+ },
+ "from": {
+ "$ref": "#/components/schemas/from"
+ },
+ "to": {
+ "$ref": "#/components/schemas/to"
+ },
+ "direction": {
+ "$ref": "#/components/schemas/callDirectionEnum"
+ },
+ "callId": {
+ "$ref": "#/components/schemas/callId"
+ },
+ "callUrl": {
+ "$ref": "#/components/schemas/callUrl"
+ },
+ "startTime": {
+ "$ref": "#/components/schemas/startTime"
+ },
+ "diversion": {
+ "$ref": "#/components/schemas/diversion"
+ },
+ "stirShaken": {
+ "$ref": "#/components/schemas/stirShaken"
+ }
+ }
+ },
+ "machineDetectionCompleteCallback": {
+ "type": "object",
+ "description": "This event is sent to the url informed when requesting a machine detection operation. It contains the machine detection operation result, which can be: human, answering-machine, silence, timeout, error. This event is not sent when sync answering machine detection mode is chosen.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "accountId": {
+ "$ref": "#/components/schemas/accountId"
+ },
+ "applicationId": {
+ "$ref": "#/components/schemas/applicationId"
+ },
+ "from": {
+ "$ref": "#/components/schemas/from"
+ },
+ "to": {
+ "$ref": "#/components/schemas/to"
+ },
+ "direction": {
+ "$ref": "#/components/schemas/callDirectionEnum"
+ },
+ "callId": {
+ "$ref": "#/components/schemas/callId"
+ },
+ "callUrl": {
+ "$ref": "#/components/schemas/callUrl"
+ },
+ "enqueuedTime": {
+ "$ref": "#/components/schemas/enqueuedTime"
+ },
+ "startTime": {
+ "$ref": "#/components/schemas/startTime"
+ },
+ "answerTime": {
+ "$ref": "#/components/schemas/answerTime"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ },
+ "machineDetectionResult": {
+ "$ref": "#/components/schemas/machineDetectionResult"
+ }
+ }
+ },
+ "recordingCompleteCallback": {
+ "type": "object",
+ "description": "The Record Complete event is sent after a verb has executed if the call is still active. The BXML returned by this callback is executed next. When the recording is available for download, a Recording Available event will be sent.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "accountId": {
+ "$ref": "#/components/schemas/accountId"
+ },
+ "applicationId": {
+ "$ref": "#/components/schemas/applicationId"
+ },
+ "from": {
+ "$ref": "#/components/schemas/from"
+ },
+ "to": {
+ "$ref": "#/components/schemas/to"
+ },
+ "direction": {
+ "$ref": "#/components/schemas/callDirectionEnum"
+ },
+ "callId": {
+ "$ref": "#/components/schemas/callId"
+ },
+ "callUrl": {
+ "$ref": "#/components/schemas/callUrl"
+ },
+ "parentCallId": {
+ "$ref": "#/components/schemas/parentCallId"
+ },
+ "recordingId": {
+ "$ref": "#/components/schemas/recordingId"
+ },
+ "mediaUrl": {
+ "$ref": "#/components/schemas/mediaUrl"
+ },
+ "enqueuedTime": {
+ "$ref": "#/components/schemas/enqueuedTime"
+ },
+ "startTime": {
+ "$ref": "#/components/schemas/startTime"
+ },
+ "answerTime": {
+ "$ref": "#/components/schemas/answerTime"
+ },
+ "endTime": {
+ "$ref": "#/components/schemas/endTime"
+ },
+ "duration": {
+ "$ref": "#/components/schemas/duration"
+ },
+ "fileFormat": {
+ "$ref": "#/components/schemas/fileFormatEnum"
+ },
+ "channels": {
+ "$ref": "#/components/schemas/channels"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ },
+ "transferCallerId": {
+ "$ref": "#/components/schemas/transferCallerId"
+ },
+ "transferTo": {
+ "$ref": "#/components/schemas/transferTo"
+ }
+ }
+ },
+ "recordingAvailableCallback": {
+ "type": "object",
+ "description": "The Recording Available event is sent after a recording has been processed. It indicates that the recording is available for download.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "accountId": {
+ "$ref": "#/components/schemas/accountId"
+ },
+ "applicationId": {
+ "$ref": "#/components/schemas/applicationId"
+ },
+ "from": {
+ "$ref": "#/components/schemas/from"
+ },
+ "to": {
+ "$ref": "#/components/schemas/to"
+ },
+ "direction": {
+ "$ref": "#/components/schemas/callDirectionEnum"
+ },
+ "callId": {
+ "$ref": "#/components/schemas/callId"
+ },
+ "callUrl": {
+ "$ref": "#/components/schemas/callUrl"
+ },
+ "parentCallId": {
+ "$ref": "#/components/schemas/parentCallId"
+ },
+ "recordingId": {
+ "$ref": "#/components/schemas/recordingId"
+ },
+ "mediaUrl": {
+ "$ref": "#/components/schemas/mediaUrl"
+ },
+ "enqueuedTime": {
+ "$ref": "#/components/schemas/enqueuedTime"
+ },
+ "startTime": {
+ "$ref": "#/components/schemas/startTime"
+ },
+ "endTime": {
+ "$ref": "#/components/schemas/endTime"
+ },
+ "duration": {
+ "$ref": "#/components/schemas/duration"
+ },
+ "fileFormat": {
+ "$ref": "#/components/schemas/fileFormatEnum"
+ },
+ "channels": {
+ "$ref": "#/components/schemas/status"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ },
+ "status": {
+ "$ref": "#/components/schemas/status"
+ },
+ "transferCallerId": {
+ "$ref": "#/components/schemas/transferCallerId"
+ },
+ "transferTo": {
+ "$ref": "#/components/schemas/transferTo"
+ }
+ }
+ },
+ "redirectCallback": {
+ "type": "object",
+ "description": "The Redirect event is fired when a verb is executed. Its purpose is to get the next set of verbs from the calling application.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "accountId": {
+ "$ref": "#/components/schemas/accountId"
+ },
+ "applicationId": {
+ "$ref": "#/components/schemas/applicationId"
+ },
+ "from": {
+ "$ref": "#/components/schemas/from"
+ },
+ "to": {
+ "$ref": "#/components/schemas/to"
+ },
+ "direction": {
+ "$ref": "#/components/schemas/callDirectionEnum"
+ },
+ "callId": {
+ "$ref": "#/components/schemas/callId"
+ },
+ "callUrl": {
+ "$ref": "#/components/schemas/callUrl"
+ },
+ "parentCallId": {
+ "$ref": "#/components/schemas/parentCallId"
+ },
+ "enqueuedTime": {
+ "$ref": "#/components/schemas/enqueuedTime"
+ },
+ "startTime": {
+ "$ref": "#/components/schemas/startTime"
+ },
+ "answerTime": {
+ "$ref": "#/components/schemas/answerTime"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ },
+ "transferCallerId": {
+ "$ref": "#/components/schemas/transferCallerId"
+ },
+ "transferTo": {
+ "$ref": "#/components/schemas/transferTo"
+ }
+ }
+ },
+ "transcriptionAvailableCallback": {
+ "type": "object",
+ "description": "The Transcription Available event is sent when the recording transcription is available to be downloaded.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "accountId": {
+ "$ref": "#/components/schemas/accountId"
+ },
+ "applicationId": {
+ "$ref": "#/components/schemas/applicationId"
+ },
+ "from": {
+ "$ref": "#/components/schemas/from"
+ },
+ "to": {
+ "$ref": "#/components/schemas/to"
+ },
+ "direction": {
+ "$ref": "#/components/schemas/callDirectionEnum"
+ },
+ "callId": {
+ "$ref": "#/components/schemas/callId"
+ },
+ "callUrl": {
+ "$ref": "#/components/schemas/callUrl"
+ },
+ "mediaUrl": {
+ "$ref": "#/components/schemas/mediaUrl"
+ },
+ "parentCallId": {
+ "$ref": "#/components/schemas/parentCallId"
+ },
+ "recordingId": {
+ "$ref": "#/components/schemas/recordingId"
+ },
+ "enqueuedTime": {
+ "$ref": "#/components/schemas/enqueuedTime"
+ },
+ "startTime": {
+ "$ref": "#/components/schemas/startTime"
+ },
+ "endTime": {
+ "$ref": "#/components/schemas/endTime"
+ },
+ "duration": {
+ "$ref": "#/components/schemas/duration"
+ },
+ "fileFormat": {
+ "$ref": "#/components/schemas/fileFormatEnum"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ },
+ "transcription": {
+ "$ref": "#/components/schemas/transcription"
+ },
+ "transferCallerId": {
+ "$ref": "#/components/schemas/transferCallerId"
+ },
+ "transferTo": {
+ "$ref": "#/components/schemas/transferTo"
+ }
+ }
+ },
+ "transferAnswerCallback": {
+ "type": "object",
+ "description": "When processing a verb, this event is sent when a called party (B-leg) answers. The event is sent to the endpoint specified in the transferAnswerUrl attribute of the tag that answered. BXML returned by this callback will be executed for the called party only. After all BXML has been executed, the called party will be bridged to the original call. Most BXML verbs are allowed in response to a transferAnswer event, but some are not allowed.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "accountId": {
+ "$ref": "#/components/schemas/accountId"
+ },
+ "applicationId": {
+ "$ref": "#/components/schemas/applicationId"
+ },
+ "from": {
+ "$ref": "#/components/schemas/from"
+ },
+ "to": {
+ "$ref": "#/components/schemas/to"
+ },
+ "direction": {
+ "$ref": "#/components/schemas/callDirectionEnum"
+ },
+ "callId": {
+ "$ref": "#/components/schemas/callId"
+ },
+ "callUrl": {
+ "$ref": "#/components/schemas/callUrl"
+ },
+ "enqueuedTime": {
+ "$ref": "#/components/schemas/enqueuedTime"
+ },
+ "startTime": {
+ "$ref": "#/components/schemas/startTime"
+ },
+ "answerTime": {
+ "$ref": "#/components/schemas/answerTime"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ },
+ "transferCallerId": {
+ "$ref": "#/components/schemas/transferCallerId"
+ },
+ "transferTo": {
+ "$ref": "#/components/schemas/transferTo"
+ }
+ }
+ },
+ "transferCompleteCallback": {
+ "type": "object",
+ "description": "This event is sent to the transferCompleteUrl of the A-leg's verb when the transferred call (B-leg) completes. In a simultaneous ringing scenario, only one B-leg succeeds and this event corresponds to that successful leg. If none of the calls were answered, the transferComplete event corresponds to one of the legs.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "accountId": {
+ "$ref": "#/components/schemas/accountId"
+ },
+ "applicationId": {
+ "$ref": "#/components/schemas/applicationId"
+ },
+ "from": {
+ "$ref": "#/components/schemas/from"
+ },
+ "to": {
+ "$ref": "#/components/schemas/to"
+ },
+ "direction": {
+ "$ref": "#/components/schemas/callDirectionEnum"
+ },
+ "callId": {
+ "$ref": "#/components/schemas/callId"
+ },
+ "callUrl": {
+ "$ref": "#/components/schemas/callUrl"
+ },
+ "enqueuedTime": {
+ "$ref": "#/components/schemas/enqueuedTime"
+ },
+ "startTime": {
+ "$ref": "#/components/schemas/startTime"
+ },
+ "answerTime": {
+ "$ref": "#/components/schemas/answerTime"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ },
+ "transferCallerId": {
+ "$ref": "#/components/schemas/transferCallerId"
+ },
+ "transferTo": {
+ "$ref": "#/components/schemas/transferTo"
+ },
+ "cause": {
+ "$ref": "#/components/schemas/cause"
+ },
+ "errorMessage": {
+ "$ref": "#/components/schemas/errorMessage"
+ },
+ "errorId": {
+ "$ref": "#/components/schemas/errorId"
+ }
+ }
+ },
+ "transferDisconnectCallback": {
+ "type": "object",
+ "description": "This event is sent to the transferDisconnectUrl of each tag when its respective call leg ends for any reason. The event is sent in the normal case, when the transferred leg is answered and later hung up, but is also sent if the new leg was never answered in the first place, if it was rejected, and if the original call leg hung up before the transferred leg.",
+ "properties": {
+ "eventType": {
+ "$ref": "#/components/schemas/eventType"
+ },
+ "eventTime": {
+ "$ref": "#/components/schemas/eventTime"
+ },
+ "accountId": {
+ "$ref": "#/components/schemas/accountId"
+ },
+ "applicationId": {
+ "$ref": "#/components/schemas/applicationId"
+ },
+ "from": {
+ "$ref": "#/components/schemas/from"
+ },
+ "to": {
+ "$ref": "#/components/schemas/to"
+ },
+ "direction": {
+ "$ref": "#/components/schemas/callDirectionEnum"
+ },
+ "callId": {
+ "$ref": "#/components/schemas/callId"
+ },
+ "callUrl": {
+ "$ref": "#/components/schemas/callUrl"
+ },
+ "parentCallId": {
+ "$ref": "#/components/schemas/parentCallId"
+ },
+ "enqueuedTime": {
+ "$ref": "#/components/schemas/enqueuedTime"
+ },
+ "startTime": {
+ "$ref": "#/components/schemas/startTime"
+ },
+ "answerTime": {
+ "$ref": "#/components/schemas/answerTime"
+ },
+ "endTime": {
+ "$ref": "#/components/schemas/endTime"
+ },
+ "tag": {
+ "$ref": "#/components/schemas/tag1"
+ },
+ "transferCallerId": {
+ "$ref": "#/components/schemas/transferCallerId"
+ },
+ "transferTo": {
+ "$ref": "#/components/schemas/transferTo"
+ },
+ "cause": {
+ "$ref": "#/components/schemas/cause"
+ },
+ "errorMessage": {
+ "$ref": "#/components/schemas/errorMessage"
+ },
+ "errorId": {
+ "$ref": "#/components/schemas/errorId"
+ }
+ }
+ },
+ "eventType": {
+ "type": "string",
+ "description": "The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.",
+ "example": "bridgeComplete"
+ },
+ "eventTime": {
+ "type": "string",
+ "description": "The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution."
+ },
+ "accountId": {
+ "type": "string",
+ "description": "The user account associated with the call.",
+ "example": "920012"
+ },
+ "applicationId": {
+ "type": "string",
+ "description": "The id of the application associated with the call.",
+ "example": "04e88489-df02-4e34-a0ee-27a91849555f"
+ },
+ "to": {
+ "type": "string",
+ "description": "The phone number that received the call, in E.164 format (e.g. +15555555555).",
+ "example": "+15555555555"
+ },
+ "from": {
+ "type": "string",
+ "description": "The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.",
+ "example": "+15555555555"
+ },
+ "conferenceId": {
+ "type": "string",
+ "description": "The unique, Bandwidth-generated ID of the conference that was recorded",
+ "example": "conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9"
+ },
+ "name": {
+ "type": "string",
+ "description": "The user-specified name of the conference that was recorded",
+ "example": "my-conference-name"
+ },
+ "recordingId": {
+ "type": "string",
+ "description": "The unique ID of this recording",
+ "example": "r-fbe05094-9fd2afe9-bf5b-4c68-820a-41a01c1c5833"
+ },
+ "duration": {
+ "type": "string",
+ "description": "The duration of the recording in ISO-8601 format",
+ "example": "PT13.67S"
+ },
+ "channels": {
+ "type": "integer",
+ "format": "int32",
+ "description": "Always `1` for conference recordings; multi-channel recordings are not supported on conferences.",
+ "example": 1
+ },
+ "digit": {
+ "type": "string",
+ "description": "The digit collected in the call.",
+ "example": "2"
+ },
+ "digits": {
+ "type": "string",
+ "description": "(optional) The digits, letters, and/or symbols entered by the user. The string is empty if a timeout occurred before any buttons were pressed.",
+ "example": "123"
+ },
+ "terminatingDigit": {
+ "type": "string",
+ "description": "(optional) The digit the user pressed to end the gather. Empty string value if no terminating digit was pressed.",
+ "example": "#"
+ },
+ "startTime": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Time the call was started, in ISO 8601 format.",
+ "example": "2022-06-17T22:19:40.375Z"
+ },
+ "enqueuedTime": {
+ "type": "string",
+ "format": "date-time",
+ "description": "(optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.",
+ "example": "2022-06-17T22:20:00.000Z",
+ "nullable": true
+ },
+ "answerTime": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Time the call was answered, in ISO 8601 format.",
+ "example": "2022-06-17T22:20:00.000Z",
+ "nullable": true
+ },
+ "endTime": {
+ "type": "string",
+ "format": "date-time",
+ "description": "The time that the recording ended in ISO-8601 format",
+ "example": "2022-06-17T22:20:00.000Z"
+ },
+ "status": {
+ "type": "string",
+ "description": "The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values.",
+ "example": "completed"
+ },
+ "transferCallerId": {
+ "type": "string",
+ "description": "The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.",
+ "example": "+15555555555"
+ },
+ "transferTo": {
+ "type": "string",
+ "description": "The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).",
+ "example": "+15555555555)"
+ },
+ "mediaUrl": {
+ "nullable": true,
+ "type": "string",
+ "format": "uri",
+ "description": "The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded.",
+ "example": "https://voice.bandwidth.com/api/v2/accounts/9900000/conferences/conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9/recordings/r-fbe05094-9fd2afe9-bf5b-4c68-820a-41a01c1c5833/media"
+ },
+ "callId": {
+ "type": "string",
+ "description": "The call id associated with the event.",
+ "example": "c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"
+ },
+ "callUrl": {
+ "type": "string",
+ "description": "The URL of the call associated with the event.",
+ "example": "https://voice.bandwidth.com/api/v2/accounts/9900000/calls/c-15ac29a2-1331029c-2cb0-4a07-b215-b22865662d85"
+ },
+ "parentCallId": {
+ "type": "string",
+ "description": "(optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.",
+ "example": "c-95ac8d6e-1a31c52e-b38f-4198-93c1-51633ec68f8d"
+ },
+ "tag1": {
+ "type": "string",
+ "description": "(optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.",
+ "example": "exampleTag",
+ "nullable": true
+ },
+ "cause": {
+ "type": "string",
+ "description": "Reason the call failed - hangup, busy, timeout, cancel, rejected, callback-error, invalid-bxml, application-error, account-limit, node-capacity-exceeded, error, or unknown.",
+ "example": "busy"
+ },
+ "errorMessage": {
+ "type": "string",
+ "description": "Text explaining the reason that caused the call to fail in case of errors.",
+ "example": "Call c-2a913f94-6a486f3a-3cae-4034-bcc3-f0c9fa77ca2f is already bridged with another call",
+ "nullable": true
+ },
+ "errorId": {
+ "type": "string",
+ "description": "Bandwidth's internal id that references the error event.",
+ "example": "4642074b-7b58-478b-96e4-3a60955c6765",
+ "nullable": true
+ },
+ "machineDetectionResult": {
+ "type": "string",
+ "description": "(optional) if machine detection was requested in sync mode, the result will be specified here. Possible values are the same as the async counterpart: Machine Detection Complete",
+ "properties": {
+ "value": {
+ "type": "string",
+ "description": "Possible values are answering-machine, human, silence, timeout, or error.",
+ "example": "answering-machine"
},
"duration": {
- "type": "string"
- },
- "fileFormat": {
- "type": "string"
- },
- "mediaUrl": {
- "type": "string"
- },
- "tag": {
- "type": "string"
- },
- "channels": {
- "type": "integer"
- },
- "status": {
- "type": "string"
- },
- "digits": {
- "type": "string"
- },
- "terminatingDigit": {
- "type": "string"
- },
- "transcription": {
- "$ref": "#/components/schemas/transcription"
- },
- "diversion": {
- "$ref": "#/components/schemas/diversion"
+ "type": "string",
+ "description": "The amount of time it took to determine the result.",
+ "example": "PT4.9891287S"
}
- }
+ },
+ "nullable": true
},
"diversion": {
"type": "object",
"properties": {
"reason": {
- "type": "string"
+ "type": "string",
+ "description": "The reason for the diversion. Common values: unknown, user-busy, no-answer, unavailable, unconditional, time-of-day, do-not-disturb, deflection, follow-me, out-of-service, away.",
+ "example": "unavailable"
},
"privacy": {
- "type": "string"
+ "type": "string",
+ "description": "off or full",
+ "example": "off"
+ },
+ "screen": {
+ "type": "string",
+ "description": "No if the number was provided by the user, yes if the number was provided by the network",
+ "example": "no"
+ },
+ "counter": {
+ "type": "string",
+ "description": "The number of diversions that have occurred",
+ "example": "2"
+ },
+ "limit": {
+ "type": "string",
+ "description": "The maximum number of diversions allowed for this session",
+ "example": "3"
},
"unknown": {
- "type": "string"
+ "type": "string",
+ "description": "The normal list of values is not exhaustive. Your application must be tolerant of unlisted keys and unlisted values of those keys.",
+ "example": "unknownValue"
},
"origTo": {
- "type": "string"
+ "type": "string",
+ "description": "Always present. Indicates the last telephone number that the call was diverted from.",
+ "example": "+15558884444"
}
}
},
- "conferenceCallback": {
+ "transcription": {
"type": "object",
- "description": "This object represents all possible fields that may be included in callbacks related to conference events",
"properties": {
- "conferenceId": {
+ "text": {
"type": "string",
- "example": "conf-fe23a767-a75a5b77-20c5-4cca-b581-cbbf0776eca9"
- },
- "name": {
- "type": "string"
- },
- "eventType": {
- "type": "string"
- },
- "eventTime": {
- "type": "string"
- },
- "tag": {
- "type": "string"
- },
- "callId": {
- "type": "string"
- },
- "to": {
- "type": "string"
- },
- "from": {
- "type": "string"
- },
- "accountId": {
- "type": "string"
- },
- "recordingId": {
- "type": "string"
- },
- "channels": {
- "type": "integer"
- },
- "startTime": {
- "type": "string"
- },
- "endTime": {
- "type": "string"
- },
- "duration": {
- "type": "string"
+ "description": "The transcribed text",
+ "example": "Nice talking to you, friend!"
},
- "fileFormat": {
- "type": "string"
+ "confidence": {
+ "type": "number",
+ "format": "double",
+ "description": "The confidence on the recognized content, ranging from `0.0` to `1.0` with `1.0` being the highest confidence.",
+ "example": 0.9
+ }
+ }
+ },
+ "stirShaken": {
+ "type": "object",
+ "properties": {
+ "verstat": {
+ "type": "string",
+ "description": "(optional) The verification status indicating whether the verification was successful or not. Possible values are TN-Verification-Passed and TN-Verification-Failed.",
+ "example": "Tn-Verification-Passed"
},
- "mediaUrl": {
- "type": "string"
+ "attestationIndicator": {
+ "type": "string",
+ "description": "(optional) The attestation level verified by Bandwidth. Possible values are A (full), B (partial) or C (gateway).",
+ "example": "A"
},
- "status": {
- "type": "string"
+ "originatingId": {
+ "type": "string",
+ "description": "(optional) A unique origination identifier.",
+ "example": null
}
}
},
@@ -4196,15 +5156,47 @@
"description": "The request has been accepted for processing but not yet finished and in a terminal state (COMPLETE, PARTIAL_COMPLETE, or FAILED).",
"properties": {
"requestId": {
- "type": "string"
+ "type": "string",
+ "description": "The phone number lookup request ID from Bandwidth."
+ },
+ "status": {
+ "$ref": "#/components/schemas/lookupStatusEnum"
+ }
+ }
+ },
+ "lookupStatus": {
+ "type": "object",
+ "description": "If requestId exists, the result for that request is returned. See the Examples for details on the various responses that you can receive. Generally, if you see a Response Code of 0 in a result for a TN, information will be available for it. Any other Response Code will indicate no information was available for the TN.",
+ "properties": {
+ "requestId": {
+ "type": "string",
+ "description": "The requestId.",
+ "example": "004223a0-8b17-41b1-bf81-20732adf5590"
},
"status": {
"$ref": "#/components/schemas/lookupStatusEnum"
+ },
+ "result": {
+ "type": "array",
+ "description": "The carrier information results for the specified telephone number.",
+ "items": {
+ "$ref": "#/components/schemas/lookupResult"
+ }
+ },
+ "failedTelephoneNumbers": {
+ "type": "array",
+ "description": "The telephone numbers whose lookup failed.",
+ "items": {
+ "type": "string"
+ },
+ "example": [
+ "+191955512345"
+ ]
}
}
},
"lookupResult": {
- "type": "object",
+ "type": "object",
"description": "Carrier information results for the specified telephone number.",
"properties": {
"Response Code": {
@@ -4254,37 +5246,6 @@
}
}
},
- "lookupStatus": {
- "type": "object",
- "description": "If requestId exists, the result for that request is returned. See the Examples for details on the various responses that you can receive. Generally, if you see a Response Code of 0 in a result for a TN, information will be available for it. Any other Response Code will indicate no information was available for the TN.",
- "properties": {
- "requestId": {
- "type": "string",
- "description": "The requestId.",
- "example": "004223a0-8b17-41b1-bf81-20732adf5590"
- },
- "status": {
- "$ref": "#/components/schemas/lookupStatusEnum"
- },
- "result": {
- "type": "array",
- "description": "The carrier information results for the specified telephone number.",
- "items": {
- "$ref": "#/components/schemas/lookupResult"
- }
- },
- "failedTelephoneNumbers": {
- "type": "array",
- "description": "The telephone numbers whose lookup failed.",
- "items": {
- "type": "string"
- },
- "example": [
- "+191955512345"
- ]
- }
- }
- },
"tnLookupRequestError": {
"type": "object",
"properties": {
@@ -4306,10 +5267,9 @@
"type": "string",
"description": "Optional field to define the device api version of this participant.",
"example": "V3",
- "default": "V2",
+ "default": "V3",
"enum": [
- "V3",
- "V2"
+ "V3"
]
},
"session": {
@@ -4432,12 +5392,12 @@
"properties": {
"sessionId": {
"type": "string",
- "description": "Session the subscriptions are associated with. If this is the only field, the subscriber will be subscribed to all participants in the session (including any participants that are later added to the session). Upon creation of a Participant, returns as an empty object.",
+ "description": "If present, and not overridden by the array of participants, it represents the session the subscriptions are associated with. If this is the only field, the subscriber will be subscribed to all participants in the session (including any participants that are later added to the session). Upon creation of a Participant, returns as an empty object.",
"example": "d8886aad-b956-4e1b-b2f4-d7c9f8162772"
},
"participants": {
"type": "array",
- "description": "(optional) A list of participants in the session that will be subscribed to. Returns empty if used during the creation of a Participant. ",
+ "description": "(optional) A list of participants in the session that will be subscribed to. If present and not empty or null, this will override any sessionId specified in the body. Returns empty if used during the creation of a Participant. ",
"example": [
{
"participantId": "568749d5-04d5-483d-adf5-deac7dd3d521"
@@ -4717,7 +5677,7 @@
}
}
},
- "downloadCallRecordingResponse": {
+ "downloadRecordingMediaResponse": {
"description": "Media found",
"content": {
"audio/vnd.wave": {
@@ -4880,6 +5840,21 @@
}
}
},
+ "voiceConflictError": {
+ "description": "Conflict",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/voiceApiError"
+ },
+ "examples": {
+ "conflictErrorExample": {
+ "$ref": "#/components/examples/voiceConflictErrorExample"
+ }
+ }
+ }
+ }
+ },
"voiceUnsupportedMediaTypeError": {
"description": "Unsupported Media Type",
"content": {
@@ -5626,22 +6601,23 @@
},
"accountId3": {
"name": "accountId",
- "description": "The ID of the Bandwidth account that the user belongs to.",
"in": "path",
"required": true,
"schema": {
- "type": "string",
- "example": "9900000"
- }
+ "type": "string"
+ },
+ "description": "The ID of the Bandwidth account that the user belongs to.",
+ "example": "9900000"
},
"requestId": {
"name": "requestId",
"in": "path",
"required": true,
"schema": {
- "type": "string",
- "example": "004223a0-8b17-41b1-bf81-20732adf5590"
- }
+ "type": "string"
+ },
+ "description": "The phone number lookup request ID from Bandwidth.",
+ "example": "004223a0-8b17-41b1-bf81-20732adf5590"
},
"accountId4": {
"name": "accountId",
@@ -5858,7 +6834,7 @@
}
},
"addParticipantToSessionRequest": {
- "description": "Optional set of subscriptions to set on the participant.\nCalling this endpoint with no/empty body will only add the participant to the session. NOTE: the request body for this endpoint is OPTIONAL and provided as a convenience to avoid additional calls to the Update Participant Subscriptions endpoint.",
+ "description": "The Body describes an optional set of subscriptions to apply to the participant.\n\nCalling this endpoint with no/empty body will only add the participant to the session, and will not subscribe the Participant to any media.\n\nThe request body for this endpoint is OPTIONAL and provided as a convenience to avoid additional calls to the Update Participant Subscriptions endpoint. --- If a body is provided it will result in direct control over what Participants are subscribed to.\n\n - if the participants Array is provided and not empty, that list of Participants will be subscribed To\n - if the participants Array is missing or empty, and the sessionId is provided, the participant will be subscribed to the session, including all subsequent changes to the membership of the session\n - if the sessionId and the participant Array are both missing or empty, no subscriptions will be created",
"required": false,
"content": {
"application/json": {
@@ -5869,7 +6845,7 @@
}
},
"updateParticipantSubscriptionsRequest": {
- "description": "Update participant subscriptions request body.",
+ "description": "The body describes the desired subscriptions for the Participant. --- If a body is provided it will result in direct control over what Participants are subscribed to.\n\n - if the participants Array is provided and not empty, that list of Participants will be subscribed To\n - if the participants Array is missing or empty, and the sessionId is provided, the participant will be subscribed to the session, including all subsequent changes to the membership of the session\n - if the sessionId and the participant Array are both missing or empty, no subscriptions will be created",
"required": false,
"content": {
"application/json": {
@@ -5962,6 +6938,13 @@
"description": "Invalid answerUrl: only http and https are allowed"
}
},
+ "voiceConflictErrorExample": {
+ "summary": "Example of a Conflict (409) Error",
+ "value": {
+ "type": "validation",
+ "description": "Invalid answerUrl: only http and https are allowed"
+ }
+ },
"voiceUnsupportedMediaTypeErrorExample": {
"summary": "Example of an Unsupported Media Type (415) Error",
"value": {
@@ -6108,15 +7091,5 @@
}
}
}
- },
- "info": {
- "title": "Bandwidth",
- "description": "Bandwidth's Communication APIs",
- "contact": {
- "name": "Bandwidth",
- "url": "https://dev.bandwidth.com",
- "email": "letstalk@bandwidth.com"
- },
- "version": "1.0.0"
}
}
diff --git a/bandwidth/api/messages_api.py b/bandwidth/api/messages_api.py
index d00b740b..2de159e4 100644
--- a/bandwidth/api/messages_api.py
+++ b/bandwidth/api/messages_api.py
@@ -22,6 +22,7 @@
none_type,
validate_and_convert_types
)
+from bandwidth.model.create_message_request_error import CreateMessageRequestError
from bandwidth.model.list_message_direction_enum import ListMessageDirectionEnum
from bandwidth.model.message import Message
from bandwidth.model.message_request import MessageRequest
diff --git a/bandwidth/api/phone_number_lookup_api.py b/bandwidth/api/phone_number_lookup_api.py
index 93772ae3..dd86fdfc 100644
--- a/bandwidth/api/phone_number_lookup_api.py
+++ b/bandwidth/api/phone_number_lookup_api.py
@@ -269,7 +269,7 @@ def get_lookup_status(
Args:
account_id (str): The ID of the Bandwidth account that the user belongs to.
- request_id (str):
+ request_id (str): The phone number lookup request ID from Bandwidth.
Keyword Args:
_return_http_data_only (bool): response data without head status
diff --git a/bandwidth/api/sessions_api.py b/bandwidth/api/sessions_api.py
index 6e06cf86..8d76e66e 100644
--- a/bandwidth/api/sessions_api.py
+++ b/bandwidth/api/sessions_api.py
@@ -596,7 +596,7 @@ def add_participant_to_session(
participant_id (str): Participant ID
Keyword Args:
- subscriptions (Subscriptions): Optional set of subscriptions to set on the participant. Calling this endpoint with no/empty body will only add the participant to the session. NOTE: the request body for this endpoint is OPTIONAL and provided as a convenience to avoid additional calls to the Update Participant Subscriptions endpoint.. [optional]
+ subscriptions (Subscriptions): The Body describes an optional set of subscriptions to apply to the participant. Calling this endpoint with no/empty body will only add the participant to the session, and will not subscribe the Participant to any media. The request body for this endpoint is OPTIONAL and provided as a convenience to avoid additional calls to the Update Participant Subscriptions endpoint. --- If a body is provided it will result in direct control over what Participants are subscribed to. - if the participants Array is provided and not empty, that list of Participants will be subscribed To - if the participants Array is missing or empty, and the sessionId is provided, the participant will be subscribed to the session, including all subsequent changes to the membership of the session - if the sessionId and the participant Array are both missing or empty, no subscriptions will be created. [optional]
_return_http_data_only (bool): response data without head status
code and headers. Default is True.
_preload_content (bool): if False, the urllib3.HTTPResponse object
@@ -1215,7 +1215,7 @@ def update_participant_subscriptions(
participant_id (str): Participant ID
Keyword Args:
- subscriptions (Subscriptions): Update participant subscriptions request body.. [optional]
+ subscriptions (Subscriptions): The body describes the desired subscriptions for the Participant. --- If a body is provided it will result in direct control over what Participants are subscribed to. - if the participants Array is provided and not empty, that list of Participants will be subscribed To - if the participants Array is missing or empty, and the sessionId is provided, the participant will be subscribed to the session, including all subsequent changes to the membership of the session - if the sessionId and the participant Array are both missing or empty, no subscriptions will be created. [optional]
_return_http_data_only (bool): response data without head status
code and headers. Default is True.
_preload_content (bool): if False, the urllib3.HTTPResponse object
diff --git a/bandwidth/model/answer_callback.py b/bandwidth/model/answer_callback.py
new file mode 100644
index 00000000..3766b3f3
--- /dev/null
+++ b/bandwidth/model/answer_callback.py
@@ -0,0 +1,322 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+def lazy_import():
+ from bandwidth.model.call_direction_enum import CallDirectionEnum
+ globals()['CallDirectionEnum'] = CallDirectionEnum
+
+
+class AnswerCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ lazy_import()
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ lazy_import()
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'account_id': (str,), # noqa: E501
+ 'application_id': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'direction': (CallDirectionEnum,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'call_url': (str,), # noqa: E501
+ 'enqueued_time': (datetime, none_type,), # noqa: E501
+ 'start_time': (datetime,), # noqa: E501
+ 'answer_time': (datetime, none_type,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ 'machine_detection_result': (str, none_type,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'account_id': 'accountId', # noqa: E501
+ 'application_id': 'applicationId', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'direction': 'direction', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'call_url': 'callUrl', # noqa: E501
+ 'enqueued_time': 'enqueuedTime', # noqa: E501
+ 'start_time': 'startTime', # noqa: E501
+ 'answer_time': 'answerTime', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ 'machine_detection_result': 'machineDetectionResult', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """AnswerCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ machine_detection_result (str, none_type): (optional) if machine detection was requested in sync mode, the result will be specified here. Possible values are the same as the async counterpart: Machine Detection Complete. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """AnswerCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ machine_detection_result (str, none_type): (optional) if machine detection was requested in sync mode, the result will be specified here. Possible values are the same as the async counterpart: Machine Detection Complete. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/bridge_complete_callback.py b/bandwidth/model/bridge_complete_callback.py
new file mode 100644
index 00000000..9f6a06c2
--- /dev/null
+++ b/bandwidth/model/bridge_complete_callback.py
@@ -0,0 +1,330 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+def lazy_import():
+ from bandwidth.model.call_direction_enum import CallDirectionEnum
+ globals()['CallDirectionEnum'] = CallDirectionEnum
+
+
+class BridgeCompleteCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ lazy_import()
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ lazy_import()
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'account_id': (str,), # noqa: E501
+ 'application_id': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'direction': (CallDirectionEnum,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'call_url': (str,), # noqa: E501
+ 'enqueued_time': (datetime, none_type,), # noqa: E501
+ 'start_time': (datetime,), # noqa: E501
+ 'answer_time': (datetime, none_type,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ 'cause': (str,), # noqa: E501
+ 'error_message': (str, none_type,), # noqa: E501
+ 'error_id': (str, none_type,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'account_id': 'accountId', # noqa: E501
+ 'application_id': 'applicationId', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'direction': 'direction', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'call_url': 'callUrl', # noqa: E501
+ 'enqueued_time': 'enqueuedTime', # noqa: E501
+ 'start_time': 'startTime', # noqa: E501
+ 'answer_time': 'answerTime', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ 'cause': 'cause', # noqa: E501
+ 'error_message': 'errorMessage', # noqa: E501
+ 'error_id': 'errorId', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """BridgeCompleteCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ cause (str): Reason the call failed - hangup, busy, timeout, cancel, rejected, callback-error, invalid-bxml, application-error, account-limit, node-capacity-exceeded, error, or unknown.. [optional] # noqa: E501
+ error_message (str, none_type): Text explaining the reason that caused the call to fail in case of errors.. [optional] # noqa: E501
+ error_id (str, none_type): Bandwidth's internal id that references the error event.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """BridgeCompleteCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ cause (str): Reason the call failed - hangup, busy, timeout, cancel, rejected, callback-error, invalid-bxml, application-error, account-limit, node-capacity-exceeded, error, or unknown.. [optional] # noqa: E501
+ error_message (str, none_type): Text explaining the reason that caused the call to fail in case of errors.. [optional] # noqa: E501
+ error_id (str, none_type): Bandwidth's internal id that references the error event.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/bridge_target_complete_callback.py b/bandwidth/model/bridge_target_complete_callback.py
new file mode 100644
index 00000000..8303a85c
--- /dev/null
+++ b/bandwidth/model/bridge_target_complete_callback.py
@@ -0,0 +1,318 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+def lazy_import():
+ from bandwidth.model.call_direction_enum import CallDirectionEnum
+ globals()['CallDirectionEnum'] = CallDirectionEnum
+
+
+class BridgeTargetCompleteCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ lazy_import()
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ lazy_import()
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'account_id': (str,), # noqa: E501
+ 'application_id': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'direction': (CallDirectionEnum,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'call_url': (str,), # noqa: E501
+ 'enqueued_time': (datetime, none_type,), # noqa: E501
+ 'start_time': (datetime,), # noqa: E501
+ 'answer_time': (datetime, none_type,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'account_id': 'accountId', # noqa: E501
+ 'application_id': 'applicationId', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'direction': 'direction', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'call_url': 'callUrl', # noqa: E501
+ 'enqueued_time': 'enqueuedTime', # noqa: E501
+ 'start_time': 'startTime', # noqa: E501
+ 'answer_time': 'answerTime', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """BridgeTargetCompleteCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """BridgeTargetCompleteCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/call_recording_metadata.py b/bandwidth/model/call_recording_metadata.py
index b1ad2bc7..a899bcfb 100644
--- a/bandwidth/model/call_recording_metadata.py
+++ b/bandwidth/model/call_recording_metadata.py
@@ -95,12 +95,12 @@ def openapi_types():
'application_id': (str,), # noqa: E501
'account_id': (str,), # noqa: E501
'call_id': (str,), # noqa: E501
- 'parent_call_id': (str, none_type,), # noqa: E501
+ 'parent_call_id': (str,), # noqa: E501
'recording_id': (str,), # noqa: E501
'to': (str,), # noqa: E501
'_from': (str,), # noqa: E501
- 'transfer_caller_id': (str, none_type,), # noqa: E501
- 'transfer_to': (str, none_type,), # noqa: E501
+ 'transfer_caller_id': (str,), # noqa: E501
+ 'transfer_to': (str,), # noqa: E501
'duration': (str,), # noqa: E501
'direction': (CallDirectionEnum,), # noqa: E501
'channels': (int,), # noqa: E501
@@ -108,7 +108,7 @@ def openapi_types():
'end_time': (datetime,), # noqa: E501
'file_format': (FileFormatEnum,), # noqa: E501
'status': (str,), # noqa: E501
- 'media_url': (str,), # noqa: E501
+ 'media_url': (str, none_type,), # noqa: E501
'transcription': (TranscriptionMetadata,), # noqa: E501
}
@@ -179,23 +179,23 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
Animal class but this time we won't travel
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
- application_id (str): The `applicationId` associated with the call. [optional] # noqa: E501
- account_id (str): The account that placed the call. [optional] # noqa: E501
- call_id (str): The `callId` of the call that created this recording. [optional] # noqa: E501
- parent_call_id (str, none_type): If the call was a transferred leg, this field contains the `callId` of the call that executed the [``](/docs/voice/bxml/transfer). [optional] # noqa: E501
- recording_id (str): The recording's unique ID. [optional] # noqa: E501
- to (str): The phone number that received the call, in E.164 format (e.g. +15555555555), or if the call was to a SIP URI, the SIP URI. [optional] # noqa: E501
- _from (str): The phone number that made the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
- transfer_caller_id (str, none_type): If the call was a transferred leg, the `transferCallerId` field from the [``](/docs/voice/bxml/transfer), if any.. [optional] # noqa: E501
- transfer_to (str, none_type): If the call was a transferred leg, the number that the call was transferred to. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ parent_call_id (str): (optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.. [optional] # noqa: E501
+ recording_id (str): The unique ID of this recording. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
duration (str): The duration of the recording in ISO-8601 format. [optional] # noqa: E501
direction (CallDirectionEnum): [optional] # noqa: E501
- channels (int): The number of channels in the recording. Either `1` or `2`. [optional] # noqa: E501
- start_time (datetime): The time that the recording started in ISO 8601 format. [optional] # noqa: E501
- end_time (datetime): The time that the recording ended in ISO 8601 format. [optional] # noqa: E501
+ channels (int): Always `1` for conference recordings; multi-channel recordings are not supported on conferences.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ end_time (datetime): The time that the recording ended in ISO-8601 format. [optional] # noqa: E501
file_format (FileFormatEnum): [optional] # noqa: E501
- status (str): The current status of the recording. Current values are 'processing', 'partial', 'complete', 'deleted' and 'error'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
- media_url (str): The URL that can be used to download the audio recording. [optional] # noqa: E501
+ status (str): The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
+ media_url (str, none_type): The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded.. [optional] # noqa: E501
transcription (TranscriptionMetadata): [optional] # noqa: E501
"""
@@ -282,23 +282,23 @@ def __init__(self, *args, **kwargs): # noqa: E501
Animal class but this time we won't travel
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
- application_id (str): The `applicationId` associated with the call. [optional] # noqa: E501
- account_id (str): The account that placed the call. [optional] # noqa: E501
- call_id (str): The `callId` of the call that created this recording. [optional] # noqa: E501
- parent_call_id (str, none_type): If the call was a transferred leg, this field contains the `callId` of the call that executed the [``](/docs/voice/bxml/transfer). [optional] # noqa: E501
- recording_id (str): The recording's unique ID. [optional] # noqa: E501
- to (str): The phone number that received the call, in E.164 format (e.g. +15555555555), or if the call was to a SIP URI, the SIP URI. [optional] # noqa: E501
- _from (str): The phone number that made the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
- transfer_caller_id (str, none_type): If the call was a transferred leg, the `transferCallerId` field from the [``](/docs/voice/bxml/transfer), if any.. [optional] # noqa: E501
- transfer_to (str, none_type): If the call was a transferred leg, the number that the call was transferred to. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ parent_call_id (str): (optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.. [optional] # noqa: E501
+ recording_id (str): The unique ID of this recording. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
duration (str): The duration of the recording in ISO-8601 format. [optional] # noqa: E501
direction (CallDirectionEnum): [optional] # noqa: E501
- channels (int): The number of channels in the recording. Either `1` or `2`. [optional] # noqa: E501
- start_time (datetime): The time that the recording started in ISO 8601 format. [optional] # noqa: E501
- end_time (datetime): The time that the recording ended in ISO 8601 format. [optional] # noqa: E501
+ channels (int): Always `1` for conference recordings; multi-channel recordings are not supported on conferences.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ end_time (datetime): The time that the recording ended in ISO-8601 format. [optional] # noqa: E501
file_format (FileFormatEnum): [optional] # noqa: E501
- status (str): The current status of the recording. Current values are 'processing', 'partial', 'complete', 'deleted' and 'error'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
- media_url (str): The URL that can be used to download the audio recording. [optional] # noqa: E501
+ status (str): The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
+ media_url (str, none_type): The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded.. [optional] # noqa: E501
transcription (TranscriptionMetadata): [optional] # noqa: E501
"""
diff --git a/bandwidth/model/conference_completed_callback.py b/bandwidth/model/conference_completed_callback.py
new file mode 100644
index 00000000..33b0e3fa
--- /dev/null
+++ b/bandwidth/model/conference_completed_callback.py
@@ -0,0 +1,280 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+
+class ConferenceCompletedCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'conference_id': (str,), # noqa: E501
+ 'name': (str,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'conference_id': 'conferenceId', # noqa: E501
+ 'name': 'name', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """ConferenceCompletedCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ conference_id (str): The unique, Bandwidth-generated ID of the conference that was recorded. [optional] # noqa: E501
+ name (str): The user-specified name of the conference that was recorded. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """ConferenceCompletedCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ conference_id (str): The unique, Bandwidth-generated ID of the conference that was recorded. [optional] # noqa: E501
+ name (str): The user-specified name of the conference that was recorded. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/conference_created_callback.py b/bandwidth/model/conference_created_callback.py
new file mode 100644
index 00000000..305ee0fa
--- /dev/null
+++ b/bandwidth/model/conference_created_callback.py
@@ -0,0 +1,280 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+
+class ConferenceCreatedCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'conference_id': (str,), # noqa: E501
+ 'name': (str,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'conference_id': 'conferenceId', # noqa: E501
+ 'name': 'name', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """ConferenceCreatedCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ conference_id (str): The unique, Bandwidth-generated ID of the conference that was recorded. [optional] # noqa: E501
+ name (str): The user-specified name of the conference that was recorded. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """ConferenceCreatedCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ conference_id (str): The unique, Bandwidth-generated ID of the conference that was recorded. [optional] # noqa: E501
+ name (str): The user-specified name of the conference that was recorded. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/conference_member.py b/bandwidth/model/conference_member.py
index 9262a1c6..f88915be 100644
--- a/bandwidth/model/conference_member.py
+++ b/bandwidth/model/conference_member.py
@@ -145,8 +145,8 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
Animal class but this time we won't travel
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
- call_id (str): The call ID of this conference member. [optional] # noqa: E501
- conference_id (str): The Bandwidth-generated conference ID. [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ conference_id (str): The unique, Bandwidth-generated ID of the conference that was recorded. [optional] # noqa: E501
member_url (str): A URL that may be used to retrieve information about or update the state of this conference member. This is the URL of this member's [Get Conference Member](/apis/voice/#operation/getConferenceMember) endpoint and [Modify Conference Member](/apis/voice/#operation/updateConferenceMember) endpoint.. [optional] # noqa: E501
mute (bool): Whether or not this member is currently muted. Members who are muted are still able to hear other participants. If used in a PUT request, updates this member's mute status. Has no effect if omitted.. [optional] # noqa: E501
hold (bool): Whether or not this member is currently on hold. Members who are on hold are not able to hear or speak in the conference. If used in a PUT request, updates this member's hold status. Has no effect if omitted.. [optional] # noqa: E501
@@ -236,8 +236,8 @@ def __init__(self, *args, **kwargs): # noqa: E501
Animal class but this time we won't travel
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
- call_id (str): The call ID of this conference member. [optional] # noqa: E501
- conference_id (str): The Bandwidth-generated conference ID. [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ conference_id (str): The unique, Bandwidth-generated ID of the conference that was recorded. [optional] # noqa: E501
member_url (str): A URL that may be used to retrieve information about or update the state of this conference member. This is the URL of this member's [Get Conference Member](/apis/voice/#operation/getConferenceMember) endpoint and [Modify Conference Member](/apis/voice/#operation/updateConferenceMember) endpoint.. [optional] # noqa: E501
mute (bool): Whether or not this member is currently muted. Members who are muted are still able to hear other participants. If used in a PUT request, updates this member's mute status. Has no effect if omitted.. [optional] # noqa: E501
hold (bool): Whether or not this member is currently on hold. Members who are on hold are not able to hear or speak in the conference. If used in a PUT request, updates this member's hold status. Has no effect if omitted.. [optional] # noqa: E501
diff --git a/bandwidth/model/conference_member_exit_callback.py b/bandwidth/model/conference_member_exit_callback.py
new file mode 100644
index 00000000..66d9b5d6
--- /dev/null
+++ b/bandwidth/model/conference_member_exit_callback.py
@@ -0,0 +1,292 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+
+class ConferenceMemberExitCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'conference_id': (str,), # noqa: E501
+ 'name': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'conference_id': 'conferenceId', # noqa: E501
+ 'name': 'name', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """ConferenceMemberExitCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ conference_id (str): The unique, Bandwidth-generated ID of the conference that was recorded. [optional] # noqa: E501
+ name (str): The user-specified name of the conference that was recorded. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """ConferenceMemberExitCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ conference_id (str): The unique, Bandwidth-generated ID of the conference that was recorded. [optional] # noqa: E501
+ name (str): The user-specified name of the conference that was recorded. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/conference_member_join_callback.py b/bandwidth/model/conference_member_join_callback.py
new file mode 100644
index 00000000..f3ce9992
--- /dev/null
+++ b/bandwidth/model/conference_member_join_callback.py
@@ -0,0 +1,292 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+
+class ConferenceMemberJoinCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'conference_id': (str,), # noqa: E501
+ 'name': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'conference_id': 'conferenceId', # noqa: E501
+ 'name': 'name', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """ConferenceMemberJoinCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ conference_id (str): The unique, Bandwidth-generated ID of the conference that was recorded. [optional] # noqa: E501
+ name (str): The user-specified name of the conference that was recorded. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """ConferenceMemberJoinCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ conference_id (str): The unique, Bandwidth-generated ID of the conference that was recorded. [optional] # noqa: E501
+ name (str): The user-specified name of the conference that was recorded. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/conference_recording_available_callback.py b/bandwidth/model/conference_recording_available_callback.py
new file mode 100644
index 00000000..b6f19f02
--- /dev/null
+++ b/bandwidth/model/conference_recording_available_callback.py
@@ -0,0 +1,322 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+def lazy_import():
+ from bandwidth.model.file_format_enum import FileFormatEnum
+ globals()['FileFormatEnum'] = FileFormatEnum
+
+
+class ConferenceRecordingAvailableCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ lazy_import()
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ lazy_import()
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'conference_id': (str,), # noqa: E501
+ 'name': (str,), # noqa: E501
+ 'account_id': (str,), # noqa: E501
+ 'recording_id': (str,), # noqa: E501
+ 'channels': (int,), # noqa: E501
+ 'start_time': (datetime,), # noqa: E501
+ 'end_time': (datetime,), # noqa: E501
+ 'duration': (str,), # noqa: E501
+ 'file_format': (FileFormatEnum,), # noqa: E501
+ 'media_url': (str, none_type,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ 'status': (str,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'conference_id': 'conferenceId', # noqa: E501
+ 'name': 'name', # noqa: E501
+ 'account_id': 'accountId', # noqa: E501
+ 'recording_id': 'recordingId', # noqa: E501
+ 'channels': 'channels', # noqa: E501
+ 'start_time': 'startTime', # noqa: E501
+ 'end_time': 'endTime', # noqa: E501
+ 'duration': 'duration', # noqa: E501
+ 'file_format': 'fileFormat', # noqa: E501
+ 'media_url': 'mediaUrl', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ 'status': 'status', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """ConferenceRecordingAvailableCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ conference_id (str): The unique, Bandwidth-generated ID of the conference that was recorded. [optional] # noqa: E501
+ name (str): The user-specified name of the conference that was recorded. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ recording_id (str): The unique ID of this recording. [optional] # noqa: E501
+ channels (int): Always `1` for conference recordings; multi-channel recordings are not supported on conferences.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ end_time (datetime): The time that the recording ended in ISO-8601 format. [optional] # noqa: E501
+ duration (str): The duration of the recording in ISO-8601 format. [optional] # noqa: E501
+ file_format (FileFormatEnum): [optional] # noqa: E501
+ media_url (str, none_type): The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ status (str): The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """ConferenceRecordingAvailableCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ conference_id (str): The unique, Bandwidth-generated ID of the conference that was recorded. [optional] # noqa: E501
+ name (str): The user-specified name of the conference that was recorded. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ recording_id (str): The unique ID of this recording. [optional] # noqa: E501
+ channels (int): Always `1` for conference recordings; multi-channel recordings are not supported on conferences.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ end_time (datetime): The time that the recording ended in ISO-8601 format. [optional] # noqa: E501
+ duration (str): The duration of the recording in ISO-8601 format. [optional] # noqa: E501
+ file_format (FileFormatEnum): [optional] # noqa: E501
+ media_url (str, none_type): The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ status (str): The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/conference_recording_metadata.py b/bandwidth/model/conference_recording_metadata.py
index fd78d38f..15fc7a87 100644
--- a/bandwidth/model/conference_recording_metadata.py
+++ b/bandwidth/model/conference_recording_metadata.py
@@ -161,16 +161,16 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
Animal class but this time we won't travel
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
- account_id (str): Your account ID. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
conference_id (str): The unique, Bandwidth-generated ID of the conference that was recorded. [optional] # noqa: E501
name (str): The user-specified name of the conference that was recorded. [optional] # noqa: E501
recording_id (str): The unique ID of this recording. [optional] # noqa: E501
duration (str): The duration of the recording in ISO-8601 format. [optional] # noqa: E501
channels (int): Always `1` for conference recordings; multi-channel recordings are not supported on conferences.. [optional] # noqa: E501
- start_time (datetime): The time that the recording started in ISO-8601 format. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
end_time (datetime): The time that the recording ended in ISO-8601 format. [optional] # noqa: E501
file_format (FileFormatEnum): [optional] # noqa: E501
- status (str): The current status of the recording. Current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
+ status (str): The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
media_url (str, none_type): The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded.. [optional] # noqa: E501
"""
@@ -257,16 +257,16 @@ def __init__(self, *args, **kwargs): # noqa: E501
Animal class but this time we won't travel
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
- account_id (str): Your account ID. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
conference_id (str): The unique, Bandwidth-generated ID of the conference that was recorded. [optional] # noqa: E501
name (str): The user-specified name of the conference that was recorded. [optional] # noqa: E501
recording_id (str): The unique ID of this recording. [optional] # noqa: E501
duration (str): The duration of the recording in ISO-8601 format. [optional] # noqa: E501
channels (int): Always `1` for conference recordings; multi-channel recordings are not supported on conferences.. [optional] # noqa: E501
- start_time (datetime): The time that the recording started in ISO-8601 format. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
end_time (datetime): The time that the recording ended in ISO-8601 format. [optional] # noqa: E501
file_format (FileFormatEnum): [optional] # noqa: E501
- status (str): The current status of the recording. Current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
+ status (str): The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
media_url (str, none_type): The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded.. [optional] # noqa: E501
"""
diff --git a/bandwidth/model/conference_redirect_callback.py b/bandwidth/model/conference_redirect_callback.py
new file mode 100644
index 00000000..05bd1f46
--- /dev/null
+++ b/bandwidth/model/conference_redirect_callback.py
@@ -0,0 +1,280 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+
+class ConferenceRedirectCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'conference_id': (str,), # noqa: E501
+ 'name': (str,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'conference_id': 'conferenceId', # noqa: E501
+ 'name': 'name', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """ConferenceRedirectCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ conference_id (str): The unique, Bandwidth-generated ID of the conference that was recorded. [optional] # noqa: E501
+ name (str): The user-specified name of the conference that was recorded. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """ConferenceRedirectCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ conference_id (str): The unique, Bandwidth-generated ID of the conference that was recorded. [optional] # noqa: E501
+ name (str): The user-specified name of the conference that was recorded. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/create_call.py b/bandwidth/model/create_call.py
index 52065343..0d409f10 100644
--- a/bandwidth/model/create_call.py
+++ b/bandwidth/model/create_call.py
@@ -33,8 +33,12 @@
def lazy_import():
from bandwidth.model.callback_method_enum import CallbackMethodEnum
from bandwidth.model.machine_detection_configuration import MachineDetectionConfiguration
+ from bandwidth.model.password import Password
+ from bandwidth.model.username import Username
globals()['CallbackMethodEnum'] = CallbackMethodEnum
globals()['MachineDetectionConfiguration'] = MachineDetectionConfiguration
+ globals()['Password'] = Password
+ globals()['Username'] = Username
class CreateCall(ModelNormal):
@@ -65,6 +69,15 @@ class CreateCall(ModelNormal):
}
validations = {
+ ('answer_url',): {
+ 'max_length': 2048,
+ },
+ ('answer_fallback_url',): {
+ 'max_length': 2048,
+ },
+ ('disconnect_url',): {
+ 'max_length': 2048,
+ },
('call_timeout',): {
'inclusive_maximum': 300,
'inclusive_minimum': 1,
@@ -110,12 +123,12 @@ def openapi_types():
'answer_url': (str,), # noqa: E501
'uui': (str, none_type,), # noqa: E501
'answer_method': (CallbackMethodEnum,), # noqa: E501
- 'username': (str, none_type,), # noqa: E501
- 'password': (str, none_type,), # noqa: E501
+ 'username': (Username,), # noqa: E501
+ 'password': (Password,), # noqa: E501
'answer_fallback_url': (str, none_type,), # noqa: E501
'answer_fallback_method': (CallbackMethodEnum,), # noqa: E501
- 'fallback_username': (str, none_type,), # noqa: E501
- 'fallback_password': (str, none_type,), # noqa: E501
+ 'fallback_username': (Username,), # noqa: E501
+ 'fallback_password': (Password,), # noqa: E501
'disconnect_url': (str, none_type,), # noqa: E501
'disconnect_method': (CallbackMethodEnum,), # noqa: E501
'call_timeout': (float, none_type,), # noqa: E501
@@ -201,12 +214,12 @@ def _from_openapi_data(cls, to, _from, application_id, answer_url, *args, **kwar
_visited_composed_classes = (Animal,)
uui (str, none_type): A comma-separated list of 'User-To-User' headers to be sent in the INVITE when calling a SIP URI. Each value must end with an 'encoding' parameter as described in RFC 7433. Only 'jwt' and 'base64' encodings are allowed. The entire value cannot exceed 350 characters, including parameters and separators.. [optional] # noqa: E501
answer_method (CallbackMethodEnum): [optional] # noqa: E501
- username (str, none_type): Basic auth username.. [optional] # noqa: E501
- password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ username (Username): [optional] # noqa: E501
+ password (Password): [optional] # noqa: E501
answer_fallback_url (str, none_type): A fallback url which, if provided, will be used to retry the `answer` webhook delivery in case `answerUrl` fails to respond Must use `https` if specifying `fallbackUsername` and `fallbackPassword`. [optional] # noqa: E501
answer_fallback_method (CallbackMethodEnum): [optional] # noqa: E501
- fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
- fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ fallback_username (Username): [optional] # noqa: E501
+ fallback_password (Password): [optional] # noqa: E501
disconnect_url (str, none_type): The URL to send the Disconnect event to when the call ends. This event does not expect a BXML response.. [optional] # noqa: E501
disconnect_method (CallbackMethodEnum): [optional] # noqa: E501
call_timeout (float, none_type): The timeout (in seconds) for the callee to answer the call after it starts ringing. If the call does not start ringing within 30s, the call will be cancelled regardless of this value. Can be any numeric value (including decimals) between 1 and 300.. [optional] if omitted the server will use the default value of 30 # noqa: E501
@@ -311,12 +324,12 @@ def __init__(self, to, _from, application_id, answer_url, *args, **kwargs): # n
_visited_composed_classes = (Animal,)
uui (str, none_type): A comma-separated list of 'User-To-User' headers to be sent in the INVITE when calling a SIP URI. Each value must end with an 'encoding' parameter as described in RFC 7433. Only 'jwt' and 'base64' encodings are allowed. The entire value cannot exceed 350 characters, including parameters and separators.. [optional] # noqa: E501
answer_method (CallbackMethodEnum): [optional] # noqa: E501
- username (str, none_type): Basic auth username.. [optional] # noqa: E501
- password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ username (Username): [optional] # noqa: E501
+ password (Password): [optional] # noqa: E501
answer_fallback_url (str, none_type): A fallback url which, if provided, will be used to retry the `answer` webhook delivery in case `answerUrl` fails to respond Must use `https` if specifying `fallbackUsername` and `fallbackPassword`. [optional] # noqa: E501
answer_fallback_method (CallbackMethodEnum): [optional] # noqa: E501
- fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
- fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ fallback_username (Username): [optional] # noqa: E501
+ fallback_password (Password): [optional] # noqa: E501
disconnect_url (str, none_type): The URL to send the Disconnect event to when the call ends. This event does not expect a BXML response.. [optional] # noqa: E501
disconnect_method (CallbackMethodEnum): [optional] # noqa: E501
call_timeout (float, none_type): The timeout (in seconds) for the callee to answer the call after it starts ringing. If the call does not start ringing within 30s, the call will be cancelled regardless of this value. Can be any numeric value (including decimals) between 1 and 300.. [optional] if omitted the server will use the default value of 30 # noqa: E501
diff --git a/bandwidth/model/create_call_response.py b/bandwidth/model/create_call_response.py
index d6fb7f32..e76ea505 100644
--- a/bandwidth/model/create_call_response.py
+++ b/bandwidth/model/create_call_response.py
@@ -32,7 +32,11 @@
def lazy_import():
from bandwidth.model.callback_method_enum import CallbackMethodEnum
+ from bandwidth.model.password import Password
+ from bandwidth.model.username import Username
globals()['CallbackMethodEnum'] = CallbackMethodEnum
+ globals()['Password'] = Password
+ globals()['Username'] = Username
class CreateCallResponse(ModelNormal):
@@ -104,10 +108,10 @@ def openapi_types():
'answer_fallback_method': (CallbackMethodEnum,), # noqa: E501
'answer_fallback_url': (str, none_type,), # noqa: E501
'disconnect_url': (str, none_type,), # noqa: E501
- 'username': (str, none_type,), # noqa: E501
- 'password': (str, none_type,), # noqa: E501
- 'fallback_username': (str, none_type,), # noqa: E501
- 'fallback_password': (str, none_type,), # noqa: E501
+ 'username': (Username,), # noqa: E501
+ 'password': (Password,), # noqa: E501
+ 'fallback_username': (Username,), # noqa: E501
+ 'fallback_password': (Password,), # noqa: E501
'priority': (float, none_type,), # noqa: E501
}
@@ -199,10 +203,10 @@ def _from_openapi_data(cls, application_id, account_id, call_id, to, _from, call
answer_fallback_method (CallbackMethodEnum): [optional] # noqa: E501
answer_fallback_url (str, none_type): Fallback URL to deliver the `answer` event webhook.. [optional] # noqa: E501
disconnect_url (str, none_type): URL to deliver the `disconnect` event webhook.. [optional] # noqa: E501
- username (str, none_type): Basic auth username.. [optional] # noqa: E501
- password (str, none_type): Basic auth password.. [optional] # noqa: E501
- fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
- fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ username (Username): [optional] # noqa: E501
+ password (Password): [optional] # noqa: E501
+ fallback_username (Username): [optional] # noqa: E501
+ fallback_password (Password): [optional] # noqa: E501
priority (float, none_type): The priority of this call over other calls from your account.. [optional] # noqa: E501
"""
@@ -316,10 +320,10 @@ def __init__(self, application_id, account_id, call_id, to, _from, call_url, ans
answer_fallback_method (CallbackMethodEnum): [optional] # noqa: E501
answer_fallback_url (str, none_type): Fallback URL to deliver the `answer` event webhook.. [optional] # noqa: E501
disconnect_url (str, none_type): URL to deliver the `disconnect` event webhook.. [optional] # noqa: E501
- username (str, none_type): Basic auth username.. [optional] # noqa: E501
- password (str, none_type): Basic auth password.. [optional] # noqa: E501
- fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
- fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ username (Username): [optional] # noqa: E501
+ password (Password): [optional] # noqa: E501
+ fallback_username (Username): [optional] # noqa: E501
+ fallback_password (Password): [optional] # noqa: E501
priority (float, none_type): The priority of this call over other calls from your account.. [optional] # noqa: E501
"""
diff --git a/bandwidth/model/create_lookup_response.py b/bandwidth/model/create_lookup_response.py
index 24fa20b1..638b29e8 100644
--- a/bandwidth/model/create_lookup_response.py
+++ b/bandwidth/model/create_lookup_response.py
@@ -143,7 +143,7 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
Animal class but this time we won't travel
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
- request_id (str): [optional] # noqa: E501
+ request_id (str): The phone number lookup request ID from Bandwidth.. [optional] # noqa: E501
status (LookupStatusEnum): [optional] # noqa: E501
"""
@@ -230,7 +230,7 @@ def __init__(self, *args, **kwargs): # noqa: E501
Animal class but this time we won't travel
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
- request_id (str): [optional] # noqa: E501
+ request_id (str): The phone number lookup request ID from Bandwidth.. [optional] # noqa: E501
status (LookupStatusEnum): [optional] # noqa: E501
"""
diff --git a/bandwidth/model/device_api_version_enum.py b/bandwidth/model/device_api_version_enum.py
index 12853955..1967c940 100644
--- a/bandwidth/model/device_api_version_enum.py
+++ b/bandwidth/model/device_api_version_enum.py
@@ -54,7 +54,6 @@ class DeviceApiVersionEnum(ModelSimple):
allowed_values = {
('value',): {
'V3': "V3",
- 'V2': "V2",
},
}
@@ -106,10 +105,10 @@ def __init__(self, *args, **kwargs):
Note that value can be passed either in args or in kwargs, but not in both.
Args:
- args[0] (str): Optional field to define the device api version of this participant.. if omitted defaults to "V2", must be one of ["V3", "V2", ] # noqa: E501
+ args[0] (str): Optional field to define the device api version of this participant.. if omitted defaults to "V3", must be one of ["V3", ] # noqa: E501
Keyword Args:
- value (str): Optional field to define the device api version of this participant.. if omitted defaults to "V2", must be one of ["V3", "V2", ] # noqa: E501
+ value (str): Optional field to define the device api version of this participant.. if omitted defaults to "V3", must be one of ["V3", ] # noqa: E501
_check_type (bool): if True, values for parameters in openapi_types
will be type checked and a TypeError will be
raised if the wrong type is input.
@@ -150,7 +149,7 @@ def __init__(self, *args, **kwargs):
args = list(args)
value = args.pop(0)
else:
- value = "V2"
+ value = "V3"
_check_type = kwargs.pop('_check_type', True)
_spec_property_naming = kwargs.pop('_spec_property_naming', False)
@@ -196,10 +195,10 @@ def _from_openapi_data(cls, *args, **kwargs):
Note that value can be passed either in args or in kwargs, but not in both.
Args:
- args[0] (str): Optional field to define the device api version of this participant.. if omitted defaults to "V2", must be one of ["V3", "V2", ] # noqa: E501
+ args[0] (str): Optional field to define the device api version of this participant.. if omitted defaults to "V3", must be one of ["V3", ] # noqa: E501
Keyword Args:
- value (str): Optional field to define the device api version of this participant.. if omitted defaults to "V2", must be one of ["V3", "V2", ] # noqa: E501
+ value (str): Optional field to define the device api version of this participant.. if omitted defaults to "V3", must be one of ["V3", ] # noqa: E501
_check_type (bool): if True, values for parameters in openapi_types
will be type checked and a TypeError will be
raised if the wrong type is input.
@@ -242,7 +241,7 @@ def _from_openapi_data(cls, *args, **kwargs):
args = list(args)
value = args.pop(0)
else:
- value = "V2"
+ value = "V3"
_check_type = kwargs.pop('_check_type', True)
_spec_property_naming = kwargs.pop('_spec_property_naming', False)
diff --git a/bandwidth/model/disconenct_callback.py b/bandwidth/model/disconenct_callback.py
new file mode 100644
index 00000000..bf42b3ff
--- /dev/null
+++ b/bandwidth/model/disconenct_callback.py
@@ -0,0 +1,334 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+def lazy_import():
+ from bandwidth.model.call_direction_enum import CallDirectionEnum
+ globals()['CallDirectionEnum'] = CallDirectionEnum
+
+
+class DisconenctCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ lazy_import()
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ lazy_import()
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'account_id': (str,), # noqa: E501
+ 'application_id': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'direction': (CallDirectionEnum,), # noqa: E501
+ 'call_url': (str,), # noqa: E501
+ 'enqueued_time': (datetime, none_type,), # noqa: E501
+ 'start_time': (datetime,), # noqa: E501
+ 'answer_time': (datetime, none_type,), # noqa: E501
+ 'end_time': (datetime,), # noqa: E501
+ 'cause': (str,), # noqa: E501
+ 'error_message': (str, none_type,), # noqa: E501
+ 'error_id': (str, none_type,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'account_id': 'accountId', # noqa: E501
+ 'application_id': 'applicationId', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'direction': 'direction', # noqa: E501
+ 'call_url': 'callUrl', # noqa: E501
+ 'enqueued_time': 'enqueuedTime', # noqa: E501
+ 'start_time': 'startTime', # noqa: E501
+ 'answer_time': 'answerTime', # noqa: E501
+ 'end_time': 'endTime', # noqa: E501
+ 'cause': 'cause', # noqa: E501
+ 'error_message': 'errorMessage', # noqa: E501
+ 'error_id': 'errorId', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """DisconenctCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ end_time (datetime): The time that the recording ended in ISO-8601 format. [optional] # noqa: E501
+ cause (str): Reason the call failed - hangup, busy, timeout, cancel, rejected, callback-error, invalid-bxml, application-error, account-limit, node-capacity-exceeded, error, or unknown.. [optional] # noqa: E501
+ error_message (str, none_type): Text explaining the reason that caused the call to fail in case of errors.. [optional] # noqa: E501
+ error_id (str, none_type): Bandwidth's internal id that references the error event.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """DisconenctCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ end_time (datetime): The time that the recording ended in ISO-8601 format. [optional] # noqa: E501
+ cause (str): Reason the call failed - hangup, busy, timeout, cancel, rejected, callback-error, invalid-bxml, application-error, account-limit, node-capacity-exceeded, error, or unknown.. [optional] # noqa: E501
+ error_message (str, none_type): Text explaining the reason that caused the call to fail in case of errors.. [optional] # noqa: E501
+ error_id (str, none_type): Bandwidth's internal id that references the error event.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/diversion.py b/bandwidth/model/diversion.py
index 4b9b4054..0897347d 100644
--- a/bandwidth/model/diversion.py
+++ b/bandwidth/model/diversion.py
@@ -84,6 +84,9 @@ def openapi_types():
return {
'reason': (str,), # noqa: E501
'privacy': (str,), # noqa: E501
+ 'screen': (str,), # noqa: E501
+ 'counter': (str,), # noqa: E501
+ 'limit': (str,), # noqa: E501
'unknown': (str,), # noqa: E501
'orig_to': (str,), # noqa: E501
}
@@ -96,6 +99,9 @@ def discriminator():
attribute_map = {
'reason': 'reason', # noqa: E501
'privacy': 'privacy', # noqa: E501
+ 'screen': 'screen', # noqa: E501
+ 'counter': 'counter', # noqa: E501
+ 'limit': 'limit', # noqa: E501
'unknown': 'unknown', # noqa: E501
'orig_to': 'origTo', # noqa: E501
}
@@ -141,10 +147,13 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
Animal class but this time we won't travel
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
- reason (str): [optional] # noqa: E501
- privacy (str): [optional] # noqa: E501
- unknown (str): [optional] # noqa: E501
- orig_to (str): [optional] # noqa: E501
+ reason (str): The reason for the diversion. Common values: unknown, user-busy, no-answer, unavailable, unconditional, time-of-day, do-not-disturb, deflection, follow-me, out-of-service, away.. [optional] # noqa: E501
+ privacy (str): off or full. [optional] # noqa: E501
+ screen (str): No if the number was provided by the user, yes if the number was provided by the network. [optional] # noqa: E501
+ counter (str): The number of diversions that have occurred. [optional] # noqa: E501
+ limit (str): The maximum number of diversions allowed for this session. [optional] # noqa: E501
+ unknown (str): The normal list of values is not exhaustive. Your application must be tolerant of unlisted keys and unlisted values of those keys.. [optional] # noqa: E501
+ orig_to (str): Always present. Indicates the last telephone number that the call was diverted from.. [optional] # noqa: E501
"""
_check_type = kwargs.pop('_check_type', True)
@@ -230,10 +239,13 @@ def __init__(self, *args, **kwargs): # noqa: E501
Animal class but this time we won't travel
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
- reason (str): [optional] # noqa: E501
- privacy (str): [optional] # noqa: E501
- unknown (str): [optional] # noqa: E501
- orig_to (str): [optional] # noqa: E501
+ reason (str): The reason for the diversion. Common values: unknown, user-busy, no-answer, unavailable, unconditional, time-of-day, do-not-disturb, deflection, follow-me, out-of-service, away.. [optional] # noqa: E501
+ privacy (str): off or full. [optional] # noqa: E501
+ screen (str): No if the number was provided by the user, yes if the number was provided by the network. [optional] # noqa: E501
+ counter (str): The number of diversions that have occurred. [optional] # noqa: E501
+ limit (str): The maximum number of diversions allowed for this session. [optional] # noqa: E501
+ unknown (str): The normal list of values is not exhaustive. Your application must be tolerant of unlisted keys and unlisted values of those keys.. [optional] # noqa: E501
+ orig_to (str): Always present. Indicates the last telephone number that the call was diverted from.. [optional] # noqa: E501
"""
_check_type = kwargs.pop('_check_type', True)
diff --git a/bandwidth/model/dtmf_callback.py b/bandwidth/model/dtmf_callback.py
new file mode 100644
index 00000000..58032264
--- /dev/null
+++ b/bandwidth/model/dtmf_callback.py
@@ -0,0 +1,334 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+def lazy_import():
+ from bandwidth.model.call_direction_enum import CallDirectionEnum
+ globals()['CallDirectionEnum'] = CallDirectionEnum
+
+
+class DtmfCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ lazy_import()
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ lazy_import()
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'account_id': (str,), # noqa: E501
+ 'application_id': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'direction': (CallDirectionEnum,), # noqa: E501
+ 'digit': (str,), # noqa: E501
+ 'call_url': (str,), # noqa: E501
+ 'enqueued_time': (datetime, none_type,), # noqa: E501
+ 'start_time': (datetime,), # noqa: E501
+ 'answer_time': (datetime, none_type,), # noqa: E501
+ 'parent_call_id': (str,), # noqa: E501
+ 'transfer_caller_id': (str,), # noqa: E501
+ 'transfer_to': (str,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'account_id': 'accountId', # noqa: E501
+ 'application_id': 'applicationId', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'direction': 'direction', # noqa: E501
+ 'digit': 'digit', # noqa: E501
+ 'call_url': 'callUrl', # noqa: E501
+ 'enqueued_time': 'enqueuedTime', # noqa: E501
+ 'start_time': 'startTime', # noqa: E501
+ 'answer_time': 'answerTime', # noqa: E501
+ 'parent_call_id': 'parentCallId', # noqa: E501
+ 'transfer_caller_id': 'transferCallerId', # noqa: E501
+ 'transfer_to': 'transferTo', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """DtmfCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ digit (str): The digit collected in the call.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ parent_call_id (str): (optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """DtmfCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ digit (str): The digit collected in the call.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ parent_call_id (str): (optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/gather_callback.py b/bandwidth/model/gather_callback.py
new file mode 100644
index 00000000..2a6c9cf8
--- /dev/null
+++ b/bandwidth/model/gather_callback.py
@@ -0,0 +1,338 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+def lazy_import():
+ from bandwidth.model.call_direction_enum import CallDirectionEnum
+ globals()['CallDirectionEnum'] = CallDirectionEnum
+
+
+class GatherCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ lazy_import()
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ lazy_import()
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'account_id': (str,), # noqa: E501
+ 'application_id': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'direction': (CallDirectionEnum,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'digits': (str,), # noqa: E501
+ 'call_url': (str,), # noqa: E501
+ 'enqueued_time': (datetime, none_type,), # noqa: E501
+ 'start_time': (datetime,), # noqa: E501
+ 'answer_time': (datetime, none_type,), # noqa: E501
+ 'parent_call_id': (str,), # noqa: E501
+ 'terminating_digit': (str,), # noqa: E501
+ 'transfer_caller_id': (str,), # noqa: E501
+ 'transfer_to': (str,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'account_id': 'accountId', # noqa: E501
+ 'application_id': 'applicationId', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'direction': 'direction', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'digits': 'digits', # noqa: E501
+ 'call_url': 'callUrl', # noqa: E501
+ 'enqueued_time': 'enqueuedTime', # noqa: E501
+ 'start_time': 'startTime', # noqa: E501
+ 'answer_time': 'answerTime', # noqa: E501
+ 'parent_call_id': 'parentCallId', # noqa: E501
+ 'terminating_digit': 'terminatingDigit', # noqa: E501
+ 'transfer_caller_id': 'transferCallerId', # noqa: E501
+ 'transfer_to': 'transferTo', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """GatherCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ digits (str): (optional) The digits, letters, and/or symbols entered by the user. The string is empty if a timeout occurred before any buttons were pressed.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ parent_call_id (str): (optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.. [optional] # noqa: E501
+ terminating_digit (str): (optional) The digit the user pressed to end the gather. Empty string value if no terminating digit was pressed.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """GatherCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ digits (str): (optional) The digits, letters, and/or symbols entered by the user. The string is empty if a timeout occurred before any buttons were pressed.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ parent_call_id (str): (optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.. [optional] # noqa: E501
+ terminating_digit (str): (optional) The digit the user pressed to end the gather. Empty string value if no terminating digit was pressed.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/initiate_callback.py b/bandwidth/model/initiate_callback.py
new file mode 100644
index 00000000..38d06071
--- /dev/null
+++ b/bandwidth/model/initiate_callback.py
@@ -0,0 +1,318 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+def lazy_import():
+ from bandwidth.model.call_direction_enum import CallDirectionEnum
+ from bandwidth.model.diversion import Diversion
+ from bandwidth.model.stir_shaken import StirShaken
+ globals()['CallDirectionEnum'] = CallDirectionEnum
+ globals()['Diversion'] = Diversion
+ globals()['StirShaken'] = StirShaken
+
+
+class InitiateCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ lazy_import()
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ lazy_import()
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'account_id': (str,), # noqa: E501
+ 'application_id': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'direction': (CallDirectionEnum,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'call_url': (str,), # noqa: E501
+ 'start_time': (datetime,), # noqa: E501
+ 'diversion': (Diversion,), # noqa: E501
+ 'stir_shaken': (StirShaken,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'account_id': 'accountId', # noqa: E501
+ 'application_id': 'applicationId', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'direction': 'direction', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'call_url': 'callUrl', # noqa: E501
+ 'start_time': 'startTime', # noqa: E501
+ 'diversion': 'diversion', # noqa: E501
+ 'stir_shaken': 'stirShaken', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """InitiateCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ diversion (Diversion): [optional] # noqa: E501
+ stir_shaken (StirShaken): [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """InitiateCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ diversion (Diversion): [optional] # noqa: E501
+ stir_shaken (StirShaken): [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/list_message_item.py b/bandwidth/model/list_message_item.py
index abb0b594..ec5ec3d5 100644
--- a/bandwidth/model/list_message_item.py
+++ b/bandwidth/model/list_message_item.py
@@ -102,7 +102,7 @@ def openapi_types():
'segment_count': (int,), # noqa: E501
'error_code': (int,), # noqa: E501
'receive_time': (str,), # noqa: E501
- 'carrier_name': (str, none_type,), # noqa: E501
+ 'carrier_name': (str,), # noqa: E501
'message_size': (int, none_type,), # noqa: E501
'message_length': (int,), # noqa: E501
'attachment_count': (int, none_type,), # noqa: E501
@@ -185,7 +185,7 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
segment_count (int): The number of segments the message was sent as.. [optional] # noqa: E501
error_code (int): The numeric error code of the message.. [optional] # noqa: E501
receive_time (str): The ISO 8601 datetime of the message.. [optional] # noqa: E501
- carrier_name (str, none_type): The name of the carrier. Not currently supported for MMS coming soon.. [optional] # noqa: E501
+ carrier_name (str): The name of the carrier. Not currently supported for MMS coming soon.. [optional] # noqa: E501
message_size (int, none_type): The size of the message including message content and headers.. [optional] # noqa: E501
message_length (int): The length of the message content.. [optional] # noqa: E501
attachment_count (int, none_type): The number of attachments the message has.. [optional] # noqa: E501
@@ -286,7 +286,7 @@ def __init__(self, *args, **kwargs): # noqa: E501
segment_count (int): The number of segments the message was sent as.. [optional] # noqa: E501
error_code (int): The numeric error code of the message.. [optional] # noqa: E501
receive_time (str): The ISO 8601 datetime of the message.. [optional] # noqa: E501
- carrier_name (str, none_type): The name of the carrier. Not currently supported for MMS coming soon.. [optional] # noqa: E501
+ carrier_name (str): The name of the carrier. Not currently supported for MMS coming soon.. [optional] # noqa: E501
message_size (int, none_type): The size of the message including message content and headers.. [optional] # noqa: E501
message_length (int): The length of the message content.. [optional] # noqa: E501
attachment_count (int, none_type): The number of attachments the message has.. [optional] # noqa: E501
diff --git a/bandwidth/model/machine_detection_complete_callback.py b/bandwidth/model/machine_detection_complete_callback.py
new file mode 100644
index 00000000..541ee149
--- /dev/null
+++ b/bandwidth/model/machine_detection_complete_callback.py
@@ -0,0 +1,322 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+def lazy_import():
+ from bandwidth.model.call_direction_enum import CallDirectionEnum
+ globals()['CallDirectionEnum'] = CallDirectionEnum
+
+
+class MachineDetectionCompleteCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ lazy_import()
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ lazy_import()
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'account_id': (str,), # noqa: E501
+ 'application_id': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'direction': (CallDirectionEnum,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'call_url': (str,), # noqa: E501
+ 'enqueued_time': (datetime, none_type,), # noqa: E501
+ 'start_time': (datetime,), # noqa: E501
+ 'answer_time': (datetime, none_type,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ 'machine_detection_result': (str, none_type,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'account_id': 'accountId', # noqa: E501
+ 'application_id': 'applicationId', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'direction': 'direction', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'call_url': 'callUrl', # noqa: E501
+ 'enqueued_time': 'enqueuedTime', # noqa: E501
+ 'start_time': 'startTime', # noqa: E501
+ 'answer_time': 'answerTime', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ 'machine_detection_result': 'machineDetectionResult', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """MachineDetectionCompleteCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ machine_detection_result (str, none_type): (optional) if machine detection was requested in sync mode, the result will be specified here. Possible values are the same as the async counterpart: Machine Detection Complete. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """MachineDetectionCompleteCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ machine_detection_result (str, none_type): (optional) if machine detection was requested in sync mode, the result will be specified here. Possible values are the same as the async counterpart: Machine Detection Complete. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/machine_detection_configuration.py b/bandwidth/model/machine_detection_configuration.py
index f0677882..8750feed 100644
--- a/bandwidth/model/machine_detection_configuration.py
+++ b/bandwidth/model/machine_detection_configuration.py
@@ -33,8 +33,12 @@
def lazy_import():
from bandwidth.model.callback_method_enum import CallbackMethodEnum
from bandwidth.model.machine_detection_mode_enum import MachineDetectionModeEnum
+ from bandwidth.model.password import Password
+ from bandwidth.model.username import Username
globals()['CallbackMethodEnum'] = CallbackMethodEnum
globals()['MachineDetectionModeEnum'] = MachineDetectionModeEnum
+ globals()['Password'] = Password
+ globals()['Username'] = Username
class MachineDetectionConfiguration(ModelNormal):
@@ -65,6 +69,12 @@ class MachineDetectionConfiguration(ModelNormal):
}
validations = {
+ ('callback_url',): {
+ 'max_length': 2048,
+ },
+ ('fallback_url',): {
+ 'max_length': 2048,
+ },
}
@cached_property
@@ -91,20 +101,20 @@ def openapi_types():
lazy_import()
return {
'mode': (MachineDetectionModeEnum,), # noqa: E501
- 'detection_timeout': (float,), # noqa: E501
- 'silence_timeout': (float,), # noqa: E501
- 'speech_threshold': (float,), # noqa: E501
- 'speech_end_threshold': (float,), # noqa: E501
- 'machine_speech_end_threshold': (float,), # noqa: E501
- 'delay_result': (bool,), # noqa: E501
+ 'detection_timeout': (float, none_type,), # noqa: E501
+ 'silence_timeout': (float, none_type,), # noqa: E501
+ 'speech_threshold': (float, none_type,), # noqa: E501
+ 'speech_end_threshold': (float, none_type,), # noqa: E501
+ 'machine_speech_end_threshold': (float, none_type,), # noqa: E501
+ 'delay_result': (bool, none_type,), # noqa: E501
'callback_url': (str, none_type,), # noqa: E501
'callback_method': (CallbackMethodEnum,), # noqa: E501
- 'username': (str, none_type,), # noqa: E501
- 'password': (str, none_type,), # noqa: E501
+ 'username': (Username,), # noqa: E501
+ 'password': (Password,), # noqa: E501
'fallback_url': (str, none_type,), # noqa: E501
'fallback_method': (CallbackMethodEnum,), # noqa: E501
- 'fallback_username': (str, none_type,), # noqa: E501
- 'fallback_password': (str, none_type,), # noqa: E501
+ 'fallback_username': (Username,), # noqa: E501
+ 'fallback_password': (Password,), # noqa: E501
}
@cached_property
@@ -172,20 +182,20 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
mode (MachineDetectionModeEnum): [optional] # noqa: E501
- detection_timeout (float): The timeout used for the whole operation, in seconds. If no result is determined in this period, a callback with a `timeout` result is sent.. [optional] if omitted the server will use the default value of 15 # noqa: E501
- silence_timeout (float): If no speech is detected in this period, a callback with a 'silence' result is sent.. [optional] if omitted the server will use the default value of 10 # noqa: E501
- speech_threshold (float): When speech has ended and a result couldn't be determined based on the audio content itself, this value is used to determine if the speaker is a machine based on the speech duration. If the length of the speech detected is greater than or equal to this threshold, the result will be 'answering-machine'. If the length of speech detected is below this threshold, the result will be 'human'.. [optional] if omitted the server will use the default value of 10 # noqa: E501
- speech_end_threshold (float): Amount of silence (in seconds) before assuming the callee has finished speaking.. [optional] if omitted the server will use the default value of 5 # noqa: E501
- machine_speech_end_threshold (float): When an answering machine is detected, the amount of silence (in seconds) before assuming the message has finished playing.. [optional] # noqa: E501
- delay_result (bool): If set to 'true' and if an answering machine is detected, the 'answering-machine' callback will be delayed until the machine is done speaking or until the 'detectionTimeout' is exceeded. If false, the 'answering-machine' result is sent immediately.. [optional] if omitted the server will use the default value of False # noqa: E501
+ detection_timeout (float, none_type): The timeout used for the whole operation, in seconds. If no result is determined in this period, a callback with a `timeout` result is sent.. [optional] if omitted the server will use the default value of 15 # noqa: E501
+ silence_timeout (float, none_type): If no speech is detected in this period, a callback with a 'silence' result is sent.. [optional] if omitted the server will use the default value of 10 # noqa: E501
+ speech_threshold (float, none_type): When speech has ended and a result couldn't be determined based on the audio content itself, this value is used to determine if the speaker is a machine based on the speech duration. If the length of the speech detected is greater than or equal to this threshold, the result will be 'answering-machine'. If the length of speech detected is below this threshold, the result will be 'human'.. [optional] if omitted the server will use the default value of 10 # noqa: E501
+ speech_end_threshold (float, none_type): Amount of silence (in seconds) before assuming the callee has finished speaking.. [optional] if omitted the server will use the default value of 5 # noqa: E501
+ machine_speech_end_threshold (float, none_type): When an answering machine is detected, the amount of silence (in seconds) before assuming the message has finished playing. If not provided it will default to the speechEndThreshold value.. [optional] # noqa: E501
+ delay_result (bool, none_type): If set to 'true' and if an answering machine is detected, the 'answering-machine' callback will be delayed until the machine is done speaking, or an end of message tone is detected, or until the 'detectionTimeout' is exceeded. If false, the 'answering-machine' result is sent immediately.. [optional] if omitted the server will use the default value of False # noqa: E501
callback_url (str, none_type): The URL to send the 'machineDetectionComplete' webhook when the detection is completed. Only for 'async' mode.. [optional] # noqa: E501
callback_method (CallbackMethodEnum): [optional] # noqa: E501
- username (str, none_type): Basic auth username.. [optional] # noqa: E501
- password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ username (Username): [optional] # noqa: E501
+ password (Password): [optional] # noqa: E501
fallback_url (str, none_type): A fallback URL which, if provided, will be used to retry the machine detection complete webhook delivery in case `callbackUrl` fails to respond. [optional] # noqa: E501
fallback_method (CallbackMethodEnum): [optional] # noqa: E501
- fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
- fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ fallback_username (Username): [optional] # noqa: E501
+ fallback_password (Password): [optional] # noqa: E501
"""
_check_type = kwargs.pop('_check_type', True)
@@ -272,20 +282,20 @@ def __init__(self, *args, **kwargs): # noqa: E501
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
mode (MachineDetectionModeEnum): [optional] # noqa: E501
- detection_timeout (float): The timeout used for the whole operation, in seconds. If no result is determined in this period, a callback with a `timeout` result is sent.. [optional] if omitted the server will use the default value of 15 # noqa: E501
- silence_timeout (float): If no speech is detected in this period, a callback with a 'silence' result is sent.. [optional] if omitted the server will use the default value of 10 # noqa: E501
- speech_threshold (float): When speech has ended and a result couldn't be determined based on the audio content itself, this value is used to determine if the speaker is a machine based on the speech duration. If the length of the speech detected is greater than or equal to this threshold, the result will be 'answering-machine'. If the length of speech detected is below this threshold, the result will be 'human'.. [optional] if omitted the server will use the default value of 10 # noqa: E501
- speech_end_threshold (float): Amount of silence (in seconds) before assuming the callee has finished speaking.. [optional] if omitted the server will use the default value of 5 # noqa: E501
- machine_speech_end_threshold (float): When an answering machine is detected, the amount of silence (in seconds) before assuming the message has finished playing.. [optional] # noqa: E501
- delay_result (bool): If set to 'true' and if an answering machine is detected, the 'answering-machine' callback will be delayed until the machine is done speaking or until the 'detectionTimeout' is exceeded. If false, the 'answering-machine' result is sent immediately.. [optional] if omitted the server will use the default value of False # noqa: E501
+ detection_timeout (float, none_type): The timeout used for the whole operation, in seconds. If no result is determined in this period, a callback with a `timeout` result is sent.. [optional] if omitted the server will use the default value of 15 # noqa: E501
+ silence_timeout (float, none_type): If no speech is detected in this period, a callback with a 'silence' result is sent.. [optional] if omitted the server will use the default value of 10 # noqa: E501
+ speech_threshold (float, none_type): When speech has ended and a result couldn't be determined based on the audio content itself, this value is used to determine if the speaker is a machine based on the speech duration. If the length of the speech detected is greater than or equal to this threshold, the result will be 'answering-machine'. If the length of speech detected is below this threshold, the result will be 'human'.. [optional] if omitted the server will use the default value of 10 # noqa: E501
+ speech_end_threshold (float, none_type): Amount of silence (in seconds) before assuming the callee has finished speaking.. [optional] if omitted the server will use the default value of 5 # noqa: E501
+ machine_speech_end_threshold (float, none_type): When an answering machine is detected, the amount of silence (in seconds) before assuming the message has finished playing. If not provided it will default to the speechEndThreshold value.. [optional] # noqa: E501
+ delay_result (bool, none_type): If set to 'true' and if an answering machine is detected, the 'answering-machine' callback will be delayed until the machine is done speaking, or an end of message tone is detected, or until the 'detectionTimeout' is exceeded. If false, the 'answering-machine' result is sent immediately.. [optional] if omitted the server will use the default value of False # noqa: E501
callback_url (str, none_type): The URL to send the 'machineDetectionComplete' webhook when the detection is completed. Only for 'async' mode.. [optional] # noqa: E501
callback_method (CallbackMethodEnum): [optional] # noqa: E501
- username (str, none_type): Basic auth username.. [optional] # noqa: E501
- password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ username (Username): [optional] # noqa: E501
+ password (Password): [optional] # noqa: E501
fallback_url (str, none_type): A fallback URL which, if provided, will be used to retry the machine detection complete webhook delivery in case `callbackUrl` fails to respond. [optional] # noqa: E501
fallback_method (CallbackMethodEnum): [optional] # noqa: E501
- fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
- fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ fallback_username (Username): [optional] # noqa: E501
+ fallback_password (Password): [optional] # noqa: E501
"""
_check_type = kwargs.pop('_check_type', True)
diff --git a/bandwidth/model/password.py b/bandwidth/model/password.py
new file mode 100644
index 00000000..cfedaaa9
--- /dev/null
+++ b/bandwidth/model/password.py
@@ -0,0 +1,290 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+
+class Password(ModelSimple):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ ('value',): {
+ 'max_length': 1024,
+ },
+ }
+
+ additional_properties_type = None
+
+ _nullable = True
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ return {
+ 'value': (str,),
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {}
+
+ read_only_vars = set()
+
+ _composed_schemas = None
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs):
+ """Password - a model defined in OpenAPI
+
+ Note that value can be passed either in args or in kwargs, but not in both.
+
+ Args:
+ args[0] (str): Basic auth password.. # noqa: E501
+
+ Keyword Args:
+ value (str): Basic auth password.. # noqa: E501
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ """
+ # required up here when default value is not given
+ _path_to_item = kwargs.pop('_path_to_item', ())
+
+ if 'value' in kwargs:
+ value = kwargs.pop('value')
+ elif args:
+ args = list(args)
+ value = args.pop(0)
+ else:
+ raise ApiTypeError(
+ "value is required, but not passed in args or kwargs and doesn't have default",
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+ self.value = value
+ if kwargs:
+ raise ApiTypeError(
+ "Invalid named arguments=%s passed to %s. Remove those invalid named arguments." % (
+ kwargs,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs):
+ """Password - a model defined in OpenAPI
+
+ Note that value can be passed either in args or in kwargs, but not in both.
+
+ Args:
+ args[0] (str): Basic auth password.. # noqa: E501
+
+ Keyword Args:
+ value (str): Basic auth password.. # noqa: E501
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ """
+ # required up here when default value is not given
+ _path_to_item = kwargs.pop('_path_to_item', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if 'value' in kwargs:
+ value = kwargs.pop('value')
+ elif args:
+ args = list(args)
+ value = args.pop(0)
+ else:
+ raise ApiTypeError(
+ "value is required, but not passed in args or kwargs and doesn't have default",
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+ self.value = value
+ if kwargs:
+ raise ApiTypeError(
+ "Invalid named arguments=%s passed to %s. Remove those invalid named arguments." % (
+ kwargs,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ return self
diff --git a/bandwidth/model/recording_available_callback.py b/bandwidth/model/recording_available_callback.py
new file mode 100644
index 00000000..763958bf
--- /dev/null
+++ b/bandwidth/model/recording_available_callback.py
@@ -0,0 +1,356 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+def lazy_import():
+ from bandwidth.model.call_direction_enum import CallDirectionEnum
+ from bandwidth.model.file_format_enum import FileFormatEnum
+ globals()['CallDirectionEnum'] = CallDirectionEnum
+ globals()['FileFormatEnum'] = FileFormatEnum
+
+
+class RecordingAvailableCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ lazy_import()
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ lazy_import()
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'account_id': (str,), # noqa: E501
+ 'application_id': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'direction': (CallDirectionEnum,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'call_url': (str,), # noqa: E501
+ 'parent_call_id': (str,), # noqa: E501
+ 'recording_id': (str,), # noqa: E501
+ 'media_url': (str, none_type,), # noqa: E501
+ 'enqueued_time': (datetime, none_type,), # noqa: E501
+ 'start_time': (datetime,), # noqa: E501
+ 'end_time': (datetime,), # noqa: E501
+ 'duration': (str,), # noqa: E501
+ 'file_format': (FileFormatEnum,), # noqa: E501
+ 'channels': (str,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ 'status': (str,), # noqa: E501
+ 'transfer_caller_id': (str,), # noqa: E501
+ 'transfer_to': (str,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'account_id': 'accountId', # noqa: E501
+ 'application_id': 'applicationId', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'direction': 'direction', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'call_url': 'callUrl', # noqa: E501
+ 'parent_call_id': 'parentCallId', # noqa: E501
+ 'recording_id': 'recordingId', # noqa: E501
+ 'media_url': 'mediaUrl', # noqa: E501
+ 'enqueued_time': 'enqueuedTime', # noqa: E501
+ 'start_time': 'startTime', # noqa: E501
+ 'end_time': 'endTime', # noqa: E501
+ 'duration': 'duration', # noqa: E501
+ 'file_format': 'fileFormat', # noqa: E501
+ 'channels': 'channels', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ 'status': 'status', # noqa: E501
+ 'transfer_caller_id': 'transferCallerId', # noqa: E501
+ 'transfer_to': 'transferTo', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """RecordingAvailableCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ parent_call_id (str): (optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.. [optional] # noqa: E501
+ recording_id (str): The unique ID of this recording. [optional] # noqa: E501
+ media_url (str, none_type): The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ end_time (datetime): The time that the recording ended in ISO-8601 format. [optional] # noqa: E501
+ duration (str): The duration of the recording in ISO-8601 format. [optional] # noqa: E501
+ file_format (FileFormatEnum): [optional] # noqa: E501
+ channels (str): The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ status (str): The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """RecordingAvailableCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ parent_call_id (str): (optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.. [optional] # noqa: E501
+ recording_id (str): The unique ID of this recording. [optional] # noqa: E501
+ media_url (str, none_type): The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ end_time (datetime): The time that the recording ended in ISO-8601 format. [optional] # noqa: E501
+ duration (str): The duration of the recording in ISO-8601 format. [optional] # noqa: E501
+ file_format (FileFormatEnum): [optional] # noqa: E501
+ channels (str): The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ status (str): The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/recording_complete_callback.py b/bandwidth/model/recording_complete_callback.py
new file mode 100644
index 00000000..c9c343ce
--- /dev/null
+++ b/bandwidth/model/recording_complete_callback.py
@@ -0,0 +1,356 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+def lazy_import():
+ from bandwidth.model.call_direction_enum import CallDirectionEnum
+ from bandwidth.model.file_format_enum import FileFormatEnum
+ globals()['CallDirectionEnum'] = CallDirectionEnum
+ globals()['FileFormatEnum'] = FileFormatEnum
+
+
+class RecordingCompleteCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ lazy_import()
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ lazy_import()
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'account_id': (str,), # noqa: E501
+ 'application_id': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'direction': (CallDirectionEnum,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'call_url': (str,), # noqa: E501
+ 'parent_call_id': (str,), # noqa: E501
+ 'recording_id': (str,), # noqa: E501
+ 'media_url': (str, none_type,), # noqa: E501
+ 'enqueued_time': (datetime, none_type,), # noqa: E501
+ 'start_time': (datetime,), # noqa: E501
+ 'answer_time': (datetime, none_type,), # noqa: E501
+ 'end_time': (datetime,), # noqa: E501
+ 'duration': (str,), # noqa: E501
+ 'file_format': (FileFormatEnum,), # noqa: E501
+ 'channels': (int,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ 'transfer_caller_id': (str,), # noqa: E501
+ 'transfer_to': (str,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'account_id': 'accountId', # noqa: E501
+ 'application_id': 'applicationId', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'direction': 'direction', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'call_url': 'callUrl', # noqa: E501
+ 'parent_call_id': 'parentCallId', # noqa: E501
+ 'recording_id': 'recordingId', # noqa: E501
+ 'media_url': 'mediaUrl', # noqa: E501
+ 'enqueued_time': 'enqueuedTime', # noqa: E501
+ 'start_time': 'startTime', # noqa: E501
+ 'answer_time': 'answerTime', # noqa: E501
+ 'end_time': 'endTime', # noqa: E501
+ 'duration': 'duration', # noqa: E501
+ 'file_format': 'fileFormat', # noqa: E501
+ 'channels': 'channels', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ 'transfer_caller_id': 'transferCallerId', # noqa: E501
+ 'transfer_to': 'transferTo', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """RecordingCompleteCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ parent_call_id (str): (optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.. [optional] # noqa: E501
+ recording_id (str): The unique ID of this recording. [optional] # noqa: E501
+ media_url (str, none_type): The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ end_time (datetime): The time that the recording ended in ISO-8601 format. [optional] # noqa: E501
+ duration (str): The duration of the recording in ISO-8601 format. [optional] # noqa: E501
+ file_format (FileFormatEnum): [optional] # noqa: E501
+ channels (int): Always `1` for conference recordings; multi-channel recordings are not supported on conferences.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """RecordingCompleteCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ parent_call_id (str): (optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.. [optional] # noqa: E501
+ recording_id (str): The unique ID of this recording. [optional] # noqa: E501
+ media_url (str, none_type): The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ end_time (datetime): The time that the recording ended in ISO-8601 format. [optional] # noqa: E501
+ duration (str): The duration of the recording in ISO-8601 format. [optional] # noqa: E501
+ file_format (FileFormatEnum): [optional] # noqa: E501
+ channels (int): Always `1` for conference recordings; multi-channel recordings are not supported on conferences.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/redirect_callback.py b/bandwidth/model/redirect_callback.py
new file mode 100644
index 00000000..623bcd39
--- /dev/null
+++ b/bandwidth/model/redirect_callback.py
@@ -0,0 +1,330 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+def lazy_import():
+ from bandwidth.model.call_direction_enum import CallDirectionEnum
+ globals()['CallDirectionEnum'] = CallDirectionEnum
+
+
+class RedirectCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ lazy_import()
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ lazy_import()
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'account_id': (str,), # noqa: E501
+ 'application_id': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'direction': (CallDirectionEnum,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'call_url': (str,), # noqa: E501
+ 'parent_call_id': (str,), # noqa: E501
+ 'enqueued_time': (datetime, none_type,), # noqa: E501
+ 'start_time': (datetime,), # noqa: E501
+ 'answer_time': (datetime, none_type,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ 'transfer_caller_id': (str,), # noqa: E501
+ 'transfer_to': (str,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'account_id': 'accountId', # noqa: E501
+ 'application_id': 'applicationId', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'direction': 'direction', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'call_url': 'callUrl', # noqa: E501
+ 'parent_call_id': 'parentCallId', # noqa: E501
+ 'enqueued_time': 'enqueuedTime', # noqa: E501
+ 'start_time': 'startTime', # noqa: E501
+ 'answer_time': 'answerTime', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ 'transfer_caller_id': 'transferCallerId', # noqa: E501
+ 'transfer_to': 'transferTo', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """RedirectCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ parent_call_id (str): (optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """RedirectCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ parent_call_id (str): (optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/stir_shaken.py b/bandwidth/model/stir_shaken.py
new file mode 100644
index 00000000..6d317c48
--- /dev/null
+++ b/bandwidth/model/stir_shaken.py
@@ -0,0 +1,272 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+
+class StirShaken(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ return {
+ 'verstat': (str,), # noqa: E501
+ 'attestation_indicator': (str,), # noqa: E501
+ 'originating_id': (str,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'verstat': 'verstat', # noqa: E501
+ 'attestation_indicator': 'attestationIndicator', # noqa: E501
+ 'originating_id': 'originatingId', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """StirShaken - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ verstat (str): (optional) The verification status indicating whether the verification was successful or not. Possible values are TN-Verification-Passed and TN-Verification-Failed.. [optional] # noqa: E501
+ attestation_indicator (str): (optional) The attestation level verified by Bandwidth. Possible values are A (full), B (partial) or C (gateway).. [optional] # noqa: E501
+ originating_id (str): (optional) A unique origination identifier.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """StirShaken - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ verstat (str): (optional) The verification status indicating whether the verification was successful or not. Possible values are TN-Verification-Passed and TN-Verification-Failed.. [optional] # noqa: E501
+ attestation_indicator (str): (optional) The attestation level verified by Bandwidth. Possible values are A (full), B (partial) or C (gateway).. [optional] # noqa: E501
+ originating_id (str): (optional) A unique origination identifier.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/subscriptions.py b/bandwidth/model/subscriptions.py
index 61149700..5939a0a8 100644
--- a/bandwidth/model/subscriptions.py
+++ b/bandwidth/model/subscriptions.py
@@ -143,8 +143,8 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
Animal class but this time we won't travel
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
- session_id (str): Session the subscriptions are associated with. If this is the only field, the subscriber will be subscribed to all participants in the session (including any participants that are later added to the session). Upon creation of a Participant, returns as an empty object.. [optional] # noqa: E501
- participants ([ParticipantSubscription]): (optional) A list of participants in the session that will be subscribed to. Returns empty if used during the creation of a Participant. . [optional] # noqa: E501
+ session_id (str): If present, and not overridden by the array of participants, it represents the session the subscriptions are associated with. If this is the only field, the subscriber will be subscribed to all participants in the session (including any participants that are later added to the session). Upon creation of a Participant, returns as an empty object.. [optional] # noqa: E501
+ participants ([ParticipantSubscription]): (optional) A list of participants in the session that will be subscribed to. If present and not empty or null, this will override any sessionId specified in the body. Returns empty if used during the creation of a Participant. . [optional] # noqa: E501
"""
_check_type = kwargs.pop('_check_type', True)
@@ -230,8 +230,8 @@ def __init__(self, *args, **kwargs): # noqa: E501
Animal class but this time we won't travel
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
- session_id (str): Session the subscriptions are associated with. If this is the only field, the subscriber will be subscribed to all participants in the session (including any participants that are later added to the session). Upon creation of a Participant, returns as an empty object.. [optional] # noqa: E501
- participants ([ParticipantSubscription]): (optional) A list of participants in the session that will be subscribed to. Returns empty if used during the creation of a Participant. . [optional] # noqa: E501
+ session_id (str): If present, and not overridden by the array of participants, it represents the session the subscriptions are associated with. If this is the only field, the subscriber will be subscribed to all participants in the session (including any participants that are later added to the session). Upon creation of a Participant, returns as an empty object.. [optional] # noqa: E501
+ participants ([ParticipantSubscription]): (optional) A list of participants in the session that will be subscribed to. If present and not empty or null, this will override any sessionId specified in the body. Returns empty if used during the creation of a Participant. . [optional] # noqa: E501
"""
_check_type = kwargs.pop('_check_type', True)
diff --git a/bandwidth/model/transcribe_recording.py b/bandwidth/model/transcribe_recording.py
index e2c6d4b5..ab8aa89a 100644
--- a/bandwidth/model/transcribe_recording.py
+++ b/bandwidth/model/transcribe_recording.py
@@ -32,7 +32,11 @@
def lazy_import():
from bandwidth.model.callback_method_enum import CallbackMethodEnum
+ from bandwidth.model.password import Password
+ from bandwidth.model.username import Username
globals()['CallbackMethodEnum'] = CallbackMethodEnum
+ globals()['Password'] = Password
+ globals()['Username'] = Username
class TranscribeRecording(ModelNormal):
@@ -94,8 +98,8 @@ def openapi_types():
return {
'callback_url': (str,), # noqa: E501
'callback_method': (CallbackMethodEnum,), # noqa: E501
- 'username': (str, none_type,), # noqa: E501
- 'password': (str, none_type,), # noqa: E501
+ 'username': (Username,), # noqa: E501
+ 'password': (Password,), # noqa: E501
'tag': (str, none_type,), # noqa: E501
'callback_timeout': (float, none_type,), # noqa: E501
}
@@ -157,9 +161,9 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
_visited_composed_classes = (Animal,)
callback_url (str): The URL to send the [TranscriptionAvailable](/docs/voice/webhooks/transcriptionAvailable) event to. You should not include sensitive or personally-identifiable information in the callbackUrl field! Always use the proper username and password fields for authorization.. [optional] # noqa: E501
callback_method (CallbackMethodEnum): [optional] # noqa: E501
- username (str, none_type): Basic auth username.. [optional] # noqa: E501
- password (str, none_type): Basic auth password.. [optional] # noqa: E501
- tag (str, none_type): A custom string that will be sent with the webhook to `callbackUrl`.. [optional] # noqa: E501
+ username (Username): [optional] # noqa: E501
+ password (Password): [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
callback_timeout (float, none_type): This is the timeout (in seconds) to use when delivering the webhook to `callbackUrl`. Can be any numeric value (including decimals) between 1 and 25.. [optional] if omitted the server will use the default value of 15 # noqa: E501
"""
@@ -248,9 +252,9 @@ def __init__(self, *args, **kwargs): # noqa: E501
_visited_composed_classes = (Animal,)
callback_url (str): The URL to send the [TranscriptionAvailable](/docs/voice/webhooks/transcriptionAvailable) event to. You should not include sensitive or personally-identifiable information in the callbackUrl field! Always use the proper username and password fields for authorization.. [optional] # noqa: E501
callback_method (CallbackMethodEnum): [optional] # noqa: E501
- username (str, none_type): Basic auth username.. [optional] # noqa: E501
- password (str, none_type): Basic auth password.. [optional] # noqa: E501
- tag (str, none_type): A custom string that will be sent with the webhook to `callbackUrl`.. [optional] # noqa: E501
+ username (Username): [optional] # noqa: E501
+ password (Password): [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
callback_timeout (float, none_type): This is the timeout (in seconds) to use when delivering the webhook to `callbackUrl`. Can be any numeric value (including decimals) between 1 and 25.. [optional] if omitted the server will use the default value of 15 # noqa: E501
"""
diff --git a/bandwidth/model/transcription_available_callback.py b/bandwidth/model/transcription_available_callback.py
new file mode 100644
index 00000000..e4293b59
--- /dev/null
+++ b/bandwidth/model/transcription_available_callback.py
@@ -0,0 +1,354 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+def lazy_import():
+ from bandwidth.model.call_direction_enum import CallDirectionEnum
+ from bandwidth.model.file_format_enum import FileFormatEnum
+ from bandwidth.model.transcription import Transcription
+ globals()['CallDirectionEnum'] = CallDirectionEnum
+ globals()['FileFormatEnum'] = FileFormatEnum
+ globals()['Transcription'] = Transcription
+
+
+class TranscriptionAvailableCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ lazy_import()
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ lazy_import()
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'account_id': (str,), # noqa: E501
+ 'application_id': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'direction': (CallDirectionEnum,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'call_url': (str,), # noqa: E501
+ 'media_url': (str, none_type,), # noqa: E501
+ 'parent_call_id': (str,), # noqa: E501
+ 'recording_id': (str,), # noqa: E501
+ 'enqueued_time': (datetime, none_type,), # noqa: E501
+ 'start_time': (datetime,), # noqa: E501
+ 'end_time': (datetime,), # noqa: E501
+ 'duration': (str,), # noqa: E501
+ 'file_format': (FileFormatEnum,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ 'transcription': (Transcription,), # noqa: E501
+ 'transfer_caller_id': (str,), # noqa: E501
+ 'transfer_to': (str,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'account_id': 'accountId', # noqa: E501
+ 'application_id': 'applicationId', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'direction': 'direction', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'call_url': 'callUrl', # noqa: E501
+ 'media_url': 'mediaUrl', # noqa: E501
+ 'parent_call_id': 'parentCallId', # noqa: E501
+ 'recording_id': 'recordingId', # noqa: E501
+ 'enqueued_time': 'enqueuedTime', # noqa: E501
+ 'start_time': 'startTime', # noqa: E501
+ 'end_time': 'endTime', # noqa: E501
+ 'duration': 'duration', # noqa: E501
+ 'file_format': 'fileFormat', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ 'transcription': 'transcription', # noqa: E501
+ 'transfer_caller_id': 'transferCallerId', # noqa: E501
+ 'transfer_to': 'transferTo', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """TranscriptionAvailableCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ media_url (str, none_type): The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded.. [optional] # noqa: E501
+ parent_call_id (str): (optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.. [optional] # noqa: E501
+ recording_id (str): The unique ID of this recording. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ end_time (datetime): The time that the recording ended in ISO-8601 format. [optional] # noqa: E501
+ duration (str): The duration of the recording in ISO-8601 format. [optional] # noqa: E501
+ file_format (FileFormatEnum): [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ transcription (Transcription): [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """TranscriptionAvailableCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ media_url (str, none_type): The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded.. [optional] # noqa: E501
+ parent_call_id (str): (optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.. [optional] # noqa: E501
+ recording_id (str): The unique ID of this recording. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ end_time (datetime): The time that the recording ended in ISO-8601 format. [optional] # noqa: E501
+ duration (str): The duration of the recording in ISO-8601 format. [optional] # noqa: E501
+ file_format (FileFormatEnum): [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ transcription (Transcription): [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/transcription_metadata.py b/bandwidth/model/transcription_metadata.py
index f1bbf794..57c3d9b7 100644
--- a/bandwidth/model/transcription_metadata.py
+++ b/bandwidth/model/transcription_metadata.py
@@ -142,7 +142,7 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
id (str): The unique transcription ID. [optional] # noqa: E501
- status (str): The current status of the transcription. Current values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
+ status (str): The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
completed_time (str): The time that the transcription was completed. [optional] # noqa: E501
url (str): The URL of the [transcription](#operation/getCallTranscription). [optional] # noqa: E501
"""
@@ -231,7 +231,7 @@ def __init__(self, *args, **kwargs): # noqa: E501
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
id (str): The unique transcription ID. [optional] # noqa: E501
- status (str): The current status of the transcription. Current values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
+ status (str): The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values.. [optional] # noqa: E501
completed_time (str): The time that the transcription was completed. [optional] # noqa: E501
url (str): The URL of the [transcription](#operation/getCallTranscription). [optional] # noqa: E501
"""
diff --git a/bandwidth/model/transfer_answer_callback.py b/bandwidth/model/transfer_answer_callback.py
new file mode 100644
index 00000000..4ce270ee
--- /dev/null
+++ b/bandwidth/model/transfer_answer_callback.py
@@ -0,0 +1,326 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+def lazy_import():
+ from bandwidth.model.call_direction_enum import CallDirectionEnum
+ globals()['CallDirectionEnum'] = CallDirectionEnum
+
+
+class TransferAnswerCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ lazy_import()
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ lazy_import()
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'account_id': (str,), # noqa: E501
+ 'application_id': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'direction': (CallDirectionEnum,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'call_url': (str,), # noqa: E501
+ 'enqueued_time': (datetime, none_type,), # noqa: E501
+ 'start_time': (datetime,), # noqa: E501
+ 'answer_time': (datetime, none_type,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ 'transfer_caller_id': (str,), # noqa: E501
+ 'transfer_to': (str,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'account_id': 'accountId', # noqa: E501
+ 'application_id': 'applicationId', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'direction': 'direction', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'call_url': 'callUrl', # noqa: E501
+ 'enqueued_time': 'enqueuedTime', # noqa: E501
+ 'start_time': 'startTime', # noqa: E501
+ 'answer_time': 'answerTime', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ 'transfer_caller_id': 'transferCallerId', # noqa: E501
+ 'transfer_to': 'transferTo', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """TransferAnswerCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """TransferAnswerCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/transfer_complete_callback.py b/bandwidth/model/transfer_complete_callback.py
new file mode 100644
index 00000000..bed22812
--- /dev/null
+++ b/bandwidth/model/transfer_complete_callback.py
@@ -0,0 +1,338 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+def lazy_import():
+ from bandwidth.model.call_direction_enum import CallDirectionEnum
+ globals()['CallDirectionEnum'] = CallDirectionEnum
+
+
+class TransferCompleteCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ lazy_import()
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ lazy_import()
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'account_id': (str,), # noqa: E501
+ 'application_id': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'direction': (CallDirectionEnum,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'call_url': (str,), # noqa: E501
+ 'enqueued_time': (datetime, none_type,), # noqa: E501
+ 'start_time': (datetime,), # noqa: E501
+ 'answer_time': (datetime, none_type,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ 'transfer_caller_id': (str,), # noqa: E501
+ 'transfer_to': (str,), # noqa: E501
+ 'cause': (str,), # noqa: E501
+ 'error_message': (str, none_type,), # noqa: E501
+ 'error_id': (str, none_type,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'account_id': 'accountId', # noqa: E501
+ 'application_id': 'applicationId', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'direction': 'direction', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'call_url': 'callUrl', # noqa: E501
+ 'enqueued_time': 'enqueuedTime', # noqa: E501
+ 'start_time': 'startTime', # noqa: E501
+ 'answer_time': 'answerTime', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ 'transfer_caller_id': 'transferCallerId', # noqa: E501
+ 'transfer_to': 'transferTo', # noqa: E501
+ 'cause': 'cause', # noqa: E501
+ 'error_message': 'errorMessage', # noqa: E501
+ 'error_id': 'errorId', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """TransferCompleteCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ cause (str): Reason the call failed - hangup, busy, timeout, cancel, rejected, callback-error, invalid-bxml, application-error, account-limit, node-capacity-exceeded, error, or unknown.. [optional] # noqa: E501
+ error_message (str, none_type): Text explaining the reason that caused the call to fail in case of errors.. [optional] # noqa: E501
+ error_id (str, none_type): Bandwidth's internal id that references the error event.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """TransferCompleteCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ cause (str): Reason the call failed - hangup, busy, timeout, cancel, rejected, callback-error, invalid-bxml, application-error, account-limit, node-capacity-exceeded, error, or unknown.. [optional] # noqa: E501
+ error_message (str, none_type): Text explaining the reason that caused the call to fail in case of errors.. [optional] # noqa: E501
+ error_id (str, none_type): Bandwidth's internal id that references the error event.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/transfer_disconnect_callback.py b/bandwidth/model/transfer_disconnect_callback.py
new file mode 100644
index 00000000..c58f6844
--- /dev/null
+++ b/bandwidth/model/transfer_disconnect_callback.py
@@ -0,0 +1,346 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+def lazy_import():
+ from bandwidth.model.call_direction_enum import CallDirectionEnum
+ globals()['CallDirectionEnum'] = CallDirectionEnum
+
+
+class TransferDisconnectCallback(ModelNormal):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ attribute_map (dict): The key is attribute name
+ and the value is json key in definition.
+ discriminator_value_class_map (dict): A dict to go from the discriminator
+ variable value to the discriminator class name.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ }
+
+ @cached_property
+ def additional_properties_type():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+ """
+ lazy_import()
+ return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
+
+ _nullable = False
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ lazy_import()
+ return {
+ 'event_type': (str,), # noqa: E501
+ 'event_time': (str,), # noqa: E501
+ 'account_id': (str,), # noqa: E501
+ 'application_id': (str,), # noqa: E501
+ '_from': (str,), # noqa: E501
+ 'to': (str,), # noqa: E501
+ 'direction': (CallDirectionEnum,), # noqa: E501
+ 'call_id': (str,), # noqa: E501
+ 'call_url': (str,), # noqa: E501
+ 'parent_call_id': (str,), # noqa: E501
+ 'enqueued_time': (datetime, none_type,), # noqa: E501
+ 'start_time': (datetime,), # noqa: E501
+ 'answer_time': (datetime, none_type,), # noqa: E501
+ 'end_time': (datetime,), # noqa: E501
+ 'tag': (str, none_type,), # noqa: E501
+ 'transfer_caller_id': (str,), # noqa: E501
+ 'transfer_to': (str,), # noqa: E501
+ 'cause': (str,), # noqa: E501
+ 'error_message': (str, none_type,), # noqa: E501
+ 'error_id': (str, none_type,), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'event_type': 'eventType', # noqa: E501
+ 'event_time': 'eventTime', # noqa: E501
+ 'account_id': 'accountId', # noqa: E501
+ 'application_id': 'applicationId', # noqa: E501
+ '_from': 'from', # noqa: E501
+ 'to': 'to', # noqa: E501
+ 'direction': 'direction', # noqa: E501
+ 'call_id': 'callId', # noqa: E501
+ 'call_url': 'callUrl', # noqa: E501
+ 'parent_call_id': 'parentCallId', # noqa: E501
+ 'enqueued_time': 'enqueuedTime', # noqa: E501
+ 'start_time': 'startTime', # noqa: E501
+ 'answer_time': 'answerTime', # noqa: E501
+ 'end_time': 'endTime', # noqa: E501
+ 'tag': 'tag', # noqa: E501
+ 'transfer_caller_id': 'transferCallerId', # noqa: E501
+ 'transfer_to': 'transferTo', # noqa: E501
+ 'cause': 'cause', # noqa: E501
+ 'error_message': 'errorMessage', # noqa: E501
+ 'error_id': 'errorId', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
+ """TransferDisconnectCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ parent_call_id (str): (optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ end_time (datetime): The time that the recording ended in ISO-8601 format. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ cause (str): Reason the call failed - hangup, busy, timeout, cancel, rejected, callback-error, invalid-bxml, application-error, account-limit, node-capacity-exceeded, error, or unknown.. [optional] # noqa: E501
+ error_message (str, none_type): Text explaining the reason that caused the call to fail in case of errors.. [optional] # noqa: E501
+ error_id (str, none_type): Bandwidth's internal id that references the error event.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', True)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ return self
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs): # noqa: E501
+ """TransferDisconnectCallback - a model defined in OpenAPI
+
+ Keyword Args:
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ event_type (str): The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect.. [optional] # noqa: E501
+ event_time (str): The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution.. [optional] # noqa: E501
+ account_id (str): The user account associated with the call.. [optional] # noqa: E501
+ application_id (str): The id of the application associated with the call.. [optional] # noqa: E501
+ _from (str): The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous.. [optional] # noqa: E501
+ to (str): The phone number that received the call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ direction (CallDirectionEnum): [optional] # noqa: E501
+ call_id (str): The call id associated with the event.. [optional] # noqa: E501
+ call_url (str): The URL of the call associated with the event.. [optional] # noqa: E501
+ parent_call_id (str): (optional) If the event is related to the B leg of a , the call id of the original call leg that executed the . Otherwise, this field will not be present.. [optional] # noqa: E501
+ enqueued_time (datetime, none_type): (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format.. [optional] # noqa: E501
+ start_time (datetime): Time the call was started, in ISO 8601 format.. [optional] # noqa: E501
+ answer_time (datetime, none_type): Time the call was answered, in ISO 8601 format.. [optional] # noqa: E501
+ end_time (datetime): The time that the recording ended in ISO-8601 format. [optional] # noqa: E501
+ tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
+ transfer_caller_id (str): The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable.. [optional] # noqa: E501
+ transfer_to (str): The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555).. [optional] # noqa: E501
+ cause (str): Reason the call failed - hangup, busy, timeout, cancel, rejected, callback-error, invalid-bxml, application-error, account-limit, node-capacity-exceeded, error, or unknown.. [optional] # noqa: E501
+ error_message (str, none_type): Text explaining the reason that caused the call to fail in case of errors.. [optional] # noqa: E501
+ error_id (str, none_type): Bandwidth's internal id that references the error event.. [optional] # noqa: E501
+ """
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _path_to_item = kwargs.pop('_path_to_item', ())
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+
+ for var_name, var_value in kwargs.items():
+ if var_name not in self.attribute_map and \
+ self._configuration is not None and \
+ self._configuration.discard_unknown_keys and \
+ self.additional_properties_type is None:
+ # discard variable.
+ continue
+ setattr(self, var_name, var_value)
+ if var_name in self.read_only_vars:
+ raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
+ f"class with read only attributes.")
diff --git a/bandwidth/model/update_call.py b/bandwidth/model/update_call.py
index 142f6262..59aaa309 100644
--- a/bandwidth/model/update_call.py
+++ b/bandwidth/model/update_call.py
@@ -32,9 +32,13 @@
def lazy_import():
from bandwidth.model.call_state_enum import CallStateEnum
+ from bandwidth.model.password import Password
from bandwidth.model.redirect_method_enum import RedirectMethodEnum
+ from bandwidth.model.username import Username
globals()['CallStateEnum'] = CallStateEnum
+ globals()['Password'] = Password
globals()['RedirectMethodEnum'] = RedirectMethodEnum
+ globals()['Username'] = Username
class UpdateCall(ModelNormal):
@@ -95,12 +99,12 @@ def openapi_types():
'state': (CallStateEnum,), # noqa: E501
'redirect_url': (str, none_type,), # noqa: E501
'redirect_method': (RedirectMethodEnum,), # noqa: E501
- 'username': (str, none_type,), # noqa: E501
- 'password': (str, none_type,), # noqa: E501
+ 'username': (Username,), # noqa: E501
+ 'password': (Password,), # noqa: E501
'redirect_fallback_url': (str, none_type,), # noqa: E501
'redirect_fallback_method': (RedirectMethodEnum,), # noqa: E501
- 'fallback_username': (str, none_type,), # noqa: E501
- 'fallback_password': (str, none_type,), # noqa: E501
+ 'fallback_username': (Username,), # noqa: E501
+ 'fallback_password': (Password,), # noqa: E501
'tag': (str, none_type,), # noqa: E501
}
@@ -166,12 +170,12 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
state (CallStateEnum): [optional] # noqa: E501
redirect_url (str, none_type): The URL to send the [Redirect](/docs/voice/bxml/redirect) event to which will provide new BXML. Required if `state` is `active`. Not allowed if `state` is `completed`.. [optional] # noqa: E501
redirect_method (RedirectMethodEnum): [optional] # noqa: E501
- username (str, none_type): Basic auth username.. [optional] # noqa: E501
- password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ username (Username): [optional] # noqa: E501
+ password (Password): [optional] # noqa: E501
redirect_fallback_url (str, none_type): A fallback url which, if provided, will be used to retry the redirect callback delivery in case `redirectUrl` fails to respond. [optional] # noqa: E501
redirect_fallback_method (RedirectMethodEnum): [optional] # noqa: E501
- fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
- fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ fallback_username (Username): [optional] # noqa: E501
+ fallback_password (Password): [optional] # noqa: E501
tag (str, none_type): A custom string that will be sent with this and all future callbacks unless overwritten by a future `tag` attribute or [``](/docs/voice/bxml/tag) verb, or cleared. May be cleared by setting `tag=\"\"`. Max length 256 characters. Not allowed if `state` is `completed`.. [optional] # noqa: E501
"""
@@ -261,12 +265,12 @@ def __init__(self, *args, **kwargs): # noqa: E501
state (CallStateEnum): [optional] # noqa: E501
redirect_url (str, none_type): The URL to send the [Redirect](/docs/voice/bxml/redirect) event to which will provide new BXML. Required if `state` is `active`. Not allowed if `state` is `completed`.. [optional] # noqa: E501
redirect_method (RedirectMethodEnum): [optional] # noqa: E501
- username (str, none_type): Basic auth username.. [optional] # noqa: E501
- password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ username (Username): [optional] # noqa: E501
+ password (Password): [optional] # noqa: E501
redirect_fallback_url (str, none_type): A fallback url which, if provided, will be used to retry the redirect callback delivery in case `redirectUrl` fails to respond. [optional] # noqa: E501
redirect_fallback_method (RedirectMethodEnum): [optional] # noqa: E501
- fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
- fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ fallback_username (Username): [optional] # noqa: E501
+ fallback_password (Password): [optional] # noqa: E501
tag (str, none_type): A custom string that will be sent with this and all future callbacks unless overwritten by a future `tag` attribute or [``](/docs/voice/bxml/tag) verb, or cleared. May be cleared by setting `tag=\"\"`. Max length 256 characters. Not allowed if `state` is `completed`.. [optional] # noqa: E501
"""
diff --git a/bandwidth/model/update_conference.py b/bandwidth/model/update_conference.py
index 5c451561..d25a269e 100644
--- a/bandwidth/model/update_conference.py
+++ b/bandwidth/model/update_conference.py
@@ -32,9 +32,13 @@
def lazy_import():
from bandwidth.model.conference_state_enum import ConferenceStateEnum
+ from bandwidth.model.password import Password
from bandwidth.model.redirect_method_enum import RedirectMethodEnum
+ from bandwidth.model.username import Username
globals()['ConferenceStateEnum'] = ConferenceStateEnum
+ globals()['Password'] = Password
globals()['RedirectMethodEnum'] = RedirectMethodEnum
+ globals()['Username'] = Username
class UpdateConference(ModelNormal):
@@ -93,12 +97,12 @@ def openapi_types():
'status': (ConferenceStateEnum,), # noqa: E501
'redirect_url': (str, none_type,), # noqa: E501
'redirect_method': (RedirectMethodEnum,), # noqa: E501
- 'username': (str, none_type,), # noqa: E501
- 'password': (str, none_type,), # noqa: E501
+ 'username': (Username,), # noqa: E501
+ 'password': (Password,), # noqa: E501
'redirect_fallback_url': (str, none_type,), # noqa: E501
'redirect_fallback_method': (RedirectMethodEnum,), # noqa: E501
- 'fallback_username': (str, none_type,), # noqa: E501
- 'fallback_password': (str, none_type,), # noqa: E501
+ 'fallback_username': (Username,), # noqa: E501
+ 'fallback_password': (Password,), # noqa: E501
}
@cached_property
@@ -162,12 +166,12 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
status (ConferenceStateEnum): [optional] # noqa: E501
redirect_url (str, none_type): The URL to send the [conferenceRedirect](/docs/voice/webhooks/conferenceRedirect) event which will provide new BXML. Not allowed if `state` is `completed`, but required if `state` is `active`. [optional] # noqa: E501
redirect_method (RedirectMethodEnum): [optional] # noqa: E501
- username (str, none_type): Basic auth username.. [optional] # noqa: E501
- password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ username (Username): [optional] # noqa: E501
+ password (Password): [optional] # noqa: E501
redirect_fallback_url (str, none_type): A fallback url which, if provided, will be used to retry the `conferenceRedirect` webhook delivery in case `redirectUrl` fails to respond. Not allowed if `state` is `completed`.. [optional] # noqa: E501
redirect_fallback_method (RedirectMethodEnum): [optional] # noqa: E501
- fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
- fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ fallback_username (Username): [optional] # noqa: E501
+ fallback_password (Password): [optional] # noqa: E501
"""
_check_type = kwargs.pop('_check_type', True)
@@ -256,12 +260,12 @@ def __init__(self, *args, **kwargs): # noqa: E501
status (ConferenceStateEnum): [optional] # noqa: E501
redirect_url (str, none_type): The URL to send the [conferenceRedirect](/docs/voice/webhooks/conferenceRedirect) event which will provide new BXML. Not allowed if `state` is `completed`, but required if `state` is `active`. [optional] # noqa: E501
redirect_method (RedirectMethodEnum): [optional] # noqa: E501
- username (str, none_type): Basic auth username.. [optional] # noqa: E501
- password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ username (Username): [optional] # noqa: E501
+ password (Password): [optional] # noqa: E501
redirect_fallback_url (str, none_type): A fallback url which, if provided, will be used to retry the `conferenceRedirect` webhook delivery in case `redirectUrl` fails to respond. Not allowed if `state` is `completed`.. [optional] # noqa: E501
redirect_fallback_method (RedirectMethodEnum): [optional] # noqa: E501
- fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
- fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ fallback_username (Username): [optional] # noqa: E501
+ fallback_password (Password): [optional] # noqa: E501
"""
_check_type = kwargs.pop('_check_type', True)
diff --git a/bandwidth/model/username.py b/bandwidth/model/username.py
new file mode 100644
index 00000000..a0aeda03
--- /dev/null
+++ b/bandwidth/model/username.py
@@ -0,0 +1,290 @@
+"""
+ Bandwidth
+
+ Bandwidth's Communication APIs # noqa: E501
+
+ The version of the OpenAPI document: 1.0.0
+ Contact: letstalk@bandwidth.com
+ Generated by: https://openapi-generator.tech
+"""
+
+
+import re # noqa: F401
+import sys # noqa: F401
+
+from bandwidth.model_utils import ( # noqa: F401
+ ApiTypeError,
+ ModelComposed,
+ ModelNormal,
+ ModelSimple,
+ cached_property,
+ change_keys_js_to_python,
+ convert_js_args_to_python_args,
+ date,
+ datetime,
+ file_type,
+ none_type,
+ validate_get_composed_info,
+ OpenApiModel
+)
+from bandwidth.exceptions import ApiAttributeError
+
+
+
+class Username(ModelSimple):
+ """NOTE: This class is auto generated by OpenAPI Generator.
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+
+ Attributes:
+ allowed_values (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ with a capitalized key describing the allowed value and an allowed
+ value. These dicts store the allowed enum values.
+ validations (dict): The key is the tuple path to the attribute
+ and the for var_name this is (var_name,). The value is a dict
+ that stores validations for max_length, min_length, max_items,
+ min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
+ inclusive_minimum, and regex.
+ additional_properties_type (tuple): A tuple of classes accepted
+ as additional properties values.
+ """
+
+ allowed_values = {
+ }
+
+ validations = {
+ ('value',): {
+ 'max_length': 1024,
+ },
+ }
+
+ additional_properties_type = None
+
+ _nullable = True
+
+ @cached_property
+ def openapi_types():
+ """
+ This must be a method because a model may have properties that are
+ of type self, this must run after the class is loaded
+
+ Returns
+ openapi_types (dict): The key is attribute name
+ and the value is attribute type.
+ """
+ return {
+ 'value': (str,),
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {}
+
+ read_only_vars = set()
+
+ _composed_schemas = None
+
+ required_properties = set([
+ '_data_store',
+ '_check_type',
+ '_spec_property_naming',
+ '_path_to_item',
+ '_configuration',
+ '_visited_composed_classes',
+ ])
+
+ @convert_js_args_to_python_args
+ def __init__(self, *args, **kwargs):
+ """Username - a model defined in OpenAPI
+
+ Note that value can be passed either in args or in kwargs, but not in both.
+
+ Args:
+ args[0] (str): Basic auth username.. # noqa: E501
+
+ Keyword Args:
+ value (str): Basic auth username.. # noqa: E501
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ """
+ # required up here when default value is not given
+ _path_to_item = kwargs.pop('_path_to_item', ())
+
+ if 'value' in kwargs:
+ value = kwargs.pop('value')
+ elif args:
+ args = list(args)
+ value = args.pop(0)
+ else:
+ raise ApiTypeError(
+ "value is required, but not passed in args or kwargs and doesn't have default",
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+ self.value = value
+ if kwargs:
+ raise ApiTypeError(
+ "Invalid named arguments=%s passed to %s. Remove those invalid named arguments." % (
+ kwargs,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, *args, **kwargs):
+ """Username - a model defined in OpenAPI
+
+ Note that value can be passed either in args or in kwargs, but not in both.
+
+ Args:
+ args[0] (str): Basic auth username.. # noqa: E501
+
+ Keyword Args:
+ value (str): Basic auth username.. # noqa: E501
+ _check_type (bool): if True, values for parameters in openapi_types
+ will be type checked and a TypeError will be
+ raised if the wrong type is input.
+ Defaults to True
+ _path_to_item (tuple/list): This is a list of keys or values to
+ drill down to the model in received_data
+ when deserializing a response
+ _spec_property_naming (bool): True if the variable names in the input data
+ are serialized names, as specified in the OpenAPI document.
+ False if the variable names in the input data
+ are pythonic names, e.g. snake case (default)
+ _configuration (Configuration): the instance to use when
+ deserializing a file_type parameter.
+ If passed, type conversion is attempted
+ If omitted no type conversion is done.
+ _visited_composed_classes (tuple): This stores a tuple of
+ classes that we have traveled through so that
+ if we see that class again we will not use its
+ discriminator again.
+ When traveling through a discriminator, the
+ composed schema that is
+ is traveled through is added to this set.
+ For example if Animal has a discriminator
+ petType and we pass in "Dog", and the class Dog
+ allOf includes Animal, we move through Animal
+ once using the discriminator, and pick Dog.
+ Then in Dog, we will make an instance of the
+ Animal class but this time we won't travel
+ through its discriminator because we passed in
+ _visited_composed_classes = (Animal,)
+ """
+ # required up here when default value is not given
+ _path_to_item = kwargs.pop('_path_to_item', ())
+
+ self = super(OpenApiModel, cls).__new__(cls)
+
+ if 'value' in kwargs:
+ value = kwargs.pop('value')
+ elif args:
+ args = list(args)
+ value = args.pop(0)
+ else:
+ raise ApiTypeError(
+ "value is required, but not passed in args or kwargs and doesn't have default",
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ _check_type = kwargs.pop('_check_type', True)
+ _spec_property_naming = kwargs.pop('_spec_property_naming', False)
+ _configuration = kwargs.pop('_configuration', None)
+ _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
+
+ if args:
+ for arg in args:
+ if isinstance(arg, dict):
+ kwargs.update(arg)
+ else:
+ raise ApiTypeError(
+ "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
+ args,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ self._data_store = {}
+ self._check_type = _check_type
+ self._spec_property_naming = _spec_property_naming
+ self._path_to_item = _path_to_item
+ self._configuration = _configuration
+ self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
+ self.value = value
+ if kwargs:
+ raise ApiTypeError(
+ "Invalid named arguments=%s passed to %s. Remove those invalid named arguments." % (
+ kwargs,
+ self.__class__.__name__,
+ ),
+ path_to_item=_path_to_item,
+ valid_classes=(self.__class__,),
+ )
+
+ return self
diff --git a/bandwidth/models/__init__.py b/bandwidth/models/__init__.py
index d738fe59..05ec135f 100644
--- a/bandwidth/models/__init__.py
+++ b/bandwidth/models/__init__.py
@@ -10,7 +10,9 @@
# sys.setrecursionlimit(n)
from bandwidth.model.account_statistics import AccountStatistics
-from bandwidth.model.call_callback import CallCallback
+from bandwidth.model.answer_callback import AnswerCallback
+from bandwidth.model.bridge_complete_callback import BridgeCompleteCallback
+from bandwidth.model.bridge_target_complete_callback import BridgeTargetCompleteCallback
from bandwidth.model.call_direction_enum import CallDirectionEnum
from bandwidth.model.call_recording_metadata import CallRecordingMetadata
from bandwidth.model.call_state import CallState
@@ -18,9 +20,14 @@
from bandwidth.model.callback_method_enum import CallbackMethodEnum
from bandwidth.model.code_request import CodeRequest
from bandwidth.model.conference import Conference
-from bandwidth.model.conference_callback import ConferenceCallback
+from bandwidth.model.conference_completed_callback import ConferenceCompletedCallback
+from bandwidth.model.conference_created_callback import ConferenceCreatedCallback
from bandwidth.model.conference_member import ConferenceMember
+from bandwidth.model.conference_member_exit_callback import ConferenceMemberExitCallback
+from bandwidth.model.conference_member_join_callback import ConferenceMemberJoinCallback
+from bandwidth.model.conference_recording_available_callback import ConferenceRecordingAvailableCallback
from bandwidth.model.conference_recording_metadata import ConferenceRecordingMetadata
+from bandwidth.model.conference_redirect_callback import ConferenceRedirectCallback
from bandwidth.model.conference_state_enum import ConferenceStateEnum
from bandwidth.model.create_call import CreateCall
from bandwidth.model.create_call_response import CreateCallResponse
@@ -30,16 +37,21 @@
from bandwidth.model.create_participant_response import CreateParticipantResponse
from bandwidth.model.deferred_result import DeferredResult
from bandwidth.model.device_api_version_enum import DeviceApiVersionEnum
+from bandwidth.model.disconenct_callback import DisconenctCallback
from bandwidth.model.diversion import Diversion
+from bandwidth.model.dtmf_callback import DtmfCallback
from bandwidth.model.field_error import FieldError
from bandwidth.model.file_format_enum import FileFormatEnum
from bandwidth.model.forbidden_request import ForbiddenRequest
+from bandwidth.model.gather_callback import GatherCallback
+from bandwidth.model.initiate_callback import InitiateCallback
from bandwidth.model.list_message_direction_enum import ListMessageDirectionEnum
from bandwidth.model.list_message_item import ListMessageItem
from bandwidth.model.lookup_request import LookupRequest
from bandwidth.model.lookup_result import LookupResult
from bandwidth.model.lookup_status import LookupStatus
from bandwidth.model.lookup_status_enum import LookupStatusEnum
+from bandwidth.model.machine_detection_complete_callback import MachineDetectionCompleteCallback
from bandwidth.model.machine_detection_configuration import MachineDetectionConfiguration
from bandwidth.model.machine_detection_mode_enum import MachineDetectionModeEnum
from bandwidth.model.media import Media
@@ -57,24 +69,34 @@
from bandwidth.model.page_info import PageInfo
from bandwidth.model.participant import Participant
from bandwidth.model.participant_subscription import ParticipantSubscription
+from bandwidth.model.password import Password
from bandwidth.model.priority_enum import PriorityEnum
from bandwidth.model.publish_permissions_enum import PublishPermissionsEnum
+from bandwidth.model.recording_available_callback import RecordingAvailableCallback
+from bandwidth.model.recording_complete_callback import RecordingCompleteCallback
from bandwidth.model.recording_state_enum import RecordingStateEnum
+from bandwidth.model.redirect_callback import RedirectCallback
from bandwidth.model.redirect_method_enum import RedirectMethodEnum
from bandwidth.model.request_error import RequestError
from bandwidth.model.session import Session
+from bandwidth.model.stir_shaken import StirShaken
from bandwidth.model.subscriptions import Subscriptions
from bandwidth.model.tag import Tag
from bandwidth.model.tn_lookup_request_error import TnLookupRequestError
from bandwidth.model.transcribe_recording import TranscribeRecording
from bandwidth.model.transcription import Transcription
+from bandwidth.model.transcription_available_callback import TranscriptionAvailableCallback
from bandwidth.model.transcription_list import TranscriptionList
from bandwidth.model.transcription_metadata import TranscriptionMetadata
+from bandwidth.model.transfer_answer_callback import TransferAnswerCallback
+from bandwidth.model.transfer_complete_callback import TransferCompleteCallback
+from bandwidth.model.transfer_disconnect_callback import TransferDisconnectCallback
from bandwidth.model.unauthorized_request import UnauthorizedRequest
from bandwidth.model.update_call import UpdateCall
from bandwidth.model.update_call_recording import UpdateCallRecording
from bandwidth.model.update_conference import UpdateConference
from bandwidth.model.update_conference_member import UpdateConferenceMember
+from bandwidth.model.username import Username
from bandwidth.model.verify_code_request import VerifyCodeRequest
from bandwidth.model.verify_code_response import VerifyCodeResponse
from bandwidth.model.voice_api_error import VoiceApiError
diff --git a/docs/AnswerCallback.md b/docs/AnswerCallback.md
new file mode 100644
index 00000000..b9d89f58
--- /dev/null
+++ b/docs/AnswerCallback.md
@@ -0,0 +1,26 @@
+# AnswerCallback
+
+The Answer event is sent to the answerUrl specified in the createCall request when an outbound call is answered.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
+**application_id** | **str** | The id of the application associated with the call. | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**direction** | [**CallDirectionEnum**](CallDirectionEnum.md) | | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**call_url** | **str** | The URL of the call associated with the event. | [optional]
+**enqueued_time** | **datetime, none_type** | (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format. | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
+**answer_time** | **datetime, none_type** | Time the call was answered, in ISO 8601 format. | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**machine_detection_result** | **str, none_type** | (optional) if machine detection was requested in sync mode, the result will be specified here. Possible values are the same as the async counterpart: Machine Detection Complete | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/BridgeCompleteCallback.md b/docs/BridgeCompleteCallback.md
new file mode 100644
index 00000000..3d018511
--- /dev/null
+++ b/docs/BridgeCompleteCallback.md
@@ -0,0 +1,28 @@
+# BridgeCompleteCallback
+
+If the target call leaves the , then this callback is sent to the bridgeCompleteUrl, and the BXML returned in it is executed on the call. If this webhook is sent, the Bridge Target Complete webhook is NOT sent. This callback is also sent if any problem occurs that prevents the calls to be bridged.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
+**application_id** | **str** | The id of the application associated with the call. | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**direction** | [**CallDirectionEnum**](CallDirectionEnum.md) | | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**call_url** | **str** | The URL of the call associated with the event. | [optional]
+**enqueued_time** | **datetime, none_type** | (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format. | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
+**answer_time** | **datetime, none_type** | Time the call was answered, in ISO 8601 format. | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**cause** | **str** | Reason the call failed - hangup, busy, timeout, cancel, rejected, callback-error, invalid-bxml, application-error, account-limit, node-capacity-exceeded, error, or unknown. | [optional]
+**error_message** | **str, none_type** | Text explaining the reason that caused the call to fail in case of errors. | [optional]
+**error_id** | **str, none_type** | Bandwidth's internal id that references the error event. | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/BridgeTargetCompleteCallback.md b/docs/BridgeTargetCompleteCallback.md
new file mode 100644
index 00000000..e4de7047
--- /dev/null
+++ b/docs/BridgeTargetCompleteCallback.md
@@ -0,0 +1,25 @@
+# BridgeTargetCompleteCallback
+
+If the originating call leaves the , then this callback is sent to the bridgeTargetCompleteUrl, and the BXML returned in it is executed on the target call. If this webhook is sent, the Bridge Complete webhook is NOT sent.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
+**application_id** | **str** | The id of the application associated with the call. | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**direction** | [**CallDirectionEnum**](CallDirectionEnum.md) | | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**call_url** | **str** | The URL of the call associated with the event. | [optional]
+**enqueued_time** | **datetime, none_type** | (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format. | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
+**answer_time** | **datetime, none_type** | Time the call was answered, in ISO 8601 format. | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/CallRecordingMetadata.md b/docs/CallRecordingMetadata.md
index 97ea02e9..d31c11b1 100644
--- a/docs/CallRecordingMetadata.md
+++ b/docs/CallRecordingMetadata.md
@@ -4,23 +4,23 @@
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**application_id** | **str** | The `applicationId` associated with the call | [optional]
-**account_id** | **str** | The account that placed the call | [optional]
-**call_id** | **str** | The `callId` of the call that created this recording | [optional]
-**parent_call_id** | **str, none_type** | If the call was a transferred leg, this field contains the `callId` of the call that executed the [`<Transfer>`](/docs/voice/bxml/transfer) | [optional]
-**recording_id** | **str** | The recording's unique ID | [optional]
-**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555), or if the call was to a SIP URI, the SIP URI | [optional]
-**_from** | **str** | The phone number that made the call, in E.164 format (e.g. +15555555555). | [optional]
-**transfer_caller_id** | **str, none_type** | If the call was a transferred leg, the `transferCallerId` field from the [`<Transfer>`](/docs/voice/bxml/transfer), if any. | [optional]
-**transfer_to** | **str, none_type** | If the call was a transferred leg, the number that the call was transferred to | [optional]
+**application_id** | **str** | The id of the application associated with the call. | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**parent_call_id** | **str** | (optional) If the event is related to the B leg of a <Transfer>, the call id of the original call leg that executed the <Transfer>. Otherwise, this field will not be present. | [optional]
+**recording_id** | **str** | The unique ID of this recording | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**transfer_caller_id** | **str** | The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable. | [optional]
+**transfer_to** | **str** | The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555). | [optional]
**duration** | **str** | The duration of the recording in ISO-8601 format | [optional]
**direction** | [**CallDirectionEnum**](CallDirectionEnum.md) | | [optional]
-**channels** | **int** | The number of channels in the recording. Either `1` or `2` | [optional]
-**start_time** | **datetime** | The time that the recording started in ISO 8601 format | [optional]
-**end_time** | **datetime** | The time that the recording ended in ISO 8601 format | [optional]
+**channels** | **int** | Always `1` for conference recordings; multi-channel recordings are not supported on conferences. | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
+**end_time** | **datetime** | The time that the recording ended in ISO-8601 format | [optional]
**file_format** | [**FileFormatEnum**](FileFormatEnum.md) | | [optional]
-**status** | **str** | The current status of the recording. Current values are 'processing', 'partial', 'complete', 'deleted' and 'error'. Additional states may be added in the future, so your application must be tolerant of unknown values. | [optional]
-**media_url** | **str** | The URL that can be used to download the audio recording | [optional]
+**status** | **str** | The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values. | [optional]
+**media_url** | **str, none_type** | The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded. | [optional]
**transcription** | [**TranscriptionMetadata**](TranscriptionMetadata.md) | | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
diff --git a/docs/CallsApi.md b/docs/CallsApi.md
index b53e8c65..afd2d1f7 100644
--- a/docs/CallsApi.md
+++ b/docs/CallsApi.md
@@ -58,32 +58,32 @@ with bandwidth.ApiClient(configuration) as api_client:
application_id="1234-qwer-5679-tyui",
answer_url="https://www.myCallbackServer.com/webhooks/answer",
answer_method=CallbackMethodEnum("POST"),
- username="mySecretUsername",
- password="mySecretPassword1!",
+ username=Username("mySecretUsername"),
+ password=Password("mySecretPassword1!"),
answer_fallback_url="https://www.myFallbackServer.com/webhooks/answer",
answer_fallback_method=CallbackMethodEnum("POST"),
- fallback_username="mySecretUsername",
- fallback_password="mySecretPassword1!",
- disconnect_url="https://myServer.com/bandwidth/webhooks/disconnect",
+ fallback_username=Username("mySecretUsername"),
+ fallback_password=Password("mySecretPassword1!"),
+ disconnect_url="disconnect_url_example",
disconnect_method=CallbackMethodEnum("POST"),
- call_timeout=30.0,
- callback_timeout=15.0,
+ call_timeout=30,
+ callback_timeout=15,
machine_detection=MachineDetectionConfiguration(
mode=MachineDetectionModeEnum("async"),
- detection_timeout=15.0,
- silence_timeout=10.0,
- speech_threshold=10.0,
- speech_end_threshold=5.0,
- machine_speech_end_threshold=5.0,
+ detection_timeout=15,
+ silence_timeout=10,
+ speech_threshold=10,
+ speech_end_threshold=5,
+ machine_speech_end_threshold=5,
delay_result=False,
callback_url="https://myServer.com/bandwidth/webhooks/machineDetectionComplete",
callback_method=CallbackMethodEnum("POST"),
- username="mySecretUsername",
- password="mySecretPassword1!",
+ username=Username("mySecretUsername"),
+ password=Password("mySecretPassword1!"),
fallback_url="https://myFallbackServer.com/bandwidth/webhooks/machineDetectionComplete",
fallback_method=CallbackMethodEnum("POST"),
- fallback_username="mySecretUsername",
- fallback_password="mySecretPassword1!",
+ fallback_username=Username("mySecretUsername"),
+ fallback_password=Password("mySecretPassword1!"),
),
priority=5,
tag="tag_example",
@@ -270,12 +270,12 @@ with bandwidth.ApiClient(configuration) as api_client:
state=CallStateEnum("active"),
redirect_url="https://myServer.com/bandwidth/webhooks/redirect",
redirect_method=RedirectMethodEnum("POST"),
- username="mySecretUsername",
- password="mySecretPassword1!",
+ username=Username("mySecretUsername"),
+ password=Password("mySecretPassword1!"),
redirect_fallback_url="https://myFallbackServer.com/bandwidth/webhooks/redirect",
redirect_fallback_method=RedirectMethodEnum("POST"),
- fallback_username="mySecretUsername",
- fallback_password="mySecretPassword1!",
+ fallback_username=Username("mySecretUsername"),
+ fallback_password=Password("mySecretPassword1!"),
tag="My Custom Tag",
) # UpdateCall | JSON object containing information to redirect an existing call to a new BXML document
@@ -320,6 +320,7 @@ void (empty response body)
**403** | Forbidden | - |
**404** | Not Found | - |
**405** | Method Not Allowed | - |
+**409** | Conflict | - |
**415** | Unsupported Media Type | - |
**429** | Too Many Requests | * Retry-After - When you should try your request again
|
**500** | Internal Server Error | - |
@@ -412,6 +413,7 @@ void (empty response body)
**403** | Forbidden | - |
**404** | Not Found | - |
**405** | Method Not Allowed | - |
+**409** | Conflict | - |
**415** | Unsupported Media Type | - |
**429** | Too Many Requests | * Retry-After - When you should try your request again
|
**500** | Internal Server Error | - |
diff --git a/docs/ConferenceCompletedCallback.md b/docs/ConferenceCompletedCallback.md
new file mode 100644
index 00000000..290439ec
--- /dev/null
+++ b/docs/ConferenceCompletedCallback.md
@@ -0,0 +1,17 @@
+# ConferenceCompletedCallback
+
+The Conference Completed event is fired when the last member leaves the conference. The response to this event may not contain BXML.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**conference_id** | **str** | The unique, Bandwidth-generated ID of the conference that was recorded | [optional]
+**name** | **str** | The user-specified name of the conference that was recorded | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/ConferenceCreatedCallback.md b/docs/ConferenceCreatedCallback.md
new file mode 100644
index 00000000..03b1448a
--- /dev/null
+++ b/docs/ConferenceCreatedCallback.md
@@ -0,0 +1,17 @@
+# ConferenceCreatedCallback
+
+The Conference Created event is fired whenever a new conference that specified a callbackUrl is created. The response may be either empty or a BXML document. Only the following verbs are valid for conferences: PlayAudio, SpeakSentence, StartRecording, StopRecording, PauseRecording, ResumeRecording. Audio verbs will be heard by all members of the conference. Recordings capture audio from all members who are not muted or on hold, as well as any audio verbs that are played into the conference.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**conference_id** | **str** | The unique, Bandwidth-generated ID of the conference that was recorded | [optional]
+**name** | **str** | The user-specified name of the conference that was recorded | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/ConferenceMember.md b/docs/ConferenceMember.md
index c06e5438..3639f0f9 100644
--- a/docs/ConferenceMember.md
+++ b/docs/ConferenceMember.md
@@ -4,8 +4,8 @@
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**call_id** | **str** | The call ID of this conference member | [optional]
-**conference_id** | **str** | The Bandwidth-generated conference ID | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**conference_id** | **str** | The unique, Bandwidth-generated ID of the conference that was recorded | [optional]
**member_url** | **str** | A URL that may be used to retrieve information about or update the state of this conference member. This is the URL of this member's [Get Conference Member](/apis/voice/#operation/getConferenceMember) endpoint and [Modify Conference Member](/apis/voice/#operation/updateConferenceMember) endpoint. | [optional]
**mute** | **bool** | Whether or not this member is currently muted. Members who are muted are still able to hear other participants. If used in a PUT request, updates this member's mute status. Has no effect if omitted. | [optional]
**hold** | **bool** | Whether or not this member is currently on hold. Members who are on hold are not able to hear or speak in the conference. If used in a PUT request, updates this member's hold status. Has no effect if omitted. | [optional]
diff --git a/docs/ConferenceMemberExitCallback.md b/docs/ConferenceMemberExitCallback.md
new file mode 100644
index 00000000..32dbed0d
--- /dev/null
+++ b/docs/ConferenceMemberExitCallback.md
@@ -0,0 +1,20 @@
+# ConferenceMemberExitCallback
+
+The Conference Member Exit event is fired whenever a caller exits a conference that specified a callbackUrl. The response may be either empty or a BXML document. Only the following verbs are valid for conferences: PlayAudio, SpeakSentence, StartRecording, StopRecording, PauseRecording, ResumeRecording. Audio verbs will be heard by all members of the conference. Recordings capture audio from all members who are not muted or on hold, as well as any audio verbs that are played into the conference.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**conference_id** | **str** | The unique, Bandwidth-generated ID of the conference that was recorded | [optional]
+**name** | **str** | The user-specified name of the conference that was recorded | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/ConferenceMemberJoinCallback.md b/docs/ConferenceMemberJoinCallback.md
new file mode 100644
index 00000000..eeaf3901
--- /dev/null
+++ b/docs/ConferenceMemberJoinCallback.md
@@ -0,0 +1,20 @@
+# ConferenceMemberJoinCallback
+
+The Conference Member Join event is fired whenever a caller joins a conference that specified a callbackUrl. The response may be either empty or a BXML document. Only the following verbs are valid for conferences: PlayAudio, SpeakSentence, StartRecording, StopRecording, PauseRecording, ResumeRecording. Audio verbs will be heard by all members of the conference. Recordings capture audio from all members who are not muted or on hold, as well as any audio verbs that are played into the conference.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**conference_id** | **str** | The unique, Bandwidth-generated ID of the conference that was recorded | [optional]
+**name** | **str** | The user-specified name of the conference that was recorded | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/ConferenceRecordingAvailableCallback.md b/docs/ConferenceRecordingAvailableCallback.md
new file mode 100644
index 00000000..5e9845df
--- /dev/null
+++ b/docs/ConferenceRecordingAvailableCallback.md
@@ -0,0 +1,26 @@
+# ConferenceRecordingAvailableCallback
+
+The Conference Recording Available event is sent after a conference recording has been processed. It indicates that the recording is available for download.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**conference_id** | **str** | The unique, Bandwidth-generated ID of the conference that was recorded | [optional]
+**name** | **str** | The user-specified name of the conference that was recorded | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
+**recording_id** | **str** | The unique ID of this recording | [optional]
+**channels** | **int** | Always `1` for conference recordings; multi-channel recordings are not supported on conferences. | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
+**end_time** | **datetime** | The time that the recording ended in ISO-8601 format | [optional]
+**duration** | **str** | The duration of the recording in ISO-8601 format | [optional]
+**file_format** | [**FileFormatEnum**](FileFormatEnum.md) | | [optional]
+**media_url** | **str, none_type** | The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded. | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**status** | **str** | The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values. | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/ConferenceRecordingMetadata.md b/docs/ConferenceRecordingMetadata.md
index bc5fd220..1ff3824b 100644
--- a/docs/ConferenceRecordingMetadata.md
+++ b/docs/ConferenceRecordingMetadata.md
@@ -4,16 +4,16 @@
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**account_id** | **str** | Your account ID | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
**conference_id** | **str** | The unique, Bandwidth-generated ID of the conference that was recorded | [optional]
**name** | **str** | The user-specified name of the conference that was recorded | [optional]
**recording_id** | **str** | The unique ID of this recording | [optional]
**duration** | **str** | The duration of the recording in ISO-8601 format | [optional]
**channels** | **int** | Always `1` for conference recordings; multi-channel recordings are not supported on conferences. | [optional]
-**start_time** | **datetime** | The time that the recording started in ISO-8601 format | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
**end_time** | **datetime** | The time that the recording ended in ISO-8601 format | [optional]
**file_format** | [**FileFormatEnum**](FileFormatEnum.md) | | [optional]
-**status** | **str** | The current status of the recording. Current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. Additional states may be added in the future, so your application must be tolerant of unknown values. | [optional]
+**status** | **str** | The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values. | [optional]
**media_url** | **str, none_type** | The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded. | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
diff --git a/docs/ConferenceRedirectCallback.md b/docs/ConferenceRedirectCallback.md
new file mode 100644
index 00000000..03e844c6
--- /dev/null
+++ b/docs/ConferenceRedirectCallback.md
@@ -0,0 +1,17 @@
+# ConferenceRedirectCallback
+
+The Conference Redirect event is fired whenever an existing conference is modified via a POST request made to the /conferences/{conferenceId} endpoint. The response may be either empty or a BXML document. Only the following verbs are valid for conferences: PlayAudio, SpeakSentence, StartRecording, StopRecording, PauseRecording, ResumeRecording. Audio verbs will be heard by all members of the conference. Recordings capture audio from all members who are not muted or on hold, as well as any audio verbs that are played into the conference.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**conference_id** | **str** | The unique, Bandwidth-generated ID of the conference that was recorded | [optional]
+**name** | **str** | The user-specified name of the conference that was recorded | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/ConferencesApi.md b/docs/ConferencesApi.md
index 7a2c15e6..6ca5602f 100644
--- a/docs/ConferencesApi.md
+++ b/docs/ConferencesApi.md
@@ -616,12 +616,12 @@ with bandwidth.ApiClient(configuration) as api_client:
status=ConferenceStateEnum("active"),
redirect_url="https://myServer.com/bandwidth/webhooks/conferenceRedirect",
redirect_method=RedirectMethodEnum("POST"),
- username="mySecretUsername",
- password="mySecretPassword1!",
+ username=Username("mySecretUsername"),
+ password=Password("mySecretPassword1!"),
redirect_fallback_url="https://myFallbackServer.com/bandwidth/webhooks/conferenceRedirect",
redirect_fallback_method=RedirectMethodEnum("POST"),
- fallback_username="mySecretUsername",
- fallback_password="mySecretPassword1!",
+ fallback_username=Username("mySecretUsername"),
+ fallback_password=Password("mySecretPassword1!"),
) # UpdateConference |
# example passing only required values which don't have defaults set
diff --git a/docs/CreateCall.md b/docs/CreateCall.md
index fe65676a..d44c9991 100644
--- a/docs/CreateCall.md
+++ b/docs/CreateCall.md
@@ -10,12 +10,12 @@ Name | Type | Description | Notes
**answer_url** | **str** | The full URL to send the <a href='/docs/voice/webhooks/answer'>Answer</a> event to when the called party answers. This endpoint should return the first <a href='/docs/voice/bxml'>BXML document</a> to be executed in the call. Must use `https` if specifying `username` and `password` |
**uui** | **str, none_type** | A comma-separated list of 'User-To-User' headers to be sent in the INVITE when calling a SIP URI. Each value must end with an 'encoding' parameter as described in <a href='https://tools.ietf.org/html/rfc7433'>RFC 7433</a>. Only 'jwt' and 'base64' encodings are allowed. The entire value cannot exceed 350 characters, including parameters and separators. | [optional]
**answer_method** | [**CallbackMethodEnum**](CallbackMethodEnum.md) | | [optional]
-**username** | **str, none_type** | Basic auth username. | [optional]
-**password** | **str, none_type** | Basic auth password. | [optional]
+**username** | [**Username**](Username.md) | | [optional]
+**password** | [**Password**](Password.md) | | [optional]
**answer_fallback_url** | **str, none_type** | A fallback url which, if provided, will be used to retry the `answer` webhook delivery in case `answerUrl` fails to respond Must use `https` if specifying `fallbackUsername` and `fallbackPassword` | [optional]
**answer_fallback_method** | [**CallbackMethodEnum**](CallbackMethodEnum.md) | | [optional]
-**fallback_username** | **str, none_type** | Basic auth username. | [optional]
-**fallback_password** | **str, none_type** | Basic auth password. | [optional]
+**fallback_username** | [**Username**](Username.md) | | [optional]
+**fallback_password** | [**Password**](Password.md) | | [optional]
**disconnect_url** | **str, none_type** | The URL to send the <a href='/docs/voice/webhooks/disconnect'>Disconnect</a> event to when the call ends. This event does not expect a BXML response. | [optional]
**disconnect_method** | [**CallbackMethodEnum**](CallbackMethodEnum.md) | | [optional]
**call_timeout** | **float, none_type** | The timeout (in seconds) for the callee to answer the call after it starts ringing. If the call does not start ringing within 30s, the call will be cancelled regardless of this value. Can be any numeric value (including decimals) between 1 and 300. | [optional] if omitted the server will use the default value of 30
diff --git a/docs/CreateCallResponse.md b/docs/CreateCallResponse.md
index ab0103e1..2a912515 100644
--- a/docs/CreateCallResponse.md
+++ b/docs/CreateCallResponse.md
@@ -20,10 +20,10 @@ Name | Type | Description | Notes
**answer_fallback_method** | [**CallbackMethodEnum**](CallbackMethodEnum.md) | | [optional]
**answer_fallback_url** | **str, none_type** | Fallback URL to deliver the `answer` event webhook. | [optional]
**disconnect_url** | **str, none_type** | URL to deliver the `disconnect` event webhook. | [optional]
-**username** | **str, none_type** | Basic auth username. | [optional]
-**password** | **str, none_type** | Basic auth password. | [optional]
-**fallback_username** | **str, none_type** | Basic auth username. | [optional]
-**fallback_password** | **str, none_type** | Basic auth password. | [optional]
+**username** | [**Username**](Username.md) | | [optional]
+**password** | [**Password**](Password.md) | | [optional]
+**fallback_username** | [**Username**](Username.md) | | [optional]
+**fallback_password** | [**Password**](Password.md) | | [optional]
**priority** | **float, none_type** | The priority of this call over other calls from your account. | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
diff --git a/docs/CreateLookupResponse.md b/docs/CreateLookupResponse.md
index de12811f..a5c133c0 100644
--- a/docs/CreateLookupResponse.md
+++ b/docs/CreateLookupResponse.md
@@ -5,7 +5,7 @@ The request has been accepted for processing but not yet finished and in a termi
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**request_id** | **str** | | [optional]
+**request_id** | **str** | The phone number lookup request ID from Bandwidth. | [optional]
**status** | [**LookupStatusEnum**](LookupStatusEnum.md) | | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
diff --git a/docs/DeviceApiVersionEnum.md b/docs/DeviceApiVersionEnum.md
index 8d8c5748..81c4367d 100644
--- a/docs/DeviceApiVersionEnum.md
+++ b/docs/DeviceApiVersionEnum.md
@@ -5,7 +5,7 @@ Optional field to define the device api version of this participant.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**value** | **str** | Optional field to define the device api version of this participant. | defaults to "V2", must be one of ["V3", "V2", ]
+**value** | **str** | Optional field to define the device api version of this participant. | defaults to "V3", must be one of ["V3", ]
[[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/DisconenctCallback.md b/docs/DisconenctCallback.md
new file mode 100644
index 00000000..6b07f1b0
--- /dev/null
+++ b/docs/DisconenctCallback.md
@@ -0,0 +1,29 @@
+# DisconenctCallback
+
+The Disconnect event is fired when a call ends, for any reason.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
+**application_id** | **str** | The id of the application associated with the call. | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**direction** | [**CallDirectionEnum**](CallDirectionEnum.md) | | [optional]
+**call_url** | **str** | The URL of the call associated with the event. | [optional]
+**enqueued_time** | **datetime, none_type** | (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format. | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
+**answer_time** | **datetime, none_type** | Time the call was answered, in ISO 8601 format. | [optional]
+**end_time** | **datetime** | The time that the recording ended in ISO-8601 format | [optional]
+**cause** | **str** | Reason the call failed - hangup, busy, timeout, cancel, rejected, callback-error, invalid-bxml, application-error, account-limit, node-capacity-exceeded, error, or unknown. | [optional]
+**error_message** | **str, none_type** | Text explaining the reason that caused the call to fail in case of errors. | [optional]
+**error_id** | **str, none_type** | Bandwidth's internal id that references the error event. | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/Diversion.md b/docs/Diversion.md
index 7cf839bc..5ee17864 100644
--- a/docs/Diversion.md
+++ b/docs/Diversion.md
@@ -4,10 +4,13 @@
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**reason** | **str** | | [optional]
-**privacy** | **str** | | [optional]
-**unknown** | **str** | | [optional]
-**orig_to** | **str** | | [optional]
+**reason** | **str** | The reason for the diversion. Common values: unknown, user-busy, no-answer, unavailable, unconditional, time-of-day, do-not-disturb, deflection, follow-me, out-of-service, away. | [optional]
+**privacy** | **str** | off or full | [optional]
+**screen** | **str** | No if the number was provided by the user, yes if the number was provided by the network | [optional]
+**counter** | **str** | The number of diversions that have occurred | [optional]
+**limit** | **str** | The maximum number of diversions allowed for this session | [optional]
+**unknown** | **str** | The normal list of values is not exhaustive. Your application must be tolerant of unlisted keys and unlisted values of those keys. | [optional]
+**orig_to** | **str** | Always present. Indicates the last telephone number that the call was diverted from. | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/DtmfCallback.md b/docs/DtmfCallback.md
new file mode 100644
index 00000000..e710e23d
--- /dev/null
+++ b/docs/DtmfCallback.md
@@ -0,0 +1,29 @@
+# DtmfCallback
+
+The DTMF event is sent for every digit detected after a verb is executed. You may not respond to this event with BXML.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
+**application_id** | **str** | The id of the application associated with the call. | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**direction** | [**CallDirectionEnum**](CallDirectionEnum.md) | | [optional]
+**digit** | **str** | The digit collected in the call. | [optional]
+**call_url** | **str** | The URL of the call associated with the event. | [optional]
+**enqueued_time** | **datetime, none_type** | (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format. | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
+**answer_time** | **datetime, none_type** | Time the call was answered, in ISO 8601 format. | [optional]
+**parent_call_id** | **str** | (optional) If the event is related to the B leg of a <Transfer>, the call id of the original call leg that executed the <Transfer>. Otherwise, this field will not be present. | [optional]
+**transfer_caller_id** | **str** | The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable. | [optional]
+**transfer_to** | **str** | The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555). | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/GatherCallback.md b/docs/GatherCallback.md
new file mode 100644
index 00000000..c285dac7
--- /dev/null
+++ b/docs/GatherCallback.md
@@ -0,0 +1,30 @@
+# GatherCallback
+
+The gather event is sent after a verb is executed. Its purpose is to report the gathered digits to the calling application.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
+**application_id** | **str** | The id of the application associated with the call. | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**direction** | [**CallDirectionEnum**](CallDirectionEnum.md) | | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**digits** | **str** | (optional) The digits, letters, and/or symbols entered by the user. The string is empty if a timeout occurred before any buttons were pressed. | [optional]
+**call_url** | **str** | The URL of the call associated with the event. | [optional]
+**enqueued_time** | **datetime, none_type** | (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format. | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
+**answer_time** | **datetime, none_type** | Time the call was answered, in ISO 8601 format. | [optional]
+**parent_call_id** | **str** | (optional) If the event is related to the B leg of a <Transfer>, the call id of the original call leg that executed the <Transfer>. Otherwise, this field will not be present. | [optional]
+**terminating_digit** | **str** | (optional) The digit the user pressed to end the gather. Empty string value if no terminating digit was pressed. | [optional]
+**transfer_caller_id** | **str** | The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable. | [optional]
+**transfer_to** | **str** | The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555). | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/InitiateCallback.md b/docs/InitiateCallback.md
new file mode 100644
index 00000000..03c7fee7
--- /dev/null
+++ b/docs/InitiateCallback.md
@@ -0,0 +1,24 @@
+# InitiateCallback
+
+The Initiate event is fired when an inbound call is received for a Telephone Number on your Account. It is sent to the URL specified in the application associated with the location (sip-peer) that the called telephone number belongs to.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
+**application_id** | **str** | The id of the application associated with the call. | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**direction** | [**CallDirectionEnum**](CallDirectionEnum.md) | | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**call_url** | **str** | The URL of the call associated with the event. | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
+**diversion** | [**Diversion**](Diversion.md) | | [optional]
+**stir_shaken** | [**StirShaken**](StirShaken.md) | | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/ListMessageItem.md b/docs/ListMessageItem.md
index c82174d2..5de5e485 100644
--- a/docs/ListMessageItem.md
+++ b/docs/ListMessageItem.md
@@ -14,7 +14,7 @@ Name | Type | Description | Notes
**segment_count** | **int** | The number of segments the message was sent as. | [optional]
**error_code** | **int** | The numeric error code of the message. | [optional]
**receive_time** | **str** | The ISO 8601 datetime of the message. | [optional]
-**carrier_name** | **str, none_type** | The name of the carrier. Not currently supported for MMS coming soon. | [optional]
+**carrier_name** | **str** | The name of the carrier. Not currently supported for MMS coming soon. | [optional]
**message_size** | **int, none_type** | The size of the message including message content and headers. | [optional]
**message_length** | **int** | The length of the message content. | [optional]
**attachment_count** | **int, none_type** | The number of attachments the message has. | [optional]
diff --git a/docs/MachineDetectionCompleteCallback.md b/docs/MachineDetectionCompleteCallback.md
new file mode 100644
index 00000000..5a3afef9
--- /dev/null
+++ b/docs/MachineDetectionCompleteCallback.md
@@ -0,0 +1,26 @@
+# MachineDetectionCompleteCallback
+
+This event is sent to the url informed when requesting a machine detection operation. It contains the machine detection operation result, which can be: human, answering-machine, silence, timeout, error. This event is not sent when sync answering machine detection mode is chosen.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
+**application_id** | **str** | The id of the application associated with the call. | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**direction** | [**CallDirectionEnum**](CallDirectionEnum.md) | | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**call_url** | **str** | The URL of the call associated with the event. | [optional]
+**enqueued_time** | **datetime, none_type** | (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format. | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
+**answer_time** | **datetime, none_type** | Time the call was answered, in ISO 8601 format. | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**machine_detection_result** | **str, none_type** | (optional) if machine detection was requested in sync mode, the result will be specified here. Possible values are the same as the async counterpart: Machine Detection Complete | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/MachineDetectionConfiguration.md b/docs/MachineDetectionConfiguration.md
index 99258ab5..59254efd 100644
--- a/docs/MachineDetectionConfiguration.md
+++ b/docs/MachineDetectionConfiguration.md
@@ -6,20 +6,20 @@ The machine detection request used to perform verb has executed if the call is still active. The BXML returned by this callback is executed next. When the recording is available for download, a Recording Available event will be sent.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
+**application_id** | **str** | The id of the application associated with the call. | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**direction** | [**CallDirectionEnum**](CallDirectionEnum.md) | | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**call_url** | **str** | The URL of the call associated with the event. | [optional]
+**parent_call_id** | **str** | (optional) If the event is related to the B leg of a <Transfer>, the call id of the original call leg that executed the <Transfer>. Otherwise, this field will not be present. | [optional]
+**recording_id** | **str** | The unique ID of this recording | [optional]
+**media_url** | **str, none_type** | The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded. | [optional]
+**enqueued_time** | **datetime, none_type** | (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format. | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
+**answer_time** | **datetime, none_type** | Time the call was answered, in ISO 8601 format. | [optional]
+**end_time** | **datetime** | The time that the recording ended in ISO-8601 format | [optional]
+**duration** | **str** | The duration of the recording in ISO-8601 format | [optional]
+**file_format** | [**FileFormatEnum**](FileFormatEnum.md) | | [optional]
+**channels** | **int** | Always `1` for conference recordings; multi-channel recordings are not supported on conferences. | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**transfer_caller_id** | **str** | The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable. | [optional]
+**transfer_to** | **str** | The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555). | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/RecordingsApi.md b/docs/RecordingsApi.md
index 1b65472a..f5f1f5c8 100644
--- a/docs/RecordingsApi.md
+++ b/docs/RecordingsApi.md
@@ -793,9 +793,9 @@ with bandwidth.ApiClient(configuration) as api_client:
transcribe_recording = TranscribeRecording(
callback_url="https://myServer.com/bandwidth/webhooks/transcriptionAvailable",
callback_method=CallbackMethodEnum("POST"),
- username="mySecretUsername",
- password="mySecretPassword1!",
- tag="my custom tag",
+ username=Username("mySecretUsername"),
+ password=Password("mySecretPassword1!"),
+ tag="exampleTag",
callback_timeout=5.5,
) # TranscribeRecording |
diff --git a/docs/RedirectCallback.md b/docs/RedirectCallback.md
new file mode 100644
index 00000000..6e678bb5
--- /dev/null
+++ b/docs/RedirectCallback.md
@@ -0,0 +1,28 @@
+# RedirectCallback
+
+The Redirect event is fired when a verb is executed. Its purpose is to get the next set of verbs from the calling application.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
+**application_id** | **str** | The id of the application associated with the call. | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**direction** | [**CallDirectionEnum**](CallDirectionEnum.md) | | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**call_url** | **str** | The URL of the call associated with the event. | [optional]
+**parent_call_id** | **str** | (optional) If the event is related to the B leg of a <Transfer>, the call id of the original call leg that executed the <Transfer>. Otherwise, this field will not be present. | [optional]
+**enqueued_time** | **datetime, none_type** | (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format. | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
+**answer_time** | **datetime, none_type** | Time the call was answered, in ISO 8601 format. | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**transfer_caller_id** | **str** | The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable. | [optional]
+**transfer_to** | **str** | The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555). | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/SessionsApi.md b/docs/SessionsApi.md
index d5f7abdb..9a685ed4 100644
--- a/docs/SessionsApi.md
+++ b/docs/SessionsApi.md
@@ -66,7 +66,7 @@ with bandwidth.ApiClient(configuration) as api_client:
stream_aliases=["alias_1","alias_2"],
),
],
- ) # Subscriptions | Optional set of subscriptions to set on the participant. Calling this endpoint with no/empty body will only add the participant to the session. NOTE: the request body for this endpoint is OPTIONAL and provided as a convenience to avoid additional calls to the Update Participant Subscriptions endpoint. (optional)
+ ) # Subscriptions | The Body describes an optional set of subscriptions to apply to the participant. Calling this endpoint with no/empty body will only add the participant to the session, and will not subscribe the Participant to any media. The request body for this endpoint is OPTIONAL and provided as a convenience to avoid additional calls to the Update Participant Subscriptions endpoint. --- If a body is provided it will result in direct control over what Participants are subscribed to. - if the participants Array is provided and not empty, that list of Participants will be subscribed To - if the participants Array is missing or empty, and the sessionId is provided, the participant will be subscribed to the session, including all subsequent changes to the membership of the session - if the sessionId and the participant Array are both missing or empty, no subscriptions will be created (optional)
# example passing only required values which don't have defaults set
try:
@@ -92,7 +92,7 @@ Name | Type | Description | Notes
**account_id** | **str**| Account ID |
**session_id** | **str**| Session ID |
**participant_id** | **str**| Participant ID |
- **subscriptions** | [**Subscriptions**](Subscriptions.md)| Optional set of subscriptions to set on the participant. Calling this endpoint with no/empty body will only add the participant to the session. NOTE: the request body for this endpoint is OPTIONAL and provided as a convenience to avoid additional calls to the Update Participant Subscriptions endpoint. | [optional]
+ **subscriptions** | [**Subscriptions**](Subscriptions.md)| The Body describes an optional set of subscriptions to apply to the participant. Calling this endpoint with no/empty body will only add the participant to the session, and will not subscribe the Participant to any media. The request body for this endpoint is OPTIONAL and provided as a convenience to avoid additional calls to the Update Participant Subscriptions endpoint. --- If a body is provided it will result in direct control over what Participants are subscribed to. - if the participants Array is provided and not empty, that list of Participants will be subscribed To - if the participants Array is missing or empty, and the sessionId is provided, the participant will be subscribed to the session, including all subsequent changes to the membership of the session - if the sessionId and the participant Array are both missing or empty, no subscriptions will be created | [optional]
### Return type
@@ -715,7 +715,7 @@ with bandwidth.ApiClient(configuration) as api_client:
stream_aliases=["alias_1","alias_2"],
),
],
- ) # Subscriptions | Update participant subscriptions request body. (optional)
+ ) # Subscriptions | The body describes the desired subscriptions for the Participant. --- If a body is provided it will result in direct control over what Participants are subscribed to. - if the participants Array is provided and not empty, that list of Participants will be subscribed To - if the participants Array is missing or empty, and the sessionId is provided, the participant will be subscribed to the session, including all subsequent changes to the membership of the session - if the sessionId and the participant Array are both missing or empty, no subscriptions will be created (optional)
# example passing only required values which don't have defaults set
try:
@@ -741,7 +741,7 @@ Name | Type | Description | Notes
**account_id** | **str**| Account ID |
**session_id** | **str**| Session ID |
**participant_id** | **str**| Participant ID |
- **subscriptions** | [**Subscriptions**](Subscriptions.md)| Update participant subscriptions request body. | [optional]
+ **subscriptions** | [**Subscriptions**](Subscriptions.md)| The body describes the desired subscriptions for the Participant. --- If a body is provided it will result in direct control over what Participants are subscribed to. - if the participants Array is provided and not empty, that list of Participants will be subscribed To - if the participants Array is missing or empty, and the sessionId is provided, the participant will be subscribed to the session, including all subsequent changes to the membership of the session - if the sessionId and the participant Array are both missing or empty, no subscriptions will be created | [optional]
### Return type
diff --git a/docs/StirShaken.md b/docs/StirShaken.md
new file mode 100644
index 00000000..f9943143
--- /dev/null
+++ b/docs/StirShaken.md
@@ -0,0 +1,14 @@
+# StirShaken
+
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**verstat** | **str** | (optional) The verification status indicating whether the verification was successful or not. Possible values are TN-Verification-Passed and TN-Verification-Failed. | [optional]
+**attestation_indicator** | **str** | (optional) The attestation level verified by Bandwidth. Possible values are A (full), B (partial) or C (gateway). | [optional]
+**originating_id** | **str** | (optional) A unique origination identifier. | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/Subscriptions.md b/docs/Subscriptions.md
index 9c64c297..95887631 100644
--- a/docs/Subscriptions.md
+++ b/docs/Subscriptions.md
@@ -4,8 +4,8 @@
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
-**session_id** | **str** | Session the subscriptions are associated with. If this is the only field, the subscriber will be subscribed to all participants in the session (including any participants that are later added to the session). Upon creation of a Participant, returns as an empty object. | [optional]
-**participants** | [**[ParticipantSubscription]**](ParticipantSubscription.md) | (optional) A list of participants in the session that will be subscribed to. Returns empty if used during the creation of a Participant. | [optional]
+**session_id** | **str** | If present, and not overridden by the array of participants, it represents the session the subscriptions are associated with. If this is the only field, the subscriber will be subscribed to all participants in the session (including any participants that are later added to the session). Upon creation of a Participant, returns as an empty object. | [optional]
+**participants** | [**[ParticipantSubscription]**](ParticipantSubscription.md) | (optional) A list of participants in the session that will be subscribed to. If present and not empty or null, this will override any sessionId specified in the body. Returns empty if used during the creation of a Participant. | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/TranscribeRecording.md b/docs/TranscribeRecording.md
index 16a8a19b..0ca0d6dd 100644
--- a/docs/TranscribeRecording.md
+++ b/docs/TranscribeRecording.md
@@ -6,9 +6,9 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**callback_url** | **str** | The URL to send the [TranscriptionAvailable](/docs/voice/webhooks/transcriptionAvailable) event to. You should not include sensitive or personally-identifiable information in the callbackUrl field! Always use the proper username and password fields for authorization. | [optional]
**callback_method** | [**CallbackMethodEnum**](CallbackMethodEnum.md) | | [optional]
-**username** | **str, none_type** | Basic auth username. | [optional]
-**password** | **str, none_type** | Basic auth password. | [optional]
-**tag** | **str, none_type** | A custom string that will be sent with the webhook to `callbackUrl`. | [optional]
+**username** | [**Username**](Username.md) | | [optional]
+**password** | [**Password**](Password.md) | | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
**callback_timeout** | **float, none_type** | This is the timeout (in seconds) to use when delivering the webhook to `callbackUrl`. Can be any numeric value (including decimals) between 1 and 25. | [optional] if omitted the server will use the default value of 15
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
diff --git a/docs/TranscriptionAvailableCallback.md b/docs/TranscriptionAvailableCallback.md
new file mode 100644
index 00000000..d7df08dd
--- /dev/null
+++ b/docs/TranscriptionAvailableCallback.md
@@ -0,0 +1,33 @@
+# TranscriptionAvailableCallback
+
+The Transcription Available event is sent when the recording transcription is available to be downloaded.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
+**application_id** | **str** | The id of the application associated with the call. | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**direction** | [**CallDirectionEnum**](CallDirectionEnum.md) | | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**call_url** | **str** | The URL of the call associated with the event. | [optional]
+**media_url** | **str, none_type** | The URL that can be used to download the recording. Only present if the recording is finished and may be downloaded. | [optional]
+**parent_call_id** | **str** | (optional) If the event is related to the B leg of a <Transfer>, the call id of the original call leg that executed the <Transfer>. Otherwise, this field will not be present. | [optional]
+**recording_id** | **str** | The unique ID of this recording | [optional]
+**enqueued_time** | **datetime, none_type** | (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format. | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
+**end_time** | **datetime** | The time that the recording ended in ISO-8601 format | [optional]
+**duration** | **str** | The duration of the recording in ISO-8601 format | [optional]
+**file_format** | [**FileFormatEnum**](FileFormatEnum.md) | | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**transcription** | [**Transcription**](Transcription.md) | | [optional]
+**transfer_caller_id** | **str** | The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable. | [optional]
+**transfer_to** | **str** | The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555). | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/TranscriptionMetadata.md b/docs/TranscriptionMetadata.md
index 9b6661d2..3328c2b6 100644
--- a/docs/TranscriptionMetadata.md
+++ b/docs/TranscriptionMetadata.md
@@ -6,7 +6,7 @@ If the recording was transcribed, metadata about the transcription
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **str** | The unique transcription ID | [optional]
-**status** | **str** | The current status of the transcription. Current values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values. | [optional]
+**status** | **str** | The current status of the process. For recording, current possible values are 'processing', 'partial', 'complete', 'deleted', and 'error'. For transcriptions, current possible values are 'none', 'processing', 'available', 'error', 'timeout', 'file-size-too-big', and 'file-size-too-small'. Additional states may be added in the future, so your application must be tolerant of unknown values. | [optional]
**completed_time** | **str** | The time that the transcription was completed | [optional]
**url** | **str** | The URL of the [transcription](#operation/getCallTranscription) | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
diff --git a/docs/TransferAnswerCallback.md b/docs/TransferAnswerCallback.md
new file mode 100644
index 00000000..7e1c3539
--- /dev/null
+++ b/docs/TransferAnswerCallback.md
@@ -0,0 +1,27 @@
+# TransferAnswerCallback
+
+When processing a verb, this event is sent when a called party (B-leg) answers. The event is sent to the endpoint specified in the transferAnswerUrl attribute of the tag that answered. BXML returned by this callback will be executed for the called party only. After all BXML has been executed, the called party will be bridged to the original call. Most BXML verbs are allowed in response to a transferAnswer event, but some are not allowed.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
+**application_id** | **str** | The id of the application associated with the call. | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**direction** | [**CallDirectionEnum**](CallDirectionEnum.md) | | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**call_url** | **str** | The URL of the call associated with the event. | [optional]
+**enqueued_time** | **datetime, none_type** | (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format. | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
+**answer_time** | **datetime, none_type** | Time the call was answered, in ISO 8601 format. | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**transfer_caller_id** | **str** | The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable. | [optional]
+**transfer_to** | **str** | The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555). | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/TransferCompleteCallback.md b/docs/TransferCompleteCallback.md
new file mode 100644
index 00000000..8511e1cd
--- /dev/null
+++ b/docs/TransferCompleteCallback.md
@@ -0,0 +1,30 @@
+# TransferCompleteCallback
+
+This event is sent to the transferCompleteUrl of the A-leg's verb when the transferred call (B-leg) completes. In a simultaneous ringing scenario, only one B-leg succeeds and this event corresponds to that successful leg. If none of the calls were answered, the transferComplete event corresponds to one of the legs.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
+**application_id** | **str** | The id of the application associated with the call. | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**direction** | [**CallDirectionEnum**](CallDirectionEnum.md) | | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**call_url** | **str** | The URL of the call associated with the event. | [optional]
+**enqueued_time** | **datetime, none_type** | (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format. | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
+**answer_time** | **datetime, none_type** | Time the call was answered, in ISO 8601 format. | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**transfer_caller_id** | **str** | The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable. | [optional]
+**transfer_to** | **str** | The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555). | [optional]
+**cause** | **str** | Reason the call failed - hangup, busy, timeout, cancel, rejected, callback-error, invalid-bxml, application-error, account-limit, node-capacity-exceeded, error, or unknown. | [optional]
+**error_message** | **str, none_type** | Text explaining the reason that caused the call to fail in case of errors. | [optional]
+**error_id** | **str, none_type** | Bandwidth's internal id that references the error event. | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/TransferDisconnectCallback.md b/docs/TransferDisconnectCallback.md
new file mode 100644
index 00000000..a7c9b0b0
--- /dev/null
+++ b/docs/TransferDisconnectCallback.md
@@ -0,0 +1,32 @@
+# TransferDisconnectCallback
+
+This event is sent to the transferDisconnectUrl of each tag when its respective call leg ends for any reason. The event is sent in the normal case, when the transferred leg is answered and later hung up, but is also sent if the new leg was never answered in the first place, if it was rejected, and if the original call leg hung up before the transferred leg.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**event_type** | **str** | The event type, value can be one of the following: answer, bridgeComplete, bridgeTargetComplete, conferenceCreated, conferenceRedirect, conferenceMemberJoin, conferenceMemberExit, conferenceCompleted, conferenceRecordingAvailable, disconnect, dtmf, gather, initiate, machineDetectionComplete, recordingComplete, recordingAvailable, redirect, transcriptionAvailable, transferAnswer, transferComplete, transferDisconnect. | [optional]
+**event_time** | **str** | The approximate UTC date and time when the event was generated by the Bandwidth server, in ISO 8601 format. This may not be exactly the time of event execution. | [optional]
+**account_id** | **str** | The user account associated with the call. | [optional]
+**application_id** | **str** | The id of the application associated with the call. | [optional]
+**_from** | **str** | The provided identifier of the caller: can be a phone number in E.164 format (e.g. +15555555555) or one of Private, Restricted, Unavailable, or Anonymous. | [optional]
+**to** | **str** | The phone number that received the call, in E.164 format (e.g. +15555555555). | [optional]
+**direction** | [**CallDirectionEnum**](CallDirectionEnum.md) | | [optional]
+**call_id** | **str** | The call id associated with the event. | [optional]
+**call_url** | **str** | The URL of the call associated with the event. | [optional]
+**parent_call_id** | **str** | (optional) If the event is related to the B leg of a <Transfer>, the call id of the original call leg that executed the <Transfer>. Otherwise, this field will not be present. | [optional]
+**enqueued_time** | **datetime, none_type** | (optional) If call queueing is enabled and this is an outbound call, time the call was queued, in ISO 8601 format. | [optional]
+**start_time** | **datetime** | Time the call was started, in ISO 8601 format. | [optional]
+**answer_time** | **datetime, none_type** | Time the call was answered, in ISO 8601 format. | [optional]
+**end_time** | **datetime** | The time that the recording ended in ISO-8601 format | [optional]
+**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
+**transfer_caller_id** | **str** | The phone number used as the from field of the B-leg call, in E.164 format (e.g. +15555555555) or one of Restricted, Anonymous, Private, or Unavailable. | [optional]
+**transfer_to** | **str** | The phone number used as the to field of the B-leg call, in E.164 format (e.g. +15555555555). | [optional]
+**cause** | **str** | Reason the call failed - hangup, busy, timeout, cancel, rejected, callback-error, invalid-bxml, application-error, account-limit, node-capacity-exceeded, error, or unknown. | [optional]
+**error_message** | **str, none_type** | Text explaining the reason that caused the call to fail in case of errors. | [optional]
+**error_id** | **str, none_type** | Bandwidth's internal id that references the error event. | [optional]
+**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/UpdateCall.md b/docs/UpdateCall.md
index 3f4eaa87..a1eb6470 100644
--- a/docs/UpdateCall.md
+++ b/docs/UpdateCall.md
@@ -7,12 +7,12 @@ Name | Type | Description | Notes
**state** | [**CallStateEnum**](CallStateEnum.md) | | [optional]
**redirect_url** | **str, none_type** | The URL to send the [Redirect](/docs/voice/bxml/redirect) event to which will provide new BXML. Required if `state` is `active`. Not allowed if `state` is `completed`. | [optional]
**redirect_method** | [**RedirectMethodEnum**](RedirectMethodEnum.md) | | [optional]
-**username** | **str, none_type** | Basic auth username. | [optional]
-**password** | **str, none_type** | Basic auth password. | [optional]
+**username** | [**Username**](Username.md) | | [optional]
+**password** | [**Password**](Password.md) | | [optional]
**redirect_fallback_url** | **str, none_type** | A fallback url which, if provided, will be used to retry the redirect callback delivery in case `redirectUrl` fails to respond | [optional]
**redirect_fallback_method** | [**RedirectMethodEnum**](RedirectMethodEnum.md) | | [optional]
-**fallback_username** | **str, none_type** | Basic auth username. | [optional]
-**fallback_password** | **str, none_type** | Basic auth password. | [optional]
+**fallback_username** | [**Username**](Username.md) | | [optional]
+**fallback_password** | [**Password**](Password.md) | | [optional]
**tag** | **str, none_type** | A custom string that will be sent with this and all future callbacks unless overwritten by a future `tag` attribute or [`<Tag>`](/docs/voice/bxml/tag) verb, or cleared. May be cleared by setting `tag=\"\"`. Max length 256 characters. Not allowed if `state` is `completed`. | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
diff --git a/docs/UpdateConference.md b/docs/UpdateConference.md
index bd81f340..56bf9522 100644
--- a/docs/UpdateConference.md
+++ b/docs/UpdateConference.md
@@ -7,12 +7,12 @@ Name | Type | Description | Notes
**status** | [**ConferenceStateEnum**](ConferenceStateEnum.md) | | [optional]
**redirect_url** | **str, none_type** | The URL to send the [conferenceRedirect](/docs/voice/webhooks/conferenceRedirect) event which will provide new BXML. Not allowed if `state` is `completed`, but required if `state` is `active` | [optional]
**redirect_method** | [**RedirectMethodEnum**](RedirectMethodEnum.md) | | [optional]
-**username** | **str, none_type** | Basic auth username. | [optional]
-**password** | **str, none_type** | Basic auth password. | [optional]
+**username** | [**Username**](Username.md) | | [optional]
+**password** | [**Password**](Password.md) | | [optional]
**redirect_fallback_url** | **str, none_type** | A fallback url which, if provided, will be used to retry the `conferenceRedirect` webhook delivery in case `redirectUrl` fails to respond. Not allowed if `state` is `completed`. | [optional]
**redirect_fallback_method** | [**RedirectMethodEnum**](RedirectMethodEnum.md) | | [optional]
-**fallback_username** | **str, none_type** | Basic auth username. | [optional]
-**fallback_password** | **str, none_type** | Basic auth password. | [optional]
+**fallback_username** | [**Username**](Username.md) | | [optional]
+**fallback_password** | [**Password**](Password.md) | | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/Username.md b/docs/Username.md
new file mode 100644
index 00000000..91e39a6b
--- /dev/null
+++ b/docs/Username.md
@@ -0,0 +1,12 @@
+# Username
+
+Basic auth username.
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**value** | **str** | Basic auth username. |
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
From b909806753cdd180cda4bca9f3a1750eae028142 Mon Sep 17 00:00:00 2001
From: AJ Rice <53190766+ajrice6713@users.noreply.github.com>
Date: Tue, 30 Aug 2022 11:09:35 -0400
Subject: [PATCH 2/7] Regenerate with updated `bandwidth.json`
Remove `username` and `password` models from voice spec
---
bandwidth.json | 146 +++++++++++++++++++++++++++++++++++++------------
1 file changed, 110 insertions(+), 36 deletions(-)
diff --git a/bandwidth.json b/bandwidth.json
index d674e7b1..ac04fce2 100644
--- a/bandwidth.json
+++ b/bandwidth.json
@@ -2843,20 +2843,6 @@
],
"description": "The machine detection mode. If set to 'async', the detection\nresult will be sent in a 'machineDetectionComplete' callback. If set to\n'sync', the 'answer' callback will wait for the machine detection to complete\nand will include its result."
},
- "username": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth username.",
- "maxLength": 1024,
- "example": "mySecretUsername"
- },
- "password": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth password.",
- "maxLength": 1024,
- "example": "mySecretPassword1!"
- },
"createCall": {
"type": "object",
"required": [
@@ -2898,10 +2884,18 @@
"$ref": "#/components/schemas/callbackMethodEnum"
},
"username": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"password": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"answerFallbackUrl": {
"nullable": true,
@@ -2915,10 +2909,18 @@
"$ref": "#/components/schemas/callbackMethodEnum"
},
"fallbackUsername": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"fallbackPassword": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"disconnectUrl": {
"nullable": true,
@@ -3067,16 +3069,32 @@
"description": "URL to deliver the `disconnect` event webhook."
},
"username": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"password": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"fallbackUsername": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"fallbackPassword": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"priority": {
"nullable": true,
@@ -3218,10 +3236,18 @@
"$ref": "#/components/schemas/redirectMethodEnum"
},
"username": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"password": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"redirectFallbackUrl": {
"nullable": true,
@@ -3234,10 +3260,18 @@
"$ref": "#/components/schemas/redirectMethodEnum"
},
"fallbackUsername": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"fallbackPassword": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"tag": {
"nullable": true,
@@ -3402,10 +3436,18 @@
"$ref": "#/components/schemas/redirectMethodEnum"
},
"username": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"password": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"redirectFallbackUrl": {
"nullable": true,
@@ -3418,10 +3460,18 @@
"$ref": "#/components/schemas/redirectMethodEnum"
},
"fallbackUsername": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"fallbackPassword": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
}
}
},
@@ -3591,10 +3641,18 @@
"$ref": "#/components/schemas/callbackMethodEnum"
},
"username": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"password": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"fallbackUrl": {
"nullable": true,
@@ -3608,10 +3666,18 @@
"$ref": "#/components/schemas/callbackMethodEnum"
},
"fallbackUsername": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"fallbackPassword": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
}
}
},
@@ -3628,10 +3694,18 @@
"$ref": "#/components/schemas/callbackMethodEnum"
},
"username": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"password": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"tag": {
"$ref": "#/components/schemas/tag1"
From fefa675d344c88c41fd6046a0abe8cd1a6ff5c2c Mon Sep 17 00:00:00 2001
From: AJ Rice <53190766+ajrice6713@users.noreply.github.com>
Date: Tue, 30 Aug 2022 11:10:09 -0400
Subject: [PATCH 3/7] Revert "Regenerate with updated `bandwidth.json`"
This reverts commit b909806753cdd180cda4bca9f3a1750eae028142.
---
bandwidth.json | 146 ++++++++++++-------------------------------------
1 file changed, 36 insertions(+), 110 deletions(-)
diff --git a/bandwidth.json b/bandwidth.json
index ac04fce2..d674e7b1 100644
--- a/bandwidth.json
+++ b/bandwidth.json
@@ -2843,6 +2843,20 @@
],
"description": "The machine detection mode. If set to 'async', the detection\nresult will be sent in a 'machineDetectionComplete' callback. If set to\n'sync', the 'answer' callback will wait for the machine detection to complete\nand will include its result."
},
+ "username": {
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
+ },
+ "password": {
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
+ },
"createCall": {
"type": "object",
"required": [
@@ -2884,18 +2898,10 @@
"$ref": "#/components/schemas/callbackMethodEnum"
},
"username": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth username.",
- "maxLength": 1024,
- "example": "mySecretUsername"
+ "$ref": "#/components/schemas/username"
},
"password": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth password.",
- "maxLength": 1024,
- "example": "mySecretPassword1!"
+ "$ref": "#/components/schemas/password"
},
"answerFallbackUrl": {
"nullable": true,
@@ -2909,18 +2915,10 @@
"$ref": "#/components/schemas/callbackMethodEnum"
},
"fallbackUsername": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth username.",
- "maxLength": 1024,
- "example": "mySecretUsername"
+ "$ref": "#/components/schemas/username"
},
"fallbackPassword": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth password.",
- "maxLength": 1024,
- "example": "mySecretPassword1!"
+ "$ref": "#/components/schemas/password"
},
"disconnectUrl": {
"nullable": true,
@@ -3069,32 +3067,16 @@
"description": "URL to deliver the `disconnect` event webhook."
},
"username": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth username.",
- "maxLength": 1024,
- "example": "mySecretUsername"
+ "$ref": "#/components/schemas/username"
},
"password": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth password.",
- "maxLength": 1024,
- "example": "mySecretPassword1!"
+ "$ref": "#/components/schemas/password"
},
"fallbackUsername": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth username.",
- "maxLength": 1024,
- "example": "mySecretUsername"
+ "$ref": "#/components/schemas/username"
},
"fallbackPassword": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth password.",
- "maxLength": 1024,
- "example": "mySecretPassword1!"
+ "$ref": "#/components/schemas/password"
},
"priority": {
"nullable": true,
@@ -3236,18 +3218,10 @@
"$ref": "#/components/schemas/redirectMethodEnum"
},
"username": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth username.",
- "maxLength": 1024,
- "example": "mySecretUsername"
+ "$ref": "#/components/schemas/username"
},
"password": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth password.",
- "maxLength": 1024,
- "example": "mySecretPassword1!"
+ "$ref": "#/components/schemas/password"
},
"redirectFallbackUrl": {
"nullable": true,
@@ -3260,18 +3234,10 @@
"$ref": "#/components/schemas/redirectMethodEnum"
},
"fallbackUsername": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth username.",
- "maxLength": 1024,
- "example": "mySecretUsername"
+ "$ref": "#/components/schemas/username"
},
"fallbackPassword": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth password.",
- "maxLength": 1024,
- "example": "mySecretPassword1!"
+ "$ref": "#/components/schemas/password"
},
"tag": {
"nullable": true,
@@ -3436,18 +3402,10 @@
"$ref": "#/components/schemas/redirectMethodEnum"
},
"username": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth username.",
- "maxLength": 1024,
- "example": "mySecretUsername"
+ "$ref": "#/components/schemas/username"
},
"password": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth password.",
- "maxLength": 1024,
- "example": "mySecretPassword1!"
+ "$ref": "#/components/schemas/password"
},
"redirectFallbackUrl": {
"nullable": true,
@@ -3460,18 +3418,10 @@
"$ref": "#/components/schemas/redirectMethodEnum"
},
"fallbackUsername": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth username.",
- "maxLength": 1024,
- "example": "mySecretUsername"
+ "$ref": "#/components/schemas/username"
},
"fallbackPassword": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth password.",
- "maxLength": 1024,
- "example": "mySecretPassword1!"
+ "$ref": "#/components/schemas/password"
}
}
},
@@ -3641,18 +3591,10 @@
"$ref": "#/components/schemas/callbackMethodEnum"
},
"username": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth username.",
- "maxLength": 1024,
- "example": "mySecretUsername"
+ "$ref": "#/components/schemas/username"
},
"password": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth password.",
- "maxLength": 1024,
- "example": "mySecretPassword1!"
+ "$ref": "#/components/schemas/password"
},
"fallbackUrl": {
"nullable": true,
@@ -3666,18 +3608,10 @@
"$ref": "#/components/schemas/callbackMethodEnum"
},
"fallbackUsername": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth username.",
- "maxLength": 1024,
- "example": "mySecretUsername"
+ "$ref": "#/components/schemas/username"
},
"fallbackPassword": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth password.",
- "maxLength": 1024,
- "example": "mySecretPassword1!"
+ "$ref": "#/components/schemas/password"
}
}
},
@@ -3694,18 +3628,10 @@
"$ref": "#/components/schemas/callbackMethodEnum"
},
"username": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth username.",
- "maxLength": 1024,
- "example": "mySecretUsername"
+ "$ref": "#/components/schemas/username"
},
"password": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth password.",
- "maxLength": 1024,
- "example": "mySecretPassword1!"
+ "$ref": "#/components/schemas/password"
},
"tag": {
"$ref": "#/components/schemas/tag1"
From 76e9019e7d1219e439e8dcf69a83ed038ac26829 Mon Sep 17 00:00:00 2001
From: AJ Rice <53190766+ajrice6713@users.noreply.github.com>
Date: Tue, 30 Aug 2022 11:22:30 -0400
Subject: [PATCH 4/7] Regenerate with updated `bandwidth.json` file
Remove `username` and `password` models from voice spec
---
.openapi-generator/FILES | 6 -
README.md | 18 +-
bandwidth.json | 146 ++++++---
bandwidth/model/create_call.py | 40 ++-
bandwidth/model/create_call_response.py | 40 ++-
.../model/machine_detection_configuration.py | 40 ++-
bandwidth/model/password.py | 290 ------------------
bandwidth/model/transcribe_recording.py | 22 +-
bandwidth/model/update_call.py | 40 ++-
bandwidth/model/update_conference.py | 40 ++-
bandwidth/model/username.py | 290 ------------------
bandwidth/models/__init__.py | 2 -
docs/CallsApi.md | 24 +-
docs/ConferencesApi.md | 8 +-
docs/CreateCall.md | 8 +-
docs/CreateCallResponse.md | 8 +-
docs/MachineDetectionConfiguration.md | 8 +-
docs/Password.md | 12 -
docs/RecordingsApi.md | 4 +-
docs/TranscribeRecording.md | 4 +-
docs/UpdateCall.md | 8 +-
docs/UpdateConference.md | 8 +-
docs/Username.md | 12 -
23 files changed, 290 insertions(+), 788 deletions(-)
delete mode 100644 bandwidth/model/password.py
delete mode 100644 bandwidth/model/username.py
delete mode 100644 docs/Password.md
delete mode 100644 docs/Username.md
diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES
index db18adbb..58afe5bc 100644
--- a/.openapi-generator/FILES
+++ b/.openapi-generator/FILES
@@ -78,7 +78,6 @@ bandwidth/model/mfa_unauthorized_request_error.py
bandwidth/model/page_info.py
bandwidth/model/participant.py
bandwidth/model/participant_subscription.py
-bandwidth/model/password.py
bandwidth/model/priority_enum.py
bandwidth/model/publish_permissions_enum.py
bandwidth/model/recording_available_callback.py
@@ -105,7 +104,6 @@ bandwidth/model/update_call.py
bandwidth/model/update_call_recording.py
bandwidth/model/update_conference.py
bandwidth/model/update_conference_member.py
-bandwidth/model/username.py
bandwidth/model/verify_code_request.py
bandwidth/model/verify_code_response.py
bandwidth/model/voice_api_error.py
@@ -179,7 +177,6 @@ docs/PageInfo.md
docs/Participant.md
docs/ParticipantSubscription.md
docs/ParticipantsApi.md
-docs/Password.md
docs/PhoneNumberLookupApi.md
docs/PriorityEnum.md
docs/PublishPermissionsEnum.md
@@ -210,7 +207,6 @@ docs/UpdateCall.md
docs/UpdateCallRecording.md
docs/UpdateConference.md
docs/UpdateConferenceMember.md
-docs/Username.md
docs/VerifyCodeRequest.md
docs/VerifyCodeResponse.md
docs/VoiceApiError.md
@@ -283,7 +279,6 @@ test/test_page_info.py
test/test_participant.py
test/test_participant_subscription.py
test/test_participants_api.py
-test/test_password.py
test/test_phone_number_lookup_api.py
test/test_priority_enum.py
test/test_publish_permissions_enum.py
@@ -314,7 +309,6 @@ test/test_update_call.py
test/test_update_call_recording.py
test/test_update_conference.py
test/test_update_conference_member.py
-test/test_username.py
test/test_verify_code_request.py
test/test_verify_code_response.py
test/test_voice_api_error.py
diff --git a/README.md b/README.md
index cc3cebe9..5f9b2047 100644
--- a/README.md
+++ b/README.md
@@ -86,12 +86,12 @@ with bandwidth.ApiClient(configuration) as api_client:
application_id="1234-qwer-5679-tyui",
answer_url="https://www.myCallbackServer.com/webhooks/answer",
answer_method=CallbackMethodEnum("POST"),
- username=Username("mySecretUsername"),
- password=Password("mySecretPassword1!"),
+ username="mySecretUsername",
+ password="mySecretPassword1!",
answer_fallback_url="https://www.myFallbackServer.com/webhooks/answer",
answer_fallback_method=CallbackMethodEnum("POST"),
- fallback_username=Username("mySecretUsername"),
- fallback_password=Password("mySecretPassword1!"),
+ fallback_username="mySecretUsername",
+ fallback_password="mySecretPassword1!",
disconnect_url="disconnect_url_example",
disconnect_method=CallbackMethodEnum("POST"),
call_timeout=30,
@@ -106,12 +106,12 @@ with bandwidth.ApiClient(configuration) as api_client:
delay_result=False,
callback_url="https://myServer.com/bandwidth/webhooks/machineDetectionComplete",
callback_method=CallbackMethodEnum("POST"),
- username=Username("mySecretUsername"),
- password=Password("mySecretPassword1!"),
+ username="mySecretUsername",
+ password="mySecretPassword1!",
fallback_url="https://myFallbackServer.com/bandwidth/webhooks/machineDetectionComplete",
fallback_method=CallbackMethodEnum("POST"),
- fallback_username=Username("mySecretUsername"),
- fallback_password=Password("mySecretPassword1!"),
+ fallback_username="mySecretUsername",
+ fallback_password="mySecretPassword1!",
),
priority=5,
tag="tag_example",
@@ -241,7 +241,6 @@ Class | Method | HTTP request | Description
- [PageInfo](docs/PageInfo.md)
- [Participant](docs/Participant.md)
- [ParticipantSubscription](docs/ParticipantSubscription.md)
- - [Password](docs/Password.md)
- [PriorityEnum](docs/PriorityEnum.md)
- [PublishPermissionsEnum](docs/PublishPermissionsEnum.md)
- [RecordingAvailableCallback](docs/RecordingAvailableCallback.md)
@@ -268,7 +267,6 @@ Class | Method | HTTP request | Description
- [UpdateCallRecording](docs/UpdateCallRecording.md)
- [UpdateConference](docs/UpdateConference.md)
- [UpdateConferenceMember](docs/UpdateConferenceMember.md)
- - [Username](docs/Username.md)
- [VerifyCodeRequest](docs/VerifyCodeRequest.md)
- [VerifyCodeResponse](docs/VerifyCodeResponse.md)
- [VoiceApiError](docs/VoiceApiError.md)
diff --git a/bandwidth.json b/bandwidth.json
index d674e7b1..ac04fce2 100644
--- a/bandwidth.json
+++ b/bandwidth.json
@@ -2843,20 +2843,6 @@
],
"description": "The machine detection mode. If set to 'async', the detection\nresult will be sent in a 'machineDetectionComplete' callback. If set to\n'sync', the 'answer' callback will wait for the machine detection to complete\nand will include its result."
},
- "username": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth username.",
- "maxLength": 1024,
- "example": "mySecretUsername"
- },
- "password": {
- "type": "string",
- "nullable": true,
- "description": "Basic auth password.",
- "maxLength": 1024,
- "example": "mySecretPassword1!"
- },
"createCall": {
"type": "object",
"required": [
@@ -2898,10 +2884,18 @@
"$ref": "#/components/schemas/callbackMethodEnum"
},
"username": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"password": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"answerFallbackUrl": {
"nullable": true,
@@ -2915,10 +2909,18 @@
"$ref": "#/components/schemas/callbackMethodEnum"
},
"fallbackUsername": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"fallbackPassword": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"disconnectUrl": {
"nullable": true,
@@ -3067,16 +3069,32 @@
"description": "URL to deliver the `disconnect` event webhook."
},
"username": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"password": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"fallbackUsername": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"fallbackPassword": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"priority": {
"nullable": true,
@@ -3218,10 +3236,18 @@
"$ref": "#/components/schemas/redirectMethodEnum"
},
"username": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"password": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"redirectFallbackUrl": {
"nullable": true,
@@ -3234,10 +3260,18 @@
"$ref": "#/components/schemas/redirectMethodEnum"
},
"fallbackUsername": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"fallbackPassword": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"tag": {
"nullable": true,
@@ -3402,10 +3436,18 @@
"$ref": "#/components/schemas/redirectMethodEnum"
},
"username": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"password": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"redirectFallbackUrl": {
"nullable": true,
@@ -3418,10 +3460,18 @@
"$ref": "#/components/schemas/redirectMethodEnum"
},
"fallbackUsername": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"fallbackPassword": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
}
}
},
@@ -3591,10 +3641,18 @@
"$ref": "#/components/schemas/callbackMethodEnum"
},
"username": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"password": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"fallbackUrl": {
"nullable": true,
@@ -3608,10 +3666,18 @@
"$ref": "#/components/schemas/callbackMethodEnum"
},
"fallbackUsername": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"fallbackPassword": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
}
}
},
@@ -3628,10 +3694,18 @@
"$ref": "#/components/schemas/callbackMethodEnum"
},
"username": {
- "$ref": "#/components/schemas/username"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth username.",
+ "maxLength": 1024,
+ "example": "mySecretUsername"
},
"password": {
- "$ref": "#/components/schemas/password"
+ "type": "string",
+ "nullable": true,
+ "description": "Basic auth password.",
+ "maxLength": 1024,
+ "example": "mySecretPassword1!"
},
"tag": {
"$ref": "#/components/schemas/tag1"
diff --git a/bandwidth/model/create_call.py b/bandwidth/model/create_call.py
index 0d409f10..ae4a0730 100644
--- a/bandwidth/model/create_call.py
+++ b/bandwidth/model/create_call.py
@@ -33,12 +33,8 @@
def lazy_import():
from bandwidth.model.callback_method_enum import CallbackMethodEnum
from bandwidth.model.machine_detection_configuration import MachineDetectionConfiguration
- from bandwidth.model.password import Password
- from bandwidth.model.username import Username
globals()['CallbackMethodEnum'] = CallbackMethodEnum
globals()['MachineDetectionConfiguration'] = MachineDetectionConfiguration
- globals()['Password'] = Password
- globals()['Username'] = Username
class CreateCall(ModelNormal):
@@ -72,9 +68,21 @@ class CreateCall(ModelNormal):
('answer_url',): {
'max_length': 2048,
},
+ ('username',): {
+ 'max_length': 1024,
+ },
+ ('password',): {
+ 'max_length': 1024,
+ },
('answer_fallback_url',): {
'max_length': 2048,
},
+ ('fallback_username',): {
+ 'max_length': 1024,
+ },
+ ('fallback_password',): {
+ 'max_length': 1024,
+ },
('disconnect_url',): {
'max_length': 2048,
},
@@ -123,12 +131,12 @@ def openapi_types():
'answer_url': (str,), # noqa: E501
'uui': (str, none_type,), # noqa: E501
'answer_method': (CallbackMethodEnum,), # noqa: E501
- 'username': (Username,), # noqa: E501
- 'password': (Password,), # noqa: E501
+ 'username': (str, none_type,), # noqa: E501
+ 'password': (str, none_type,), # noqa: E501
'answer_fallback_url': (str, none_type,), # noqa: E501
'answer_fallback_method': (CallbackMethodEnum,), # noqa: E501
- 'fallback_username': (Username,), # noqa: E501
- 'fallback_password': (Password,), # noqa: E501
+ 'fallback_username': (str, none_type,), # noqa: E501
+ 'fallback_password': (str, none_type,), # noqa: E501
'disconnect_url': (str, none_type,), # noqa: E501
'disconnect_method': (CallbackMethodEnum,), # noqa: E501
'call_timeout': (float, none_type,), # noqa: E501
@@ -214,12 +222,12 @@ def _from_openapi_data(cls, to, _from, application_id, answer_url, *args, **kwar
_visited_composed_classes = (Animal,)
uui (str, none_type): A comma-separated list of 'User-To-User' headers to be sent in the INVITE when calling a SIP URI. Each value must end with an 'encoding' parameter as described in RFC 7433. Only 'jwt' and 'base64' encodings are allowed. The entire value cannot exceed 350 characters, including parameters and separators.. [optional] # noqa: E501
answer_method (CallbackMethodEnum): [optional] # noqa: E501
- username (Username): [optional] # noqa: E501
- password (Password): [optional] # noqa: E501
+ username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ password (str, none_type): Basic auth password.. [optional] # noqa: E501
answer_fallback_url (str, none_type): A fallback url which, if provided, will be used to retry the `answer` webhook delivery in case `answerUrl` fails to respond Must use `https` if specifying `fallbackUsername` and `fallbackPassword`. [optional] # noqa: E501
answer_fallback_method (CallbackMethodEnum): [optional] # noqa: E501
- fallback_username (Username): [optional] # noqa: E501
- fallback_password (Password): [optional] # noqa: E501
+ fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
disconnect_url (str, none_type): The URL to send the Disconnect event to when the call ends. This event does not expect a BXML response.. [optional] # noqa: E501
disconnect_method (CallbackMethodEnum): [optional] # noqa: E501
call_timeout (float, none_type): The timeout (in seconds) for the callee to answer the call after it starts ringing. If the call does not start ringing within 30s, the call will be cancelled regardless of this value. Can be any numeric value (including decimals) between 1 and 300.. [optional] if omitted the server will use the default value of 30 # noqa: E501
@@ -324,12 +332,12 @@ def __init__(self, to, _from, application_id, answer_url, *args, **kwargs): # n
_visited_composed_classes = (Animal,)
uui (str, none_type): A comma-separated list of 'User-To-User' headers to be sent in the INVITE when calling a SIP URI. Each value must end with an 'encoding' parameter as described in RFC 7433. Only 'jwt' and 'base64' encodings are allowed. The entire value cannot exceed 350 characters, including parameters and separators.. [optional] # noqa: E501
answer_method (CallbackMethodEnum): [optional] # noqa: E501
- username (Username): [optional] # noqa: E501
- password (Password): [optional] # noqa: E501
+ username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ password (str, none_type): Basic auth password.. [optional] # noqa: E501
answer_fallback_url (str, none_type): A fallback url which, if provided, will be used to retry the `answer` webhook delivery in case `answerUrl` fails to respond Must use `https` if specifying `fallbackUsername` and `fallbackPassword`. [optional] # noqa: E501
answer_fallback_method (CallbackMethodEnum): [optional] # noqa: E501
- fallback_username (Username): [optional] # noqa: E501
- fallback_password (Password): [optional] # noqa: E501
+ fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
disconnect_url (str, none_type): The URL to send the Disconnect event to when the call ends. This event does not expect a BXML response.. [optional] # noqa: E501
disconnect_method (CallbackMethodEnum): [optional] # noqa: E501
call_timeout (float, none_type): The timeout (in seconds) for the callee to answer the call after it starts ringing. If the call does not start ringing within 30s, the call will be cancelled regardless of this value. Can be any numeric value (including decimals) between 1 and 300.. [optional] if omitted the server will use the default value of 30 # noqa: E501
diff --git a/bandwidth/model/create_call_response.py b/bandwidth/model/create_call_response.py
index e76ea505..8c26534d 100644
--- a/bandwidth/model/create_call_response.py
+++ b/bandwidth/model/create_call_response.py
@@ -32,11 +32,7 @@
def lazy_import():
from bandwidth.model.callback_method_enum import CallbackMethodEnum
- from bandwidth.model.password import Password
- from bandwidth.model.username import Username
globals()['CallbackMethodEnum'] = CallbackMethodEnum
- globals()['Password'] = Password
- globals()['Username'] = Username
class CreateCallResponse(ModelNormal):
@@ -67,6 +63,18 @@ class CreateCallResponse(ModelNormal):
}
validations = {
+ ('username',): {
+ 'max_length': 1024,
+ },
+ ('password',): {
+ 'max_length': 1024,
+ },
+ ('fallback_username',): {
+ 'max_length': 1024,
+ },
+ ('fallback_password',): {
+ 'max_length': 1024,
+ },
}
@cached_property
@@ -108,10 +116,10 @@ def openapi_types():
'answer_fallback_method': (CallbackMethodEnum,), # noqa: E501
'answer_fallback_url': (str, none_type,), # noqa: E501
'disconnect_url': (str, none_type,), # noqa: E501
- 'username': (Username,), # noqa: E501
- 'password': (Password,), # noqa: E501
- 'fallback_username': (Username,), # noqa: E501
- 'fallback_password': (Password,), # noqa: E501
+ 'username': (str, none_type,), # noqa: E501
+ 'password': (str, none_type,), # noqa: E501
+ 'fallback_username': (str, none_type,), # noqa: E501
+ 'fallback_password': (str, none_type,), # noqa: E501
'priority': (float, none_type,), # noqa: E501
}
@@ -203,10 +211,10 @@ def _from_openapi_data(cls, application_id, account_id, call_id, to, _from, call
answer_fallback_method (CallbackMethodEnum): [optional] # noqa: E501
answer_fallback_url (str, none_type): Fallback URL to deliver the `answer` event webhook.. [optional] # noqa: E501
disconnect_url (str, none_type): URL to deliver the `disconnect` event webhook.. [optional] # noqa: E501
- username (Username): [optional] # noqa: E501
- password (Password): [optional] # noqa: E501
- fallback_username (Username): [optional] # noqa: E501
- fallback_password (Password): [optional] # noqa: E501
+ username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
priority (float, none_type): The priority of this call over other calls from your account.. [optional] # noqa: E501
"""
@@ -320,10 +328,10 @@ def __init__(self, application_id, account_id, call_id, to, _from, call_url, ans
answer_fallback_method (CallbackMethodEnum): [optional] # noqa: E501
answer_fallback_url (str, none_type): Fallback URL to deliver the `answer` event webhook.. [optional] # noqa: E501
disconnect_url (str, none_type): URL to deliver the `disconnect` event webhook.. [optional] # noqa: E501
- username (Username): [optional] # noqa: E501
- password (Password): [optional] # noqa: E501
- fallback_username (Username): [optional] # noqa: E501
- fallback_password (Password): [optional] # noqa: E501
+ username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ password (str, none_type): Basic auth password.. [optional] # noqa: E501
+ fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
priority (float, none_type): The priority of this call over other calls from your account.. [optional] # noqa: E501
"""
diff --git a/bandwidth/model/machine_detection_configuration.py b/bandwidth/model/machine_detection_configuration.py
index 8750feed..5a6bb396 100644
--- a/bandwidth/model/machine_detection_configuration.py
+++ b/bandwidth/model/machine_detection_configuration.py
@@ -33,12 +33,8 @@
def lazy_import():
from bandwidth.model.callback_method_enum import CallbackMethodEnum
from bandwidth.model.machine_detection_mode_enum import MachineDetectionModeEnum
- from bandwidth.model.password import Password
- from bandwidth.model.username import Username
globals()['CallbackMethodEnum'] = CallbackMethodEnum
globals()['MachineDetectionModeEnum'] = MachineDetectionModeEnum
- globals()['Password'] = Password
- globals()['Username'] = Username
class MachineDetectionConfiguration(ModelNormal):
@@ -72,9 +68,21 @@ class MachineDetectionConfiguration(ModelNormal):
('callback_url',): {
'max_length': 2048,
},
+ ('username',): {
+ 'max_length': 1024,
+ },
+ ('password',): {
+ 'max_length': 1024,
+ },
('fallback_url',): {
'max_length': 2048,
},
+ ('fallback_username',): {
+ 'max_length': 1024,
+ },
+ ('fallback_password',): {
+ 'max_length': 1024,
+ },
}
@cached_property
@@ -109,12 +117,12 @@ def openapi_types():
'delay_result': (bool, none_type,), # noqa: E501
'callback_url': (str, none_type,), # noqa: E501
'callback_method': (CallbackMethodEnum,), # noqa: E501
- 'username': (Username,), # noqa: E501
- 'password': (Password,), # noqa: E501
+ 'username': (str, none_type,), # noqa: E501
+ 'password': (str, none_type,), # noqa: E501
'fallback_url': (str, none_type,), # noqa: E501
'fallback_method': (CallbackMethodEnum,), # noqa: E501
- 'fallback_username': (Username,), # noqa: E501
- 'fallback_password': (Password,), # noqa: E501
+ 'fallback_username': (str, none_type,), # noqa: E501
+ 'fallback_password': (str, none_type,), # noqa: E501
}
@cached_property
@@ -190,12 +198,12 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
delay_result (bool, none_type): If set to 'true' and if an answering machine is detected, the 'answering-machine' callback will be delayed until the machine is done speaking, or an end of message tone is detected, or until the 'detectionTimeout' is exceeded. If false, the 'answering-machine' result is sent immediately.. [optional] if omitted the server will use the default value of False # noqa: E501
callback_url (str, none_type): The URL to send the 'machineDetectionComplete' webhook when the detection is completed. Only for 'async' mode.. [optional] # noqa: E501
callback_method (CallbackMethodEnum): [optional] # noqa: E501
- username (Username): [optional] # noqa: E501
- password (Password): [optional] # noqa: E501
+ username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ password (str, none_type): Basic auth password.. [optional] # noqa: E501
fallback_url (str, none_type): A fallback URL which, if provided, will be used to retry the machine detection complete webhook delivery in case `callbackUrl` fails to respond. [optional] # noqa: E501
fallback_method (CallbackMethodEnum): [optional] # noqa: E501
- fallback_username (Username): [optional] # noqa: E501
- fallback_password (Password): [optional] # noqa: E501
+ fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
"""
_check_type = kwargs.pop('_check_type', True)
@@ -290,12 +298,12 @@ def __init__(self, *args, **kwargs): # noqa: E501
delay_result (bool, none_type): If set to 'true' and if an answering machine is detected, the 'answering-machine' callback will be delayed until the machine is done speaking, or an end of message tone is detected, or until the 'detectionTimeout' is exceeded. If false, the 'answering-machine' result is sent immediately.. [optional] if omitted the server will use the default value of False # noqa: E501
callback_url (str, none_type): The URL to send the 'machineDetectionComplete' webhook when the detection is completed. Only for 'async' mode.. [optional] # noqa: E501
callback_method (CallbackMethodEnum): [optional] # noqa: E501
- username (Username): [optional] # noqa: E501
- password (Password): [optional] # noqa: E501
+ username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ password (str, none_type): Basic auth password.. [optional] # noqa: E501
fallback_url (str, none_type): A fallback URL which, if provided, will be used to retry the machine detection complete webhook delivery in case `callbackUrl` fails to respond. [optional] # noqa: E501
fallback_method (CallbackMethodEnum): [optional] # noqa: E501
- fallback_username (Username): [optional] # noqa: E501
- fallback_password (Password): [optional] # noqa: E501
+ fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
"""
_check_type = kwargs.pop('_check_type', True)
diff --git a/bandwidth/model/password.py b/bandwidth/model/password.py
deleted file mode 100644
index cfedaaa9..00000000
--- a/bandwidth/model/password.py
+++ /dev/null
@@ -1,290 +0,0 @@
-"""
- Bandwidth
-
- Bandwidth's Communication APIs # noqa: E501
-
- The version of the OpenAPI document: 1.0.0
- Contact: letstalk@bandwidth.com
- Generated by: https://openapi-generator.tech
-"""
-
-
-import re # noqa: F401
-import sys # noqa: F401
-
-from bandwidth.model_utils import ( # noqa: F401
- ApiTypeError,
- ModelComposed,
- ModelNormal,
- ModelSimple,
- cached_property,
- change_keys_js_to_python,
- convert_js_args_to_python_args,
- date,
- datetime,
- file_type,
- none_type,
- validate_get_composed_info,
- OpenApiModel
-)
-from bandwidth.exceptions import ApiAttributeError
-
-
-
-class Password(ModelSimple):
- """NOTE: This class is auto generated by OpenAPI Generator.
- Ref: https://openapi-generator.tech
-
- Do not edit the class manually.
-
- Attributes:
- allowed_values (dict): The key is the tuple path to the attribute
- and the for var_name this is (var_name,). The value is a dict
- with a capitalized key describing the allowed value and an allowed
- value. These dicts store the allowed enum values.
- validations (dict): The key is the tuple path to the attribute
- and the for var_name this is (var_name,). The value is a dict
- that stores validations for max_length, min_length, max_items,
- min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
- inclusive_minimum, and regex.
- additional_properties_type (tuple): A tuple of classes accepted
- as additional properties values.
- """
-
- allowed_values = {
- }
-
- validations = {
- ('value',): {
- 'max_length': 1024,
- },
- }
-
- additional_properties_type = None
-
- _nullable = True
-
- @cached_property
- def openapi_types():
- """
- This must be a method because a model may have properties that are
- of type self, this must run after the class is loaded
-
- Returns
- openapi_types (dict): The key is attribute name
- and the value is attribute type.
- """
- return {
- 'value': (str,),
- }
-
- @cached_property
- def discriminator():
- return None
-
-
- attribute_map = {}
-
- read_only_vars = set()
-
- _composed_schemas = None
-
- required_properties = set([
- '_data_store',
- '_check_type',
- '_spec_property_naming',
- '_path_to_item',
- '_configuration',
- '_visited_composed_classes',
- ])
-
- @convert_js_args_to_python_args
- def __init__(self, *args, **kwargs):
- """Password - a model defined in OpenAPI
-
- Note that value can be passed either in args or in kwargs, but not in both.
-
- Args:
- args[0] (str): Basic auth password.. # noqa: E501
-
- Keyword Args:
- value (str): Basic auth password.. # noqa: E501
- _check_type (bool): if True, values for parameters in openapi_types
- will be type checked and a TypeError will be
- raised if the wrong type is input.
- Defaults to True
- _path_to_item (tuple/list): This is a list of keys or values to
- drill down to the model in received_data
- when deserializing a response
- _spec_property_naming (bool): True if the variable names in the input data
- are serialized names, as specified in the OpenAPI document.
- False if the variable names in the input data
- are pythonic names, e.g. snake case (default)
- _configuration (Configuration): the instance to use when
- deserializing a file_type parameter.
- If passed, type conversion is attempted
- If omitted no type conversion is done.
- _visited_composed_classes (tuple): This stores a tuple of
- classes that we have traveled through so that
- if we see that class again we will not use its
- discriminator again.
- When traveling through a discriminator, the
- composed schema that is
- is traveled through is added to this set.
- For example if Animal has a discriminator
- petType and we pass in "Dog", and the class Dog
- allOf includes Animal, we move through Animal
- once using the discriminator, and pick Dog.
- Then in Dog, we will make an instance of the
- Animal class but this time we won't travel
- through its discriminator because we passed in
- _visited_composed_classes = (Animal,)
- """
- # required up here when default value is not given
- _path_to_item = kwargs.pop('_path_to_item', ())
-
- if 'value' in kwargs:
- value = kwargs.pop('value')
- elif args:
- args = list(args)
- value = args.pop(0)
- else:
- raise ApiTypeError(
- "value is required, but not passed in args or kwargs and doesn't have default",
- path_to_item=_path_to_item,
- valid_classes=(self.__class__,),
- )
-
- _check_type = kwargs.pop('_check_type', True)
- _spec_property_naming = kwargs.pop('_spec_property_naming', False)
- _configuration = kwargs.pop('_configuration', None)
- _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
-
- if args:
- for arg in args:
- if isinstance(arg, dict):
- kwargs.update(arg)
- else:
- raise ApiTypeError(
- "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
- args,
- self.__class__.__name__,
- ),
- path_to_item=_path_to_item,
- valid_classes=(self.__class__,),
- )
-
- self._data_store = {}
- self._check_type = _check_type
- self._spec_property_naming = _spec_property_naming
- self._path_to_item = _path_to_item
- self._configuration = _configuration
- self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
- self.value = value
- if kwargs:
- raise ApiTypeError(
- "Invalid named arguments=%s passed to %s. Remove those invalid named arguments." % (
- kwargs,
- self.__class__.__name__,
- ),
- path_to_item=_path_to_item,
- valid_classes=(self.__class__,),
- )
-
- @classmethod
- @convert_js_args_to_python_args
- def _from_openapi_data(cls, *args, **kwargs):
- """Password - a model defined in OpenAPI
-
- Note that value can be passed either in args or in kwargs, but not in both.
-
- Args:
- args[0] (str): Basic auth password.. # noqa: E501
-
- Keyword Args:
- value (str): Basic auth password.. # noqa: E501
- _check_type (bool): if True, values for parameters in openapi_types
- will be type checked and a TypeError will be
- raised if the wrong type is input.
- Defaults to True
- _path_to_item (tuple/list): This is a list of keys or values to
- drill down to the model in received_data
- when deserializing a response
- _spec_property_naming (bool): True if the variable names in the input data
- are serialized names, as specified in the OpenAPI document.
- False if the variable names in the input data
- are pythonic names, e.g. snake case (default)
- _configuration (Configuration): the instance to use when
- deserializing a file_type parameter.
- If passed, type conversion is attempted
- If omitted no type conversion is done.
- _visited_composed_classes (tuple): This stores a tuple of
- classes that we have traveled through so that
- if we see that class again we will not use its
- discriminator again.
- When traveling through a discriminator, the
- composed schema that is
- is traveled through is added to this set.
- For example if Animal has a discriminator
- petType and we pass in "Dog", and the class Dog
- allOf includes Animal, we move through Animal
- once using the discriminator, and pick Dog.
- Then in Dog, we will make an instance of the
- Animal class but this time we won't travel
- through its discriminator because we passed in
- _visited_composed_classes = (Animal,)
- """
- # required up here when default value is not given
- _path_to_item = kwargs.pop('_path_to_item', ())
-
- self = super(OpenApiModel, cls).__new__(cls)
-
- if 'value' in kwargs:
- value = kwargs.pop('value')
- elif args:
- args = list(args)
- value = args.pop(0)
- else:
- raise ApiTypeError(
- "value is required, but not passed in args or kwargs and doesn't have default",
- path_to_item=_path_to_item,
- valid_classes=(self.__class__,),
- )
-
- _check_type = kwargs.pop('_check_type', True)
- _spec_property_naming = kwargs.pop('_spec_property_naming', False)
- _configuration = kwargs.pop('_configuration', None)
- _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
-
- if args:
- for arg in args:
- if isinstance(arg, dict):
- kwargs.update(arg)
- else:
- raise ApiTypeError(
- "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
- args,
- self.__class__.__name__,
- ),
- path_to_item=_path_to_item,
- valid_classes=(self.__class__,),
- )
-
- self._data_store = {}
- self._check_type = _check_type
- self._spec_property_naming = _spec_property_naming
- self._path_to_item = _path_to_item
- self._configuration = _configuration
- self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
- self.value = value
- if kwargs:
- raise ApiTypeError(
- "Invalid named arguments=%s passed to %s. Remove those invalid named arguments." % (
- kwargs,
- self.__class__.__name__,
- ),
- path_to_item=_path_to_item,
- valid_classes=(self.__class__,),
- )
-
- return self
diff --git a/bandwidth/model/transcribe_recording.py b/bandwidth/model/transcribe_recording.py
index ab8aa89a..e1734c47 100644
--- a/bandwidth/model/transcribe_recording.py
+++ b/bandwidth/model/transcribe_recording.py
@@ -32,11 +32,7 @@
def lazy_import():
from bandwidth.model.callback_method_enum import CallbackMethodEnum
- from bandwidth.model.password import Password
- from bandwidth.model.username import Username
globals()['CallbackMethodEnum'] = CallbackMethodEnum
- globals()['Password'] = Password
- globals()['Username'] = Username
class TranscribeRecording(ModelNormal):
@@ -67,6 +63,12 @@ class TranscribeRecording(ModelNormal):
}
validations = {
+ ('username',): {
+ 'max_length': 1024,
+ },
+ ('password',): {
+ 'max_length': 1024,
+ },
('callback_timeout',): {
'inclusive_maximum': 25,
'inclusive_minimum': 1,
@@ -98,8 +100,8 @@ def openapi_types():
return {
'callback_url': (str,), # noqa: E501
'callback_method': (CallbackMethodEnum,), # noqa: E501
- 'username': (Username,), # noqa: E501
- 'password': (Password,), # noqa: E501
+ 'username': (str, none_type,), # noqa: E501
+ 'password': (str, none_type,), # noqa: E501
'tag': (str, none_type,), # noqa: E501
'callback_timeout': (float, none_type,), # noqa: E501
}
@@ -161,8 +163,8 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
_visited_composed_classes = (Animal,)
callback_url (str): The URL to send the [TranscriptionAvailable](/docs/voice/webhooks/transcriptionAvailable) event to. You should not include sensitive or personally-identifiable information in the callbackUrl field! Always use the proper username and password fields for authorization.. [optional] # noqa: E501
callback_method (CallbackMethodEnum): [optional] # noqa: E501
- username (Username): [optional] # noqa: E501
- password (Password): [optional] # noqa: E501
+ username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ password (str, none_type): Basic auth password.. [optional] # noqa: E501
tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
callback_timeout (float, none_type): This is the timeout (in seconds) to use when delivering the webhook to `callbackUrl`. Can be any numeric value (including decimals) between 1 and 25.. [optional] if omitted the server will use the default value of 15 # noqa: E501
"""
@@ -252,8 +254,8 @@ def __init__(self, *args, **kwargs): # noqa: E501
_visited_composed_classes = (Animal,)
callback_url (str): The URL to send the [TranscriptionAvailable](/docs/voice/webhooks/transcriptionAvailable) event to. You should not include sensitive or personally-identifiable information in the callbackUrl field! Always use the proper username and password fields for authorization.. [optional] # noqa: E501
callback_method (CallbackMethodEnum): [optional] # noqa: E501
- username (Username): [optional] # noqa: E501
- password (Password): [optional] # noqa: E501
+ username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ password (str, none_type): Basic auth password.. [optional] # noqa: E501
tag (str, none_type): (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present.. [optional] # noqa: E501
callback_timeout (float, none_type): This is the timeout (in seconds) to use when delivering the webhook to `callbackUrl`. Can be any numeric value (including decimals) between 1 and 25.. [optional] if omitted the server will use the default value of 15 # noqa: E501
"""
diff --git a/bandwidth/model/update_call.py b/bandwidth/model/update_call.py
index 59aaa309..41dd1dcb 100644
--- a/bandwidth/model/update_call.py
+++ b/bandwidth/model/update_call.py
@@ -32,13 +32,9 @@
def lazy_import():
from bandwidth.model.call_state_enum import CallStateEnum
- from bandwidth.model.password import Password
from bandwidth.model.redirect_method_enum import RedirectMethodEnum
- from bandwidth.model.username import Username
globals()['CallStateEnum'] = CallStateEnum
- globals()['Password'] = Password
globals()['RedirectMethodEnum'] = RedirectMethodEnum
- globals()['Username'] = Username
class UpdateCall(ModelNormal):
@@ -69,6 +65,18 @@ class UpdateCall(ModelNormal):
}
validations = {
+ ('username',): {
+ 'max_length': 1024,
+ },
+ ('password',): {
+ 'max_length': 1024,
+ },
+ ('fallback_username',): {
+ 'max_length': 1024,
+ },
+ ('fallback_password',): {
+ 'max_length': 1024,
+ },
('tag',): {
},
}
@@ -99,12 +107,12 @@ def openapi_types():
'state': (CallStateEnum,), # noqa: E501
'redirect_url': (str, none_type,), # noqa: E501
'redirect_method': (RedirectMethodEnum,), # noqa: E501
- 'username': (Username,), # noqa: E501
- 'password': (Password,), # noqa: E501
+ 'username': (str, none_type,), # noqa: E501
+ 'password': (str, none_type,), # noqa: E501
'redirect_fallback_url': (str, none_type,), # noqa: E501
'redirect_fallback_method': (RedirectMethodEnum,), # noqa: E501
- 'fallback_username': (Username,), # noqa: E501
- 'fallback_password': (Password,), # noqa: E501
+ 'fallback_username': (str, none_type,), # noqa: E501
+ 'fallback_password': (str, none_type,), # noqa: E501
'tag': (str, none_type,), # noqa: E501
}
@@ -170,12 +178,12 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
state (CallStateEnum): [optional] # noqa: E501
redirect_url (str, none_type): The URL to send the [Redirect](/docs/voice/bxml/redirect) event to which will provide new BXML. Required if `state` is `active`. Not allowed if `state` is `completed`.. [optional] # noqa: E501
redirect_method (RedirectMethodEnum): [optional] # noqa: E501
- username (Username): [optional] # noqa: E501
- password (Password): [optional] # noqa: E501
+ username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ password (str, none_type): Basic auth password.. [optional] # noqa: E501
redirect_fallback_url (str, none_type): A fallback url which, if provided, will be used to retry the redirect callback delivery in case `redirectUrl` fails to respond. [optional] # noqa: E501
redirect_fallback_method (RedirectMethodEnum): [optional] # noqa: E501
- fallback_username (Username): [optional] # noqa: E501
- fallback_password (Password): [optional] # noqa: E501
+ fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
tag (str, none_type): A custom string that will be sent with this and all future callbacks unless overwritten by a future `tag` attribute or [``](/docs/voice/bxml/tag) verb, or cleared. May be cleared by setting `tag=\"\"`. Max length 256 characters. Not allowed if `state` is `completed`.. [optional] # noqa: E501
"""
@@ -265,12 +273,12 @@ def __init__(self, *args, **kwargs): # noqa: E501
state (CallStateEnum): [optional] # noqa: E501
redirect_url (str, none_type): The URL to send the [Redirect](/docs/voice/bxml/redirect) event to which will provide new BXML. Required if `state` is `active`. Not allowed if `state` is `completed`.. [optional] # noqa: E501
redirect_method (RedirectMethodEnum): [optional] # noqa: E501
- username (Username): [optional] # noqa: E501
- password (Password): [optional] # noqa: E501
+ username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ password (str, none_type): Basic auth password.. [optional] # noqa: E501
redirect_fallback_url (str, none_type): A fallback url which, if provided, will be used to retry the redirect callback delivery in case `redirectUrl` fails to respond. [optional] # noqa: E501
redirect_fallback_method (RedirectMethodEnum): [optional] # noqa: E501
- fallback_username (Username): [optional] # noqa: E501
- fallback_password (Password): [optional] # noqa: E501
+ fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
tag (str, none_type): A custom string that will be sent with this and all future callbacks unless overwritten by a future `tag` attribute or [``](/docs/voice/bxml/tag) verb, or cleared. May be cleared by setting `tag=\"\"`. Max length 256 characters. Not allowed if `state` is `completed`.. [optional] # noqa: E501
"""
diff --git a/bandwidth/model/update_conference.py b/bandwidth/model/update_conference.py
index d25a269e..68b2c2dc 100644
--- a/bandwidth/model/update_conference.py
+++ b/bandwidth/model/update_conference.py
@@ -32,13 +32,9 @@
def lazy_import():
from bandwidth.model.conference_state_enum import ConferenceStateEnum
- from bandwidth.model.password import Password
from bandwidth.model.redirect_method_enum import RedirectMethodEnum
- from bandwidth.model.username import Username
globals()['ConferenceStateEnum'] = ConferenceStateEnum
- globals()['Password'] = Password
globals()['RedirectMethodEnum'] = RedirectMethodEnum
- globals()['Username'] = Username
class UpdateConference(ModelNormal):
@@ -69,6 +65,18 @@ class UpdateConference(ModelNormal):
}
validations = {
+ ('username',): {
+ 'max_length': 1024,
+ },
+ ('password',): {
+ 'max_length': 1024,
+ },
+ ('fallback_username',): {
+ 'max_length': 1024,
+ },
+ ('fallback_password',): {
+ 'max_length': 1024,
+ },
}
@cached_property
@@ -97,12 +105,12 @@ def openapi_types():
'status': (ConferenceStateEnum,), # noqa: E501
'redirect_url': (str, none_type,), # noqa: E501
'redirect_method': (RedirectMethodEnum,), # noqa: E501
- 'username': (Username,), # noqa: E501
- 'password': (Password,), # noqa: E501
+ 'username': (str, none_type,), # noqa: E501
+ 'password': (str, none_type,), # noqa: E501
'redirect_fallback_url': (str, none_type,), # noqa: E501
'redirect_fallback_method': (RedirectMethodEnum,), # noqa: E501
- 'fallback_username': (Username,), # noqa: E501
- 'fallback_password': (Password,), # noqa: E501
+ 'fallback_username': (str, none_type,), # noqa: E501
+ 'fallback_password': (str, none_type,), # noqa: E501
}
@cached_property
@@ -166,12 +174,12 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
status (ConferenceStateEnum): [optional] # noqa: E501
redirect_url (str, none_type): The URL to send the [conferenceRedirect](/docs/voice/webhooks/conferenceRedirect) event which will provide new BXML. Not allowed if `state` is `completed`, but required if `state` is `active`. [optional] # noqa: E501
redirect_method (RedirectMethodEnum): [optional] # noqa: E501
- username (Username): [optional] # noqa: E501
- password (Password): [optional] # noqa: E501
+ username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ password (str, none_type): Basic auth password.. [optional] # noqa: E501
redirect_fallback_url (str, none_type): A fallback url which, if provided, will be used to retry the `conferenceRedirect` webhook delivery in case `redirectUrl` fails to respond. Not allowed if `state` is `completed`.. [optional] # noqa: E501
redirect_fallback_method (RedirectMethodEnum): [optional] # noqa: E501
- fallback_username (Username): [optional] # noqa: E501
- fallback_password (Password): [optional] # noqa: E501
+ fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
"""
_check_type = kwargs.pop('_check_type', True)
@@ -260,12 +268,12 @@ def __init__(self, *args, **kwargs): # noqa: E501
status (ConferenceStateEnum): [optional] # noqa: E501
redirect_url (str, none_type): The URL to send the [conferenceRedirect](/docs/voice/webhooks/conferenceRedirect) event which will provide new BXML. Not allowed if `state` is `completed`, but required if `state` is `active`. [optional] # noqa: E501
redirect_method (RedirectMethodEnum): [optional] # noqa: E501
- username (Username): [optional] # noqa: E501
- password (Password): [optional] # noqa: E501
+ username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ password (str, none_type): Basic auth password.. [optional] # noqa: E501
redirect_fallback_url (str, none_type): A fallback url which, if provided, will be used to retry the `conferenceRedirect` webhook delivery in case `redirectUrl` fails to respond. Not allowed if `state` is `completed`.. [optional] # noqa: E501
redirect_fallback_method (RedirectMethodEnum): [optional] # noqa: E501
- fallback_username (Username): [optional] # noqa: E501
- fallback_password (Password): [optional] # noqa: E501
+ fallback_username (str, none_type): Basic auth username.. [optional] # noqa: E501
+ fallback_password (str, none_type): Basic auth password.. [optional] # noqa: E501
"""
_check_type = kwargs.pop('_check_type', True)
diff --git a/bandwidth/model/username.py b/bandwidth/model/username.py
deleted file mode 100644
index a0aeda03..00000000
--- a/bandwidth/model/username.py
+++ /dev/null
@@ -1,290 +0,0 @@
-"""
- Bandwidth
-
- Bandwidth's Communication APIs # noqa: E501
-
- The version of the OpenAPI document: 1.0.0
- Contact: letstalk@bandwidth.com
- Generated by: https://openapi-generator.tech
-"""
-
-
-import re # noqa: F401
-import sys # noqa: F401
-
-from bandwidth.model_utils import ( # noqa: F401
- ApiTypeError,
- ModelComposed,
- ModelNormal,
- ModelSimple,
- cached_property,
- change_keys_js_to_python,
- convert_js_args_to_python_args,
- date,
- datetime,
- file_type,
- none_type,
- validate_get_composed_info,
- OpenApiModel
-)
-from bandwidth.exceptions import ApiAttributeError
-
-
-
-class Username(ModelSimple):
- """NOTE: This class is auto generated by OpenAPI Generator.
- Ref: https://openapi-generator.tech
-
- Do not edit the class manually.
-
- Attributes:
- allowed_values (dict): The key is the tuple path to the attribute
- and the for var_name this is (var_name,). The value is a dict
- with a capitalized key describing the allowed value and an allowed
- value. These dicts store the allowed enum values.
- validations (dict): The key is the tuple path to the attribute
- and the for var_name this is (var_name,). The value is a dict
- that stores validations for max_length, min_length, max_items,
- min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
- inclusive_minimum, and regex.
- additional_properties_type (tuple): A tuple of classes accepted
- as additional properties values.
- """
-
- allowed_values = {
- }
-
- validations = {
- ('value',): {
- 'max_length': 1024,
- },
- }
-
- additional_properties_type = None
-
- _nullable = True
-
- @cached_property
- def openapi_types():
- """
- This must be a method because a model may have properties that are
- of type self, this must run after the class is loaded
-
- Returns
- openapi_types (dict): The key is attribute name
- and the value is attribute type.
- """
- return {
- 'value': (str,),
- }
-
- @cached_property
- def discriminator():
- return None
-
-
- attribute_map = {}
-
- read_only_vars = set()
-
- _composed_schemas = None
-
- required_properties = set([
- '_data_store',
- '_check_type',
- '_spec_property_naming',
- '_path_to_item',
- '_configuration',
- '_visited_composed_classes',
- ])
-
- @convert_js_args_to_python_args
- def __init__(self, *args, **kwargs):
- """Username - a model defined in OpenAPI
-
- Note that value can be passed either in args or in kwargs, but not in both.
-
- Args:
- args[0] (str): Basic auth username.. # noqa: E501
-
- Keyword Args:
- value (str): Basic auth username.. # noqa: E501
- _check_type (bool): if True, values for parameters in openapi_types
- will be type checked and a TypeError will be
- raised if the wrong type is input.
- Defaults to True
- _path_to_item (tuple/list): This is a list of keys or values to
- drill down to the model in received_data
- when deserializing a response
- _spec_property_naming (bool): True if the variable names in the input data
- are serialized names, as specified in the OpenAPI document.
- False if the variable names in the input data
- are pythonic names, e.g. snake case (default)
- _configuration (Configuration): the instance to use when
- deserializing a file_type parameter.
- If passed, type conversion is attempted
- If omitted no type conversion is done.
- _visited_composed_classes (tuple): This stores a tuple of
- classes that we have traveled through so that
- if we see that class again we will not use its
- discriminator again.
- When traveling through a discriminator, the
- composed schema that is
- is traveled through is added to this set.
- For example if Animal has a discriminator
- petType and we pass in "Dog", and the class Dog
- allOf includes Animal, we move through Animal
- once using the discriminator, and pick Dog.
- Then in Dog, we will make an instance of the
- Animal class but this time we won't travel
- through its discriminator because we passed in
- _visited_composed_classes = (Animal,)
- """
- # required up here when default value is not given
- _path_to_item = kwargs.pop('_path_to_item', ())
-
- if 'value' in kwargs:
- value = kwargs.pop('value')
- elif args:
- args = list(args)
- value = args.pop(0)
- else:
- raise ApiTypeError(
- "value is required, but not passed in args or kwargs and doesn't have default",
- path_to_item=_path_to_item,
- valid_classes=(self.__class__,),
- )
-
- _check_type = kwargs.pop('_check_type', True)
- _spec_property_naming = kwargs.pop('_spec_property_naming', False)
- _configuration = kwargs.pop('_configuration', None)
- _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
-
- if args:
- for arg in args:
- if isinstance(arg, dict):
- kwargs.update(arg)
- else:
- raise ApiTypeError(
- "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
- args,
- self.__class__.__name__,
- ),
- path_to_item=_path_to_item,
- valid_classes=(self.__class__,),
- )
-
- self._data_store = {}
- self._check_type = _check_type
- self._spec_property_naming = _spec_property_naming
- self._path_to_item = _path_to_item
- self._configuration = _configuration
- self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
- self.value = value
- if kwargs:
- raise ApiTypeError(
- "Invalid named arguments=%s passed to %s. Remove those invalid named arguments." % (
- kwargs,
- self.__class__.__name__,
- ),
- path_to_item=_path_to_item,
- valid_classes=(self.__class__,),
- )
-
- @classmethod
- @convert_js_args_to_python_args
- def _from_openapi_data(cls, *args, **kwargs):
- """Username - a model defined in OpenAPI
-
- Note that value can be passed either in args or in kwargs, but not in both.
-
- Args:
- args[0] (str): Basic auth username.. # noqa: E501
-
- Keyword Args:
- value (str): Basic auth username.. # noqa: E501
- _check_type (bool): if True, values for parameters in openapi_types
- will be type checked and a TypeError will be
- raised if the wrong type is input.
- Defaults to True
- _path_to_item (tuple/list): This is a list of keys or values to
- drill down to the model in received_data
- when deserializing a response
- _spec_property_naming (bool): True if the variable names in the input data
- are serialized names, as specified in the OpenAPI document.
- False if the variable names in the input data
- are pythonic names, e.g. snake case (default)
- _configuration (Configuration): the instance to use when
- deserializing a file_type parameter.
- If passed, type conversion is attempted
- If omitted no type conversion is done.
- _visited_composed_classes (tuple): This stores a tuple of
- classes that we have traveled through so that
- if we see that class again we will not use its
- discriminator again.
- When traveling through a discriminator, the
- composed schema that is
- is traveled through is added to this set.
- For example if Animal has a discriminator
- petType and we pass in "Dog", and the class Dog
- allOf includes Animal, we move through Animal
- once using the discriminator, and pick Dog.
- Then in Dog, we will make an instance of the
- Animal class but this time we won't travel
- through its discriminator because we passed in
- _visited_composed_classes = (Animal,)
- """
- # required up here when default value is not given
- _path_to_item = kwargs.pop('_path_to_item', ())
-
- self = super(OpenApiModel, cls).__new__(cls)
-
- if 'value' in kwargs:
- value = kwargs.pop('value')
- elif args:
- args = list(args)
- value = args.pop(0)
- else:
- raise ApiTypeError(
- "value is required, but not passed in args or kwargs and doesn't have default",
- path_to_item=_path_to_item,
- valid_classes=(self.__class__,),
- )
-
- _check_type = kwargs.pop('_check_type', True)
- _spec_property_naming = kwargs.pop('_spec_property_naming', False)
- _configuration = kwargs.pop('_configuration', None)
- _visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
-
- if args:
- for arg in args:
- if isinstance(arg, dict):
- kwargs.update(arg)
- else:
- raise ApiTypeError(
- "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
- args,
- self.__class__.__name__,
- ),
- path_to_item=_path_to_item,
- valid_classes=(self.__class__,),
- )
-
- self._data_store = {}
- self._check_type = _check_type
- self._spec_property_naming = _spec_property_naming
- self._path_to_item = _path_to_item
- self._configuration = _configuration
- self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
- self.value = value
- if kwargs:
- raise ApiTypeError(
- "Invalid named arguments=%s passed to %s. Remove those invalid named arguments." % (
- kwargs,
- self.__class__.__name__,
- ),
- path_to_item=_path_to_item,
- valid_classes=(self.__class__,),
- )
-
- return self
diff --git a/bandwidth/models/__init__.py b/bandwidth/models/__init__.py
index 05ec135f..14bed288 100644
--- a/bandwidth/models/__init__.py
+++ b/bandwidth/models/__init__.py
@@ -69,7 +69,6 @@
from bandwidth.model.page_info import PageInfo
from bandwidth.model.participant import Participant
from bandwidth.model.participant_subscription import ParticipantSubscription
-from bandwidth.model.password import Password
from bandwidth.model.priority_enum import PriorityEnum
from bandwidth.model.publish_permissions_enum import PublishPermissionsEnum
from bandwidth.model.recording_available_callback import RecordingAvailableCallback
@@ -96,7 +95,6 @@
from bandwidth.model.update_call_recording import UpdateCallRecording
from bandwidth.model.update_conference import UpdateConference
from bandwidth.model.update_conference_member import UpdateConferenceMember
-from bandwidth.model.username import Username
from bandwidth.model.verify_code_request import VerifyCodeRequest
from bandwidth.model.verify_code_response import VerifyCodeResponse
from bandwidth.model.voice_api_error import VoiceApiError
diff --git a/docs/CallsApi.md b/docs/CallsApi.md
index afd2d1f7..9ffc9b1c 100644
--- a/docs/CallsApi.md
+++ b/docs/CallsApi.md
@@ -58,12 +58,12 @@ with bandwidth.ApiClient(configuration) as api_client:
application_id="1234-qwer-5679-tyui",
answer_url="https://www.myCallbackServer.com/webhooks/answer",
answer_method=CallbackMethodEnum("POST"),
- username=Username("mySecretUsername"),
- password=Password("mySecretPassword1!"),
+ username="mySecretUsername",
+ password="mySecretPassword1!",
answer_fallback_url="https://www.myFallbackServer.com/webhooks/answer",
answer_fallback_method=CallbackMethodEnum("POST"),
- fallback_username=Username("mySecretUsername"),
- fallback_password=Password("mySecretPassword1!"),
+ fallback_username="mySecretUsername",
+ fallback_password="mySecretPassword1!",
disconnect_url="disconnect_url_example",
disconnect_method=CallbackMethodEnum("POST"),
call_timeout=30,
@@ -78,12 +78,12 @@ with bandwidth.ApiClient(configuration) as api_client:
delay_result=False,
callback_url="https://myServer.com/bandwidth/webhooks/machineDetectionComplete",
callback_method=CallbackMethodEnum("POST"),
- username=Username("mySecretUsername"),
- password=Password("mySecretPassword1!"),
+ username="mySecretUsername",
+ password="mySecretPassword1!",
fallback_url="https://myFallbackServer.com/bandwidth/webhooks/machineDetectionComplete",
fallback_method=CallbackMethodEnum("POST"),
- fallback_username=Username("mySecretUsername"),
- fallback_password=Password("mySecretPassword1!"),
+ fallback_username="mySecretUsername",
+ fallback_password="mySecretPassword1!",
),
priority=5,
tag="tag_example",
@@ -270,12 +270,12 @@ with bandwidth.ApiClient(configuration) as api_client:
state=CallStateEnum("active"),
redirect_url="https://myServer.com/bandwidth/webhooks/redirect",
redirect_method=RedirectMethodEnum("POST"),
- username=Username("mySecretUsername"),
- password=Password("mySecretPassword1!"),
+ username="mySecretUsername",
+ password="mySecretPassword1!",
redirect_fallback_url="https://myFallbackServer.com/bandwidth/webhooks/redirect",
redirect_fallback_method=RedirectMethodEnum("POST"),
- fallback_username=Username("mySecretUsername"),
- fallback_password=Password("mySecretPassword1!"),
+ fallback_username="mySecretUsername",
+ fallback_password="mySecretPassword1!",
tag="My Custom Tag",
) # UpdateCall | JSON object containing information to redirect an existing call to a new BXML document
diff --git a/docs/ConferencesApi.md b/docs/ConferencesApi.md
index 6ca5602f..7a2c15e6 100644
--- a/docs/ConferencesApi.md
+++ b/docs/ConferencesApi.md
@@ -616,12 +616,12 @@ with bandwidth.ApiClient(configuration) as api_client:
status=ConferenceStateEnum("active"),
redirect_url="https://myServer.com/bandwidth/webhooks/conferenceRedirect",
redirect_method=RedirectMethodEnum("POST"),
- username=Username("mySecretUsername"),
- password=Password("mySecretPassword1!"),
+ username="mySecretUsername",
+ password="mySecretPassword1!",
redirect_fallback_url="https://myFallbackServer.com/bandwidth/webhooks/conferenceRedirect",
redirect_fallback_method=RedirectMethodEnum("POST"),
- fallback_username=Username("mySecretUsername"),
- fallback_password=Password("mySecretPassword1!"),
+ fallback_username="mySecretUsername",
+ fallback_password="mySecretPassword1!",
) # UpdateConference |
# example passing only required values which don't have defaults set
diff --git a/docs/CreateCall.md b/docs/CreateCall.md
index d44c9991..fe65676a 100644
--- a/docs/CreateCall.md
+++ b/docs/CreateCall.md
@@ -10,12 +10,12 @@ Name | Type | Description | Notes
**answer_url** | **str** | The full URL to send the <a href='/docs/voice/webhooks/answer'>Answer</a> event to when the called party answers. This endpoint should return the first <a href='/docs/voice/bxml'>BXML document</a> to be executed in the call. Must use `https` if specifying `username` and `password` |
**uui** | **str, none_type** | A comma-separated list of 'User-To-User' headers to be sent in the INVITE when calling a SIP URI. Each value must end with an 'encoding' parameter as described in <a href='https://tools.ietf.org/html/rfc7433'>RFC 7433</a>. Only 'jwt' and 'base64' encodings are allowed. The entire value cannot exceed 350 characters, including parameters and separators. | [optional]
**answer_method** | [**CallbackMethodEnum**](CallbackMethodEnum.md) | | [optional]
-**username** | [**Username**](Username.md) | | [optional]
-**password** | [**Password**](Password.md) | | [optional]
+**username** | **str, none_type** | Basic auth username. | [optional]
+**password** | **str, none_type** | Basic auth password. | [optional]
**answer_fallback_url** | **str, none_type** | A fallback url which, if provided, will be used to retry the `answer` webhook delivery in case `answerUrl` fails to respond Must use `https` if specifying `fallbackUsername` and `fallbackPassword` | [optional]
**answer_fallback_method** | [**CallbackMethodEnum**](CallbackMethodEnum.md) | | [optional]
-**fallback_username** | [**Username**](Username.md) | | [optional]
-**fallback_password** | [**Password**](Password.md) | | [optional]
+**fallback_username** | **str, none_type** | Basic auth username. | [optional]
+**fallback_password** | **str, none_type** | Basic auth password. | [optional]
**disconnect_url** | **str, none_type** | The URL to send the <a href='/docs/voice/webhooks/disconnect'>Disconnect</a> event to when the call ends. This event does not expect a BXML response. | [optional]
**disconnect_method** | [**CallbackMethodEnum**](CallbackMethodEnum.md) | | [optional]
**call_timeout** | **float, none_type** | The timeout (in seconds) for the callee to answer the call after it starts ringing. If the call does not start ringing within 30s, the call will be cancelled regardless of this value. Can be any numeric value (including decimals) between 1 and 300. | [optional] if omitted the server will use the default value of 30
diff --git a/docs/CreateCallResponse.md b/docs/CreateCallResponse.md
index 2a912515..ab0103e1 100644
--- a/docs/CreateCallResponse.md
+++ b/docs/CreateCallResponse.md
@@ -20,10 +20,10 @@ Name | Type | Description | Notes
**answer_fallback_method** | [**CallbackMethodEnum**](CallbackMethodEnum.md) | | [optional]
**answer_fallback_url** | **str, none_type** | Fallback URL to deliver the `answer` event webhook. | [optional]
**disconnect_url** | **str, none_type** | URL to deliver the `disconnect` event webhook. | [optional]
-**username** | [**Username**](Username.md) | | [optional]
-**password** | [**Password**](Password.md) | | [optional]
-**fallback_username** | [**Username**](Username.md) | | [optional]
-**fallback_password** | [**Password**](Password.md) | | [optional]
+**username** | **str, none_type** | Basic auth username. | [optional]
+**password** | **str, none_type** | Basic auth password. | [optional]
+**fallback_username** | **str, none_type** | Basic auth username. | [optional]
+**fallback_password** | **str, none_type** | Basic auth password. | [optional]
**priority** | **float, none_type** | The priority of this call over other calls from your account. | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
diff --git a/docs/MachineDetectionConfiguration.md b/docs/MachineDetectionConfiguration.md
index 59254efd..5d27ffba 100644
--- a/docs/MachineDetectionConfiguration.md
+++ b/docs/MachineDetectionConfiguration.md
@@ -14,12 +14,12 @@ Name | Type | Description | Notes
**delay_result** | **bool, none_type** | If set to 'true' and if an answering machine is detected, the 'answering-machine' callback will be delayed until the machine is done speaking, or an end of message tone is detected, or until the 'detectionTimeout' is exceeded. If false, the 'answering-machine' result is sent immediately. | [optional] if omitted the server will use the default value of False
**callback_url** | **str, none_type** | The URL to send the 'machineDetectionComplete' webhook when the detection is completed. Only for 'async' mode. | [optional]
**callback_method** | [**CallbackMethodEnum**](CallbackMethodEnum.md) | | [optional]
-**username** | [**Username**](Username.md) | | [optional]
-**password** | [**Password**](Password.md) | | [optional]
+**username** | **str, none_type** | Basic auth username. | [optional]
+**password** | **str, none_type** | Basic auth password. | [optional]
**fallback_url** | **str, none_type** | A fallback URL which, if provided, will be used to retry the machine detection complete webhook delivery in case `callbackUrl` fails to respond | [optional]
**fallback_method** | [**CallbackMethodEnum**](CallbackMethodEnum.md) | | [optional]
-**fallback_username** | [**Username**](Username.md) | | [optional]
-**fallback_password** | [**Password**](Password.md) | | [optional]
+**fallback_username** | **str, none_type** | Basic auth username. | [optional]
+**fallback_password** | **str, none_type** | Basic auth password. | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/Password.md b/docs/Password.md
deleted file mode 100644
index ad6055bc..00000000
--- a/docs/Password.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Password
-
-Basic auth password.
-
-## Properties
-Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
-**value** | **str** | Basic auth password. |
-
-[[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/RecordingsApi.md b/docs/RecordingsApi.md
index f5f1f5c8..14530532 100644
--- a/docs/RecordingsApi.md
+++ b/docs/RecordingsApi.md
@@ -793,8 +793,8 @@ with bandwidth.ApiClient(configuration) as api_client:
transcribe_recording = TranscribeRecording(
callback_url="https://myServer.com/bandwidth/webhooks/transcriptionAvailable",
callback_method=CallbackMethodEnum("POST"),
- username=Username("mySecretUsername"),
- password=Password("mySecretPassword1!"),
+ username="mySecretUsername",
+ password="mySecretPassword1!",
tag="exampleTag",
callback_timeout=5.5,
) # TranscribeRecording |
diff --git a/docs/TranscribeRecording.md b/docs/TranscribeRecording.md
index 0ca0d6dd..b66cba58 100644
--- a/docs/TranscribeRecording.md
+++ b/docs/TranscribeRecording.md
@@ -6,8 +6,8 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**callback_url** | **str** | The URL to send the [TranscriptionAvailable](/docs/voice/webhooks/transcriptionAvailable) event to. You should not include sensitive or personally-identifiable information in the callbackUrl field! Always use the proper username and password fields for authorization. | [optional]
**callback_method** | [**CallbackMethodEnum**](CallbackMethodEnum.md) | | [optional]
-**username** | [**Username**](Username.md) | | [optional]
-**password** | [**Password**](Password.md) | | [optional]
+**username** | **str, none_type** | Basic auth username. | [optional]
+**password** | **str, none_type** | Basic auth password. | [optional]
**tag** | **str, none_type** | (optional) The tag specified on call creation. If no tag was specified or it was previously cleared, this field will not be present. | [optional]
**callback_timeout** | **float, none_type** | This is the timeout (in seconds) to use when delivering the webhook to `callbackUrl`. Can be any numeric value (including decimals) between 1 and 25. | [optional] if omitted the server will use the default value of 15
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
diff --git a/docs/UpdateCall.md b/docs/UpdateCall.md
index a1eb6470..3f4eaa87 100644
--- a/docs/UpdateCall.md
+++ b/docs/UpdateCall.md
@@ -7,12 +7,12 @@ Name | Type | Description | Notes
**state** | [**CallStateEnum**](CallStateEnum.md) | | [optional]
**redirect_url** | **str, none_type** | The URL to send the [Redirect](/docs/voice/bxml/redirect) event to which will provide new BXML. Required if `state` is `active`. Not allowed if `state` is `completed`. | [optional]
**redirect_method** | [**RedirectMethodEnum**](RedirectMethodEnum.md) | | [optional]
-**username** | [**Username**](Username.md) | | [optional]
-**password** | [**Password**](Password.md) | | [optional]
+**username** | **str, none_type** | Basic auth username. | [optional]
+**password** | **str, none_type** | Basic auth password. | [optional]
**redirect_fallback_url** | **str, none_type** | A fallback url which, if provided, will be used to retry the redirect callback delivery in case `redirectUrl` fails to respond | [optional]
**redirect_fallback_method** | [**RedirectMethodEnum**](RedirectMethodEnum.md) | | [optional]
-**fallback_username** | [**Username**](Username.md) | | [optional]
-**fallback_password** | [**Password**](Password.md) | | [optional]
+**fallback_username** | **str, none_type** | Basic auth username. | [optional]
+**fallback_password** | **str, none_type** | Basic auth password. | [optional]
**tag** | **str, none_type** | A custom string that will be sent with this and all future callbacks unless overwritten by a future `tag` attribute or [`<Tag>`](/docs/voice/bxml/tag) verb, or cleared. May be cleared by setting `tag=\"\"`. Max length 256 characters. Not allowed if `state` is `completed`. | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
diff --git a/docs/UpdateConference.md b/docs/UpdateConference.md
index 56bf9522..bd81f340 100644
--- a/docs/UpdateConference.md
+++ b/docs/UpdateConference.md
@@ -7,12 +7,12 @@ Name | Type | Description | Notes
**status** | [**ConferenceStateEnum**](ConferenceStateEnum.md) | | [optional]
**redirect_url** | **str, none_type** | The URL to send the [conferenceRedirect](/docs/voice/webhooks/conferenceRedirect) event which will provide new BXML. Not allowed if `state` is `completed`, but required if `state` is `active` | [optional]
**redirect_method** | [**RedirectMethodEnum**](RedirectMethodEnum.md) | | [optional]
-**username** | [**Username**](Username.md) | | [optional]
-**password** | [**Password**](Password.md) | | [optional]
+**username** | **str, none_type** | Basic auth username. | [optional]
+**password** | **str, none_type** | Basic auth password. | [optional]
**redirect_fallback_url** | **str, none_type** | A fallback url which, if provided, will be used to retry the `conferenceRedirect` webhook delivery in case `redirectUrl` fails to respond. Not allowed if `state` is `completed`. | [optional]
**redirect_fallback_method** | [**RedirectMethodEnum**](RedirectMethodEnum.md) | | [optional]
-**fallback_username** | [**Username**](Username.md) | | [optional]
-**fallback_password** | [**Password**](Password.md) | | [optional]
+**fallback_username** | **str, none_type** | Basic auth username. | [optional]
+**fallback_password** | **str, none_type** | Basic auth password. | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [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/Username.md b/docs/Username.md
deleted file mode 100644
index 91e39a6b..00000000
--- a/docs/Username.md
+++ /dev/null
@@ -1,12 +0,0 @@
-# Username
-
-Basic auth username.
-
-## Properties
-Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
-**value** | **str** | Basic auth username. |
-
-[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
-
-
From 7f947f306d445e7fa0f935eb340b9c2f275b38df Mon Sep 17 00:00:00 2001
From: AJ Rice <53190766+ajrice6713@users.noreply.github.com>
Date: Tue, 30 Aug 2022 11:56:40 -0400
Subject: [PATCH 5/7] Regenerate with `carrierName` set to nullable: true
---
bandwidth.json | 1 +
bandwidth/model/list_message_item.py | 6 +++---
docs/ListMessageItem.md | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/bandwidth.json b/bandwidth.json
index ac04fce2..253df9f6 100644
--- a/bandwidth.json
+++ b/bandwidth.json
@@ -2493,6 +2493,7 @@
},
"carrierName": {
"type": "string",
+ "nullable": true,
"description": "The name of the carrier. Not currently supported for MMS coming soon.",
"example": "other"
},
diff --git a/bandwidth/model/list_message_item.py b/bandwidth/model/list_message_item.py
index ec5ec3d5..abb0b594 100644
--- a/bandwidth/model/list_message_item.py
+++ b/bandwidth/model/list_message_item.py
@@ -102,7 +102,7 @@ def openapi_types():
'segment_count': (int,), # noqa: E501
'error_code': (int,), # noqa: E501
'receive_time': (str,), # noqa: E501
- 'carrier_name': (str,), # noqa: E501
+ 'carrier_name': (str, none_type,), # noqa: E501
'message_size': (int, none_type,), # noqa: E501
'message_length': (int,), # noqa: E501
'attachment_count': (int, none_type,), # noqa: E501
@@ -185,7 +185,7 @@ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
segment_count (int): The number of segments the message was sent as.. [optional] # noqa: E501
error_code (int): The numeric error code of the message.. [optional] # noqa: E501
receive_time (str): The ISO 8601 datetime of the message.. [optional] # noqa: E501
- carrier_name (str): The name of the carrier. Not currently supported for MMS coming soon.. [optional] # noqa: E501
+ carrier_name (str, none_type): The name of the carrier. Not currently supported for MMS coming soon.. [optional] # noqa: E501
message_size (int, none_type): The size of the message including message content and headers.. [optional] # noqa: E501
message_length (int): The length of the message content.. [optional] # noqa: E501
attachment_count (int, none_type): The number of attachments the message has.. [optional] # noqa: E501
@@ -286,7 +286,7 @@ def __init__(self, *args, **kwargs): # noqa: E501
segment_count (int): The number of segments the message was sent as.. [optional] # noqa: E501
error_code (int): The numeric error code of the message.. [optional] # noqa: E501
receive_time (str): The ISO 8601 datetime of the message.. [optional] # noqa: E501
- carrier_name (str): The name of the carrier. Not currently supported for MMS coming soon.. [optional] # noqa: E501
+ carrier_name (str, none_type): The name of the carrier. Not currently supported for MMS coming soon.. [optional] # noqa: E501
message_size (int, none_type): The size of the message including message content and headers.. [optional] # noqa: E501
message_length (int): The length of the message content.. [optional] # noqa: E501
attachment_count (int, none_type): The number of attachments the message has.. [optional] # noqa: E501
diff --git a/docs/ListMessageItem.md b/docs/ListMessageItem.md
index 5de5e485..c82174d2 100644
--- a/docs/ListMessageItem.md
+++ b/docs/ListMessageItem.md
@@ -14,7 +14,7 @@ Name | Type | Description | Notes
**segment_count** | **int** | The number of segments the message was sent as. | [optional]
**error_code** | **int** | The numeric error code of the message. | [optional]
**receive_time** | **str** | The ISO 8601 datetime of the message. | [optional]
-**carrier_name** | **str** | The name of the carrier. Not currently supported for MMS coming soon. | [optional]
+**carrier_name** | **str, none_type** | The name of the carrier. Not currently supported for MMS coming soon. | [optional]
**message_size** | **int, none_type** | The size of the message including message content and headers. | [optional]
**message_length** | **int** | The length of the message content. | [optional]
**attachment_count** | **int, none_type** | The number of attachments the message has. | [optional]
From 87b48d18d5a8a230fad6cdd7a3e6faadb959234b Mon Sep 17 00:00:00 2001
From: AJ Rice <53190766+ajrice6713@users.noreply.github.com>
Date: Tue, 30 Aug 2022 14:07:52 -0400
Subject: [PATCH 6/7] Update bandwidth.json
Added example for stir/shaken param
---
bandwidth.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/bandwidth.json b/bandwidth.json
index 253df9f6..60f04fe6 100644
--- a/bandwidth.json
+++ b/bandwidth.json
@@ -5046,7 +5046,7 @@
"originatingId": {
"type": "string",
"description": "(optional) A unique origination identifier.",
- "example": null
+ "example": "99759086-1335-11ed-9bcf-5f7d464e91af"
}
}
},
From 810c51614b12a38179f6dda8c5ae481beb1d5b32 Mon Sep 17 00:00:00 2001
From: AJ Rice <53190766+ajrice6713@users.noreply.github.com>
Date: Tue, 30 Aug 2022 16:56:49 -0400
Subject: [PATCH 7/7] Don't autogenerate unit tests
---
.openapi-generator-ignore | 1 +
.openapi-generator/FILES | 101 --------------------------------------
2 files changed, 1 insertion(+), 101 deletions(-)
diff --git a/.openapi-generator-ignore b/.openapi-generator-ignore
index 278b5fed..5431c8b7 100644
--- a/.openapi-generator-ignore
+++ b/.openapi-generator-ignore
@@ -26,3 +26,4 @@
setup.cfg
setup.py
*requirements.txt
+test/*
diff --git a/.openapi-generator/FILES b/.openapi-generator/FILES
index 58afe5bc..47e2a5a1 100644
--- a/.openapi-generator/FILES
+++ b/.openapi-generator/FILES
@@ -212,105 +212,4 @@ docs/VerifyCodeResponse.md
docs/VoiceApiError.md
docs/VoiceCodeResponse.md
git_push.sh
-test/__init__.py
-test/test_account_statistics.py
-test/test_answer_callback.py
-test/test_bridge_complete_callback.py
-test/test_bridge_target_complete_callback.py
-test/test_call_direction_enum.py
-test/test_call_recording_metadata.py
-test/test_call_state.py
-test/test_call_state_enum.py
-test/test_callback_method_enum.py
-test/test_calls_api.py
-test/test_code_request.py
-test/test_conference.py
-test/test_conference_completed_callback.py
-test/test_conference_created_callback.py
-test/test_conference_member.py
-test/test_conference_member_exit_callback.py
-test/test_conference_member_join_callback.py
-test/test_conference_recording_available_callback.py
-test/test_conference_recording_metadata.py
-test/test_conference_redirect_callback.py
-test/test_conference_state_enum.py
-test/test_conferences_api.py
-test/test_create_call.py
-test/test_create_call_response.py
-test/test_create_lookup_response.py
-test/test_create_message_request_error.py
-test/test_create_participant_request.py
-test/test_create_participant_response.py
-test/test_deferred_result.py
-test/test_device_api_version_enum.py
-test/test_disconenct_callback.py
-test/test_diversion.py
-test/test_dtmf_callback.py
-test/test_field_error.py
-test/test_file_format_enum.py
-test/test_forbidden_request.py
-test/test_gather_callback.py
-test/test_initiate_callback.py
-test/test_list_message_direction_enum.py
-test/test_list_message_item.py
-test/test_lookup_request.py
-test/test_lookup_result.py
-test/test_lookup_status.py
-test/test_lookup_status_enum.py
-test/test_machine_detection_complete_callback.py
-test/test_machine_detection_configuration.py
-test/test_machine_detection_mode_enum.py
-test/test_media.py
-test/test_media_api.py
-test/test_message.py
-test/test_message_direction_enum.py
-test/test_message_request.py
-test/test_message_status_enum.py
-test/test_message_type_enum.py
-test/test_messages_api.py
-test/test_messages_list.py
-test/test_messaging_code_response.py
-test/test_messaging_request_error.py
-test/test_mfa_api.py
-test/test_mfa_forbidden_request_error.py
-test/test_mfa_request_error.py
-test/test_mfa_unauthorized_request_error.py
-test/test_page_info.py
-test/test_participant.py
-test/test_participant_subscription.py
-test/test_participants_api.py
-test/test_phone_number_lookup_api.py
-test/test_priority_enum.py
-test/test_publish_permissions_enum.py
-test/test_recording_available_callback.py
-test/test_recording_complete_callback.py
-test/test_recording_state_enum.py
-test/test_recordings_api.py
-test/test_redirect_callback.py
-test/test_redirect_method_enum.py
-test/test_request_error.py
-test/test_session.py
-test/test_sessions_api.py
-test/test_statistics_api.py
-test/test_stir_shaken.py
-test/test_subscriptions.py
-test/test_tag.py
-test/test_tn_lookup_request_error.py
-test/test_transcribe_recording.py
-test/test_transcription.py
-test/test_transcription_available_callback.py
-test/test_transcription_list.py
-test/test_transcription_metadata.py
-test/test_transfer_answer_callback.py
-test/test_transfer_complete_callback.py
-test/test_transfer_disconnect_callback.py
-test/test_unauthorized_request.py
-test/test_update_call.py
-test/test_update_call_recording.py
-test/test_update_conference.py
-test/test_update_conference_member.py
-test/test_verify_code_request.py
-test/test_verify_code_response.py
-test/test_voice_api_error.py
-test/test_voice_code_response.py
tox.ini