telnyx 3.6.0a0__py3-none-any.whl → 3.7.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of telnyx might be problematic. Click here for more details.

Files changed (212) hide show
  1. telnyx/_client.py +3 -754
  2. telnyx/_version.py +1 -1
  3. telnyx/resources/advanced_orders.py +63 -63
  4. telnyx/resources/ai/assistants/assistants.py +15 -17
  5. telnyx/resources/ai/assistants/versions.py +13 -15
  6. telnyx/resources/brand/brand.py +8 -4
  7. telnyx/resources/calls/actions.py +10 -6
  8. telnyx/resources/calls/calls.py +16 -2
  9. telnyx/resources/documents.py +242 -37
  10. telnyx/resources/legacy/reporting/batch_detail_records/messaging.py +3 -2
  11. telnyx/resources/legacy/reporting/batch_detail_records/voice.py +3 -2
  12. telnyx/resources/messaging_profiles/messaging_profiles.py +16 -0
  13. telnyx/resources/messaging_tollfree/verification/requests.py +203 -1
  14. telnyx/resources/outbound_voice_profiles.py +24 -4
  15. telnyx/resources/sim_cards/actions.py +12 -12
  16. telnyx/resources/texml/accounts/calls/calls.py +11 -0
  17. telnyx/resources/texml/accounts/conferences/participants.py +11 -0
  18. telnyx/resources/verified_numbers/verified_numbers.py +25 -4
  19. telnyx/resources/verify_profiles.py +9 -10
  20. telnyx/resources/webhooks.py +19 -0
  21. telnyx/types/__init__.py +18 -15
  22. telnyx/types/access_ip_address_list_response.py +3 -12
  23. telnyx/types/access_ip_range_list_response.py +3 -12
  24. telnyx/types/addresses/action_validate_response.py +8 -3
  25. telnyx/types/{advanced_order_update_params.py → advanced_order_update_requirement_group_params.py} +2 -2
  26. telnyx/types/ai/__init__.py +1 -3
  27. telnyx/types/ai/assistant_import_params.py +1 -1
  28. telnyx/types/ai/assistants/__init__.py +0 -3
  29. telnyx/types/ai/assistants_list.py +4 -88
  30. telnyx/types/ai/import_metadata.py +1 -1
  31. telnyx/types/ai/{assistant_clone_response.py → inference_embedding.py} +2 -2
  32. telnyx/types/ai/inference_embedding_transfer_tool_params.py +6 -0
  33. telnyx/types/ai/inference_embedding_transfer_tool_params_param.py +6 -0
  34. telnyx/types/ai/voice_settings.py +49 -2
  35. telnyx/types/ai/voice_settings_param.py +49 -2
  36. telnyx/types/brand_create_params.py +2 -1
  37. telnyx/types/brand_update_params.py +2 -1
  38. telnyx/types/call_ai_gather_ended_webhook_event1.py +78 -0
  39. telnyx/types/call_ai_gather_message_history_updated_webhook_event1.py +69 -0
  40. telnyx/types/call_ai_gather_partial_results_webhook_event1.py +75 -0
  41. telnyx/types/call_answered_webhook_event1.py +75 -0
  42. telnyx/types/call_bridged_webhook_event1.py +58 -0
  43. telnyx/types/call_conversation_ended_webhook_event1.py +84 -0
  44. telnyx/types/call_conversation_insights_generated_webhook_event1.py +67 -0
  45. telnyx/types/call_dial_params.py +10 -1
  46. telnyx/types/call_dtmf_received_webhook_event1.py +61 -0
  47. telnyx/types/call_enqueued_webhook_event1.py +59 -0
  48. telnyx/types/call_fork_started_webhook_event1.py +53 -0
  49. telnyx/types/call_fork_stopped_webhook_event1.py +53 -0
  50. telnyx/types/call_gather_ended_webhook_event1.py +64 -0
  51. telnyx/types/call_hangup_webhook_event1.py +150 -0
  52. telnyx/types/call_initiated_webhook_event1.py +96 -0
  53. telnyx/types/call_left_queue_webhook_event1.py +62 -0
  54. telnyx/types/call_machine_detection_ended_webhook_event1.py +61 -0
  55. telnyx/types/call_machine_greeting_ended_webhook_event1.py +61 -0
  56. telnyx/types/call_machine_premium_detection_ended_webhook_event1.py +63 -0
  57. telnyx/types/call_machine_premium_greeting_ended_webhook_event1.py +61 -0
  58. telnyx/types/call_playback_ended_webhook_event1.py +70 -0
  59. telnyx/types/call_playback_started_webhook_event1.py +62 -0
  60. telnyx/types/call_recording_error_webhook_event1.py +60 -0
  61. telnyx/types/call_recording_saved_webhook_event1.py +94 -0
  62. telnyx/types/call_recording_transcription_saved_webhook_event1.py +71 -0
  63. telnyx/types/call_refer_completed_webhook_event1.py +61 -0
  64. telnyx/types/call_refer_failed_webhook_event1.py +61 -0
  65. telnyx/types/call_refer_started_webhook_event1.py +61 -0
  66. telnyx/types/call_siprec_failed_webhook_event1.py +53 -0
  67. telnyx/types/call_siprec_started_webhook_event1.py +50 -0
  68. telnyx/types/call_siprec_stopped_webhook_event1.py +53 -0
  69. telnyx/types/call_speak_ended_webhook_event1.py +53 -0
  70. telnyx/types/call_speak_started_webhook_event1.py +50 -0
  71. telnyx/types/call_streaming_failed_webhook_event1.py +70 -0
  72. telnyx/types/call_streaming_started_webhook_event1.py +53 -0
  73. telnyx/types/call_streaming_stopped_webhook_event1.py +53 -0
  74. telnyx/types/calls/__init__.py +1 -0
  75. telnyx/types/calls/action_start_streaming_params.py +2 -1
  76. telnyx/types/calls/action_start_transcription_params.py +160 -6
  77. telnyx/types/calls/telnyx_transcription_language.py +108 -0
  78. telnyx/types/calls/transcription_engine_b_config_param.py +3 -102
  79. telnyx/types/calls/transcription_start_request_param.py +161 -6
  80. telnyx/types/campaign_status_update_webhook_event1.py +26 -0
  81. telnyx/types/conference_created_webhook_event1.py +53 -0
  82. telnyx/types/conference_ended_webhook_event1.py +56 -0
  83. telnyx/types/conference_floor_changed_webhook_event1.py +45 -0
  84. telnyx/types/conference_participant_joined_webhook_event1.py +53 -0
  85. telnyx/types/conference_participant_left_webhook_event1.py +53 -0
  86. telnyx/types/conference_participant_playback_ended_webhook_event1.py +65 -0
  87. telnyx/types/conference_participant_playback_started_webhook_event1.py +65 -0
  88. telnyx/types/conference_participant_speak_ended_webhook_event1.py +56 -0
  89. telnyx/types/conference_participant_speak_started_webhook_event1.py +56 -0
  90. telnyx/types/conference_playback_ended_webhook_event1.py +49 -0
  91. telnyx/types/conference_playback_started_webhook_event1.py +49 -0
  92. telnyx/types/conference_recording_saved_webhook_event1.py +103 -0
  93. telnyx/types/conference_speak_ended_webhook_event1.py +40 -0
  94. telnyx/types/conference_speak_started_webhook_event1.py +40 -0
  95. telnyx/types/country_coverage_retrieve_country_response.py +7 -0
  96. telnyx/types/country_coverage_retrieve_response.py +7 -0
  97. telnyx/types/customer_service_record_status_changed_webhook_event1.py +55 -0
  98. telnyx/types/delivery_update_webhook_event1.py +40 -0
  99. telnyx/types/document_upload_json_params.py +39 -0
  100. telnyx/types/document_upload_json_response.py +12 -0
  101. telnyx/types/fax_delivered_webhook_event1.py +69 -0
  102. telnyx/types/fax_failed_webhook_event1.py +66 -0
  103. telnyx/types/fax_media_processed_webhook_event1.py +63 -0
  104. telnyx/types/fax_queued_webhook_event1.py +63 -0
  105. telnyx/types/fax_sending_started_webhook_event1.py +63 -0
  106. telnyx/types/inbound_message_webhook_event1.py +227 -0
  107. telnyx/types/legacy/reporting/__init__.py +2 -0
  108. telnyx/types/legacy/reporting/batch_detail_records/__init__.py +4 -0
  109. telnyx/types/legacy/reporting/batch_detail_records/batch_csv_pagination_meta.py +17 -0
  110. telnyx/types/legacy/reporting/batch_detail_records/cdr_detailed_req_response.py +63 -0
  111. telnyx/types/legacy/reporting/batch_detail_records/mdr_detail_report_response.py +42 -0
  112. telnyx/types/legacy/reporting/batch_detail_records/messaging_create_params.py +4 -26
  113. telnyx/types/legacy/reporting/batch_detail_records/messaging_create_response.py +4 -60
  114. telnyx/types/legacy/reporting/batch_detail_records/messaging_delete_response.py +4 -60
  115. telnyx/types/legacy/reporting/batch_detail_records/messaging_list_response.py +5 -70
  116. telnyx/types/legacy/reporting/batch_detail_records/messaging_retrieve_response.py +4 -60
  117. telnyx/types/legacy/reporting/batch_detail_records/speech_to_text_create_response.py +3 -22
  118. telnyx/types/legacy/reporting/batch_detail_records/speech_to_text_delete_response.py +3 -22
  119. telnyx/types/legacy/reporting/batch_detail_records/speech_to_text_list_response.py +3 -22
  120. telnyx/types/legacy/reporting/batch_detail_records/speech_to_text_retrieve_response.py +3 -22
  121. telnyx/types/legacy/reporting/batch_detail_records/stt_detail_report_response.py +27 -0
  122. telnyx/types/legacy/reporting/batch_detail_records/voice_create_params.py +4 -26
  123. telnyx/types/legacy/reporting/batch_detail_records/voice_create_response.py +4 -82
  124. telnyx/types/legacy/reporting/batch_detail_records/voice_delete_response.py +4 -82
  125. telnyx/types/legacy/reporting/batch_detail_records/voice_list_response.py +5 -92
  126. telnyx/types/legacy/reporting/batch_detail_records/voice_retrieve_response.py +4 -82
  127. telnyx/types/legacy/reporting/filter.py +31 -0
  128. telnyx/types/legacy/reporting/filter_param.py +30 -0
  129. telnyx/types/legacy/reporting/usage_reports/__init__.py +3 -0
  130. telnyx/types/legacy/reporting/usage_reports/cdr_usage_report_response_legacy.py +43 -0
  131. telnyx/types/legacy/reporting/usage_reports/mdr_usage_report_response_legacy.py +38 -0
  132. telnyx/types/legacy/reporting/usage_reports/messaging_create_response.py +4 -34
  133. telnyx/types/legacy/reporting/usage_reports/messaging_delete_response.py +4 -34
  134. telnyx/types/legacy/reporting/usage_reports/messaging_list_response.py +5 -44
  135. telnyx/types/legacy/reporting/usage_reports/messaging_retrieve_response.py +4 -34
  136. telnyx/types/legacy/reporting/usage_reports/standard_pagination_meta.py +17 -0
  137. telnyx/types/legacy/reporting/usage_reports/voice_create_response.py +4 -39
  138. telnyx/types/legacy/reporting/usage_reports/voice_delete_response.py +4 -39
  139. telnyx/types/legacy/reporting/usage_reports/voice_list_response.py +5 -49
  140. telnyx/types/legacy/reporting/usage_reports/voice_retrieve_response.py +4 -39
  141. telnyx/types/message_template.py +12 -0
  142. telnyx/types/messaging_profile.py +3 -0
  143. telnyx/types/messaging_profile_create_params.py +3 -0
  144. telnyx/types/messaging_profile_update_params.py +3 -0
  145. telnyx/types/messaging_tollfree/verification/__init__.py +1 -0
  146. telnyx/types/messaging_tollfree/verification/request_create_params.py +51 -1
  147. telnyx/types/messaging_tollfree/verification/request_update_params.py +51 -1
  148. telnyx/types/messaging_tollfree/verification/toll_free_verification_entity_type.py +9 -0
  149. telnyx/types/messaging_tollfree/verification/verification_request_egress.py +24 -0
  150. telnyx/types/messaging_tollfree/verification/verification_request_status.py +24 -0
  151. telnyx/types/number_order_status_update_webhook_event1.py +38 -0
  152. telnyx/types/oauth_client.py +59 -0
  153. telnyx/types/oauth_client_create_response.py +4 -55
  154. telnyx/types/oauth_client_list_response.py +5 -69
  155. telnyx/types/oauth_client_retrieve_response.py +4 -55
  156. telnyx/types/oauth_client_update_response.py +4 -55
  157. telnyx/types/oauth_grant.py +29 -0
  158. telnyx/types/oauth_grant_delete_response.py +4 -25
  159. telnyx/types/oauth_grant_list_response.py +5 -39
  160. telnyx/types/oauth_grant_retrieve_response.py +4 -25
  161. telnyx/types/outbound_voice_profile.py +27 -1
  162. telnyx/types/outbound_voice_profile_create_params.py +27 -1
  163. telnyx/types/outbound_voice_profile_list_params.py +1 -1
  164. telnyx/types/outbound_voice_profile_update_params.py +27 -1
  165. telnyx/types/pagination_meta_cloudflare_ip_list_sync.py +15 -0
  166. telnyx/types/pagination_meta_oauth.py +21 -0
  167. telnyx/types/phone_number_blocks/__init__.py +1 -0
  168. telnyx/types/phone_number_blocks/job.py +3 -34
  169. telnyx/types/phone_number_blocks/job_error.py +32 -0
  170. telnyx/types/phone_numbers/phone_numbers_job.py +3 -36
  171. telnyx/types/replaced_link_click_webhook_event1.py +32 -0
  172. telnyx/types/report_list_mdrs_response.py +3 -12
  173. telnyx/types/reports/__init__.py +1 -0
  174. telnyx/types/reports/mdr_usage_report_list_response.py +3 -12
  175. telnyx/types/reports/pagination_meta_reporting.py +17 -0
  176. telnyx/types/requirement_group.py +2 -2
  177. telnyx/types/requirement_group_list_params.py +1 -1
  178. telnyx/types/shared/__init__.py +1 -0
  179. telnyx/types/{error.py → shared/api_error.py} +3 -3
  180. telnyx/types/stream_bidirectional_sampling_rate.py +7 -0
  181. telnyx/types/streaming_failed_webhook_event1.py +70 -0
  182. telnyx/types/streaming_started_webhook_event1.py +53 -0
  183. telnyx/types/streaming_stopped_webhook_event1.py +53 -0
  184. telnyx/types/texml/accounts/call_calls_params.py +16 -1
  185. telnyx/types/texml/accounts/conferences/participant_participants_params.py +16 -1
  186. telnyx/types/transcription_webhook_event1.py +72 -0
  187. telnyx/types/unsafe_unwrap_webhook_event.py +138 -0
  188. telnyx/types/verifications/__init__.py +1 -0
  189. telnyx/types/verifications/by_phone_number_list_response.py +4 -13
  190. telnyx/types/verifications/verify_meta.py +17 -0
  191. telnyx/types/verified_number_create_params.py +10 -0
  192. telnyx/types/verify_profile.py +18 -3
  193. telnyx/types/verify_profile_list_response.py +4 -13
  194. telnyx/types/{verify_profile_create_template_response.py → verify_profile_message_template_response.py} +2 -6
  195. telnyx/types/verify_profile_retrieve_templates_response.py +4 -9
  196. {telnyx-3.6.0a0.dist-info → telnyx-3.7.0.dist-info}/METADATA +4 -4
  197. {telnyx-3.6.0a0.dist-info → telnyx-3.7.0.dist-info}/RECORD +199 -125
  198. telnyx/types/ai/assistant_create_response.py +0 -92
  199. telnyx/types/ai/assistant_retrieve_response.py +0 -92
  200. telnyx/types/ai/assistants/version_promote_response.py +0 -92
  201. telnyx/types/ai/assistants/version_retrieve_response.py +0 -92
  202. telnyx/types/ai/assistants/version_update_response.py +0 -92
  203. telnyx/types/client_create_bucket_params.py +0 -13
  204. telnyx/types/client_delete_objects_params.py +0 -20
  205. telnyx/types/client_get_object_params.py +0 -15
  206. telnyx/types/client_list_objects_params.py +0 -13
  207. telnyx/types/client_put_object_params.py +0 -20
  208. telnyx/types/list_buckets_response.py +0 -20
  209. telnyx/types/list_objects_response.py +0 -24
  210. telnyx/types/verify_profile_update_template_response.py +0 -17
  211. {telnyx-3.6.0a0.dist-info → telnyx-3.7.0.dist-info}/WHEEL +0 -0
  212. {telnyx-3.6.0a0.dist-info → telnyx-3.7.0.dist-info}/licenses/LICENSE +0 -0
