telnyx 3.7.0a0__py3-none-any.whl → 3.9.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 (215) hide show
  1. telnyx/__init__.py +2 -0
  2. telnyx/_client.py +25 -756
  3. telnyx/_exceptions.py +4 -0
  4. telnyx/_version.py +1 -1
  5. telnyx/resources/__init__.py +3 -1
  6. telnyx/resources/advanced_orders.py +63 -63
  7. telnyx/resources/ai/assistants/assistants.py +15 -17
  8. telnyx/resources/ai/assistants/versions.py +13 -15
  9. telnyx/resources/brand/brand.py +8 -4
  10. telnyx/resources/calls/actions.py +10 -6
  11. telnyx/resources/calls/calls.py +16 -2
  12. telnyx/resources/documents.py +242 -37
  13. telnyx/resources/legacy/reporting/batch_detail_records/messaging.py +3 -2
  14. telnyx/resources/legacy/reporting/batch_detail_records/voice.py +3 -2
  15. telnyx/resources/messaging_profiles/messaging_profiles.py +16 -0
  16. telnyx/resources/messaging_tollfree/verification/requests.py +203 -1
  17. telnyx/resources/outbound_voice_profiles.py +24 -4
  18. telnyx/resources/sim_cards/actions.py +12 -12
  19. telnyx/resources/texml/accounts/calls/calls.py +11 -0
  20. telnyx/resources/texml/accounts/conferences/participants.py +11 -0
  21. telnyx/resources/verified_numbers/verified_numbers.py +25 -4
  22. telnyx/resources/verify_profiles.py +9 -10
  23. telnyx/resources/webhooks.py +152 -4
  24. telnyx/types/__init__.py +18 -15
  25. telnyx/types/access_ip_address_list_response.py +3 -12
  26. telnyx/types/access_ip_range_list_response.py +3 -12
  27. telnyx/types/addresses/action_validate_response.py +7 -2
  28. telnyx/types/{advanced_order_update_params.py → advanced_order_update_requirement_group_params.py} +2 -2
  29. telnyx/types/ai/__init__.py +1 -3
  30. telnyx/types/ai/assistant_import_params.py +1 -1
  31. telnyx/types/ai/assistants/__init__.py +0 -3
  32. telnyx/types/ai/assistants_list.py +4 -88
  33. telnyx/types/ai/import_metadata.py +1 -1
  34. telnyx/types/ai/{assistant_clone_response.py → inference_embedding.py} +2 -2
  35. telnyx/types/ai/inference_embedding_transfer_tool_params.py +6 -0
  36. telnyx/types/ai/inference_embedding_transfer_tool_params_param.py +6 -0
  37. telnyx/types/ai/voice_settings.py +49 -2
  38. telnyx/types/ai/voice_settings_param.py +49 -2
  39. telnyx/types/brand_create_params.py +2 -1
  40. telnyx/types/brand_update_params.py +2 -1
  41. telnyx/types/call_ai_gather_ended_webhook_event1.py +78 -0
  42. telnyx/types/call_ai_gather_message_history_updated_webhook_event1.py +69 -0
  43. telnyx/types/call_ai_gather_partial_results_webhook_event1.py +75 -0
  44. telnyx/types/call_answered_webhook_event1.py +75 -0
  45. telnyx/types/call_bridged_webhook_event1.py +58 -0
  46. telnyx/types/call_conversation_ended_webhook_event1.py +84 -0
  47. telnyx/types/call_conversation_insights_generated_webhook_event1.py +67 -0
  48. telnyx/types/call_dial_params.py +10 -1
  49. telnyx/types/call_dtmf_received_webhook_event1.py +61 -0
  50. telnyx/types/call_enqueued_webhook_event1.py +59 -0
  51. telnyx/types/call_fork_started_webhook_event1.py +53 -0
  52. telnyx/types/call_fork_stopped_webhook_event1.py +53 -0
  53. telnyx/types/call_gather_ended_webhook_event1.py +64 -0
  54. telnyx/types/call_hangup_webhook_event1.py +150 -0
  55. telnyx/types/call_initiated_webhook_event1.py +96 -0
  56. telnyx/types/call_left_queue_webhook_event1.py +62 -0
  57. telnyx/types/call_machine_detection_ended_webhook_event1.py +61 -0
  58. telnyx/types/call_machine_greeting_ended_webhook_event1.py +61 -0
  59. telnyx/types/call_machine_premium_detection_ended_webhook_event1.py +63 -0
  60. telnyx/types/call_machine_premium_greeting_ended_webhook_event1.py +61 -0
  61. telnyx/types/call_playback_ended_webhook_event1.py +70 -0
  62. telnyx/types/call_playback_started_webhook_event1.py +62 -0
  63. telnyx/types/call_recording_error_webhook_event1.py +60 -0
  64. telnyx/types/call_recording_saved_webhook_event1.py +94 -0
  65. telnyx/types/call_recording_transcription_saved_webhook_event1.py +71 -0
  66. telnyx/types/call_refer_completed_webhook_event1.py +61 -0
  67. telnyx/types/call_refer_failed_webhook_event1.py +61 -0
  68. telnyx/types/call_refer_started_webhook_event1.py +61 -0
  69. telnyx/types/call_siprec_failed_webhook_event1.py +53 -0
  70. telnyx/types/call_siprec_started_webhook_event1.py +50 -0
  71. telnyx/types/call_siprec_stopped_webhook_event1.py +53 -0
  72. telnyx/types/call_speak_ended_webhook_event1.py +53 -0
  73. telnyx/types/call_speak_started_webhook_event1.py +50 -0
  74. telnyx/types/call_streaming_failed_webhook_event1.py +70 -0
  75. telnyx/types/call_streaming_started_webhook_event1.py +53 -0
  76. telnyx/types/call_streaming_stopped_webhook_event1.py +53 -0
  77. telnyx/types/calls/__init__.py +1 -0
  78. telnyx/types/calls/action_start_streaming_params.py +2 -1
  79. telnyx/types/calls/action_start_transcription_params.py +160 -6
  80. telnyx/types/calls/telnyx_transcription_language.py +108 -0
  81. telnyx/types/calls/transcription_engine_b_config_param.py +3 -102
  82. telnyx/types/calls/transcription_start_request_param.py +161 -6
  83. telnyx/types/campaign_status_update_webhook_event1.py +26 -0
  84. telnyx/types/conference_created_webhook_event1.py +53 -0
  85. telnyx/types/conference_ended_webhook_event1.py +56 -0
  86. telnyx/types/conference_floor_changed_webhook_event1.py +45 -0
  87. telnyx/types/conference_participant_joined_webhook_event1.py +53 -0
  88. telnyx/types/conference_participant_left_webhook_event1.py +53 -0
  89. telnyx/types/conference_participant_playback_ended_webhook_event1.py +65 -0
  90. telnyx/types/conference_participant_playback_started_webhook_event1.py +65 -0
  91. telnyx/types/conference_participant_speak_ended_webhook_event1.py +56 -0
  92. telnyx/types/conference_participant_speak_started_webhook_event1.py +56 -0
  93. telnyx/types/conference_playback_ended_webhook_event1.py +49 -0
  94. telnyx/types/conference_playback_started_webhook_event1.py +49 -0
  95. telnyx/types/conference_recording_saved_webhook_event1.py +103 -0
  96. telnyx/types/conference_speak_ended_webhook_event1.py +40 -0
  97. telnyx/types/conference_speak_started_webhook_event1.py +40 -0
  98. telnyx/types/country_coverage_retrieve_country_response.py +7 -0
  99. telnyx/types/country_coverage_retrieve_response.py +7 -0
  100. telnyx/types/customer_service_record_status_changed_webhook_event1.py +55 -0
  101. telnyx/types/delivery_update_webhook_event1.py +40 -0
  102. telnyx/types/document_upload_json_params.py +39 -0
  103. telnyx/types/document_upload_json_response.py +12 -0
  104. telnyx/types/fax_delivered_webhook_event1.py +69 -0
  105. telnyx/types/fax_failed_webhook_event1.py +66 -0
  106. telnyx/types/fax_media_processed_webhook_event1.py +63 -0
  107. telnyx/types/fax_queued_webhook_event1.py +63 -0
  108. telnyx/types/fax_sending_started_webhook_event1.py +63 -0
  109. telnyx/types/inbound_message_webhook_event1.py +227 -0
  110. telnyx/types/legacy/reporting/__init__.py +2 -0
  111. telnyx/types/legacy/reporting/batch_detail_records/__init__.py +4 -0
  112. telnyx/types/legacy/reporting/batch_detail_records/batch_csv_pagination_meta.py +17 -0
  113. telnyx/types/legacy/reporting/batch_detail_records/cdr_detailed_req_response.py +63 -0
  114. telnyx/types/legacy/reporting/batch_detail_records/mdr_detail_report_response.py +42 -0
  115. telnyx/types/legacy/reporting/batch_detail_records/messaging_create_params.py +4 -26
  116. telnyx/types/legacy/reporting/batch_detail_records/messaging_create_response.py +4 -60
  117. telnyx/types/legacy/reporting/batch_detail_records/messaging_delete_response.py +4 -60
  118. telnyx/types/legacy/reporting/batch_detail_records/messaging_list_response.py +5 -70
  119. telnyx/types/legacy/reporting/batch_detail_records/messaging_retrieve_response.py +4 -60
  120. telnyx/types/legacy/reporting/batch_detail_records/speech_to_text_create_response.py +3 -22
  121. telnyx/types/legacy/reporting/batch_detail_records/speech_to_text_delete_response.py +3 -22
  122. telnyx/types/legacy/reporting/batch_detail_records/speech_to_text_list_response.py +3 -22
  123. telnyx/types/legacy/reporting/batch_detail_records/speech_to_text_retrieve_response.py +3 -22
  124. telnyx/types/legacy/reporting/batch_detail_records/stt_detail_report_response.py +27 -0
  125. telnyx/types/legacy/reporting/batch_detail_records/voice_create_params.py +4 -26
  126. telnyx/types/legacy/reporting/batch_detail_records/voice_create_response.py +4 -82
  127. telnyx/types/legacy/reporting/batch_detail_records/voice_delete_response.py +4 -82
  128. telnyx/types/legacy/reporting/batch_detail_records/voice_list_response.py +5 -92
  129. telnyx/types/legacy/reporting/batch_detail_records/voice_retrieve_response.py +4 -82
  130. telnyx/types/legacy/reporting/filter.py +31 -0
  131. telnyx/types/legacy/reporting/filter_param.py +30 -0
  132. telnyx/types/legacy/reporting/usage_reports/__init__.py +3 -0
  133. telnyx/types/legacy/reporting/usage_reports/cdr_usage_report_response_legacy.py +43 -0
  134. telnyx/types/legacy/reporting/usage_reports/mdr_usage_report_response_legacy.py +38 -0
  135. telnyx/types/legacy/reporting/usage_reports/messaging_create_response.py +4 -34
  136. telnyx/types/legacy/reporting/usage_reports/messaging_delete_response.py +4 -34
  137. telnyx/types/legacy/reporting/usage_reports/messaging_list_response.py +5 -44
  138. telnyx/types/legacy/reporting/usage_reports/messaging_retrieve_response.py +4 -34
  139. telnyx/types/legacy/reporting/usage_reports/standard_pagination_meta.py +17 -0
  140. telnyx/types/legacy/reporting/usage_reports/voice_create_response.py +4 -39
  141. telnyx/types/legacy/reporting/usage_reports/voice_delete_response.py +4 -39
  142. telnyx/types/legacy/reporting/usage_reports/voice_list_response.py +5 -49
  143. telnyx/types/legacy/reporting/usage_reports/voice_retrieve_response.py +4 -39
  144. telnyx/types/message_template.py +12 -0
  145. telnyx/types/messaging_profile.py +3 -0
  146. telnyx/types/messaging_profile_create_params.py +3 -0
  147. telnyx/types/messaging_profile_update_params.py +3 -0
  148. telnyx/types/messaging_tollfree/verification/__init__.py +1 -0
  149. telnyx/types/messaging_tollfree/verification/request_create_params.py +51 -1
  150. telnyx/types/messaging_tollfree/verification/request_update_params.py +51 -1
  151. telnyx/types/messaging_tollfree/verification/toll_free_verification_entity_type.py +9 -0
  152. telnyx/types/messaging_tollfree/verification/verification_request_egress.py +24 -0
  153. telnyx/types/messaging_tollfree/verification/verification_request_status.py +24 -0
  154. telnyx/types/number_order_status_update_webhook_event1.py +38 -0
  155. telnyx/types/oauth_client.py +59 -0
  156. telnyx/types/oauth_client_create_response.py +4 -55
  157. telnyx/types/oauth_client_list_response.py +5 -69
  158. telnyx/types/oauth_client_retrieve_response.py +4 -55
  159. telnyx/types/oauth_client_update_response.py +4 -55
  160. telnyx/types/oauth_grant.py +29 -0
  161. telnyx/types/oauth_grant_delete_response.py +4 -25
  162. telnyx/types/oauth_grant_list_response.py +5 -39
  163. telnyx/types/oauth_grant_retrieve_response.py +4 -25
  164. telnyx/types/outbound_voice_profile.py +27 -1
  165. telnyx/types/outbound_voice_profile_create_params.py +27 -1
  166. telnyx/types/outbound_voice_profile_list_params.py +1 -1
  167. telnyx/types/outbound_voice_profile_update_params.py +27 -1
  168. telnyx/types/pagination_meta_cloudflare_ip_list_sync.py +15 -0
  169. telnyx/types/pagination_meta_oauth.py +21 -0
  170. telnyx/types/phone_number_blocks/__init__.py +1 -0
  171. telnyx/types/phone_number_blocks/job.py +3 -34
  172. telnyx/types/phone_number_blocks/job_error.py +32 -0
  173. telnyx/types/phone_numbers/phone_numbers_job.py +3 -36
  174. telnyx/types/replaced_link_click_webhook_event1.py +32 -0
  175. telnyx/types/report_list_mdrs_response.py +3 -12
  176. telnyx/types/reports/__init__.py +1 -0
  177. telnyx/types/reports/mdr_usage_report_list_response.py +3 -12
  178. telnyx/types/reports/pagination_meta_reporting.py +17 -0
  179. telnyx/types/requirement_group.py +2 -2
  180. telnyx/types/requirement_group_list_params.py +1 -1
  181. telnyx/types/shared/__init__.py +1 -0
  182. telnyx/types/{api_error.py → shared/api_error.py} +1 -1
  183. telnyx/types/stream_bidirectional_sampling_rate.py +7 -0
  184. telnyx/types/streaming_failed_webhook_event1.py +70 -0
  185. telnyx/types/streaming_started_webhook_event1.py +53 -0
  186. telnyx/types/streaming_stopped_webhook_event1.py +53 -0
  187. telnyx/types/texml/accounts/call_calls_params.py +16 -1
  188. telnyx/types/texml/accounts/conferences/participant_participants_params.py +16 -1
  189. telnyx/types/transcription_webhook_event1.py +72 -0
  190. telnyx/types/unsafe_unwrap_webhook_event.py +138 -0
  191. telnyx/types/verifications/__init__.py +1 -0
  192. telnyx/types/verifications/by_phone_number_list_response.py +4 -13
  193. telnyx/types/verifications/verify_meta.py +17 -0
  194. telnyx/types/verified_number_create_params.py +10 -0
  195. telnyx/types/verify_profile.py +18 -3
  196. telnyx/types/verify_profile_list_response.py +4 -13
  197. telnyx/types/{verify_profile_create_template_response.py → verify_profile_message_template_response.py} +2 -6
  198. telnyx/types/verify_profile_retrieve_templates_response.py +4 -9
  199. {telnyx-3.7.0a0.dist-info → telnyx-3.9.0.dist-info}/METADATA +9 -5
  200. {telnyx-3.7.0a0.dist-info → telnyx-3.9.0.dist-info}/RECORD +202 -128
  201. telnyx/types/ai/assistant_create_response.py +0 -92
  202. telnyx/types/ai/assistant_retrieve_response.py +0 -92
  203. telnyx/types/ai/assistants/version_promote_response.py +0 -92
  204. telnyx/types/ai/assistants/version_retrieve_response.py +0 -92
  205. telnyx/types/ai/assistants/version_update_response.py +0 -92
  206. telnyx/types/client_create_bucket_params.py +0 -13
  207. telnyx/types/client_delete_objects_params.py +0 -20
  208. telnyx/types/client_get_object_params.py +0 -15
  209. telnyx/types/client_list_objects_params.py +0 -13
  210. telnyx/types/client_put_object_params.py +0 -20
  211. telnyx/types/list_buckets_response.py +0 -20
  212. telnyx/types/list_objects_response.py +0 -24
  213. telnyx/types/verify_profile_update_template_response.py +0 -17
  214. {telnyx-3.7.0a0.dist-info → telnyx-3.9.0.dist-info}/WHEEL +0 -0
  215. {telnyx-3.7.0a0.dist-info → telnyx-3.9.0.dist-info}/licenses/LICENSE +0 -0
