telnyx 3.2.0a0__py3-none-any.whl → 3.3.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 (565) hide show
  1. telnyx/__init__.py +3 -1
  2. telnyx/_base_client.py +12 -12
  3. telnyx/_client.py +68 -762
  4. telnyx/_compat.py +48 -48
  5. telnyx/_models.py +50 -44
  6. telnyx/_qs.py +7 -7
  7. telnyx/_types.py +53 -12
  8. telnyx/_utils/__init__.py +9 -2
  9. telnyx/_utils/_compat.py +45 -0
  10. telnyx/_utils/_datetime_parse.py +136 -0
  11. telnyx/_utils/_transform.py +13 -3
  12. telnyx/_utils/_typing.py +6 -1
  13. telnyx/_utils/_utils.py +4 -5
  14. telnyx/_version.py +1 -1
  15. telnyx/resources/__init__.py +73 -0
  16. telnyx/resources/access_ip_address.py +15 -15
  17. telnyx/resources/access_ip_ranges.py +13 -13
  18. telnyx/resources/actions/purchase.py +13 -14
  19. telnyx/resources/actions/register.py +11 -12
  20. telnyx/resources/addresses/actions.py +13 -13
  21. telnyx/resources/addresses/addresses.py +33 -35
  22. telnyx/resources/advanced_orders.py +102 -106
  23. telnyx/resources/ai/ai.py +7 -7
  24. telnyx/resources/ai/assistants/assistants.py +89 -89
  25. telnyx/resources/ai/assistants/canary_deploys.py +9 -9
  26. telnyx/resources/ai/assistants/scheduled_events.py +21 -21
  27. telnyx/resources/ai/assistants/tests/runs.py +13 -13
  28. telnyx/resources/ai/assistants/tests/test_suites/runs.py +13 -13
  29. telnyx/resources/ai/assistants/tests/test_suites/test_suites.py +3 -3
  30. telnyx/resources/ai/assistants/tests/tests.py +43 -43
  31. telnyx/resources/ai/assistants/tools.py +7 -7
  32. telnyx/resources/ai/assistants/versions.py +45 -45
  33. telnyx/resources/ai/audio.py +11 -11
  34. telnyx/resources/ai/chat.py +48 -48
  35. telnyx/resources/ai/clusters.py +27 -29
  36. telnyx/resources/ai/conversations/conversations.py +179 -45
  37. telnyx/resources/ai/conversations/insight_groups/insight_groups.py +23 -23
  38. telnyx/resources/ai/conversations/insight_groups/insights.py +5 -5
  39. telnyx/resources/ai/conversations/insights.py +25 -25
  40. telnyx/resources/ai/conversations/messages.py +3 -136
  41. telnyx/resources/ai/embeddings/buckets.py +7 -7
  42. telnyx/resources/ai/embeddings/embeddings.py +23 -24
  43. telnyx/resources/ai/fine_tuning/jobs.py +13 -13
  44. telnyx/resources/audit_events.py +9 -9
  45. telnyx/resources/authentication_providers.py +29 -29
  46. telnyx/resources/available_phone_number_blocks.py +5 -5
  47. telnyx/resources/available_phone_numbers.py +5 -5
  48. telnyx/resources/balance.py +3 -3
  49. telnyx/resources/billing_groups.py +17 -17
  50. telnyx/resources/brand/brand.py +121 -117
  51. telnyx/resources/brand/external_vetting.py +9 -9
  52. telnyx/resources/bulk_sim_card_actions.py +11 -11
  53. telnyx/resources/bundle_pricing/billing_bundles.py +13 -13
  54. telnyx/resources/bundle_pricing/user_bundles.py +35 -35
  55. telnyx/resources/call_control_applications.py +64 -68
  56. telnyx/resources/call_events.py +7 -7
  57. telnyx/resources/calls/actions.py +699 -699
  58. telnyx/resources/calls/calls.py +116 -110
  59. telnyx/resources/campaign/campaign.py +47 -47
  60. telnyx/resources/campaign/osr.py +3 -3
  61. telnyx/resources/campaign/usecase.py +3 -3
  62. telnyx/resources/campaign_builder/brand.py +3 -3
  63. telnyx/resources/campaign_builder/campaign_builder.py +68 -68
  64. telnyx/resources/channel_zones.py +7 -7
  65. telnyx/resources/charges_breakdown.py +7 -7
  66. telnyx/resources/charges_summary.py +3 -3
  67. telnyx/resources/comments.py +17 -17
  68. telnyx/resources/conferences/actions.py +123 -140
  69. telnyx/resources/conferences/conferences.py +37 -41
  70. telnyx/resources/connections.py +15 -15
  71. telnyx/resources/country_coverage.py +5 -5
  72. telnyx/resources/credential_connections/actions.py +3 -3
  73. telnyx/resources/credential_connections/credential_connections.py +96 -96
  74. telnyx/resources/custom_storage_credentials.py +9 -9
  75. telnyx/resources/customer_service_records.py +21 -23
  76. telnyx/resources/detail_records.py +9 -11
  77. telnyx/resources/dialogflow_connections.py +25 -25
  78. telnyx/resources/document_links.py +7 -7
  79. telnyx/resources/documents.py +45 -45
  80. telnyx/resources/dynamic_emergency_addresses.py +23 -23
  81. telnyx/resources/dynamic_emergency_endpoints.py +13 -13
  82. telnyx/resources/enum.py +3 -3
  83. telnyx/resources/external_connections/civic_addresses.py +7 -7
  84. telnyx/resources/external_connections/external_connections.py +42 -42
  85. telnyx/resources/external_connections/log_messages.py +11 -11
  86. telnyx/resources/external_connections/phone_numbers.py +13 -13
  87. telnyx/resources/external_connections/releases.py +9 -9
  88. telnyx/resources/external_connections/uploads.py +27 -29
  89. telnyx/resources/fax_applications.py +48 -48
  90. telnyx/resources/faxes/actions.py +5 -5
  91. telnyx/resources/faxes/faxes.py +35 -35
  92. telnyx/resources/fqdn_connections.py +94 -94
  93. telnyx/resources/fqdns.py +25 -25
  94. telnyx/resources/global_ip_allowed_ports.py +3 -3
  95. telnyx/resources/global_ip_assignment_health.py +5 -5
  96. telnyx/resources/global_ip_assignments.py +19 -19
  97. telnyx/resources/global_ip_assignments_usage.py +5 -5
  98. telnyx/resources/global_ip_health_check_types.py +3 -3
  99. telnyx/resources/global_ip_health_checks.py +17 -17
  100. telnyx/resources/global_ip_latency.py +5 -5
  101. telnyx/resources/global_ip_protocols.py +3 -3
  102. telnyx/resources/global_ip_usage.py +5 -5
  103. telnyx/resources/global_ips.py +17 -17
  104. telnyx/resources/inbound_channels.py +5 -5
  105. telnyx/resources/integration_secrets.py +17 -17
  106. telnyx/resources/inventory_coverage.py +5 -5
  107. telnyx/resources/invoices.py +11 -11
  108. telnyx/resources/ip_connections.py +94 -94
  109. telnyx/resources/ips.py +23 -23
  110. telnyx/resources/ledger_billing_group_reports.py +9 -9
  111. telnyx/resources/legacy/__init__.py +33 -0
  112. telnyx/resources/legacy/legacy.py +102 -0
  113. telnyx/resources/legacy/reporting/__init__.py +47 -0
  114. telnyx/resources/legacy/reporting/batch_detail_records/__init__.py +61 -0
  115. telnyx/resources/legacy/reporting/batch_detail_records/batch_detail_records.py +166 -0
  116. telnyx/resources/legacy/reporting/batch_detail_records/messaging.py +482 -0
  117. telnyx/resources/legacy/reporting/batch_detail_records/speech_to_text.py +399 -0
  118. telnyx/resources/legacy/reporting/batch_detail_records/voice.py +539 -0
  119. telnyx/resources/legacy/reporting/reporting.py +134 -0
  120. telnyx/resources/legacy/reporting/usage_reports/__init__.py +61 -0
  121. telnyx/resources/legacy/reporting/usage_reports/messaging.py +471 -0
  122. telnyx/resources/legacy/reporting/usage_reports/number_lookup.py +464 -0
  123. telnyx/resources/legacy/reporting/usage_reports/usage_reports.py +288 -0
  124. telnyx/resources/legacy/reporting/usage_reports/voice.py +493 -0
  125. telnyx/resources/list.py +5 -5
  126. telnyx/resources/managed_accounts/actions.py +7 -7
  127. telnyx/resources/managed_accounts/managed_accounts.py +33 -33
  128. telnyx/resources/media.py +23 -23
  129. telnyx/resources/messages/messages.py +124 -124
  130. telnyx/resources/messages/rcs.py +7 -7
  131. telnyx/resources/messaging/rcs/agents.py +15 -15
  132. telnyx/resources/messaging/rcs/rcs.py +9 -11
  133. telnyx/resources/messaging_hosted_number_orders/actions.py +7 -7
  134. telnyx/resources/messaging_hosted_number_orders/messaging_hosted_number_orders.py +26 -26
  135. telnyx/resources/messaging_hosted_numbers.py +3 -3
  136. telnyx/resources/messaging_numbers_bulk_updates.py +7 -9
  137. telnyx/resources/messaging_optouts.py +11 -11
  138. telnyx/resources/messaging_profiles/autoresp_configs.py +25 -26
  139. telnyx/resources/messaging_profiles/messaging_profiles.py +76 -76
  140. telnyx/resources/messaging_tollfree/verification/requests.py +27 -27
  141. telnyx/resources/messaging_url_domains.py +5 -5
  142. telnyx/resources/messsages.py +11 -11
  143. telnyx/resources/mobile_network_operators.py +7 -7
  144. telnyx/resources/mobile_push_credentials.py +23 -23
  145. telnyx/resources/network_coverage.py +9 -9
  146. telnyx/resources/networks/default_gateway.py +9 -9
  147. telnyx/resources/networks/networks.py +21 -21
  148. telnyx/resources/notification_channels.py +27 -27
  149. telnyx/resources/notification_event_conditions.py +7 -7
  150. telnyx/resources/notification_events.py +5 -5
  151. telnyx/resources/notification_profiles.py +17 -17
  152. telnyx/resources/notification_settings.py +21 -21
  153. telnyx/resources/number_block_orders.py +17 -17
  154. telnyx/resources/number_lookup.py +5 -5
  155. telnyx/resources/number_order_phone_numbers.py +13 -13
  156. telnyx/resources/number_orders.py +27 -27
  157. telnyx/resources/number_reservations/actions.py +3 -3
  158. telnyx/resources/number_reservations/number_reservations.py +15 -15
  159. telnyx/resources/numbers_features.py +5 -7
  160. telnyx/resources/oauth.py +855 -0
  161. telnyx/resources/oauth_clients.py +711 -0
  162. telnyx/resources/oauth_grants.py +349 -0
  163. telnyx/resources/operator_connect/actions.py +3 -3
  164. telnyx/resources/ota_updates.py +9 -9
  165. telnyx/resources/outbound_voice_profiles.py +66 -66
  166. telnyx/resources/partner_campaigns.py +25 -25
  167. telnyx/resources/payment/auto_recharge_prefs.py +15 -15
  168. telnyx/resources/phone_number_assignment_by_profile.py +15 -15
  169. telnyx/resources/phone_number_blocks/jobs.py +13 -13
  170. telnyx/resources/phone_number_campaigns.py +19 -19
  171. telnyx/resources/phone_numbers/actions.py +9 -11
  172. telnyx/resources/phone_numbers/csv_downloads.py +13 -13
  173. telnyx/resources/phone_numbers/jobs.py +54 -42
  174. telnyx/resources/phone_numbers/messaging.py +13 -13
  175. telnyx/resources/phone_numbers/phone_numbers.py +39 -40
  176. telnyx/resources/phone_numbers/voice.py +31 -31
  177. telnyx/resources/phone_numbers/voicemail.py +15 -15
  178. telnyx/resources/phone_numbers_regulatory_requirements.py +5 -5
  179. telnyx/resources/portability_checks.py +5 -7
  180. telnyx/resources/porting/events.py +11 -11
  181. telnyx/resources/porting/loa_configurations.py +17 -17
  182. telnyx/resources/porting/porting.py +3 -3
  183. telnyx/resources/porting/reports.py +11 -11
  184. telnyx/resources/porting_orders/action_requirements.py +11 -11
  185. telnyx/resources/porting_orders/actions.py +13 -13
  186. telnyx/resources/porting_orders/activation_jobs.py +11 -11
  187. telnyx/resources/porting_orders/additional_documents.py +15 -15
  188. telnyx/resources/porting_orders/associated_phone_numbers.py +13 -13
  189. telnyx/resources/porting_orders/comments.py +9 -9
  190. telnyx/resources/porting_orders/phone_number_blocks.py +13 -13
  191. telnyx/resources/porting_orders/phone_number_configurations.py +13 -13
  192. telnyx/resources/porting_orders/phone_number_extensions.py +13 -13
  193. telnyx/resources/porting_orders/porting_orders.py +82 -70
  194. telnyx/resources/porting_orders/verification_codes.py +20 -20
  195. telnyx/resources/porting_phone_numbers.py +7 -7
  196. telnyx/resources/portouts/comments.py +7 -7
  197. telnyx/resources/portouts/events.py +11 -11
  198. telnyx/resources/portouts/portouts.py +17 -17
  199. telnyx/resources/portouts/reports.py +11 -11
  200. telnyx/resources/portouts/supporting_documents.py +7 -7
  201. telnyx/resources/private_wireless_gateways.py +25 -25
  202. telnyx/resources/public_internet_gateways.py +19 -19
  203. telnyx/resources/queues/calls.py +7 -7
  204. telnyx/resources/queues/queues.py +3 -3
  205. telnyx/resources/recording_transcriptions.py +7 -7
  206. telnyx/resources/recordings/actions.py +5 -7
  207. telnyx/resources/recordings/recordings.py +11 -11
  208. telnyx/resources/regions.py +3 -3
  209. telnyx/resources/regulatory_requirements.py +5 -5
  210. telnyx/resources/reports/cdr_usage_reports.py +9 -9
  211. telnyx/resources/reports/mdr_usage_reports.py +22 -22
  212. telnyx/resources/reports/reports.py +47 -48
  213. telnyx/resources/requirement_groups.py +23 -23
  214. telnyx/resources/requirement_types.py +9 -11
  215. telnyx/resources/requirements.py +11 -11
  216. telnyx/resources/room_compositions.py +27 -27
  217. telnyx/resources/room_participants.py +9 -9
  218. telnyx/resources/room_recordings.py +17 -17
  219. telnyx/resources/rooms/actions.py +11 -11
  220. telnyx/resources/rooms/rooms.py +43 -43
  221. telnyx/resources/rooms/sessions/actions.py +22 -22
  222. telnyx/resources/rooms/sessions/sessions.py +27 -27
  223. telnyx/resources/seti.py +5 -5
  224. telnyx/resources/short_codes.py +11 -11
  225. telnyx/resources/sim_card_data_usage_notifications.py +21 -21
  226. telnyx/resources/sim_card_groups/actions.py +23 -23
  227. telnyx/resources/sim_card_groups/sim_card_groups.py +29 -29
  228. telnyx/resources/sim_card_order_preview.py +3 -3
  229. telnyx/resources/sim_card_orders.py +11 -11
  230. telnyx/resources/sim_cards/actions.py +29 -31
  231. telnyx/resources/sim_cards/sim_cards.py +48 -48
  232. telnyx/resources/siprec_connectors.py +13 -13
  233. telnyx/resources/storage/buckets/buckets.py +5 -5
  234. telnyx/resources/storage/buckets/ssl_certificate.py +11 -11
  235. telnyx/resources/storage/buckets/usage.py +5 -5
  236. telnyx/resources/storage/migration_sources.py +11 -11
  237. telnyx/resources/storage/migrations/actions.py +3 -3
  238. telnyx/resources/storage/migrations/migrations.py +9 -9
  239. telnyx/resources/storage/storage.py +3 -3
  240. telnyx/resources/sub_number_orders.py +17 -17
  241. telnyx/resources/sub_number_orders_report.py +19 -19
  242. telnyx/resources/telephony_credentials.py +31 -31
  243. telnyx/resources/texml/accounts/accounts.py +15 -15
  244. telnyx/resources/texml/accounts/calls/calls.py +145 -145
  245. telnyx/resources/texml/accounts/calls/recordings.py +5 -5
  246. telnyx/resources/texml/accounts/calls/recordings_json.py +19 -19
  247. telnyx/resources/texml/accounts/calls/siprec.py +5 -5
  248. telnyx/resources/texml/accounts/calls/streams.py +5 -5
  249. telnyx/resources/texml/accounts/conferences/conferences.py +31 -31
  250. telnyx/resources/texml/accounts/conferences/participants.py +123 -123
  251. telnyx/resources/texml/accounts/recordings/json.py +5 -5
  252. telnyx/resources/texml/accounts/transcriptions/json.py +5 -5
  253. telnyx/resources/texml/calls.py +79 -79
  254. telnyx/resources/texml/texml.py +3 -3
  255. telnyx/resources/texml_applications.py +65 -66
  256. telnyx/resources/text_to_speech.py +9 -9
  257. telnyx/resources/usage_reports.py +31 -32
  258. telnyx/resources/user_addresses.py +29 -31
  259. telnyx/resources/user_tags.py +5 -5
  260. telnyx/resources/verifications/actions.py +7 -7
  261. telnyx/resources/verifications/by_phone_number/actions.py +3 -3
  262. telnyx/resources/verifications/by_phone_number/by_phone_number.py +3 -3
  263. telnyx/resources/verifications/verifications.py +29 -19
  264. telnyx/resources/verified_numbers/actions.py +3 -3
  265. telnyx/resources/verified_numbers/verified_numbers.py +36 -15
  266. telnyx/resources/verify_profiles.py +226 -44
  267. telnyx/resources/virtual_cross_connects.py +45 -45
  268. telnyx/resources/virtual_cross_connects_coverage.py +9 -9
  269. telnyx/resources/webhook_deliveries.py +9 -9
  270. telnyx/resources/webhooks.py +34 -0
  271. telnyx/resources/well_known.py +198 -0
  272. telnyx/resources/wireguard_interfaces.py +17 -17
  273. telnyx/resources/wireguard_peers.py +21 -21
  274. telnyx/resources/wireless/detail_records_reports.py +17 -17
  275. telnyx/resources/wireless/wireless.py +3 -3
  276. telnyx/resources/wireless_blocklist_values.py +3 -3
  277. telnyx/resources/wireless_blocklists.py +29 -30
  278. telnyx/types/__init__.py +164 -13
  279. telnyx/types/actions/purchase_create_params.py +3 -2
  280. telnyx/types/actions/register_create_params.py +4 -3
  281. telnyx/types/addresses/action_validate_response.py +8 -3
  282. telnyx/types/{advanced_order_update_params.py → advanced_order_update_requirement_group_params.py} +2 -2
  283. telnyx/types/ai/__init__.py +1 -0
  284. telnyx/types/ai/chat_create_completion_params.py +3 -2
  285. telnyx/types/ai/cluster_compute_params.py +3 -2
  286. telnyx/types/ai/{conversations/message_create_params.py → conversation_add_message_params.py} +6 -5
  287. telnyx/types/ai/conversations/__init__.py +0 -1
  288. telnyx/types/ai/embedding_list_params.py +3 -2
  289. telnyx/types/ai/inference_embedding_bucket_ids_param.py +3 -2
  290. telnyx/types/ai/inference_embedding_transfer_tool_params.py +6 -0
  291. telnyx/types/ai/inference_embedding_transfer_tool_params_param.py +6 -0
  292. telnyx/types/ai/inference_embedding_webhook_tool_params.py +2 -0
  293. telnyx/types/ai/inference_embedding_webhook_tool_params_param.py +8 -4
  294. telnyx/types/ai/voice_settings.py +49 -2
  295. telnyx/types/ai/voice_settings_param.py +49 -2
  296. telnyx/types/brand_create_params.py +2 -1
  297. telnyx/types/brand_update_params.py +2 -1
  298. telnyx/types/bundle_pricing/billing_bundle_list_params.py +4 -3
  299. telnyx/types/bundle_pricing/user_bundle_list_params.py +4 -3
  300. telnyx/types/bundle_pricing/user_bundle_list_unused_params.py +4 -3
  301. telnyx/types/call_ai_gather_ended_webhook_event.py +78 -0
  302. telnyx/types/call_ai_gather_message_history_updated_webhook_event.py +69 -0
  303. telnyx/types/call_ai_gather_partial_results_webhook_event.py +75 -0
  304. telnyx/types/call_answered_webhook_event.py +75 -0
  305. telnyx/types/call_bridged_webhook_event.py +58 -0
  306. telnyx/types/call_control_application_update_params.py +3 -2
  307. telnyx/types/call_conversation_ended_webhook_event.py +84 -0
  308. telnyx/types/call_conversation_insights_generated_webhook_event.py +67 -0
  309. telnyx/types/call_dial_params.py +14 -6
  310. telnyx/types/call_dtmf_received_webhook_event.py +61 -0
  311. telnyx/types/call_enqueued_webhook_event.py +59 -0
  312. telnyx/types/call_fork_started_webhook_event.py +53 -0
  313. telnyx/types/call_fork_stopped_webhook_event.py +53 -0
  314. telnyx/types/call_gather_ended_webhook_event.py +64 -0
  315. telnyx/types/call_hangup_webhook_event.py +150 -0
  316. telnyx/types/call_initiated_webhook_event.py +96 -0
  317. telnyx/types/call_left_queue_webhook_event.py +62 -0
  318. telnyx/types/call_machine_detection_ended_webhook_event.py +61 -0
  319. telnyx/types/call_machine_greeting_ended_webhook_event.py +61 -0
  320. telnyx/types/call_machine_premium_detection_ended_webhook_event.py +63 -0
  321. telnyx/types/call_machine_premium_greeting_ended_webhook_event.py +61 -0
  322. telnyx/types/call_playback_ended_webhook_event.py +70 -0
  323. telnyx/types/call_playback_started_webhook_event.py +62 -0
  324. telnyx/types/call_recording_error_webhook_event.py +60 -0
  325. telnyx/types/call_recording_saved_webhook_event.py +94 -0
  326. telnyx/types/call_recording_transcription_saved_webhook_event.py +71 -0
  327. telnyx/types/call_refer_completed_webhook_event.py +61 -0
  328. telnyx/types/call_refer_failed_webhook_event.py +61 -0
  329. telnyx/types/call_refer_started_webhook_event.py +61 -0
  330. telnyx/types/call_siprec_failed_webhook_event.py +53 -0
  331. telnyx/types/call_siprec_started_webhook_event.py +50 -0
  332. telnyx/types/call_siprec_stopped_webhook_event.py +53 -0
  333. telnyx/types/call_speak_ended_webhook_event.py +53 -0
  334. telnyx/types/call_speak_started_webhook_event.py +50 -0
  335. telnyx/types/call_streaming_failed_webhook_event.py +70 -0
  336. telnyx/types/call_streaming_started_webhook_event.py +53 -0
  337. telnyx/types/call_streaming_stopped_webhook_event.py +53 -0
  338. telnyx/types/calls/action_answer_params.py +1 -2
  339. telnyx/types/calls/action_gather_using_ai_params.py +5 -8
  340. telnyx/types/calls/action_start_streaming_params.py +4 -2
  341. telnyx/types/calls/action_start_transcription_params.py +260 -6
  342. telnyx/types/calls/action_transfer_params.py +50 -0
  343. telnyx/types/calls/transcription_engine_a_config_param.py +4 -3
  344. telnyx/types/calls/transcription_start_request_param.py +261 -6
  345. telnyx/types/campaign_builder_create_params.py +4 -3
  346. telnyx/types/campaign_status_update_webhook_event.py +26 -0
  347. telnyx/types/campaign_submit_appeal_response.py +0 -3
  348. telnyx/types/conference_created_webhook_event.py +53 -0
  349. telnyx/types/conference_ended_webhook_event.py +56 -0
  350. telnyx/types/conference_floor_changed_webhook_event.py +45 -0
  351. telnyx/types/conference_participant_joined_webhook_event.py +53 -0
  352. telnyx/types/conference_participant_left_webhook_event.py +53 -0
  353. telnyx/types/conference_participant_playback_ended_webhook_event.py +65 -0
  354. telnyx/types/conference_participant_playback_started_webhook_event.py +65 -0
  355. telnyx/types/conference_participant_speak_ended_webhook_event.py +56 -0
  356. telnyx/types/conference_participant_speak_started_webhook_event.py +56 -0
  357. telnyx/types/conference_playback_ended_webhook_event.py +49 -0
  358. telnyx/types/conference_playback_started_webhook_event.py +49 -0
  359. telnyx/types/conference_recording_saved_webhook_event.py +103 -0
  360. telnyx/types/conference_speak_ended_webhook_event.py +40 -0
  361. telnyx/types/conference_speak_started_webhook_event.py +40 -0
  362. telnyx/types/conferences/action_hold_params.py +3 -2
  363. telnyx/types/conferences/action_join_params.py +3 -2
  364. telnyx/types/conferences/action_mute_params.py +3 -2
  365. telnyx/types/conferences/action_play_params.py +2 -2
  366. telnyx/types/conferences/action_speak_params.py +3 -2
  367. telnyx/types/conferences/action_stop_params.py +3 -2
  368. telnyx/types/conferences/action_unhold_params.py +3 -2
  369. telnyx/types/conferences/action_unmute_params.py +3 -2
  370. telnyx/types/conferences/action_update_params.py +3 -2
  371. telnyx/types/country_coverage_retrieve_country_response.py +7 -0
  372. telnyx/types/country_coverage_retrieve_response.py +7 -0
  373. telnyx/types/credential_connection_create_params.py +3 -2
  374. telnyx/types/credential_connection_update_params.py +3 -2
  375. telnyx/types/credential_inbound_param.py +3 -2
  376. telnyx/types/custom_sip_header.py +13 -0
  377. telnyx/types/customer_service_record_list_params.py +2 -1
  378. telnyx/types/customer_service_record_status_changed_webhook_event.py +55 -0
  379. telnyx/types/customer_service_record_verify_phone_number_coverage_params.py +3 -2
  380. telnyx/types/delivery_update_webhook_event.py +40 -0
  381. telnyx/types/detail_record_list_params.py +4 -2
  382. telnyx/types/document_list_params.py +2 -1
  383. telnyx/types/external_connection_create_params.py +4 -2
  384. telnyx/types/external_connection_update_params.py +4 -2
  385. telnyx/types/external_connections/civic_address_list_params.py +3 -2
  386. telnyx/types/external_connections/upload_create_params.py +3 -1
  387. telnyx/types/fax_application_create_params.py +3 -2
  388. telnyx/types/fax_application_update_params.py +3 -2
  389. telnyx/types/fax_delivered_webhook_event.py +69 -0
  390. telnyx/types/fax_failed_webhook_event.py +66 -0
  391. telnyx/types/fax_media_processed_webhook_event.py +63 -0
  392. telnyx/types/fax_queued_webhook_event.py +63 -0
  393. telnyx/types/fax_sending_started_webhook_event.py +63 -0
  394. telnyx/types/fqdn_connection_create_params.py +3 -2
  395. telnyx/types/fqdn_connection_update_params.py +3 -2
  396. telnyx/types/global_ip_latency_retrieve_response.py +7 -7
  397. telnyx/types/inbound_fqdn_param.py +4 -2
  398. telnyx/types/inbound_ip_param.py +3 -2
  399. telnyx/types/inbound_message_webhook_event.py +227 -0
  400. telnyx/types/ip_connection_create_params.py +4 -3
  401. telnyx/types/ip_connection_update_params.py +3 -2
  402. telnyx/types/legacy/__init__.py +3 -0
  403. telnyx/types/legacy/reporting/__init__.py +12 -0
  404. telnyx/types/legacy/reporting/batch_detail_records/__init__.py +23 -0
  405. telnyx/types/legacy/reporting/batch_detail_records/cdr_detailed_req_response.py +63 -0
  406. telnyx/types/legacy/reporting/batch_detail_records/mdr_detail_report_response.py +42 -0
  407. telnyx/types/legacy/reporting/batch_detail_records/messaging_create_params.py +55 -0
  408. telnyx/types/legacy/reporting/batch_detail_records/messaging_create_response.py +12 -0
  409. telnyx/types/legacy/reporting/batch_detail_records/messaging_delete_response.py +12 -0
  410. telnyx/types/legacy/reporting/batch_detail_records/messaging_list_response.py +24 -0
  411. telnyx/types/legacy/reporting/batch_detail_records/messaging_retrieve_response.py +12 -0
  412. telnyx/types/legacy/reporting/batch_detail_records/speech_to_text_create_params.py +19 -0
  413. telnyx/types/legacy/reporting/batch_detail_records/speech_to_text_create_response.py +12 -0
  414. telnyx/types/legacy/reporting/batch_detail_records/speech_to_text_delete_response.py +12 -0
  415. telnyx/types/legacy/reporting/batch_detail_records/speech_to_text_list_response.py +12 -0
  416. telnyx/types/legacy/reporting/batch_detail_records/speech_to_text_retrieve_response.py +12 -0
  417. telnyx/types/legacy/reporting/batch_detail_records/stt_detail_report_response.py +27 -0
  418. telnyx/types/legacy/reporting/batch_detail_records/voice_create_params.py +57 -0
  419. telnyx/types/legacy/reporting/batch_detail_records/voice_create_response.py +13 -0
  420. telnyx/types/legacy/reporting/batch_detail_records/voice_delete_response.py +13 -0
  421. telnyx/types/legacy/reporting/batch_detail_records/voice_list_response.py +24 -0
  422. telnyx/types/legacy/reporting/batch_detail_records/voice_retrieve_fields_response.py +23 -0
  423. telnyx/types/legacy/reporting/batch_detail_records/voice_retrieve_response.py +13 -0
  424. telnyx/types/legacy/reporting/filter.py +31 -0
  425. telnyx/types/legacy/reporting/filter_param.py +30 -0
  426. telnyx/types/legacy/reporting/usage_report_retrieve_speech_to_text_params.py +17 -0
  427. telnyx/types/legacy/reporting/usage_report_retrieve_speech_to_text_response.py +11 -0
  428. telnyx/types/legacy/reporting/usage_reports/__init__.py +20 -0
  429. telnyx/types/legacy/reporting/usage_reports/cdr_usage_report_response_legacy.py +43 -0
  430. telnyx/types/legacy/reporting/usage_reports/mdr_usage_report_response_legacy.py +38 -0
  431. telnyx/types/legacy/reporting/usage_reports/messaging_create_params.py +29 -0
  432. telnyx/types/legacy/reporting/usage_reports/messaging_create_response.py +13 -0
  433. telnyx/types/legacy/reporting/usage_reports/messaging_delete_response.py +13 -0
  434. telnyx/types/legacy/reporting/usage_reports/messaging_list_params.py +15 -0
  435. telnyx/types/legacy/reporting/usage_reports/messaging_list_response.py +24 -0
  436. telnyx/types/legacy/reporting/usage_reports/messaging_retrieve_response.py +13 -0
  437. telnyx/types/legacy/reporting/usage_reports/number_lookup_create_params.py +26 -0
  438. telnyx/types/legacy/reporting/usage_reports/number_lookup_list_params.py +13 -0
  439. telnyx/types/legacy/reporting/usage_reports/voice_create_params.py +40 -0
  440. telnyx/types/legacy/reporting/usage_reports/voice_create_response.py +13 -0
  441. telnyx/types/legacy/reporting/usage_reports/voice_delete_response.py +13 -0
  442. telnyx/types/legacy/reporting/usage_reports/voice_list_params.py +15 -0
  443. telnyx/types/legacy/reporting/usage_reports/voice_list_response.py +24 -0
  444. telnyx/types/legacy/reporting/usage_reports/voice_retrieve_response.py +13 -0
  445. telnyx/types/media_list_params.py +3 -2
  446. telnyx/types/message_schedule_params.py +3 -2
  447. telnyx/types/message_send_group_mms_params.py +3 -3
  448. telnyx/types/message_send_long_code_params.py +2 -2
  449. telnyx/types/message_send_number_pool_params.py +3 -2
  450. telnyx/types/message_send_params.py +3 -2
  451. telnyx/types/message_send_short_code_params.py +2 -2
  452. telnyx/types/messaging/rc_list_bulk_capabilities_params.py +3 -2
  453. telnyx/types/messaging_hosted_number_order_check_eligibility_params.py +3 -2
  454. telnyx/types/messaging_hosted_number_order_create_params.py +3 -2
  455. telnyx/types/messaging_hosted_number_order_create_verification_codes_params.py +3 -2
  456. telnyx/types/messaging_numbers_bulk_update_create_params.py +3 -2
  457. telnyx/types/messaging_profile_create_params.py +3 -2
  458. telnyx/types/messaging_profile_update_params.py +3 -2
  459. telnyx/types/messaging_profiles/autoresp_config_create_params.py +3 -2
  460. telnyx/types/messaging_profiles/autoresp_config_update_params.py +3 -2
  461. telnyx/types/messsage_rcs_params.py +2 -2
  462. telnyx/types/number_order_status_update_webhook_event.py +38 -0
  463. telnyx/types/numbers_feature_create_params.py +3 -2
  464. telnyx/types/oauth_client.py +59 -0
  465. telnyx/types/oauth_client_create_params.py +39 -0
  466. telnyx/types/oauth_client_create_response.py +12 -0
  467. telnyx/types/oauth_client_list_params.py +38 -0
  468. telnyx/types/oauth_client_list_response.py +28 -0
  469. telnyx/types/oauth_client_retrieve_response.py +12 -0
  470. telnyx/types/oauth_client_update_params.py +36 -0
  471. telnyx/types/oauth_client_update_response.py +12 -0
  472. telnyx/types/oauth_grant.py +29 -0
  473. telnyx/types/oauth_grant_delete_response.py +12 -0
  474. telnyx/types/oauth_grant_list_params.py +17 -0
  475. telnyx/types/oauth_grant_list_response.py +28 -0
  476. telnyx/types/oauth_grant_retrieve_response.py +12 -0
  477. telnyx/types/oauth_grants_params.py +15 -0
  478. telnyx/types/oauth_grants_response.py +10 -0
  479. telnyx/types/oauth_introspect_params.py +12 -0
  480. telnyx/types/oauth_introspect_response.py +30 -0
  481. telnyx/types/oauth_register_params.py +39 -0
  482. telnyx/types/oauth_register_response.py +45 -0
  483. telnyx/types/oauth_retrieve_authorize_params.py +30 -0
  484. telnyx/types/oauth_retrieve_jwks_response.py +25 -0
  485. telnyx/types/oauth_retrieve_response.py +47 -0
  486. telnyx/types/oauth_token_params.py +33 -0
  487. telnyx/types/oauth_token_response.py +25 -0
  488. telnyx/types/outbound_call_recording_param.py +3 -2
  489. telnyx/types/outbound_voice_profile_create_params.py +4 -3
  490. telnyx/types/outbound_voice_profile_update_params.py +4 -3
  491. telnyx/types/phone_number_delete_response.py +7 -0
  492. telnyx/types/phone_number_detailed.py +7 -0
  493. telnyx/types/phone_number_list_params.py +9 -2
  494. telnyx/types/phone_number_slim_list_params.py +3 -2
  495. telnyx/types/phone_number_update_params.py +3 -2
  496. telnyx/types/phone_numbers/action_verify_ownership_params.py +3 -2
  497. telnyx/types/phone_numbers/job_delete_batch_params.py +3 -2
  498. telnyx/types/phone_numbers/job_update_batch_params.py +10 -3
  499. telnyx/types/phone_numbers/job_update_emergency_settings_batch_params.py +4 -2
  500. telnyx/types/portability_check_run_params.py +3 -2
  501. telnyx/types/porting/export_porting_orders_csv_report_param.py +2 -1
  502. telnyx/types/porting_order.py +3 -0
  503. telnyx/types/porting_order_create_params.py +6 -2
  504. telnyx/types/porting_order_list_params.py +52 -31
  505. telnyx/types/porting_order_phone_number_configuration_param.py +3 -2
  506. telnyx/types/porting_order_update_params.py +2 -0
  507. telnyx/types/porting_orders/action_requirement_list_params.py +3 -2
  508. telnyx/types/porting_orders/phone_number_block_list_params.py +5 -3
  509. telnyx/types/porting_orders/phone_number_configuration_list_params.py +22 -21
  510. telnyx/types/porting_orders/verification_code_send_params.py +3 -2
  511. telnyx/types/portout_list_params.py +2 -1
  512. telnyx/types/portouts/export_portouts_csv_report_param.py +3 -2
  513. telnyx/types/recordings/action_delete_params.py +3 -2
  514. telnyx/types/replaced_link_click_webhook_event.py +32 -0
  515. telnyx/types/report_list_wdrs_params.py +3 -2
  516. telnyx/types/reports/mdr_usage_report_fetch_sync_params.py +3 -2
  517. telnyx/types/rooms/sessions/action_kick_params.py +5 -3
  518. telnyx/types/rooms/sessions/action_mute_params.py +5 -3
  519. telnyx/types/rooms/sessions/action_unmute_params.py +5 -3
  520. telnyx/types/shared/__init__.py +1 -0
  521. telnyx/types/{error.py → shared/api_error.py} +3 -3
  522. telnyx/types/shared/simple_sim_card.py +15 -0
  523. telnyx/types/sim_card.py +12 -0
  524. telnyx/types/sim_card_list_params.py +2 -1
  525. telnyx/types/sim_card_update_params.py +4 -3
  526. telnyx/types/sim_cards/action_bulk_set_public_ips_params.py +3 -2
  527. telnyx/types/sim_cards/action_validate_registration_codes_params.py +3 -2
  528. telnyx/types/sip_header.py +15 -0
  529. telnyx/types/stream_bidirectional_codec.py +1 -1
  530. telnyx/types/stream_codec.py +1 -1
  531. telnyx/types/streaming_failed_webhook_event.py +70 -0
  532. telnyx/types/streaming_started_webhook_event.py +53 -0
  533. telnyx/types/streaming_stopped_webhook_event.py +53 -0
  534. telnyx/types/texml_application_create_params.py +2 -2
  535. telnyx/types/texml_application_update_params.py +2 -2
  536. telnyx/types/transcription_webhook_event.py +72 -0
  537. telnyx/types/unwrap_webhook_event.py +138 -0
  538. telnyx/types/usage_report_list_params.py +5 -4
  539. telnyx/types/verification_trigger_call_params.py +7 -0
  540. telnyx/types/verified_number_create_params.py +10 -0
  541. telnyx/types/verify_profile.py +18 -3
  542. telnyx/types/verify_profile_create_params.py +6 -4
  543. telnyx/types/verify_profile_create_template_params.py +12 -0
  544. telnyx/types/verify_profile_create_template_response.py +12 -0
  545. telnyx/types/verify_profile_message_template_response.py +13 -0
  546. telnyx/types/verify_profile_retrieve_templates_response.py +4 -9
  547. telnyx/types/verify_profile_update_params.py +6 -4
  548. telnyx/types/verify_profile_update_template_params.py +12 -0
  549. telnyx/types/verify_profile_update_template_response.py +12 -0
  550. telnyx/types/video_region_param.py +4 -2
  551. telnyx/types/well_known_retrieve_authorization_server_metadata_response.py +42 -0
  552. telnyx/types/well_known_retrieve_protected_resource_metadata_response.py +15 -0
  553. telnyx/types/wireless_blocklist_create_params.py +3 -2
  554. telnyx/types/wireless_blocklist_update_params.py +3 -2
  555. {telnyx-3.2.0a0.dist-info → telnyx-3.3.0.dist-info}/METADATA +60 -19
  556. {telnyx-3.2.0a0.dist-info → telnyx-3.3.0.dist-info}/RECORD +558 -403
  557. telnyx/types/client_create_bucket_params.py +0 -13
  558. telnyx/types/client_delete_objects_params.py +0 -20
  559. telnyx/types/client_get_object_params.py +0 -15
  560. telnyx/types/client_list_objects_params.py +0 -13
  561. telnyx/types/client_put_object_params.py +0 -20
  562. telnyx/types/list_buckets_response.py +0 -20
  563. telnyx/types/list_objects_response.py +0 -24
  564. {telnyx-3.2.0a0.dist-info → telnyx-3.3.0.dist-info}/WHEEL +0 -0
  565. {telnyx-3.2.0a0.dist-info → telnyx-3.3.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,136 @@
1
+ """
2
+ This file contains code from https://github.com/pydantic/pydantic/blob/main/pydantic/v1/datetime_parse.py
3
+ without the Pydantic v1 specific errors.
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ import re
9
+ from typing import Dict, Union, Optional
10
+ from datetime import date, datetime, timezone, timedelta
11
+
12
+ from .._types import StrBytesIntFloat
13
+
14
+ date_expr = r"(?P<year>\d{4})-(?P<month>\d{1,2})-(?P<day>\d{1,2})"
15
+ time_expr = (
16
+ r"(?P<hour>\d{1,2}):(?P<minute>\d{1,2})"
17
+ r"(?::(?P<second>\d{1,2})(?:\.(?P<microsecond>\d{1,6})\d{0,6})?)?"
18
+ r"(?P<tzinfo>Z|[+-]\d{2}(?::?\d{2})?)?$"
19
+ )
20
+
21
+ date_re = re.compile(f"{date_expr}$")
22
+ datetime_re = re.compile(f"{date_expr}[T ]{time_expr}")
23
+
24
+
25
+ EPOCH = datetime(1970, 1, 1)
26
+ # if greater than this, the number is in ms, if less than or equal it's in seconds
27
+ # (in seconds this is 11th October 2603, in ms it's 20th August 1970)
28
+ MS_WATERSHED = int(2e10)
29
+ # slightly more than datetime.max in ns - (datetime.max - EPOCH).total_seconds() * 1e9
30
+ MAX_NUMBER = int(3e20)
31
+
32
+
33
+ def _get_numeric(value: StrBytesIntFloat, native_expected_type: str) -> Union[None, int, float]:
34
+ if isinstance(value, (int, float)):
35
+ return value
36
+ try:
37
+ return float(value)
38
+ except ValueError:
39
+ return None
40
+ except TypeError:
41
+ raise TypeError(f"invalid type; expected {native_expected_type}, string, bytes, int or float") from None
42
+
43
+
44
+ def _from_unix_seconds(seconds: Union[int, float]) -> datetime:
45
+ if seconds > MAX_NUMBER:
46
+ return datetime.max
47
+ elif seconds < -MAX_NUMBER:
48
+ return datetime.min
49
+
50
+ while abs(seconds) > MS_WATERSHED:
51
+ seconds /= 1000
52
+ dt = EPOCH + timedelta(seconds=seconds)
53
+ return dt.replace(tzinfo=timezone.utc)
54
+
55
+
56
+ def _parse_timezone(value: Optional[str]) -> Union[None, int, timezone]:
57
+ if value == "Z":
58
+ return timezone.utc
59
+ elif value is not None:
60
+ offset_mins = int(value[-2:]) if len(value) > 3 else 0
61
+ offset = 60 * int(value[1:3]) + offset_mins
62
+ if value[0] == "-":
63
+ offset = -offset
64
+ return timezone(timedelta(minutes=offset))
65
+ else:
66
+ return None
67
+
68
+
69
+ def parse_datetime(value: Union[datetime, StrBytesIntFloat]) -> datetime:
70
+ """
71
+ Parse a datetime/int/float/string and return a datetime.datetime.
72
+
73
+ This function supports time zone offsets. When the input contains one,
74
+ the output uses a timezone with a fixed offset from UTC.
75
+
76
+ Raise ValueError if the input is well formatted but not a valid datetime.
77
+ Raise ValueError if the input isn't well formatted.
78
+ """
79
+ if isinstance(value, datetime):
80
+ return value
81
+
82
+ number = _get_numeric(value, "datetime")
83
+ if number is not None:
84
+ return _from_unix_seconds(number)
85
+
86
+ if isinstance(value, bytes):
87
+ value = value.decode()
88
+
89
+ assert not isinstance(value, (float, int))
90
+
91
+ match = datetime_re.match(value)
92
+ if match is None:
93
+ raise ValueError("invalid datetime format")
94
+
95
+ kw = match.groupdict()
96
+ if kw["microsecond"]:
97
+ kw["microsecond"] = kw["microsecond"].ljust(6, "0")
98
+
99
+ tzinfo = _parse_timezone(kw.pop("tzinfo"))
100
+ kw_: Dict[str, Union[None, int, timezone]] = {k: int(v) for k, v in kw.items() if v is not None}
101
+ kw_["tzinfo"] = tzinfo
102
+
103
+ return datetime(**kw_) # type: ignore
104
+
105
+
106
+ def parse_date(value: Union[date, StrBytesIntFloat]) -> date:
107
+ """
108
+ Parse a date/int/float/string and return a datetime.date.
109
+
110
+ Raise ValueError if the input is well formatted but not a valid date.
111
+ Raise ValueError if the input isn't well formatted.
112
+ """
113
+ if isinstance(value, date):
114
+ if isinstance(value, datetime):
115
+ return value.date()
116
+ else:
117
+ return value
118
+
119
+ number = _get_numeric(value, "date")
120
+ if number is not None:
121
+ return _from_unix_seconds(number).date()
122
+
123
+ if isinstance(value, bytes):
124
+ value = value.decode()
125
+
126
+ assert not isinstance(value, (float, int))
127
+ match = date_re.match(value)
128
+ if match is None:
129
+ raise ValueError("invalid date format")
130
+
131
+ kw = {k: int(v) for k, v in match.groupdict().items()}
132
+
133
+ try:
134
+ return date(**kw)
135
+ except ValueError:
136
+ raise ValueError("invalid date format") from None
@@ -16,18 +16,20 @@ from ._utils import (
16
16
  lru_cache,
17
17
  is_mapping,
18
18
  is_iterable,
19
+ is_sequence,
19
20
  )
20
21
  from .._files import is_base64_file_input
22
+ from ._compat import get_origin, is_typeddict
21
23
  from ._typing import (
22
24
  is_list_type,
23
25
  is_union_type,
24
26
  extract_type_arg,
25
27
  is_iterable_type,
26
28
  is_required_type,
29
+ is_sequence_type,
27
30
  is_annotated_type,
28
31
  strip_annotated_type,
29
32
  )
30
- from .._compat import get_origin, model_dump, is_typeddict
31
33
 
32
34
  _T = TypeVar("_T")
33
35
 
@@ -167,6 +169,8 @@ def _transform_recursive(
167
169
 
168
170
  Defaults to the same value as the `annotation` argument.
169
171
  """
172
+ from .._compat import model_dump
173
+
170
174
  if inner_type is None:
171
175
  inner_type = annotation
172
176
 
@@ -184,6 +188,8 @@ def _transform_recursive(
184
188
  (is_list_type(stripped_type) and is_list(data))
185
189
  # Iterable[T]
186
190
  or (is_iterable_type(stripped_type) and is_iterable(data) and not isinstance(data, str))
191
+ # Sequence[T]
192
+ or (is_sequence_type(stripped_type) and is_sequence(data) and not isinstance(data, str))
187
193
  ):
188
194
  # dicts are technically iterable, but it is an iterable on the keys of the dict and is not usually
189
195
  # intended as an iterable, so we don't transform it.
@@ -262,7 +268,7 @@ def _transform_typeddict(
262
268
  annotations = get_type_hints(expected_type, include_extras=True)
263
269
  for key, value in data.items():
264
270
  if not is_given(value):
265
- # we don't need to include `NotGiven` values here as they'll
271
+ # we don't need to include omitted values here as they'll
266
272
  # be stripped out before the request is sent anyway
267
273
  continue
268
274
 
@@ -329,6 +335,8 @@ async def _async_transform_recursive(
329
335
 
330
336
  Defaults to the same value as the `annotation` argument.
331
337
  """
338
+ from .._compat import model_dump
339
+
332
340
  if inner_type is None:
333
341
  inner_type = annotation
334
342
 
@@ -346,6 +354,8 @@ async def _async_transform_recursive(
346
354
  (is_list_type(stripped_type) and is_list(data))
347
355
  # Iterable[T]
348
356
  or (is_iterable_type(stripped_type) and is_iterable(data) and not isinstance(data, str))
357
+ # Sequence[T]
358
+ or (is_sequence_type(stripped_type) and is_sequence(data) and not isinstance(data, str))
349
359
  ):
350
360
  # dicts are technically iterable, but it is an iterable on the keys of the dict and is not usually
351
361
  # intended as an iterable, so we don't transform it.
@@ -424,7 +434,7 @@ async def _async_transform_typeddict(
424
434
  annotations = get_type_hints(expected_type, include_extras=True)
425
435
  for key, value in data.items():
426
436
  if not is_given(value):
427
- # we don't need to include `NotGiven` values here as they'll
437
+ # we don't need to include omitted values here as they'll
428
438
  # be stripped out before the request is sent anyway
429
439
  continue
430
440
 
telnyx/_utils/_typing.py CHANGED
@@ -15,7 +15,7 @@ from typing_extensions import (
15
15
 
16
16
  from ._utils import lru_cache
17
17
  from .._types import InheritsGeneric
18
- from .._compat import is_union as _is_union
18
+ from ._compat import is_union as _is_union
19
19
 
20
20
 
21
21
  def is_annotated_type(typ: type) -> bool:
@@ -26,6 +26,11 @@ def is_list_type(typ: type) -> bool:
26
26
  return (get_origin(typ) or typ) == list
27
27
 
28
28
 
29
+ def is_sequence_type(typ: type) -> bool:
30
+ origin = get_origin(typ) or typ
31
+ return origin == typing_extensions.Sequence or origin == typing.Sequence or origin == _c_abc.Sequence
32
+
33
+
29
34
  def is_iterable_type(typ: type) -> bool:
30
35
  """If the given type is `typing.Iterable[T]`"""
31
36
  origin = get_origin(typ) or typ
telnyx/_utils/_utils.py CHANGED
@@ -21,8 +21,7 @@ from typing_extensions import TypeGuard
21
21
 
22
22
  import sniffio
23
23
 
24
- from .._types import NotGiven, FileTypes, NotGivenOr, HeadersLike
25
- from .._compat import parse_date as parse_date, parse_datetime as parse_datetime
24
+ from .._types import Omit, NotGiven, FileTypes, HeadersLike
26
25
 
27
26
  _T = TypeVar("_T")
28
27
  _TupleT = TypeVar("_TupleT", bound=Tuple[object, ...])
@@ -64,7 +63,7 @@ def _extract_items(
64
63
  try:
65
64
  key = path[index]
66
65
  except IndexError:
67
- if isinstance(obj, NotGiven):
66
+ if not is_given(obj):
68
67
  # no value was provided - we can safely ignore
69
68
  return []
70
69
 
@@ -127,8 +126,8 @@ def _extract_items(
127
126
  return []
128
127
 
129
128
 
130
- def is_given(obj: NotGivenOr[_T]) -> TypeGuard[_T]:
131
- return not isinstance(obj, NotGiven)
129
+ def is_given(obj: _T | NotGiven | Omit) -> TypeGuard[_T]:
130
+ return not isinstance(obj, NotGiven) and not isinstance(obj, Omit)
132
131
 
133
132
 
134
133
  # Type safe methods for narrowing types with TypeVars.
telnyx/_version.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "telnyx"
4
- __version__ = "3.2.0-alpha" # x-release-please-version
4
+ __version__ = "3.3.0" # x-release-please-version
@@ -80,6 +80,14 @@ from .media import (
80
80
  MediaResourceWithStreamingResponse,
81
81
  AsyncMediaResourceWithStreamingResponse,
82
82
  )
83
+ from .oauth import (
84
+ OAuthResource,
85
+ AsyncOAuthResource,
86
+ OAuthResourceWithRawResponse,
87
+ AsyncOAuthResourceWithRawResponse,
88
+ OAuthResourceWithStreamingResponse,
89
+ AsyncOAuthResourceWithStreamingResponse,
90
+ )
83
91
  from .rooms import (
84
92
  RoomsResource,
85
93
  AsyncRoomsResource,
@@ -96,6 +104,14 @@ from .texml import (
96
104
  TexmlResourceWithStreamingResponse,
97
105
  AsyncTexmlResourceWithStreamingResponse,
98
106
  )
107
+ from .legacy import (
108
+ LegacyResource,
109
+ AsyncLegacyResource,
110
+ LegacyResourceWithRawResponse,
111
+ AsyncLegacyResourceWithRawResponse,
112
+ LegacyResourceWithStreamingResponse,
113
+ AsyncLegacyResourceWithStreamingResponse,
114
+ )
99
115
  from .queues import (
100
116
  QueuesResource,
101
117
  AsyncQueuesResource,
@@ -208,6 +224,7 @@ from .portouts import (
208
224
  PortoutsResourceWithStreamingResponse,
209
225
  AsyncPortoutsResourceWithStreamingResponse,
210
226
  )
227
+ from .webhooks import WebhooksResource, AsyncWebhooksResource
211
228
  from .wireless import (
212
229
  WirelessResource,
213
230
  AsyncWirelessResource,
@@ -280,6 +297,14 @@ from .recordings import (
280
297
  RecordingsResourceWithStreamingResponse,
281
298
  AsyncRecordingsResourceWithStreamingResponse,
282
299
  )
300
+ from .well_known import (
301
+ WellKnownResource,
302
+ AsyncWellKnownResource,
303
+ WellKnownResourceWithRawResponse,
304
+ AsyncWellKnownResourceWithRawResponse,
305
+ WellKnownResourceWithStreamingResponse,
306
+ AsyncWellKnownResourceWithStreamingResponse,
307
+ )
283
308
  from .call_events import (
284
309
  CallEventsResource,
285
310
  AsyncCallEventsResource,
@@ -328,6 +353,14 @@ from .audit_events import (
328
353
  AuditEventsResourceWithStreamingResponse,
329
354
  AsyncAuditEventsResourceWithStreamingResponse,
330
355
  )
356
+ from .oauth_grants import (
357
+ OAuthGrantsResource,
358
+ AsyncOAuthGrantsResource,
359
+ OAuthGrantsResourceWithRawResponse,
360
+ AsyncOAuthGrantsResourceWithRawResponse,
361
+ OAuthGrantsResourceWithStreamingResponse,
362
+ AsyncOAuthGrantsResourceWithStreamingResponse,
363
+ )
331
364
  from .requirements import (
332
365
  RequirementsResource,
333
366
  AsyncRequirementsResource,
@@ -360,6 +393,14 @@ from .number_orders import (
360
393
  NumberOrdersResourceWithStreamingResponse,
361
394
  AsyncNumberOrdersResourceWithStreamingResponse,
362
395
  )
396
+ from .oauth_clients import (
397
+ OAuthClientsResource,
398
+ AsyncOAuthClientsResource,
399
+ OAuthClientsResourceWithRawResponse,
400
+ AsyncOAuthClientsResourceWithRawResponse,
401
+ OAuthClientsResourceWithStreamingResponse,
402
+ AsyncOAuthClientsResourceWithStreamingResponse,
403
+ )
363
404
  from .phone_numbers import (
364
405
  PhoneNumbersResource,
365
406
  AsyncPhoneNumbersResource,
@@ -1170,6 +1211,32 @@ from .phone_numbers_regulatory_requirements import (
1170
1211
  )
1171
1212
 
1172
1213
  __all__ = [
1214
+ "LegacyResource",
1215
+ "AsyncLegacyResource",
1216
+ "LegacyResourceWithRawResponse",
1217
+ "AsyncLegacyResourceWithRawResponse",
1218
+ "LegacyResourceWithStreamingResponse",
1219
+ "AsyncLegacyResourceWithStreamingResponse",
1220
+ "OAuthResource",
1221
+ "AsyncOAuthResource",
1222
+ "OAuthResourceWithRawResponse",
1223
+ "AsyncOAuthResourceWithRawResponse",
1224
+ "OAuthResourceWithStreamingResponse",
1225
+ "AsyncOAuthResourceWithStreamingResponse",
1226
+ "OAuthClientsResource",
1227
+ "AsyncOAuthClientsResource",
1228
+ "OAuthClientsResourceWithRawResponse",
1229
+ "AsyncOAuthClientsResourceWithRawResponse",
1230
+ "OAuthClientsResourceWithStreamingResponse",
1231
+ "AsyncOAuthClientsResourceWithStreamingResponse",
1232
+ "OAuthGrantsResource",
1233
+ "AsyncOAuthGrantsResource",
1234
+ "OAuthGrantsResourceWithRawResponse",
1235
+ "AsyncOAuthGrantsResourceWithRawResponse",
1236
+ "OAuthGrantsResourceWithStreamingResponse",
1237
+ "AsyncOAuthGrantsResourceWithStreamingResponse",
1238
+ "WebhooksResource",
1239
+ "AsyncWebhooksResource",
1173
1240
  "AccessIPAddressResource",
1174
1241
  "AsyncAccessIPAddressResource",
1175
1242
  "AccessIPAddressResourceWithRawResponse",
@@ -2046,4 +2113,10 @@ __all__ = [
2046
2113
  "AsyncPartnerCampaignsResourceWithRawResponse",
2047
2114
  "PartnerCampaignsResourceWithStreamingResponse",
2048
2115
  "AsyncPartnerCampaignsResourceWithStreamingResponse",
2116
+ "WellKnownResource",
2117
+ "AsyncWellKnownResource",
2118
+ "WellKnownResourceWithRawResponse",
2119
+ "AsyncWellKnownResourceWithRawResponse",
2120
+ "WellKnownResourceWithStreamingResponse",
2121
+ "AsyncWellKnownResourceWithStreamingResponse",
2049
2122
  ]
@@ -5,7 +5,7 @@ from __future__ import annotations
5
5
  import httpx
6
6
 
7
7
  from ..types import access_ip_address_list_params, access_ip_address_create_params
8
- from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven
8
+ from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
9
9
  from .._utils import maybe_transform, async_maybe_transform
10
10
  from .._compat import cached_property
11
11
  from .._resource import SyncAPIResource, AsyncAPIResource
@@ -46,13 +46,13 @@ class AccessIPAddressResource(SyncAPIResource):
46
46
  self,
47
47
  *,
48
48
  ip_address: str,
49
- description: str | NotGiven = NOT_GIVEN,
49
+ description: str | Omit = omit,
50
50
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
51
51
  # The extra values given here take precedence over values defined on the client or passed to this method.
52
52
  extra_headers: Headers | None = None,
53
53
  extra_query: Query | None = None,
54
54
  extra_body: Body | None = None,
55
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
55
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
56
56
  ) -> AccessIPAddressResponse:
57
57
  """
58
58
  Create new Access IP Address
@@ -90,7 +90,7 @@ class AccessIPAddressResource(SyncAPIResource):
90
90
  extra_headers: Headers | None = None,
91
91
  extra_query: Query | None = None,
92
92
  extra_body: Body | None = None,
93
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
93
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
94
94
  ) -> AccessIPAddressResponse:
95
95
  """
96
96
  Retrieve an access IP address
@@ -119,14 +119,14 @@ class AccessIPAddressResource(SyncAPIResource):
119
119
  def list(
120
120
  self,
121
121
  *,
122
- filter: access_ip_address_list_params.Filter | NotGiven = NOT_GIVEN,
123
- page: access_ip_address_list_params.Page | NotGiven = NOT_GIVEN,
122
+ filter: access_ip_address_list_params.Filter | Omit = omit,
123
+ page: access_ip_address_list_params.Page | Omit = omit,
124
124
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
125
125
  # The extra values given here take precedence over values defined on the client or passed to this method.
126
126
  extra_headers: Headers | None = None,
127
127
  extra_query: Query | None = None,
128
128
  extra_body: Body | None = None,
129
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
129
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
130
130
  ) -> AccessIPAddressListResponse:
131
131
  """
132
132
  List all Access IP Addresses
@@ -174,7 +174,7 @@ class AccessIPAddressResource(SyncAPIResource):
174
174
  extra_headers: Headers | None = None,
175
175
  extra_query: Query | None = None,
176
176
  extra_body: Body | None = None,
177
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
177
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
178
178
  ) -> AccessIPAddressResponse:
179
179
  """
180
180
  Delete access IP address
@@ -225,13 +225,13 @@ class AsyncAccessIPAddressResource(AsyncAPIResource):
225
225
  self,
226
226
  *,
227
227
  ip_address: str,
228
- description: str | NotGiven = NOT_GIVEN,
228
+ description: str | Omit = omit,
229
229
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
230
230
  # The extra values given here take precedence over values defined on the client or passed to this method.
231
231
  extra_headers: Headers | None = None,
232
232
  extra_query: Query | None = None,
233
233
  extra_body: Body | None = None,
234
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
234
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
235
235
  ) -> AccessIPAddressResponse:
236
236
  """
237
237
  Create new Access IP Address
@@ -269,7 +269,7 @@ class AsyncAccessIPAddressResource(AsyncAPIResource):
269
269
  extra_headers: Headers | None = None,
270
270
  extra_query: Query | None = None,
271
271
  extra_body: Body | None = None,
272
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
272
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
273
273
  ) -> AccessIPAddressResponse:
274
274
  """
275
275
  Retrieve an access IP address
@@ -298,14 +298,14 @@ class AsyncAccessIPAddressResource(AsyncAPIResource):
298
298
  async def list(
299
299
  self,
300
300
  *,
301
- filter: access_ip_address_list_params.Filter | NotGiven = NOT_GIVEN,
302
- page: access_ip_address_list_params.Page | NotGiven = NOT_GIVEN,
301
+ filter: access_ip_address_list_params.Filter | Omit = omit,
302
+ page: access_ip_address_list_params.Page | Omit = omit,
303
303
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
304
304
  # The extra values given here take precedence over values defined on the client or passed to this method.
305
305
  extra_headers: Headers | None = None,
306
306
  extra_query: Query | None = None,
307
307
  extra_body: Body | None = None,
308
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
308
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
309
309
  ) -> AccessIPAddressListResponse:
310
310
  """
311
311
  List all Access IP Addresses
@@ -353,7 +353,7 @@ class AsyncAccessIPAddressResource(AsyncAPIResource):
353
353
  extra_headers: Headers | None = None,
354
354
  extra_query: Query | None = None,
355
355
  extra_body: Body | None = None,
356
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
356
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
357
357
  ) -> AccessIPAddressResponse:
358
358
  """
359
359
  Delete access IP address
@@ -5,7 +5,7 @@ from __future__ import annotations
5
5
  import httpx
6
6
 
7
7
  from ..types import access_ip_range_list_params, access_ip_range_create_params
8
- from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven
8
+ from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
9
9
  from .._utils import maybe_transform, async_maybe_transform
10
10
  from .._compat import cached_property
11
11
  from .._resource import SyncAPIResource, AsyncAPIResource
@@ -46,13 +46,13 @@ class AccessIPRangesResource(SyncAPIResource):
46
46
  self,
47
47
  *,
48
48
  cidr_block: str,
49
- description: str | NotGiven = NOT_GIVEN,
49
+ description: str | Omit = omit,
50
50
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
51
51
  # The extra values given here take precedence over values defined on the client or passed to this method.
52
52
  extra_headers: Headers | None = None,
53
53
  extra_query: Query | None = None,
54
54
  extra_body: Body | None = None,
55
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
55
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
56
56
  ) -> AccessIPRange:
57
57
  """