@@ -12,6 +12,7 @@ from ...types import (
12
12
  StreamBidirectionalMode,
13
13
  StreamBidirectionalCodec,
14
14
  StreamBidirectionalTargetLegs,
15
+ StreamBidirectionalSamplingRate,
15
16
  call_dial_params,
16
17
  )
17
18
  from .actions import (
@@ -43,6 +44,7 @@ from ...types.stream_bidirectional_mode import StreamBidirectionalMode
43
44
  from ...types.stream_bidirectional_codec import StreamBidirectionalCodec
44
45
  from ...types.call_retrieve_status_response import CallRetrieveStatusResponse
45
46
  from ...types.stream_bidirectional_target_legs import StreamBidirectionalTargetLegs
47
+ from ...types.stream_bidirectional_sampling_rate import StreamBidirectionalSamplingRate
46
48
  from ...types.calls.transcription_start_request_param import TranscriptionStartRequestParam
47
49
 
48
50
  __all__ = ["CallsResource", "AsyncCallsResource"]
@@ -97,6 +99,7 @@ class CallsResource(SyncAPIResource):
97
99
  link_to: str | Omit = omit,
98
100
  media_encryption: Literal["disabled", "SRTP", "DTLS"] | Omit = omit,
99
101
  media_name: str | Omit = omit,
102
+ park_after_unbridge: str | Omit = omit,
100
103
  preferred_codecs: str | Omit = omit,
101
104
  record: Literal["record-from-answer"] | Omit = omit,
102
105
  record_channels: Literal["single", "dual"] | Omit = omit,
@@ -114,7 +117,7 @@ class CallsResource(SyncAPIResource):
114
117
  sound_modifications: SoundModificationsParam | Omit = omit,
115
118
  stream_bidirectional_codec: StreamBidirectionalCodec | Omit = omit,
116
119
  stream_bidirectional_mode: StreamBidirectionalMode | Omit = omit,
117
- stream_bidirectional_sampling_rate: Literal[8000, 16000, 22050, 24000, 48000] | Omit = omit,
120
+ stream_bidirectional_sampling_rate: StreamBidirectionalSamplingRate | Omit = omit,
118
121
  stream_bidirectional_target_legs: StreamBidirectionalTargetLegs | Omit = omit,
119
122
  stream_codec: StreamCodec | Omit = omit,
120
123
  stream_establish_before_call_originate: bool | Omit = omit,
@@ -230,6 +233,10 @@ class CallsResource(SyncAPIResource):
230
233
  api.telnyx.com/v2/media by the same user/organization. The file must either be a
231
234
  WAV or MP3 file.
232
235
 
236
+ park_after_unbridge: If supplied with the value `self`, the current leg will be parked after
237
+ unbridge. If not set, the default behavior is to hang up the leg. When
238
+ park_after_unbridge is set, link_to becomes required.
239
+
233
240
  preferred_codecs: The list of comma-separated codecs in a preferred order for the forked media to
234
241
  be received.
235
242
 
@@ -351,6 +358,7 @@ class CallsResource(SyncAPIResource):
351
358
  "link_to": link_to,
352
359
  "media_encryption": media_encryption,
353
360
  "media_name": media_name,
361
+ "park_after_unbridge": park_after_unbridge,
354
362
  "preferred_codecs": preferred_codecs,
355
363
  "record": record,
356
364
  "record_channels": record_channels,
@@ -474,6 +482,7 @@ class AsyncCallsResource(AsyncAPIResource):
474
482
  link_to: str | Omit = omit,
475
483
  media_encryption: Literal["disabled", "SRTP", "DTLS"] | Omit = omit,
476
484
  media_name: str | Omit = omit,
485
+ park_after_unbridge: str | Omit = omit,
477
486
  preferred_codecs: str | Omit = omit,
478
487
  record: Literal["record-from-answer"] | Omit = omit,
479
488
  record_channels: Literal["single", "dual"] | Omit = omit,
@@ -491,7 +500,7 @@ class AsyncCallsResource(AsyncAPIResource):
491
500
  sound_modifications: SoundModificationsParam | Omit = omit,
492
501
  stream_bidirectional_codec: StreamBidirectionalCodec | Omit = omit,
493
502
  stream_bidirectional_mode: StreamBidirectionalMode | Omit = omit,
494
- stream_bidirectional_sampling_rate: Literal[8000, 16000, 22050, 24000, 48000] | Omit = omit,
503
+ stream_bidirectional_sampling_rate: StreamBidirectionalSamplingRate | Omit = omit,
495
504
  stream_bidirectional_target_legs: StreamBidirectionalTargetLegs | Omit = omit,
496
505
  stream_codec: StreamCodec | Omit = omit,
497
506
  stream_establish_before_call_originate: bool | Omit = omit,
@@ -607,6 +616,10 @@ class AsyncCallsResource(AsyncAPIResource):
607
616
  api.telnyx.com/v2/media by the same user/organization. The file must either be a
608
617
  WAV or MP3 file.
609
618
 
619
+ park_after_unbridge: If supplied with the value `self`, the current leg will be parked after
620
+ unbridge. If not set, the default behavior is to hang up the leg. When
621
+ park_after_unbridge is set, link_to becomes required.
622
+
610
623
  preferred_codecs: The list of comma-separated codecs in a preferred order for the forked media to
611
624
  be received.
612
625
 
@@ -728,6 +741,7 @@ class AsyncCallsResource(AsyncAPIResource):
728
741
  "link_to": link_to,
729
742
  "media_encryption": media_encryption,
730
743
  "media_name": media_name,
744
+ "park_after_unbridge": park_after_unbridge,
731
745
  "preferred_codecs": preferred_codecs,
732
746
  "record": record,
733
747
  "record_channels": record_channels,
@@ -2,14 +2,14 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import List, Union, Mapping, cast
5
+ from typing import List, Union
6
6
  from typing_extensions import Literal, overload
7
7
 
8
8
  import httpx
9
9
 
10
- from ..types import document_list_params, document_update_params, document_upload_params
10
+ from ..types import document_list_params, document_update_params, document_upload_params, document_upload_json_params
11
11
  from .._types import Body, Omit, Query, Headers, NotGiven, Base64FileInput, omit, not_given
12
- from .._utils import extract_files, required_args, maybe_transform, deepcopy_minimal, async_maybe_transform
12
+ from .._utils import required_args, maybe_transform, async_maybe_transform
13
13
  from .._compat import cached_property
14
14
  from .._resource import SyncAPIResource, AsyncAPIResource
15
15
  from .._response import (
@@ -32,6 +32,7 @@ from ..types.document_delete_response import DocumentDeleteResponse
32
32
  from ..types.document_update_response import DocumentUpdateResponse
33
33
  from ..types.document_upload_response import DocumentUploadResponse
34
34
  from ..types.document_retrieve_response import DocumentRetrieveResponse
35
+ from ..types.document_upload_json_response import DocumentUploadJsonResponse
35
36
  from ..types.document_generate_download_link_response import DocumentGenerateDownloadLinkResponse
36
37
 
37
38
  __all__ = ["DocumentsResource", "AsyncDocumentsResource"]
@@ -380,30 +381,126 @@ class DocumentsResource(SyncAPIResource):
380
381
  extra_body: Body | None = None,
381
382
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
382
383
  ) -> DocumentUploadResponse:
383
- body = deepcopy_minimal(
384
- {
385
- "url": url,
386
- "customer_reference": customer_reference,
387
- "filename": filename,
388
- "file": file,
389
- }
390
- )
391
- files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
392
- if files:
393
- # It should be noted that the actual Content-Type header that will be
394
- # sent to the server will contain a `boundary` parameter, e.g.
395
- # multipart/form-data; boundary=---abc--
396
- extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
397
384
  return self._post(
398
- "/documents",
399
- body=maybe_transform(body, document_upload_params.DocumentUploadParams),
400
- files=files,
385
+ "/documents?content-type=multipart",
386
+ body=maybe_transform(
387
+ {
388
+ "url": url,
389
+ "customer_reference": customer_reference,
390
+ "filename": filename,
391
+ "file": file,
392
+ },
393
+ document_upload_params.DocumentUploadParams,
394
+ ),
401
395
  options=make_request_options(
402
396
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
403
397
  ),
404
398
  cast_to=DocumentUploadResponse,
405
399
  )
406
400
 
401
+ @overload
402
+ def upload_json(
403
+ self,
404
+ *,
405
+ url: str,
406
+ customer_reference: str | Omit = omit,
407
+ filename: str | Omit = omit,
408
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
409
+ # The extra values given here take precedence over values defined on the client or passed to this method.
410
+ extra_headers: Headers | None = None,
411
+ extra_query: Query | None = None,
412
+ extra_body: Body | None = None,
413
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
414
+ ) -> DocumentUploadJsonResponse:
415
+ """
416
+ Upload a document.<br /><br />Uploaded files must be linked to a service within
417
+ 30 minutes or they will be automatically deleted.
418
+
419
+ Args:
420
+ url: If the file is already hosted publicly, you can provide a URL and have the
421
+ documents service fetch it for you.
422
+
423
+ customer_reference: Optional reference string for customer tracking.
424
+
425
+ filename: The filename of the document.
426
+
427
+ extra_headers: Send extra headers
428
+
429
+ extra_query: Add additional query parameters to the request
430
+
431
+ extra_body: Add additional JSON properties to the request
432
+
433
+ timeout: Override the client-level default timeout for this request, in seconds
434
+ """
435
+ ...
436
+
437
+ @overload
438
+ def upload_json(
439
+ self,
440
+ *,
441
+ file: Union[str, Base64FileInput],
442
+ customer_reference: str | Omit = omit,
443
+ filename: str | Omit = omit,
444
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
445
+ # The extra values given here take precedence over values defined on the client or passed to this method.
446
+ extra_headers: Headers | None = None,
447
+ extra_query: Query | None = None,
448
+ extra_body: Body | None = None,
449
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
450
+ ) -> DocumentUploadJsonResponse:
451
+ """
452
+ Upload a document.<br /><br />Uploaded files must be linked to a service within
453
+ 30 minutes or they will be automatically deleted.
454
+
455
+ Args:
456
+ file: The Base64 encoded contents of the file you are uploading.
457
+
458
+ customer_reference: A customer reference string for customer look ups.
459
+
460
+ filename: The filename of the document.
461
+
462
+ extra_headers: Send extra headers
463
+
464
+ extra_query: Add additional query parameters to the request
465
+
466
+ extra_body: Add additional JSON properties to the request
467
+
468
+ timeout: Override the client-level default timeout for this request, in seconds
469
+ """
470
+ ...
471
+
472
+ @required_args(["url"], ["file"])
473
+ def upload_json(
474
+ self,
475
+ *,
476
+ url: str | Omit = omit,
477
+ customer_reference: str | Omit = omit,
478
+ filename: str | Omit = omit,
479
+ file: Union[str, Base64FileInput] | Omit = omit,
480
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
481
+ # The extra values given here take precedence over values defined on the client or passed to this method.
482
+ extra_headers: Headers | None = None,
483
+ extra_query: Query | None = None,
484
+ extra_body: Body | None = None,
485
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
486
+ ) -> DocumentUploadJsonResponse:
487
+ return self._post(
488
+ "/documents",
489
+ body=maybe_transform(
490
+ {
491
+ "url": url,
492
+ "customer_reference": customer_reference,
493
+ "filename": filename,
494
+ "file": file,
495
+ },
496
+ document_upload_json_params.DocumentUploadJsonParams,
497
+ ),
498
+ options=make_request_options(
499
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
500
+ ),
501
+ cast_to=DocumentUploadJsonResponse,
502
+ )
503
+
407
504
 
408
505
  class AsyncDocumentsResource(AsyncAPIResource):
409
506
  @cached_property
@@ -748,30 +845,126 @@ class AsyncDocumentsResource(AsyncAPIResource):
748
845
  extra_body: Body | None = None,
749
846
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
750
847
  ) -> DocumentUploadResponse:
751
- body = deepcopy_minimal(
752
- {
753
- "url": url,
754
- "customer_reference": customer_reference,
755
- "filename": filename,
756
- "file": file,
757
- }
758
- )
759
- files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
760
- if files:
761
- # It should be noted that the actual Content-Type header that will be
762
- # sent to the server will contain a `boundary` parameter, e.g.
763
- # multipart/form-data; boundary=---abc--
764
- extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
765
848
  return await self._post(
766
- "/documents",
767
- body=await async_maybe_transform(body, document_upload_params.DocumentUploadParams),
768
- files=files,
849
+ "/documents?content-type=multipart",
850
+ body=await async_maybe_transform(
851
+ {
852
+ "url": url,
853
+ "customer_reference": customer_reference,
854
+ "filename": filename,
855
+ "file": file,
856
+ },
857
+ document_upload_params.DocumentUploadParams,
858
+ ),
769
859
  options=make_request_options(
770
860
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
771
861
  ),
772
862
  cast_to=DocumentUploadResponse,
773
863
  )
774
864
 
865
+ @overload
866
+ async def upload_json(
867
+ self,
868
+ *,
869
+ url: str,
870
+ customer_reference: str | Omit = omit,
871
+ filename: str | Omit = omit,
872
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
873
+ # The extra values given here take precedence over values defined on the client or passed to this method.
874
+ extra_headers: Headers | None = None,
875
+ extra_query: Query | None = None,
876
+ extra_body: Body | None = None,
877
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
878
+ ) -> DocumentUploadJsonResponse:
879
+ """
880
+ Upload a document.<br /><br />Uploaded files must be linked to a service within
881
+ 30 minutes or they will be automatically deleted.
882
+
883
+ Args:
884
+ url: If the file is already hosted publicly, you can provide a URL and have the
885
+ documents service fetch it for you.
886
+
887
+ customer_reference: Optional reference string for customer tracking.
888
+
889
+ filename: The filename of the document.
890
+
891
+ extra_headers: Send extra headers
892
+
893
+ extra_query: Add additional query parameters to the request
894
+
895
+ extra_body: Add additional JSON properties to the request
896
+
897
+ timeout: Override the client-level default timeout for this request, in seconds
898
+ """
899
+ ...
900
+
901
+ @overload
902
+ async def upload_json(
903
+ self,
904
+ *,
905
+ file: Union[str, Base64FileInput],
906
+ customer_reference: str | Omit = omit,
907
+ filename: str | Omit = omit,
908
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
909
+ # The extra values given here take precedence over values defined on the client or passed to this method.
910
+ extra_headers: Headers | None = None,
911
+ extra_query: Query | None = None,
912
+ extra_body: Body | None = None,
913
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
914
+ ) -> DocumentUploadJsonResponse:
915
+ """
916
+ Upload a document.<br /><br />Uploaded files must be linked to a service within
917
+ 30 minutes or they will be automatically deleted.
918
+
919
+ Args:
920
+ file: The Base64 encoded contents of the file you are uploading.
921
+
922
+ customer_reference: A customer reference string for customer look ups.
923
+
924
+ filename: The filename of the document.
925
+
926
+ extra_headers: Send extra headers
927
+
928
+ extra_query: Add additional query parameters to the request
929
+
930
+ extra_body: Add additional JSON properties to the request
931
+
932
+ timeout: Override the client-level default timeout for this request, in seconds
933
+ """
934
+ ...
935
+
936
+ @required_args(["url"], ["file"])
937
+ async def upload_json(
938
+ self,
939
+ *,
940
+ url: str | Omit = omit,
941
+ customer_reference: str | Omit = omit,
942
+ filename: str | Omit = omit,
943
+ file: Union[str, Base64FileInput] | Omit = omit,
944
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
945
+ # The extra values given here take precedence over values defined on the client or passed to this method.
946
+ extra_headers: Headers | None = None,
947
+ extra_query: Query | None = None,
948
+ extra_body: Body | None = None,
949
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
950
+ ) -> DocumentUploadJsonResponse:
951
+ return await self._post(
952
+ "/documents",
953
+ body=await async_maybe_transform(
954
+ {
955
+ "url": url,
956
+ "customer_reference": customer_reference,
957
+ "filename": filename,
958
+ "file": file,
959
+ },
960
+ document_upload_json_params.DocumentUploadJsonParams,
961
+ ),
962
+ options=make_request_options(
963
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
964
+ ),
965
+ cast_to=DocumentUploadJsonResponse,
966
+ )
967
+
775
968
 