telnyx/_exceptions.py CHANGED
@@ -54,6 +54,10 @@ class APIResponseValidationError(APIError):
54
54
  self.status_code = response.status_code
55
55
 
56
56
 
57
+ class APIWebhookValidationError(APIError):
58
+ pass
59
+
60
+
57
61
  class APIStatusError(APIError):
58
62
  """Raised when an API response has a status code of 4xx or 5xx."""
59
63
 
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.7.0-alpha" # x-release-please-version
4
+ __version__ = "3.9.0" # x-release-please-version
@@ -224,7 +224,7 @@ from .portouts import (
224
224
  PortoutsResourceWithStreamingResponse,
225
225
  AsyncPortoutsResourceWithStreamingResponse,
226
226
  )
227
- from .webhooks import WebhooksResource, AsyncWebhooksResource
227
+ from .webhooks import TelnyxWebhook, WebhooksResource, AsyncWebhooksResource, TelnyxWebhookVerificationError
228
228
  from .wireless import (
229
229
  WirelessResource,
230
230
  AsyncWirelessResource,
@@ -1237,6 +1237,8 @@ __all__ = [
1237
1237
  "AsyncOAuthGrantsResourceWithStreamingResponse",
1238
1238
  "WebhooksResource",
1239
1239
  "AsyncWebhooksResource",
1240
+ "TelnyxWebhook",
1241
+ "TelnyxWebhookVerificationError",
1240
1242
  "AccessIPAddressResource",
1241
1243
  "AsyncAccessIPAddressResource",
1242
1244
  "AccessIPAddressResourceWithRawResponse",
@@ -7,7 +7,7 @@ from typing_extensions import Literal
7
7
 
8
8
  import httpx
9
9
 
10
- from ..types import advanced_order_create_params, advanced_order_update_params
10
+ from ..types import advanced_order_create_params, advanced_order_update_requirement_group_params
11
11
  from .._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
12
12
  from .._utils import maybe_transform, async_maybe_transform
13
13
  from .._compat import cached_property
@@ -129,9 +129,28 @@ class AdvancedOrdersResource(SyncAPIResource):
129
129
  cast_to=object,
130
130
  )
131
131
 
132
- def update(
132
+ def list(
133
133
  self,
134
- order_id: str,
134
+ *,
135
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
136
+ # The extra values given here take precedence over values defined on the client or passed to this method.
137
+ extra_headers: Headers | None = None,
138
+ extra_query: Query | None = None,
139
+ extra_body: Body | None = None,
140
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
141
+ ) -> object:
142
+ """List Advanced Orders"""
143
+ return self._get(
144
+ "/advanced_orders",
145
+ options=make_request_options(
146
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
147
+ ),
148
+ cast_to=object,
149
+ )
150
+
151
+ def update_requirement_group(
152
+ self,
153
+ advanced_order_id: str,
135
154
  *,
136
155
  area_code: str | Omit = omit,
137
156
  comments: str | Omit = omit,
@@ -162,10 +181,10 @@ class AdvancedOrdersResource(SyncAPIResource):
162
181
 
163
182
  timeout: Override the client-level default timeout for this request, in seconds
164
183
  """
165
- if not order_id:
166
- raise ValueError(f"Expected a non-empty value for `order_id` but received {order_id!r}")
184
+ if not advanced_order_id:
185
+ raise ValueError(f"Expected a non-empty value for `advanced_order_id` but received {advanced_order_id!r}")
167
186
  return self._patch(
168
- f"/advanced_orders/{order_id}",
187
+ f"/advanced_orders/{advanced_order_id}/requirement_group",
169
188
  body=maybe_transform(
170
189
  {
171
190
  "area_code": area_code,
@@ -177,7 +196,7 @@ class AdvancedOrdersResource(SyncAPIResource):
177
196
  "quantity": quantity,
178
197
  "requirement_group_id": requirement_group_id,
179
198
  },
180
- advanced_order_update_params.AdvancedOrderUpdateParams,
199
+ advanced_order_update_requirement_group_params.AdvancedOrderUpdateRequirementGroupParams,
181
200
  ),
182
201
  options=make_request_options(
183
202
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
@@ -185,25 +204,6 @@ class AdvancedOrdersResource(SyncAPIResource):
185
204
  cast_to=object,
186
205
  )
187
206
 
188
- def list(
189
- self,
190
- *,
191
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
192
- # The extra values given here take precedence over values defined on the client or passed to this method.
193
- extra_headers: Headers | None = None,
194
- extra_query: Query | None = None,
195
- extra_body: Body | None = None,
196
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
197
- ) -> object:
198
- """List Advanced Orders"""
199
- return self._get(
200
- "/advanced_orders",
201
- options=make_request_options(
202
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
203
- ),
204
- cast_to=object,
205
- )
206
-
207
207
 
208
208
  class AsyncAdvancedOrdersResource(AsyncAPIResource):
209
209
  @cached_property
@@ -311,9 +311,28 @@ class AsyncAdvancedOrdersResource(AsyncAPIResource):
311
311
  cast_to=object,
312
312
  )
313
313
 
314
- async def update(
314
+ async def list(
315
315
  self,
316
- order_id: str,
316
+ *,
317
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
318
+ # The extra values given here take precedence over values defined on the client or passed to this method.
319
+ extra_headers: Headers | None = None,
320
+ extra_query: Query | None = None,
321
+ extra_body: Body | None = None,
322
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
323
+ ) -> object:
324
+ """List Advanced Orders"""
325
+ return await self._get(
326
+ "/advanced_orders",
327
+ options=make_request_options(
328
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
329
+ ),
330
+ cast_to=object,
331
+ )
332
+
333
+ async def update_requirement_group(
334
+ self,
335
+ advanced_order_id: str,
317
336
  *,
318
337
  area_code: str | Omit = omit,
319
338
  comments: str | Omit = omit,
@@ -344,10 +363,10 @@ class AsyncAdvancedOrdersResource(AsyncAPIResource):
344
363
 
345
364
  timeout: Override the client-level default timeout for this request, in seconds
346
365
  """
347
- if not order_id:
348
- raise ValueError(f"Expected a non-empty value for `order_id` but received {order_id!r}")
366
+ if not advanced_order_id:
367
+ raise ValueError(f"Expected a non-empty value for `advanced_order_id` but received {advanced_order_id!r}")
349
368
  return await self._patch(
350
- f"/advanced_orders/{order_id}",
369
+ f"/advanced_orders/{advanced_order_id}/requirement_group",
351
370
  body=await async_maybe_transform(
352
371
  {
353
372
  "area_code": area_code,
@@ -359,7 +378,7 @@ class AsyncAdvancedOrdersResource(AsyncAPIResource):
359
378
  "quantity": quantity,
360
379
  "requirement_group_id": requirement_group_id,
361
380
  },
362
- advanced_order_update_params.AdvancedOrderUpdateParams,
381
+ advanced_order_update_requirement_group_params.AdvancedOrderUpdateRequirementGroupParams,
363
382
  ),
364
383
  options=make_request_options(
365
384
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
@@ -367,25 +386,6 @@ class AsyncAdvancedOrdersResource(AsyncAPIResource):
367
386
  cast_to=object,
368
387
  )
369
388
 
370
- async def list(
371
- self,
372
- *,
373
- # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
374
- # The extra values given here take precedence over values defined on the client or passed to this method.
375
- extra_headers: Headers | None = None,
376
- extra_query: Query | None = None,
377
- extra_body: Body | None = None,
378
- timeout: float | httpx.Timeout | None | NotGiven = not_given,
379
- ) -> object:
380
- """List Advanced Orders"""
381
- return await self._get(
382
- "/advanced_orders",
383
- options=make_request_options(
384
- extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
385
- ),
386
- cast_to=object,
387
- )
388
-
389
389
 
390
390
  class AdvancedOrdersResourceWithRawResponse:
391
391
  def __init__(self, advanced_orders: AdvancedOrdersResource) -> None:
@@ -397,12 +397,12 @@ class AdvancedOrdersResourceWithRawResponse:
397
397
  self.retrieve = to_raw_response_wrapper(
398
398
  advanced_orders.retrieve,
399
399
  )
400
- self.update = to_raw_response_wrapper(
401
- advanced_orders.update,
402
- )
403
400
  self.list = to_raw_response_wrapper(
404
401
  advanced_orders.list,
405
402
  )
403
+ self.update_requirement_group = to_raw_response_wrapper(
404
+ advanced_orders.update_requirement_group,
405
+ )
406
406
 
407
407
 
408
408
  class AsyncAdvancedOrdersResourceWithRawResponse:
@@ -415,12 +415,12 @@ class AsyncAdvancedOrdersResourceWithRawResponse:
415
415
  self.retrieve = async_to_raw_response_wrapper(
416
416
  advanced_orders.retrieve,
417
417
  )
418
- self.update = async_to_raw_response_wrapper(
419
- advanced_orders.update,
420
- )
421
418
  self.list = async_to_raw_response_wrapper(
422
419
  advanced_orders.list,
423
420
  )
421
+ self.update_requirement_group = async_to_raw_response_wrapper(
422
+ advanced_orders.update_requirement_group,
423
+ )
424
424
 
425
425
 
426
426
  class AdvancedOrdersResourceWithStreamingResponse:
@@ -433,12 +433,12 @@ class AdvancedOrdersResourceWithStreamingResponse:
433
433
  self.retrieve = to_streamed_response_wrapper(
434
434
  advanced_orders.retrieve,
435
435
  )
436
- self.update = to_streamed_response_wrapper(
437
- advanced_orders.update,
438
- )
439
436
  self.list = to_streamed_response_wrapper(
440
437
  advanced_orders.list,
441
438
  )
439
+ self.update_requirement_group = to_streamed_response_wrapper(
440
+ advanced_orders.update_requirement_group,
441
+ )
442
442
 
443
443
 
444
444
  class AsyncAdvancedOrdersResourceWithStreamingResponse:
@@ -451,9 +451,9 @@ class AsyncAdvancedOrdersResourceWithStreamingResponse:
451
451
  self.retrieve = async_to_streamed_response_wrapper(
452
452
  advanced_orders.retrieve,
453
453
  )
454
- self.update = async_to_streamed_response_wrapper(
455
- advanced_orders.update,
456
- )
457
454
  self.list = async_to_streamed_response_wrapper(
458
455
  advanced_orders.list,
459
456
  )
457
+ self.update_requirement_group = async_to_streamed_response_wrapper(
458
+ advanced_orders.update_requirement_group,
459
+ )
@@ -67,17 +67,15 @@ from .scheduled_events import (
67
67
  )
68
68
  from ....types.ai.assistants_list import AssistantsList
69
69
  from ....types.ai.enabled_features import EnabledFeatures
70
+ from ....types.ai.inference_embedding import InferenceEmbedding
70
71
  from ....types.ai.assistant_tool_param import AssistantToolParam
71
72
  from ....types.ai.voice_settings_param import VoiceSettingsParam
72
73
  from ....types.ai.insight_settings_param import InsightSettingsParam
73
74
  from ....types.ai.privacy_settings_param import PrivacySettingsParam
74
75
  from ....types.ai.assistant_chat_response import AssistantChatResponse
75
- from ....types.ai.assistant_clone_response import AssistantCloneResponse
76
76
  from ....types.ai.messaging_settings_param import MessagingSettingsParam
77
77
  from ....types.ai.telephony_settings_param import TelephonySettingsParam
78
- from ....types.ai.assistant_create_response import AssistantCreateResponse
79
78
  from ....types.ai.assistant_delete_response import AssistantDeleteResponse
80
- from ....types.ai.assistant_retrieve_response import AssistantRetrieveResponse
81
79
  from ....types.ai.transcription_settings_param import TranscriptionSettingsParam
82
80
 
83
81
  __all__ = ["AssistantsResource", "AsyncAssistantsResource"]
@@ -148,7 +146,7 @@ class AssistantsResource(SyncAPIResource):
148
146
  extra_query: Query | None = None,
149
147
  extra_body: Body | None = None,
150
148
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
151
- ) -> AssistantCreateResponse:
149
+ ) -> InferenceEmbedding:
152
150
  """
153
151
  Create a new AI Assistant.
154
152
 
@@ -214,7 +212,7 @@ class AssistantsResource(SyncAPIResource):
214
212
  options=make_request_options(
215
213
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
216
214
  ),
217
- cast_to=AssistantCreateResponse,
215
+ cast_to=InferenceEmbedding,
218
216
  )
219
217
 
220
218
  def retrieve(
@@ -231,7 +229,7 @@ class AssistantsResource(SyncAPIResource):
231
229
  extra_query: Query | None = None,
232
230
  extra_body: Body | None = None,
233
231
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
234
- ) -> AssistantRetrieveResponse:
232
+ ) -> InferenceEmbedding:
235
233
  """
236
234
  Retrieve an AI Assistant configuration by `assistant_id`.
237
235
 
@@ -263,7 +261,7 @@ class AssistantsResource(SyncAPIResource):
263
261
  assistant_retrieve_params.AssistantRetrieveParams,
264
262
  ),
265
263
  ),