58
58
  Create new Access IP Range
@@ -84,14 +84,14 @@ class AccessIPRangesResource(SyncAPIResource):
84
84
  def list(
85
85
  self,
86
86
  *,
87
- filter: access_ip_range_list_params.Filter | NotGiven = NOT_GIVEN,
88
- page: access_ip_range_list_params.Page | NotGiven = NOT_GIVEN,
87
+ filter: access_ip_range_list_params.Filter | Omit = omit,
88
+ page: access_ip_range_list_params.Page | Omit = omit,
89
89
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
90
90
  # The extra values given here take precedence over values defined on the client or passed to this method.
91
91
  extra_headers: Headers | None = None,
92
92
  extra_query: Query | None = None,
93
93
  extra_body: Body | None = None,
94
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
94
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
95
95
  ) -> AccessIPRangeListResponse:
96
96
  """
97
97
  List all Access IP Ranges
@@ -141,7 +141,7 @@ class AccessIPRangesResource(SyncAPIResource):
141
141
  extra_headers: Headers | None = None,
142
142
  extra_query: Query | None = None,
143
143
  extra_body: Body | None = None,
144
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
144
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
145
145
  ) -> AccessIPRange:
146
146
  """
147
147
  Delete access IP ranges
@@ -190,13 +190,13 @@ class AsyncAccessIPRangesResource(AsyncAPIResource):
190
190
  self,