776
969
  class DocumentsResourceWithRawResponse:
777
970
  def __init__(self, documents: DocumentsResource) -> None:
@@ -799,6 +992,9 @@ class DocumentsResourceWithRawResponse:
799
992
  self.upload = to_raw_response_wrapper(
800
993
  documents.upload,
801
994
  )
995
+ self.upload_json = to_raw_response_wrapper(
996
+ documents.upload_json,
997
+ )
802
998
 
803
999
 
804
1000
  class AsyncDocumentsResourceWithRawResponse:
@@ -827,6 +1023,9 @@ class AsyncDocumentsResourceWithRawResponse:
827
1023
  self.upload = async_to_raw_response_wrapper(
828
1024
  documents.upload,
829
1025
  )
1026
+ self.upload_json = async_to_raw_response_wrapper(
1027
+ documents.upload_json,
1028
+ )
830
1029
 
831
1030
 
832
1031
  class DocumentsResourceWithStreamingResponse:
@@ -855,6 +1054,9 @@ class DocumentsResourceWithStreamingResponse:
855
1054
  self.upload = to_streamed_response_wrapper(
856
1055
  documents.upload,
857
1056
  )
1057
+ self.upload_json = to_streamed_response_wrapper(
1058
+ documents.upload_json,
1059
+ )
858
1060
 