266
- cast_to=AssistantRetrieveResponse,
264
+ cast_to=InferenceEmbedding,
267
265
  )
268
266
 
269
267
  def update(
@@ -487,7 +485,7 @@ class AssistantsResource(SyncAPIResource):
487
485
  extra_query: Query | None = None,
488
486
  extra_body: Body | None = None,
489
487
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
490
- ) -> AssistantCloneResponse:
488
+ ) -> InferenceEmbedding:
491
489
  """
492
490
  Clone an existing assistant, excluding telephony and messaging settings.
493
491
 
@@ -507,7 +505,7 @@ class AssistantsResource(SyncAPIResource):
507
505
  options=make_request_options(
508
506
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
509
507
  ),
510
- cast_to=AssistantCloneResponse,
508
+ cast_to=InferenceEmbedding,
511
509
  )
512
510
 
513
511
  def get_texml(
@@ -547,7 +545,7 @@ class AssistantsResource(SyncAPIResource):
547
545
  self,
548
546
  *,
549
547
  api_key_ref: str,
550
- provider: Literal["elevenlabs", "vapi"],
548
+ provider: Literal["elevenlabs", "vapi", "retell"],
551
549
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
552
550
  # The extra values given here take precedence over values defined on the client or passed to this method.
553
551
  extra_headers: Headers | None = None,
@@ -657,7 +655,7 @@ class AsyncAssistantsResource(AsyncAPIResource):
657
655
  extra_query: Query | None = None,
658
656
  extra_body: Body | None = None,
659
657
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
660
- ) -> AssistantCreateResponse:
658
+ ) -> InferenceEmbedding:
661
659
  """