191
191
  *,
192
192
  cidr_block: str,
193
- description: str | NotGiven = NOT_GIVEN,
193
+ description: str | Omit = omit,
194
194
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
195
195
  # The extra values given here take precedence over values defined on the client or passed to this method.
196
196
  extra_headers: Headers | None = None,
197
197
  extra_query: Query | None = None,
198
198
  extra_body: Body | None = None,
199
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
199
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
200
200
  ) -> AccessIPRange:
201
201
  """
202
202
  Create new Access IP Range
@@ -228,14 +228,14 @@ class AsyncAccessIPRangesResource(AsyncAPIResource):
228
228
  async def list(
229
229
  self,
230
230
  *,
231
- filter: access_ip_range_list_params.Filter | NotGiven = NOT_GIVEN,
232
- page: access_ip_range_list_params.Page | NotGiven = NOT_GIVEN,
231
+ filter: access_ip_range_list_params.Filter | Omit = omit,
232
+ page: access_ip_range_list_params.Page | Omit = omit,
233
233
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
234
234
  # The extra values given here take precedence over values defined on the client or passed to this method.
235
235
  extra_headers: Headers | None = None,
236
236
  extra_query: Query | None = None,
237
237
  extra_body: Body | None = None,
238
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
238
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
239
239
  ) -> AccessIPRangeListResponse:
240
240
  """