859
1061
 
860
1062
  class AsyncDocumentsResourceWithStreamingResponse:
@@ -883,3 +1085,6 @@ class AsyncDocumentsResourceWithStreamingResponse:
883
1085
  self.upload = async_to_streamed_response_wrapper(
884
1086
  documents.upload,
885
1087
  )
1088
+ self.upload_json = async_to_streamed_response_wrapper(
1089
+ documents.upload_json,
1090
+ )
@@ -18,6 +18,7 @@ from ....._response import (
18
18
  async_to_streamed_response_wrapper,
19
19
  )
20
20
  from ....._base_client import make_request_options
21
+ from .....types.legacy.reporting.filter_param import FilterParam
21
22
  from .....types.legacy.reporting.batch_detail_records import messaging_create_params
22
23
  from .....types.legacy.reporting.batch_detail_records.messaging_list_response import MessagingListResponse
23
24
  from .....types.legacy.reporting.batch_detail_records.messaging_create_response import MessagingCreateResponse
@@ -54,7 +55,7 @@ class MessagingResource(SyncAPIResource):
54
55
  start_time: Union[str, datetime],
55
56
  connections: Iterable[int] | Omit = omit,
56
57
  directions: Iterable[int] | Omit = omit,
57
- filters: Iterable[messaging_create_params.Filter] | Omit = omit,
58
+ filters: Iterable[FilterParam] | Omit = omit,
58
59
  include_message_body: bool | Omit = omit,