662
660
  Create a new AI Assistant.
663
661
 
@@ -723,7 +721,7 @@ class AsyncAssistantsResource(AsyncAPIResource):
723
721
  options=make_request_options(
724
722
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
725
723
  ),
726
- cast_to=AssistantCreateResponse,
724
+ cast_to=InferenceEmbedding,
727
725
  )
728
726
 
729
727
  async def retrieve(
@@ -740,7 +738,7 @@ class AsyncAssistantsResource(AsyncAPIResource):
740
738
  extra_query: Query | None = None,
741
739
  extra_body: Body | None = None,
742
740
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
743
- ) -> AssistantRetrieveResponse:
741
+ ) -> InferenceEmbedding:
744
742
  """
745
743
  Retrieve an AI Assistant configuration by `assistant_id`.
746
744
 
@@ -772,7 +770,7 @@ class AsyncAssistantsResource(AsyncAPIResource):
772
770
  assistant_retrieve_params.AssistantRetrieveParams,
773
771
  ),
774
772
  ),
775
- cast_to=AssistantRetrieveResponse,
773
+ cast_to=InferenceEmbedding,
776
774
  )
777
775
 
778
776
  async def update(
@@ -996,7 +994,7 @@ class AsyncAssistantsResource(AsyncAPIResource):
996
994
  extra_query: Query | None = None,
997
995
  extra_body: Body | None = None,
998
996
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
999
- ) -> AssistantCloneResponse:
997
+ ) -> InferenceEmbedding:
1000
998
  """