241
241
  List all Access IP Ranges
@@ -285,7 +285,7 @@ class AsyncAccessIPRangesResource(AsyncAPIResource):
285
285
  extra_headers: Headers | None = None,
286
286
  extra_query: Query | None = None,
287
287
  extra_body: Body | None = None,
288
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
288
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
289
289
  ) -> AccessIPRange:
290
290
  """
291
291
  Delete access IP ranges
@@ -2,12 +2,11 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import List
6
5
  from typing_extensions import Literal
7
6
 
8
7
  import httpx
9
8
 
10
- from ..._types import NOT_GIVEN, Body, Query, Headers, NotGiven
9
+ from ..._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
11
10
  from ..._utils import maybe_transform, async_maybe_transform
12
11
  from ..._compat import cached_property
13
12
  from ..._resource import SyncAPIResource, AsyncAPIResource
@@ -48,17 +47,17 @@ class PurchaseResource(SyncAPIResource):
48
47
  self,
49
48
  *,
50
49
  amount: int,
51
- product: str | NotGiven = NOT_GIVEN,
52
- sim_card_group_id: str | NotGiven = NOT_GIVEN,
53
- status: Literal["enabled", "disabled", "standby"] | NotGiven = NOT_GIVEN,
54
- tags: List[str] | NotGiven = NOT_GIVEN,
55
- whitelabel_name: str | NotGiven = NOT_GIVEN,
50
+ product: str | Omit = omit,
51
+ sim_card_group_id: str | Omit = omit,
52
+ status: Literal["enabled", "disabled", "standby"] | Omit = omit,
53
+ tags: SequenceNotStr[str] | Omit = omit,
54
+ whitelabel_name: str | Omit = omit,
56
55
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
57
56
  # The extra values given here take precedence over values defined on the client or passed to this method.
58
57
  extra_headers: Headers | None = None,
59
58
  extra_query: Query | None = None,
60
59
  extra_body: Body | None = None,
61
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
60
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
62
61
  ) -> PurchaseCreateResponse:
63
62
  """