59
60
  managed_accounts: SequenceNotStr[str] | Omit = omit,
60
61
  profiles: SequenceNotStr[str] | Omit = omit,
@@ -245,7 +246,7 @@ class AsyncMessagingResource(AsyncAPIResource):
245
246
  start_time: Union[str, datetime],
246
247
  connections: Iterable[int] | Omit = omit,
247
248
  directions: Iterable[int] | Omit = omit,
248
- filters: Iterable[messaging_create_params.Filter] | Omit = omit,
249
+ filters: Iterable[FilterParam] | Omit = omit,
249
250
  include_message_body: bool | Omit = omit,
250
251
  managed_accounts: SequenceNotStr[str] | Omit = omit,
251
252
  profiles: SequenceNotStr[str] | Omit = omit,
@@ -18,6 +18,7 @@ from ....._response import (
18
18
  async_to_streamed_response_wrapper,
19
19
  )
20
20
  from ....._base_client import make_request_options
21
+ from .....types.legacy.reporting.filter_param import FilterParam
21
22
  from .....types.legacy.reporting.batch_detail_records import voice_create_params
22
23
  from .....types.legacy.reporting.batch_detail_records.voice_list_response import VoiceListResponse
23
24
  from .....types.legacy.reporting.batch_detail_records.voice_create_response import VoiceCreateResponse