1001
999
  Clone an existing assistant, excluding telephony and messaging settings.
1002
1000
 
@@ -1016,7 +1014,7 @@ class AsyncAssistantsResource(AsyncAPIResource):
1016
1014
  options=make_request_options(
1017
1015
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
1018
1016
  ),
1019
- cast_to=AssistantCloneResponse,
1017
+ cast_to=InferenceEmbedding,
1020
1018
  )
1021
1019
 
1022
1020
  async def get_texml(
@@ -1056,7 +1054,7 @@ class AsyncAssistantsResource(AsyncAPIResource):
1056
1054
  self,
1057
1055
  *,
1058
1056
  api_key_ref: str,
1059
- provider: Literal["elevenlabs", "vapi"],
1057
+ provider: Literal["elevenlabs", "vapi", "retell"],
1060
1058
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1061
1059
  # The extra values given here take precedence over values defined on the client or passed to this method.
1062
1060
  extra_headers: Headers | None = None,
@@ -20,6 +20,7 @@ from ...._base_client import make_request_options
20
20
  from ....types.ai.assistants import version_update_params, version_retrieve_params
21
21
  from ....types.ai.assistants_list import AssistantsList
22
22
  from ....types.ai.enabled_features import EnabledFeatures
23
+ from ....types.ai.inference_embedding import InferenceEmbedding
23
24
  from ....types.ai.assistant_tool_param import AssistantToolParam
24
25
  from ....types.ai.voice_settings_param import VoiceSettingsParam
25
26
  from ....types.ai.insight_settings_param import InsightSettingsParam
@@ -27,9 +28,6 @@ from ....types.ai.privacy_settings_param import PrivacySettingsParam
27
28
  from ....types.ai.messaging_settings_param import MessagingSettingsParam
28
29
  from ....types.ai.telephony_settings_param import TelephonySettingsParam
29
30
  from ....types.ai.transcription_settings_param import TranscriptionSettingsParam
30
- from ....types.ai.assistants.version_update_response import VersionUpdateResponse
31
- from ....types.ai.assistants.version_promote_response import VersionPromoteResponse
32
- from ....types.ai.assistants.version_retrieve_response import VersionRetrieveResponse
33
31
 
34
32
  __all__ = ["VersionsResource", "AsyncVersionsResource"]
35
33
 
@@ -66,7 +64,7 @@ class VersionsResource(SyncAPIResource):
66
64
  extra_query: Query | None = None,
67
65
  extra_body: Body | None = None,
68
66
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
69
- ) -> VersionRetrieveResponse:
67
+ ) -> InferenceEmbedding:
70
68
  """
71
69
  Retrieves a specific version of an assistant by assistant_id and version_id
72
70
 
@@ -94,7 +92,7 @@ class VersionsResource(SyncAPIResource):
94
92
  {"include_mcp_servers": include_mcp_servers}, version_retrieve_params.VersionRetrieveParams
95
93
  ),
96
94
  ),
97
- cast_to=VersionRetrieveResponse,
95
+ cast_to=InferenceEmbedding,
98
96
  )
99
97
 
100
98
  def update(
@@ -124,7 +122,7 @@ class VersionsResource(SyncAPIResource):
124
122
  extra_query: Query | None = None,
125
123
  extra_body: Body | None = None,
126
124
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
127
- ) -> VersionUpdateResponse:
125
+ ) -> InferenceEmbedding:
128
126
  """Updates the configuration of a specific assistant version.