64
63
  Purchases and registers the specified amount of eSIMs to the current user's
@@ -134,17 +133,17 @@ class AsyncPurchaseResource(AsyncAPIResource):
134
133
  self,
135
134
  *,
136
135
  amount: int,
137
- product: str | NotGiven = NOT_GIVEN,
138
- sim_card_group_id: str | NotGiven = NOT_GIVEN,
139
- status: Literal["enabled", "disabled", "standby"] | NotGiven = NOT_GIVEN,
140
- tags: List[str] | NotGiven = NOT_GIVEN,
141
- whitelabel_name: str | NotGiven = NOT_GIVEN,
136
+ product: str | Omit = omit,
137
+ sim_card_group_id: str | Omit = omit,
138
+ status: Literal["enabled", "disabled", "standby"] | Omit = omit,
139
+ tags: SequenceNotStr[str] | Omit = omit,
140
+ whitelabel_name: str | Omit = omit,
142
141
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
143
142
  # The extra values given here take precedence over values defined on the client or passed to this method.
144
143
  extra_headers: Headers | None = None,
145
144
  extra_query: Query | None = None,
146
145
  extra_body: Body | None = None,
147
- timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
146
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
148
147
  ) -> PurchaseCreateResponse:
149
148
  """
150
149
  Purchases and registers the specified amount of eSIMs to the current user's