@@ -56,7 +57,7 @@ class VoiceResource(SyncAPIResource):
56
57
  call_types: Iterable[int] | Omit = omit,
57
58
  connections: Iterable[int] | Omit = omit,
58
59
  fields: SequenceNotStr[str] | Omit = omit,
59
- filters: Iterable[voice_create_params.Filter] | Omit = omit,
60
+ filters: Iterable[FilterParam] | Omit = omit,
60
61
  include_all_metadata: bool | Omit = omit,
61
62
  managed_accounts: SequenceNotStr[str] | Omit = omit,
62
63
  record_types: Iterable[int] | Omit = omit,
@@ -269,7 +270,7 @@ class AsyncVoiceResource(AsyncAPIResource):
269
270
  call_types: Iterable[int] | Omit = omit,
270
271
  connections: Iterable[int] | Omit = omit,
271
272
  fields: SequenceNotStr[str] | Omit = omit,
272
- filters: Iterable[voice_create_params.Filter] | Omit = omit,
273
+ filters: Iterable[FilterParam] | Omit = omit,
273
274
  include_all_metadata: bool | Omit = omit,
274
275
  managed_accounts: SequenceNotStr[str] | Omit = omit,
275
276
  record_types: Iterable[int] | Omit = omit,
@@ -81,6 +81,7 @@ class MessagingProfilesResource(SyncAPIResource):
81
81
  enabled: bool | Omit = omit,
82
82
  mms_fall_back_to_sms: bool | Omit = omit,
83
83
  mms_transcoding: bool | Omit = omit,
84
+ mobile_only: bool | Omit = omit,
84
85
  number_pool_settings: Optional[NumberPoolSettingsParam] | Omit = omit,
85
86
  url_shortener_settings: Optional[URLShortenerSettingsParam] | Omit = omit,