129
127
 
130
128
  Can not update main
@@ -196,7 +194,7 @@ class VersionsResource(SyncAPIResource):
196
194
  options=make_request_options(
197
195
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
198
196
  ),
199
- cast_to=VersionUpdateResponse,
197
+ cast_to=InferenceEmbedding,
200
198
  )
201
199
 
202
200
  def list(
@@ -283,7 +281,7 @@ class VersionsResource(SyncAPIResource):
283
281
  extra_query: Query | None = None,
284
282
  extra_body: Body | None = None,
285
283
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
286
- ) -> VersionPromoteResponse:
284
+ ) -> InferenceEmbedding:
287
285
  """
288
286
  Promotes a specific version to be the main/current version of the assistant.
289
287
  This will delete any existing canary deploy configuration and send all live
@@ -307,7 +305,7 @@ class VersionsResource(SyncAPIResource):
307
305
  options=make_request_options(
308
306
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
309
307
  ),
310
- cast_to=VersionPromoteResponse,
308
+ cast_to=InferenceEmbedding,
311
309
  )
312
310
 
313
311
 
@@ -343,7 +341,7 @@ class AsyncVersionsResource(AsyncAPIResource):
343
341
  extra_query: Query | None = None,
344
342
  extra_body: Body | None = None,
345
343
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
346
- ) -> VersionRetrieveResponse:
344
+ ) -> InferenceEmbedding:
347
345
  """
348
346
  Retrieves a specific version of an assistant by assistant_id and version_id
349
347
 
@@ -371,7 +369,7 @@ class AsyncVersionsResource(AsyncAPIResource):
371
369
  {"include_mcp_servers": include_mcp_servers}, version_retrieve_params.VersionRetrieveParams
372
370
  ),
373
371
  ),
374
- cast_to=VersionRetrieveResponse,
372
+ cast_to=InferenceEmbedding,
375
373
  )
376
374
 
377
375
  async def update(
@@ -401,7 +399,7 @@ class AsyncVersionsResource(AsyncAPIResource):
401
399
  extra_query: Query | None = None,
402
400
  extra_body: Body | None = None,
403
401
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
404
- ) -> VersionUpdateResponse:
402
+ ) -> InferenceEmbedding:
405
403
  """Updates the configuration of a specific assistant version.
406
404
 
407
405
  Can not update main
@@ -473,7 +471,7 @@ class AsyncVersionsResource(AsyncAPIResource):
473
471
  options=make_request_options(
474
472
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
475
473
  ),
476
- cast_to=VersionUpdateResponse,
474
+ cast_to=InferenceEmbedding,
477
475
  )
478
476
 
479
477
  async def list(
@@ -560,7 +558,7 @@ class AsyncVersionsResource(AsyncAPIResource):
560
558
  extra_query: Query | None = None,
561
559
  extra_body: Body | None = None,
562
560
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
563
- ) -> VersionPromoteResponse:
561
+ ) -> InferenceEmbedding:
564
562
  """
565
563
  Promotes a specific version to be the main/current version of the assistant.
566
564
  This will delete any existing canary deploy configuration and send all live
@@ -584,7 +582,7 @@ class AsyncVersionsResource(AsyncAPIResource):
584
582
  options=make_request_options(
585
583
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
586
584
  ),
587
- cast_to=VersionPromoteResponse,
585
+ cast_to=InferenceEmbedding,
588
586
  )
589
587
 
590
588
 
@@ -126,7 +126,8 @@ class BrandResource(SyncAPIResource):
126
126
 
127
127
  business_contact_email: Business contact email.
128
128
 
129
- Required if `entityType` is `PUBLIC_PROFIT`.
129
+ Required if `entityType` is `PUBLIC_PROFIT`. Otherwise, it is recommended to
130
+ either omit this field or set it to `null`.
130
131
 
131
132
  city: City name
132
133
 
@@ -297,7 +298,8 @@ class BrandResource(SyncAPIResource):
297
298
 
298
299
  business_contact_email: Business contact email.
299
300
 
300
- Required if `entityType` will be changed to `PUBLIC_PROFIT`.
301
+ Required if `entityType` will be changed to `PUBLIC_PROFIT`. Otherwise, it is
302
+ recommended to either omit this field or set it to `null`.
301
303
 
302
304
  city: City name
303
305
 
@@ -692,7 +694,8 @@ class AsyncBrandResource(AsyncAPIResource):
692
694
 
693
695
  business_contact_email: Business contact email.
694
696
 
695
- Required if `entityType` is `PUBLIC_PROFIT`.
697
+ Required if `entityType` is `PUBLIC_PROFIT`. Otherwise, it is recommended to
698
+ either omit this field or set it to `null`.
696
699
 
697
700
  city: City name
698
701
 
@@ -863,7 +866,8 @@ class AsyncBrandResource(AsyncAPIResource):
863
866
 
864
867
  business_contact_email: Business contact email.