86
87
  webhook_api_version: Literal["1", "2", "2010-04-01"] | Omit = omit,
@@ -117,6 +118,8 @@ class MessagingProfilesResource(SyncAPIResource):
117
118
 
118
119
  mms_transcoding: enables automated resizing of MMS media.
119
120
 
121
+ mobile_only: Send messages only to mobile phone numbers.
122
+
120
123
  number_pool_settings: Number Pool allows you to send messages from a pool of numbers of different
121
124
  types, assigning weights to each type. The pool consists of all the long code
122
125
  and toll free numbers assigned to the messaging profile.
@@ -159,6 +162,7 @@ class MessagingProfilesResource(SyncAPIResource):
159
162
  "enabled": enabled,
160
163
  "mms_fall_back_to_sms": mms_fall_back_to_sms,
161
164
  "mms_transcoding": mms_transcoding,
165
+ "mobile_only": mobile_only,
162
166
  "number_pool_settings": number_pool_settings,
163
167
  "url_shortener_settings": url_shortener_settings,
164
168
  "webhook_api_version": webhook_api_version,
@@ -216,6 +220,7 @@ class MessagingProfilesResource(SyncAPIResource):
216
220
  enabled: bool | Omit = omit,
217
221
  mms_fall_back_to_sms: bool | Omit = omit,
218
222
  mms_transcoding: bool | Omit = omit,
223
+ mobile_only: bool | Omit = omit,
219
224
  name: str | Omit = omit,
220
225
  number_pool_settings: Optional[NumberPoolSettingsParam] | Omit = omit,
221
226
  url_shortener_settings: Optional[URLShortenerSettingsParam] | Omit = omit,
@@ -249,6 +254,8 @@ class MessagingProfilesResource(SyncAPIResource):
249
254
 
250
255
  mms_transcoding: enables automated resizing of MMS media.
251
256
 
257
+ mobile_only: Send messages only to mobile phone numbers.
258
+
252
259
  name: A user friendly name for the messaging profile.
253
260
 
254
261
  number_pool_settings: Number Pool allows you to send messages from a pool of numbers of different
@@ -301,6 +308,7 @@ class MessagingProfilesResource(SyncAPIResource):
301
308
  "enabled": enabled,
302
309
  "mms_fall_back_to_sms": mms_fall_back_to_sms,
303
310
  "mms_transcoding": mms_transcoding,
311
+ "mobile_only": mobile_only,
304
312
  "name": name,
305
313
  "number_pool_settings": number_pool_settings,
306
314
  "url_shortener_settings": url_shortener_settings,
@@ -520,6 +528,7 @@ class AsyncMessagingProfilesResource(AsyncAPIResource):
520
528
  enabled: bool | Omit = omit,
521
529
  mms_fall_back_to_sms: bool | Omit = omit,
522
530
  mms_transcoding: bool | Omit = omit,
531
+ mobile_only: bool | Omit = omit,
523
532
  number_pool_settings: Optional[NumberPoolSettingsParam] | Omit = omit,
524
533
  url_shortener_settings: Optional[URLShortenerSettingsParam] | Omit = omit,
525
534
  webhook_api_version: Literal["1", "2", "2010-04-01"] | Omit = omit,
@@ -556,6 +565,8 @@ class AsyncMessagingProfilesResource(AsyncAPIResource):
556
565
 
557
566
  mms_transcoding: enables automated resizing of MMS media.
558
567
 
568
+ mobile_only: Send messages only to mobile phone numbers.
569
+
559
570
  number_pool_settings: Number Pool allows you to send messages from a pool of numbers of different
560
571
  types, assigning weights to each type. The pool consists of all the long code
561
572
  and toll free numbers assigned to the messaging profile.
@@ -598,6 +609,7 @@ class AsyncMessagingProfilesResource(AsyncAPIResource):
598
609
  "enabled": enabled,
599
610
  "mms_fall_back_to_sms": mms_fall_back_to_sms,
600
611
  "mms_transcoding": mms_transcoding,
612
+ "mobile_only": mobile_only,
601
613
  "number_pool_settings": number_pool_settings,
602
614
  "url_shortener_settings": url_shortener_settings,
603
615
  "webhook_api_version": webhook_api_version,
@@ -655,6 +667,7 @@ class AsyncMessagingProfilesResource(AsyncAPIResource):
655
667
  enabled: bool | Omit = omit,
656
668
  mms_fall_back_to_sms: bool | Omit = omit,
657
669
  mms_transcoding: bool | Omit = omit,
670
+ mobile_only: bool | Omit = omit,
658
671
  name: str | Omit = omit,
659
672
  number_pool_settings: Optional[NumberPoolSettingsParam] | Omit = omit,
660
673
  url_shortener_settings: Optional[URLShortenerSettingsParam] | Omit = omit,
@@ -688,6 +701,8 @@ class AsyncMessagingProfilesResource(AsyncAPIResource):
688
701
 
689
702
  mms_transcoding: enables automated resizing of MMS media.
690
703
 
704
+ mobile_only: Send messages only to mobile phone numbers.
705
+
691
706
  name: A user friendly name for the messaging profile.
692
707
 
693
708
  number_pool_settings: Number Pool allows you to send messages from a pool of numbers of different
@@ -740,6 +755,7 @@ class AsyncMessagingProfilesResource(AsyncAPIResource):
740
755
  "enabled": enabled,
741
756
  "mms_fall_back_to_sms": mms_fall_back_to_sms,
742
757
  "mms_transcoding": mms_transcoding,
758
+ "mobile_only": mobile_only,
743
759
  "name": name,
744
760
  "number_pool_settings": number_pool_settings,
745
761
  "url_shortener_settings": url_shortener_settings,