865
868
 
866
- Required if `entityType` will be changed to `PUBLIC_PROFIT`.
869
+ Required if `entityType` will be changed to `PUBLIC_PROFIT`. Otherwise, it is
870
+ recommended to either omit this field or set it to `null`.
867
871
 
868
872
  city: City name
869
873
 
@@ -12,6 +12,7 @@ from ...types import (
12
12
  StreamBidirectionalMode,
13
13
  StreamBidirectionalCodec,
14
14
  StreamBidirectionalTargetLegs,
15
+ StreamBidirectionalSamplingRate,
15
16
  )
16
17
  from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
17
18
  from ..._utils import maybe_transform, async_maybe_transform
@@ -90,6 +91,7 @@ from ...types.calls.action_stop_siprec_response import ActionStopSiprecResponse
90
91
  from ...types.calls.interruption_settings_param import InterruptionSettingsParam
91
92
  from ...types.calls.action_start_siprec_response import ActionStartSiprecResponse
92
93
  from ...types.calls.action_stop_forking_response import ActionStopForkingResponse
94
+ from ...types.stream_bidirectional_sampling_rate import StreamBidirectionalSamplingRate
93
95
  from ...types.calls.action_send_sip_info_response import ActionSendSipInfoResponse
94
96
  from ...types.calls.action_start_forking_response import ActionStartForkingResponse
95
97
  from ...types.calls.action_stop_playback_response import ActionStopPlaybackResponse
@@ -2421,7 +2423,7 @@ class ActionsResource(SyncAPIResource):
2421
2423
  enable_dialogflow: bool | Omit = omit,
2422
2424
  stream_bidirectional_codec: StreamBidirectionalCodec | Omit = omit,
2423
2425
  stream_bidirectional_mode: StreamBidirectionalMode | Omit = omit,
2424
- stream_bidirectional_sampling_rate: Literal[8000, 16000, 22050, 24000, 48000] | Omit = omit,
2426
+ stream_bidirectional_sampling_rate: StreamBidirectionalSamplingRate | Omit = omit,
2425
2427
  stream_bidirectional_target_legs: StreamBidirectionalTargetLegs | Omit = omit,
2426
2428
  stream_codec: StreamCodec | Omit = omit,
2427
2429
  stream_track: Literal["inbound_track", "outbound_track", "both_tracks"] | Omit = omit,
@@ -2506,7 +2508,7 @@ class ActionsResource(SyncAPIResource):
2506
2508
  *,
2507
2509
  client_state: str | Omit = omit,
2508
2510
  command_id: str | Omit = omit,
2509
- transcription_engine: Literal["A", "B"] | Omit = omit,
2511
+ transcription_engine: Literal["Google", "Telnyx", "Deepgram", "A", "B"] | Omit = omit,
2510
2512
  transcription_engine_config: action_start_transcription_params.TranscriptionEngineConfig | Omit = omit,
2511
2513
  transcription_tracks: str | Omit = omit,
2512
2514
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -2532,7 +2534,8 @@ class ActionsResource(SyncAPIResource):
2532
2534
  command_id: Use this field to avoid duplicate commands. Telnyx will ignore any command with
2533
2535
  the same `command_id` for the same `call_control_id`.
2534
2536
 
2535
- transcription_engine: Engine to use for speech recognition. `A` - `Google`, `B` - `Telnyx`.
2537
+ transcription_engine: Engine to use for speech recognition. Legacy values `A` - `Google`, `B` -
2538
+ `Telnyx` are supported for backward compatibility.
2536
2539
 
2537
2540
  transcription_tracks: Indicates which leg of the call will be transcribed. Use `inbound` for the leg
2538
2541
  that requested the transcription, `outbound` for the other leg, and `both` for
@@ -5663,7 +5666,7 @@ class AsyncActionsResource(AsyncAPIResource):
5663
5666
  enable_dialogflow: bool | Omit = omit,
5664
5667
  stream_bidirectional_codec: StreamBidirectionalCodec | Omit = omit,
5665
5668
  stream_bidirectional_mode: StreamBidirectionalMode | Omit = omit,
5666
- stream_bidirectional_sampling_rate: Literal[8000, 16000, 22050, 24000, 48000] | Omit = omit,
5669
+ stream_bidirectional_sampling_rate: StreamBidirectionalSamplingRate | Omit = omit,
5667
5670
  stream_bidirectional_target_legs: StreamBidirectionalTargetLegs | Omit = omit,
5668
5671
  stream_codec: StreamCodec | Omit = omit,
5669
5672
  stream_track: Literal["inbound_track", "outbound_track", "both_tracks"] | Omit = omit,
@@ -5748,7 +5751,7 @@ class AsyncActionsResource(AsyncAPIResource):
5748
5751
  *,
5749
5752
  client_state: str | Omit = omit,
5750
5753
  command_id: str | Omit = omit,
5751
- transcription_engine: Literal["A", "B"] | Omit = omit,
5754
+ transcription_engine: Literal["Google", "Telnyx", "Deepgram", "A", "B"] | Omit = omit,
5752
5755
  transcription_engine_config: action_start_transcription_params.TranscriptionEngineConfig | Omit = omit,
5753
5756
  transcription_tracks: str | Omit = omit,
5754
5757
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
@@ -5774,7 +5777,8 @@ class AsyncActionsResource(AsyncAPIResource):
5774
5777
  command_id: Use this field to avoid duplicate commands. Telnyx will ignore any command with
5775
5778
  the same `command_id` for the same `call_control_id`.
5776
5779
 
5777
- transcription_engine: Engine to use for speech recognition. `A` - `Google`, `B` - `Telnyx`.
5780
+ transcription_engine: Engine to use for speech recognition. Legacy values `A` - `Google`, `B` -
5781
+ `Telnyx` are supported for backward compatibility.
5778
5782
 
5779
5783
  transcription_tracks: Indicates which leg of the call will be transcribed. Use `inbound` for the leg
5780
5784
  that requested the transcription, `outbound` for the other leg, and `both` for