twilio-ruby 7.11.1 → 7.11.3

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.
Files changed (260) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test-and-deploy.yml +13 -1
  3. data/CHANGES.md +417 -0
  4. data/Gemfile.lock +2 -2
  5. data/README.md +2 -2
  6. data/githooks/pre-commit +11 -0
  7. data/lib/rack/twilio_webhook_authentication.rb +45 -2
  8. data/lib/twilio-ruby/rest/accounts/v1/auth_token_promotion.rb +0 -59
  9. data/lib/twilio-ruby/rest/accounts/v1/bulk_consents.rb +0 -59
  10. data/lib/twilio-ruby/rest/accounts/v1/bulk_contacts.rb +0 -59
  11. data/lib/twilio-ruby/rest/accounts/v1/credential.rb +0 -59
  12. data/lib/twilio-ruby/rest/accounts/v1/messaging_geopermissions.rb +0 -59
  13. data/lib/twilio-ruby/rest/accounts/v1/safelist.rb +0 -59
  14. data/lib/twilio-ruby/rest/accounts/v1/secondary_auth_token.rb +0 -59
  15. data/lib/twilio-ruby/rest/api/v2010/account/balance.rb +0 -59
  16. data/lib/twilio-ruby/rest/api/v2010/account/call/payment.rb +0 -59
  17. data/lib/twilio-ruby/rest/api/v2010/account/call/siprec.rb +0 -59
  18. data/lib/twilio-ruby/rest/api/v2010/account/call/stream.rb +0 -59
  19. data/lib/twilio-ruby/rest/api/v2010/account/call/transcription.rb +0 -59
  20. data/lib/twilio-ruby/rest/api/v2010/account/call/user_defined_message.rb +0 -59
  21. data/lib/twilio-ruby/rest/api/v2010/account/call/user_defined_message_subscription.rb +0 -59
  22. data/lib/twilio-ruby/rest/api/v2010/account/message/feedback.rb +0 -59
  23. data/lib/twilio-ruby/rest/api/v2010/account/message.rb +6 -0
  24. data/lib/twilio-ruby/rest/api/v2010/account/new_key.rb +0 -59
  25. data/lib/twilio-ruby/rest/api/v2010/account/new_signing_key.rb +0 -59
  26. data/lib/twilio-ruby/rest/api/v2010/account/recording/add_on_result/payload/data.rb +0 -59
  27. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/auth_types/auth_type_calls.rb +0 -59
  28. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/auth_types/auth_type_registrations.rb +0 -59
  29. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/auth_types.rb +0 -59
  30. data/lib/twilio-ruby/rest/api/v2010/account/sip.rb +0 -59
  31. data/lib/twilio-ruby/rest/api/v2010/account/token.rb +0 -59
  32. data/lib/twilio-ruby/rest/api/v2010/account/usage.rb +0 -59
  33. data/lib/twilio-ruby/rest/api/v2010/account/validation_request.rb +0 -59
  34. data/lib/twilio-ruby/rest/bulkexports/v1/export/job.rb +0 -59
  35. data/lib/twilio-ruby/rest/bulkexports/v1/export.rb +0 -59
  36. data/lib/twilio-ruby/rest/bulkexports/v1/export_configuration.rb +0 -59
  37. data/lib/twilio-ruby/rest/chat/v3/channel.rb +0 -59
  38. data/lib/twilio-ruby/rest/content/v1/content/approval_create.rb +0 -59
  39. data/lib/twilio-ruby/rest/content/v1/content/approval_fetch.rb +0 -59
  40. data/lib/twilio-ruby/rest/conversations/v1/configuration/webhook.rb +0 -59
  41. data/lib/twilio-ruby/rest/conversations/v1/configuration.rb +0 -59
  42. data/lib/twilio-ruby/rest/conversations/v1/conversation_with_participants.rb +0 -59
  43. data/lib/twilio-ruby/rest/conversations/v1/service/configuration/notification.rb +0 -59
  44. data/lib/twilio-ruby/rest/conversations/v1/service/configuration/webhook.rb +0 -59
  45. data/lib/twilio-ruby/rest/conversations/v1/service/configuration.rb +0 -59
  46. data/lib/twilio-ruby/rest/conversations/v1/service/conversation_with_participants.rb +0 -59
  47. data/lib/twilio-ruby/rest/conversations/v2/action.rb +0 -59
  48. data/lib/twilio-ruby/rest/conversations/v2/configuration.rb +525 -0
  49. data/lib/twilio-ruby/rest/conversations/v2/conversation.rb +101 -12
  50. data/lib/twilio-ruby/rest/conversations/v2/operation.rb +0 -59
  51. data/lib/twilio-ruby/rest/conversations/v2.rb +10 -4
  52. data/lib/twilio-ruby/rest/events/v1/schema.rb +0 -59
  53. data/lib/twilio-ruby/rest/events/v1/sink/sink_test.rb +0 -59
  54. data/lib/twilio-ruby/rest/events/v1/sink/sink_validate.rb +0 -59
  55. data/lib/twilio-ruby/rest/flex_api/v1/assessments.rb +12 -14
  56. data/lib/twilio-ruby/rest/flex_api/v1/configuration.rb +0 -59
  57. data/lib/twilio-ruby/rest/flex_api/v1/insights_assessments_comment.rb +12 -14
  58. data/lib/twilio-ruby/rest/flex_api/v1/insights_conversations.rb +12 -14
  59. data/lib/twilio-ruby/rest/flex_api/v1/insights_questionnaires.rb +12 -14
  60. data/lib/twilio-ruby/rest/flex_api/v1/insights_questionnaires_category.rb +2 -4
  61. data/lib/twilio-ruby/rest/flex_api/v1/insights_questionnaires_question.rb +12 -14
  62. data/lib/twilio-ruby/rest/flex_api/v1/insights_segments.rb +12 -14
  63. data/lib/twilio-ruby/rest/flex_api/v1/insights_session.rb +0 -59
  64. data/lib/twilio-ruby/rest/flex_api/v1/insights_settings_answer_sets.rb +0 -59
  65. data/lib/twilio-ruby/rest/flex_api/v1/insights_settings_comment.rb +0 -59
  66. data/lib/twilio-ruby/rest/flex_api/v1/insights_user_roles.rb +0 -59
  67. data/lib/twilio-ruby/rest/flex_api/v1/interaction/interaction_channel/interaction_transfer.rb +0 -59
  68. data/lib/twilio-ruby/rest/flex_api/v1/interaction.rb +0 -59
  69. data/lib/twilio-ruby/rest/flex_api/v1/plugin/plugin_versions.rb +2 -4
  70. data/lib/twilio-ruby/rest/flex_api/v1/plugin.rb +2 -4
  71. data/lib/twilio-ruby/rest/flex_api/v1/plugin_archive.rb +0 -59
  72. data/lib/twilio-ruby/rest/flex_api/v1/plugin_configuration/configured_plugin.rb +2 -4
  73. data/lib/twilio-ruby/rest/flex_api/v1/plugin_configuration.rb +2 -4
  74. data/lib/twilio-ruby/rest/flex_api/v1/plugin_configuration_archive.rb +0 -59
  75. data/lib/twilio-ruby/rest/flex_api/v1/plugin_release.rb +2 -4
  76. data/lib/twilio-ruby/rest/flex_api/v1/plugin_version_archive.rb +0 -59
  77. data/lib/twilio-ruby/rest/flex_api/v1/provisioning_status.rb +0 -59
  78. data/lib/twilio-ruby/rest/flex_api/v2/flex_user.rb +0 -59
  79. data/lib/twilio-ruby/rest/flex_api/v2/web_channels.rb +0 -59
  80. data/lib/twilio-ruby/rest/frontline_api/v1/user.rb +0 -59
  81. data/lib/twilio-ruby/rest/iam/v1/api_key.rb +0 -59
  82. data/lib/twilio-ruby/rest/iam/v1/new_api_key.rb +0 -59
  83. data/lib/twilio-ruby/rest/iam/v1/o_auth_app.rb +0 -59
  84. data/lib/twilio-ruby/rest/iam/v1/token.rb +0 -59
  85. data/lib/twilio-ruby/rest/insights/v1/call/annotation.rb +0 -59
  86. data/lib/twilio-ruby/rest/insights/v1/call/call_summary.rb +0 -59
  87. data/lib/twilio-ruby/rest/insights/v1/call.rb +0 -59
  88. data/lib/twilio-ruby/rest/insights/v1/setting.rb +0 -59
  89. data/lib/twilio-ruby/rest/insights/v2/inbound.rb +2 -261
  90. data/lib/twilio-ruby/rest/insights/v2/inbound_report.rb +258 -0
  91. data/lib/twilio-ruby/rest/insights/v2/outbound.rb +18 -299
  92. data/lib/twilio-ruby/rest/insights/v2/outbound_report.rb +258 -0
  93. data/lib/twilio-ruby/rest/insights/v2/report.rb +27 -184
  94. data/lib/twilio-ruby/rest/insights/v2.rb +14 -4
  95. data/lib/twilio-ruby/rest/insights/v3/capacity.rb +161 -0
  96. data/lib/twilio-ruby/rest/insights/v3/custom_field_mapping.rb +279 -0
  97. data/lib/twilio-ruby/rest/insights/v3/metadata.rb +1 -60
  98. data/lib/twilio-ruby/rest/insights/v3/query.rb +1 -60
  99. data/lib/twilio-ruby/rest/insights/v3/query_job.rb +654 -0
  100. data/lib/twilio-ruby/rest/insights/v3/result.rb +195 -0
  101. data/lib/twilio-ruby/rest/insights/v3.rb +29 -1
  102. data/lib/twilio-ruby/rest/intelligence/v2/operator_attachment.rb +0 -59
  103. data/lib/twilio-ruby/rest/intelligence/v2/operator_attachments.rb +0 -59
  104. data/lib/twilio-ruby/rest/intelligence/v2/transcript/encrypted_operator_results.rb +0 -59
  105. data/lib/twilio-ruby/rest/intelligence/v2/transcript/encrypted_sentences.rb +0 -59
  106. data/lib/twilio-ruby/rest/intelligence/v2/transcript/media.rb +0 -59
  107. data/lib/twilio-ruby/rest/intelligence/v3/rule_execution.rb +33 -60
  108. data/lib/twilio-ruby/rest/knowledge/v1/knowledge/knowledge_status.rb +0 -59
  109. data/lib/twilio-ruby/rest/knowledge/v2/operation.rb +0 -59
  110. data/lib/twilio-ruby/rest/knowledge/v2/search.rb +0 -59
  111. data/lib/twilio-ruby/rest/lookups/v1/phone_number.rb +0 -59
  112. data/lib/twilio-ruby/rest/lookups/v2/bucket.rb +0 -59
  113. data/lib/twilio-ruby/rest/lookups/v2/lookup_override.rb +0 -59
  114. data/lib/twilio-ruby/rest/lookups/v2/phone_number.rb +0 -59
  115. data/lib/twilio-ruby/rest/lookups/v2/query.rb +0 -59
  116. data/lib/twilio-ruby/rest/lookups/v2/rate_limit.rb +0 -59
  117. data/lib/twilio-ruby/rest/marketplace/v1/installed_add_on/installed_add_on_usage.rb +0 -59
  118. data/lib/twilio-ruby/rest/marketplace/v1/module_data.rb +0 -59
  119. data/lib/twilio-ruby/rest/marketplace/v1/module_data_management.rb +0 -59
  120. data/lib/twilio-ruby/rest/marketplace/v1/referral_conversion.rb +0 -59
  121. data/lib/twilio-ruby/rest/memory/v1/bulk.rb +0 -59
  122. data/lib/twilio-ruby/rest/memory/v1/conversation_summary.rb +2 -4
  123. data/lib/twilio-ruby/rest/memory/v1/data_mapping.rb +3 -3
  124. data/lib/twilio-ruby/rest/memory/v1/identifier.rb +0 -80
  125. data/lib/twilio-ruby/rest/memory/v1/identity_resolution_setting.rb +0 -59
  126. data/lib/twilio-ruby/rest/memory/v1/lookup.rb +0 -59
  127. data/lib/twilio-ruby/rest/memory/v1/observation.rb +2 -4
  128. data/lib/twilio-ruby/rest/memory/v1/operation.rb +0 -59
  129. data/lib/twilio-ruby/rest/memory/v1/recall.rb +0 -59
  130. data/lib/twilio-ruby/rest/memory/v1/revision.rb +2 -4
  131. data/lib/twilio-ruby/rest/memory/v1/store.rb +3 -3
  132. data/lib/twilio-ruby/rest/memory/v1/trait_group.rb +3 -3
  133. data/lib/twilio-ruby/rest/messaging/v1/brand_registration/brand_registration_otp.rb +0 -59
  134. data/lib/twilio-ruby/rest/messaging/v1/deactivations.rb +0 -59
  135. data/lib/twilio-ruby/rest/messaging/v1/domain_certs.rb +0 -59
  136. data/lib/twilio-ruby/rest/messaging/v1/domain_config.rb +0 -59
  137. data/lib/twilio-ruby/rest/messaging/v1/domain_config_messaging_service.rb +0 -59
  138. data/lib/twilio-ruby/rest/messaging/v1/domain_validate_dn.rb +0 -59
  139. data/lib/twilio-ruby/rest/messaging/v1/external_campaign.rb +0 -59
  140. data/lib/twilio-ruby/rest/messaging/v1/linkshortening_messaging_service.rb +0 -59
  141. data/lib/twilio-ruby/rest/messaging/v1/linkshortening_messaging_service_domain_association.rb +0 -59
  142. data/lib/twilio-ruby/rest/messaging/v1/request_managed_cert.rb +0 -59
  143. data/lib/twilio-ruby/rest/messaging/v1/service/us_app_to_person.rb +2 -4
  144. data/lib/twilio-ruby/rest/messaging/v1/service/us_app_to_person_usecase.rb +0 -59
  145. data/lib/twilio-ruby/rest/messaging/v1/usecase.rb +0 -59
  146. data/lib/twilio-ruby/rest/messaging/v2/domain_certs.rb +0 -59
  147. data/lib/twilio-ruby/rest/messaging/v2/typing_indicator.rb +0 -59
  148. data/lib/twilio-ruby/rest/messaging/v3/typing_indicator.rb +0 -59
  149. data/lib/twilio-ruby/rest/notify/v1/service/notification.rb +0 -59
  150. data/lib/twilio-ruby/rest/numbers/v1/bulk_eligibility.rb +0 -59
  151. data/lib/twilio-ruby/rest/numbers/v1/eligibility.rb +0 -59
  152. data/lib/twilio-ruby/rest/numbers/v1/embedded_session.rb +0 -59
  153. data/lib/twilio-ruby/rest/numbers/v1/porting_port_in.rb +0 -59
  154. data/lib/twilio-ruby/rest/numbers/v1/porting_port_in_phone_number.rb +0 -59
  155. data/lib/twilio-ruby/rest/numbers/v1/porting_portability.rb +0 -59
  156. data/lib/twilio-ruby/rest/numbers/v1/porting_webhook_configuration.rb +0 -59
  157. data/lib/twilio-ruby/rest/numbers/v1/porting_webhook_configuration_delete.rb +0 -59
  158. data/lib/twilio-ruby/rest/numbers/v1/sender_id_registration.rb +0 -59
  159. data/lib/twilio-ruby/rest/numbers/v1/sms_verification.rb +0 -59
  160. data/lib/twilio-ruby/rest/numbers/v1/sms_verification_check.rb +0 -59
  161. data/lib/twilio-ruby/rest/numbers/v1/voice_verification.rb +0 -59
  162. data/lib/twilio-ruby/rest/numbers/v1/voice_verification_check.rb +0 -59
  163. data/lib/twilio-ruby/rest/numbers/v1/webhook.rb +0 -59
  164. data/lib/twilio-ruby/rest/numbers/v2/bulk_hosted_number_order.rb +0 -59
  165. data/lib/twilio-ruby/rest/numbers/v2/bundle_clone.rb +0 -59
  166. data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/bundle/replace_items.rb +0 -59
  167. data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance.rb +0 -59
  168. data/lib/twilio-ruby/rest/numbers/v2.rb +0 -16
  169. data/lib/twilio-ruby/rest/numbers/v3/hosted_number_order.rb +0 -59
  170. data/lib/twilio-ruby/rest/oauth/v1/authorize.rb +0 -59
  171. data/lib/twilio-ruby/rest/oauth/v1/token.rb +0 -59
  172. data/lib/twilio-ruby/rest/oauth/v2/authorize.rb +0 -59
  173. data/lib/twilio-ruby/rest/oauth/v2/oauth_authorization_server.rb +0 -59
  174. data/lib/twilio-ruby/rest/oauth/v2/token.rb +2 -61
  175. data/lib/twilio-ruby/rest/preview/wireless/sim/usage.rb +0 -59
  176. data/lib/twilio-ruby/rest/preview_iam/v1/authorize.rb +0 -59
  177. data/lib/twilio-ruby/rest/preview_iam/v1/token.rb +0 -59
  178. data/lib/twilio-ruby/rest/preview_iam/versionless/organization.rb +0 -59
  179. data/lib/twilio-ruby/rest/pricing/v1/messaging.rb +0 -59
  180. data/lib/twilio-ruby/rest/pricing/v1/phone_number.rb +0 -59
  181. data/lib/twilio-ruby/rest/pricing/v1/voice/number.rb +0 -59
  182. data/lib/twilio-ruby/rest/pricing/v1/voice.rb +0 -59
  183. data/lib/twilio-ruby/rest/pricing/v2/number.rb +0 -59
  184. data/lib/twilio-ruby/rest/pricing/v2/voice/number.rb +0 -59
  185. data/lib/twilio-ruby/rest/pricing/v2/voice.rb +0 -59
  186. data/lib/twilio-ruby/rest/routes/v2/phone_number.rb +0 -59
  187. data/lib/twilio-ruby/rest/routes/v2/sip_domain.rb +0 -59
  188. data/lib/twilio-ruby/rest/routes/v2/trunk.rb +0 -59
  189. data/lib/twilio-ruby/rest/routes/v3/phone_number.rb +0 -59
  190. data/lib/twilio-ruby/rest/serverless/v1/service/build/build_status.rb +0 -59
  191. data/lib/twilio-ruby/rest/serverless/v1/service/function/function_version/function_version_content.rb +0 -59
  192. data/lib/twilio-ruby/rest/studio/v1/flow/engagement/engagement_context.rb +0 -59
  193. data/lib/twilio-ruby/rest/studio/v1/flow/engagement/step/step_context.rb +0 -59
  194. data/lib/twilio-ruby/rest/studio/v1/flow/execution/execution_context.rb +0 -59
  195. data/lib/twilio-ruby/rest/studio/v1/flow/execution/execution_step/execution_step_context.rb +0 -59
  196. data/lib/twilio-ruby/rest/studio/v2/flow/execution/execution_context.rb +0 -59
  197. data/lib/twilio-ruby/rest/studio/v2/flow/execution/execution_step/execution_step_context.rb +0 -59
  198. data/lib/twilio-ruby/rest/studio/v2/flow/flow_test_user.rb +0 -59
  199. data/lib/twilio-ruby/rest/studio/v2/flow_validate.rb +0 -59
  200. data/lib/twilio-ruby/rest/sync/v1/service/sync_stream/stream_message.rb +0 -59
  201. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_bulk_real_time_statistics.rb +0 -59
  202. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_cumulative_statistics.rb +0 -59
  203. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_real_time_statistics.rb +0 -59
  204. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_statistics.rb +0 -59
  205. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/worker_statistics.rb +0 -59
  206. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/workers_cumulative_statistics.rb +0 -59
  207. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/workers_real_time_statistics.rb +0 -59
  208. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/workers_statistics.rb +0 -59
  209. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow/workflow_cumulative_statistics.rb +0 -59
  210. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow/workflow_real_time_statistics.rb +0 -59
  211. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow/workflow_statistics.rb +0 -59
  212. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workspace_cumulative_statistics.rb +0 -59
  213. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workspace_real_time_statistics.rb +0 -59
  214. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workspace_statistics.rb +0 -59
  215. data/lib/twilio-ruby/rest/trunking/v1/trunk/recording.rb +0 -59
  216. data/lib/twilio-ruby/rest/trusthub/v1/a2p_brand_registration.rb +0 -59
  217. data/lib/twilio-ruby/rest/trusthub/v1/a2p_brand_registration_embedded_session.rb +0 -59
  218. data/lib/twilio-ruby/rest/trusthub/v1/a2p_campaign_registration.rb +0 -59
  219. data/lib/twilio-ruby/rest/trusthub/v1/a2p_campaign_registration_embedded_session.rb +0 -59
  220. data/lib/twilio-ruby/rest/trusthub/v1/compliance_inquiries.rb +0 -59
  221. data/lib/twilio-ruby/rest/trusthub/v1/compliance_registration_inquiries.rb +0 -59
  222. data/lib/twilio-ruby/rest/trusthub/v1/compliance_tollfree_inquiries.rb +0 -59
  223. data/lib/twilio-ruby/rest/trusthub/v1/customer_profiles_provisional_copy.rb +0 -59
  224. data/lib/twilio-ruby/rest/trusthub/v1/trust_products_provisional_copy.rb +0 -59
  225. data/lib/twilio-ruby/rest/verify/v2/form.rb +0 -59
  226. data/lib/twilio-ruby/rest/verify/v2/safelist.rb +0 -59
  227. data/lib/twilio-ruby/rest/verify/v2/service/access_token.rb +0 -59
  228. data/lib/twilio-ruby/rest/verify/v2/service/approve_challenge.rb +0 -59
  229. data/lib/twilio-ruby/rest/verify/v2/service/entity/challenge/notification.rb +0 -59
  230. data/lib/twilio-ruby/rest/verify/v2/service/entity/factor.rb +1 -1
  231. data/lib/twilio-ruby/rest/verify/v2/service/entity/new_factor.rb +0 -59
  232. data/lib/twilio-ruby/rest/verify/v2/service/new_challenge.rb +3 -62
  233. data/lib/twilio-ruby/rest/verify/v2/service/new_factor.rb +0 -59
  234. data/lib/twilio-ruby/rest/verify/v2/service/new_verify_factor.rb +1 -60
  235. data/lib/twilio-ruby/rest/verify/v2/service/verification.rb +8 -61
  236. data/lib/twilio-ruby/rest/verify/v2/service/verification_check.rb +0 -59
  237. data/lib/twilio-ruby/rest/verify/v2/verification_attempts_summary.rb +0 -59
  238. data/lib/twilio-ruby/rest/video/v1/composition_settings.rb +0 -59
  239. data/lib/twilio-ruby/rest/video/v1/recording_settings.rb +0 -59
  240. data/lib/twilio-ruby/rest/video/v1/room/participant/anonymize.rb +0 -59
  241. data/lib/twilio-ruby/rest/video/v1/room/participant/subscribe_rules.rb +0 -59
  242. data/lib/twilio-ruby/rest/video/v1/room/recording_rules.rb +0 -59
  243. data/lib/twilio-ruby/rest/voice/v1/archived_call.rb +0 -59
  244. data/lib/twilio-ruby/rest/voice/v1/dialing_permissions/bulk_country_update.rb +0 -59
  245. data/lib/twilio-ruby/rest/voice/v1/dialing_permissions/settings.rb +0 -59
  246. data/lib/twilio-ruby/rest/voice/v1/dialing_permissions.rb +0 -59
  247. data/lib/twilio-ruby/rest/voice/v2/account_default_configuration.rb +0 -59
  248. data/lib/twilio-ruby/rest/voice/v2/configuration/default.rb +0 -59
  249. data/lib/twilio-ruby/rest/voice/v2/configuration.rb +0 -59
  250. data/lib/twilio-ruby/rest/voice/v2/recording.rb +0 -59
  251. data/lib/twilio-ruby/rest/voice/v2/recording_account_default_configuration.rb +547 -0
  252. data/lib/twilio-ruby/rest/voice/v2/transcription.rb +0 -59
  253. data/lib/twilio-ruby/rest/voice/v2/type.rb +0 -59
  254. data/lib/twilio-ruby/rest/voice/v2.rb +6 -0
  255. data/lib/twilio-ruby/rest/voice/v3/transcription.rb +259 -50
  256. data/lib/twilio-ruby/twiml/voice_response.rb +12 -6
  257. data/lib/twilio-ruby/version.rb +1 -1
  258. metadata +9 -4
  259. data/lib/twilio-ruby/rest/memory/v1/event.rb +0 -320
  260. data/lib/twilio-ruby/rest/numbers/v2/caller_id.rb +0 -515
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a494d086870863ab1aae8748d515c63a504177246240a1c36e7eccfa95b9f92b
4
- data.tar.gz: 25ec1e4bd56153220354de496f9311b29cfef4cbd6e990683e3df1a9bbd1380e
3
+ metadata.gz: 92782df8271f1b9a7f8ee80b10514048392c27dc6d58c3513e21a8fa2592a74e
4
+ data.tar.gz: 031343a9310ec971d5d015aaadd5df55ab781a9cacfd15b53dc6bf79b95fae05
5
5
  SHA512:
6
- metadata.gz: 5fd59d61b2bb3c9be81748c577392314b8457d00c8242a7efdc380306143920cfe79d9b13abbb41e6bc2df0d5da9d6641c13004d61d286cdde87d1d2e0a3353b
7
- data.tar.gz: a74fffeb54bd87ae9d78a78e012a0d782e7ae6acb63d5e00119333bfb69aefc29383b44c5be93b3fdd6ca8fd28aa2163e0c727d35ba6472b7a3789ade7b3eaa6
6
+ metadata.gz: cdcf4946f4391697754789328369c248036fc05a7217ee4d60a4bad9ef2e61f6e0ec4fbcaddbca51b141d7d771ce1fefc55dcba49bd775af43521b8b73a86e28
7
+ data.tar.gz: 170130144ac18fbe7dc463683ea7ddea4494ba27fc329f29a801a44f317fb4c19ba9fbeb72d0d506c4c94d50efe239cc46e78c157c425de0200186662a7fbd59
@@ -49,7 +49,19 @@ jobs:
49
49
  - run: bundle exec rake install
50
50
 
51
51
  - name: Run linter
52
- run: bundle exec rubocop -d --cache true --parallel
52
+ # rubocop's ConfigStore path cache (config_store.rb) does a non-atomic
53
+ # `@path_cache[dir] ||= ...` read-modify-write. --parallel runs worker
54
+ # threads via Parallel.in_threads, and on JRuby (no GIL, true parallel
55
+ # threads) that race can hand a thread a nil config path, crashing with
56
+ # "no implicit conversion of nil into String" in File.absolute_path.
57
+ # CRuby's GIL happens to serialize the Hash access enough to avoid it.
58
+ # Run JRuby serially and uncached to sidestep the race.
59
+ run: |
60
+ if [[ "${{ matrix.ruby }}" == jruby-* ]]; then
61
+ bundle exec rubocop -d
62
+ else
63
+ bundle exec rubocop -d --cache true --parallel
64
+ fi
53
65
  if: ${{ matrix.ruby != '2.4'}}
54
66
 
55
67
  - name: Run Unit Tests
data/CHANGES.md CHANGED
@@ -1,5 +1,422 @@
1
1
  twilio-ruby changelog
2
2
  =====================
3
+ [2026-09-28] Version 7.11.3
4
+ ---------------------------
5
+ **Library - Fix**
6
+ - [PR #809](https://github.com/twilio/twilio-ruby/pull/809): validate webhook signatures on percent-encoded request paths. Thanks to [@manisha1997](https://github.com/manisha1997)!
7
+
8
+ **Twiml**
9
+ - Add `audio_format` and `sample_rate` to Stream for HDCodec
10
+
11
+ **Api**
12
+ - # API Changes
13
+ - ## 2026-09-22
14
+ - Simplified the `criteria` field description.
15
+ - ## 2026-09-18
16
+ - Moved `readOnly` on the snapshot count fields (`profileCount`, `partitionCount`) from the shared schema to the response usage sites, so the counts stay read-only in responses (no change for API consumers).
17
+ - ## 2026-09-17
18
+ - Renamed 3 `Get*` operations to `Fetch*` to match the operationId standard: `FetchCohort`, `FetchSnapshot`, `FetchOperation`.
19
+ - Removed the unused `ExpressionId` schema and made the operation error example cohort-native, so no `aud_` identifiers remain in the spec.
20
+ - Kept `libraryVisibility: hidden` across the whole surface (info, path items, and operations).
21
+ - ## 2026-09-08
22
+ - Removed the deprecated header-based-versioning unified specs, consolidating audiences onto the path-based `api.twilio.com/v1` surface.
23
+ - ## 2026-08-31
24
+ - Published the unified audiences spec at `api.twilio.com/v1`.
25
+ - ## 2026-08-26
26
+ - Fixed the Cohort operation response mapping in the unified audiences API.
27
+ - ## 2026-08-19
28
+ - Migrated the unified audiences spec to the Cohort surface (Audiences renamed to Cohorts).
29
+ - Switched `downstreamServiceName` to `audiences-domain`.
30
+ - ## 2026-08-05
31
+ - Added the `api.unified.version.preview` beta feature.
32
+ - Made the unified APIs available in prod us1.
33
+ - ## 2026-07-30
34
+ - Fixed example values.
35
+ - ## 2026-07-29
36
+ - Added the initial version of the audiences API to the unified APIs.
37
+ - ## 2026-07-20
38
+ - Deployed the audiences-domain OAS to the dev edge.
39
+ - ## 2026-07-06
40
+ - Added the prod-us1 realm to the audiences public API.
41
+ - ## 2026-06-23
42
+ - Changed the `storeType` enum from `MEMORA` to `TWILIO`.
43
+ - ## 2026-05-04
44
+ - Added the stage-us1 realm and `x-rate-limit` to the audiences API.
45
+ - ## 2026-04-08
46
+ - Added the initial audiences endpoints.
47
+ - Add `TwimlProcessStatusCallbackEvents` parameter to CreateTwimlProcess endpoint
48
+ - Add `twiml_process` resource alongside `twiml_session` (`twiml_session` is deprecated and will be removed in a future release)
49
+
50
+ **Audiences**
51
+ - ## 2026-09-14
52
+ - Minor updates (formatting, metadata)
53
+ - ## 2026-09-11
54
+ - **Content updates**:
55
+ - Updated summary for `AdminFetchRecord`
56
+ - Updated summary for `AdminFetchCohort`
57
+ - Updated summary for `AdminFetchCohortSnapshot`
58
+ - Updated summary for `AdminFetchCohortOperation`
59
+ - Updated schema description for `ResourceLabels`
60
+ - ## 2026-09-22
61
+ - **Content updates**:
62
+ - Updated schema description for `Criteria`
63
+ - ## 2026-09-18
64
+ - Minor updates (formatting, metadata)
65
+ - ## 2026-09-17
66
+ - Minor updates (formatting, metadata)
67
+ - ## 2026-09-17
68
+ - **Content updates**:
69
+ - Updated description for `CreateCohort`
70
+ - Updated description for `ListCohortSnapshots`
71
+ - Updated description for `CreateCohortSnapshot`
72
+ - Updated description for `FetchCohortSnapshot`
73
+ - Updated description for `ListCohortSnapshotProfiles`
74
+ - Updated schema description for `Criteria`
75
+ - Updated schema description for `Cohort`
76
+ - Updated schema description for `CohortSnapshot`
77
+ - Updated schema description for `CohortOperationResult`
78
+ - Updated schema description for `CohortOperation`
79
+ - ## 2026-09-15
80
+ - Minor updates (formatting, metadata)
81
+ - ## 2026-09-14
82
+ - **Content updates**:
83
+ - Updated summary for `FetchCohort`
84
+ - Updated summary for `FetchCohortSnapshot`
85
+ - Updated summary for `FetchCohortOperation`
86
+ - Updated schema description for `ResourceLabels`
87
+
88
+ **Capabilities**
89
+ - Add a feature-gated preview endpoint to create Capabilities.
90
+
91
+ **Conversations**
92
+ - Add the feature-gated Capabilities list and create endpoints to Conversations v2.
93
+
94
+ **Data-ingress**
95
+ - ## 2026-09-07
96
+ - Minor updates (formatting, metadata)
97
+ - ## 2026-09-09
98
+ - **Added 16 new path(s)**:
99
+ - `/v1/DataSyncs/{syncId}` (FetchDataSync)
100
+ - `/v1/CloudAppSources/{sourceId}/Objects` (ListCloudAppObjects)
101
+ - `/v1/WarehouseSources/{sourceId}/Preview` (CreateWarehousePreview)
102
+ - `/v1/WarehouseSources/{sourceId}/Preview/{operationId}` (FetchWarehousePreview)
103
+ - `/v1/DataSample/{operationId}` (FetchDataSample)
104
+ - `/v1/ControlPlane/CloudAppSources/{sourceId}` (FetchCloudAppSource, PatchCloudAppSource, DeleteCloudAppSource)
105
+ - `/v1/ControlPlane/CloudAppSources/{sourceId}/Datasets` (ListCloudAppDatasets, CreateCloudAppDataset)
106
+ - `/v1/ControlPlane/CloudAppSources/{sourceId}/Datasets/{datasetId}` (FetchCloudAppDataset, PatchCloudAppDataset, DeleteCloudAppDataset)
107
+ - `/v1/ControlPlane/WarehouseSources/{sourceId}` (FetchWarehouseSource, PatchWarehouseSource, DeleteWarehouseSource)
108
+ - `/v1/ControlPlane/WarehouseSources/{sourceId}/Datasets` (ListWarehouseDatasets, CreateWarehouseDataset)
109
+ - ...and 6 more paths
110
+ - **Removed 31 path(s)**:
111
+ - `/v1/DataSyncs/{SyncId}` (FetchDataSync)
112
+ - `/v1/CloudAppSources/{SourceId}/Objects` (ListCloudAppObjects)
113
+ - `/v1/WarehouseSources/{SourceId}/Preview` (CreateWarehousePreview)
114
+ - `/v1/WarehouseSources/{SourceId}/Preview/{OperationId}` (FetchWarehousePreview)
115
+ - `/v1/DataSample/{OperationId}` (FetchDataSample)
116
+ - `/v1/ControlPlane/CloudAppSources/{SourceId}` (FetchCloudAppSource, PatchCloudAppSource, DeleteCloudAppSource)
117
+ - `/v1/ControlPlane/CloudAppSources/{SourceId}/Datasets` (ListCloudAppDatasets, CreateCloudAppDataset)
118
+ - `/v1/ControlPlane/CloudAppSources/{SourceId}/Datasets/{DatasetId}` (FetchCloudAppDataset, PatchCloudAppDataset, DeleteCloudAppDataset)
119
+ - `/v1/ControlPlane/WarehouseSources/{SourceId}` (FetchWarehouseSource, PatchWarehouseSource, DeleteWarehouseSource)
120
+ - `/v1/ControlPlane/WarehouseSources/{SourceId}/Datasets` (ListWarehouseDatasets, CreateWarehouseDataset)
121
+ - ...and 21 more paths
122
+
123
+ **Destinations**
124
+ - ## 2026-09-24
125
+ - **Content updates**:
126
+ - Removed `GET` from the `method` enum on the `webhook` destination type's config options
127
+ - ## 2026-09-22
128
+ - **Content updates**:
129
+ - Added `CDP` to the `categories` enum on `DestinationType`
130
+ - ## 2026-09-14
131
+ - Enable admin APIs for stage-us1 and prod-ie1 realms
132
+ - ## 2026-09-11
133
+ - **Content updates**:
134
+ - Updated description for `CreateDestination`
135
+ - Updated description for `UpdateDestination`
136
+ - Updated description for `DeleteDestination`
137
+ - Updated schema description for `CredentialInput`
138
+ - Updated schema description for `DestinationCredentialOptions`
139
+ - ## 2026-09-11
140
+ - **Content updates**:
141
+ - Updated description for `ListDestinationTypes`
142
+ - Updated description for `GetDestinationType`
143
+ - Updated description for `CreateDestination`
144
+ - Updated description for `UpdateDestination`
145
+ - ## 2026-09-10
146
+ - Made `ListDestinationTypes` and `GetDestinationType` unauthenticated (`security: []`).
147
+ - Removed `iamOperation`, `addAuthorizationHeader`, and `betaFeature` from these operations.
148
+
149
+ **Iam**
150
+ - Removed user_context from the POST /v1/actions/post_login (PostLoginActionRequest) webhook payload; the login email is read from authentication_context.methods
151
+ - Replaced acr and completed_factors with authentication_context (acr, amr, methods) on the POST /v1/actions/post_login (PostLoginActionRequest) webhook payload
152
+ - Made request_context and request_context.ip_address required on the POST /v1/actions/post_login (PostLoginActionRequest) webhook payload
153
+
154
+ **Intelligence**
155
+ - Added optional `rule.operators[]` parameter override field to `POST /v3/RuleExecutions
156
+ - Change Summary in `POST /v3/RuleExecutions`
157
+
158
+ **Knowledge**
159
+ - ## 2026-09-23
160
+ - **Content updates**:
161
+ - Added properties to `WebSourceDetails`: errors
162
+ - **Routing updates**:
163
+ - Changed `downstreamServiceName` from `memora-domain` to `enterprise-knowledge-domain` for all operations
164
+
165
+ **Memory**
166
+ - ## 2026-09-18
167
+ - **Added 2 new path(s)**:
168
+ - `/v1/ControlPlane/TraitExtractionStrategies` (AdminListTraitExtractionStrategies)
169
+ - `/v1/ControlPlane/TraitExtractionStrategies/{traitStrategyId}` (AdminFetchTraitExtractionStrategy)
170
+ - ## 2026-09-03
171
+ - No path changes (schema description only)
172
+ - Clarified the `DataMappingCore` description: the PATCH body requires at least one field.
173
+ - ## 2026-09-10
174
+ - **Added 2 new path(s)** for Observation Extraction Strategies:
175
+ - `/v1/ControlPlane/ObservationExtractionStrategies` (ListObservationExtractionStrategies, CreateObservationExtractionStrategy)
176
+ - `/v1/ControlPlane/ObservationExtractionStrategies/{observationExtractionStrategyId}` (FetchObservationExtractionStrategy, UpdateObservationExtractionStrategy, DeleteObservationExtractionStrategy)
177
+ - **Content updates**:
178
+ - Updated `CreateObservationExtractionStrategyInput` description to document that at least one of `allowedCategories`/`prohibitedCategories` must be provided with a non-empty list
179
+ - ## 2026-09-07
180
+ - **Added 1 new path(s)** for Profile:
181
+ - `/v1/Stores/{storeId}/Profiles/BulkDeletions` (CreateProfilesBulkDeletion)
182
+ - ## 2026-09-03
183
+ - `UpdateStore`, `UpdateTraitGroup`, `UpdateDataMapping`, and `UpdateTraitExtractionStrategy` now require a body with at least one property. An empty `{}` gets a 400.
184
+
185
+ **Routes**
186
+ - Add `GET`/`POST` `/v3/ShortCodes/{isoCountryCode}/{shortCode}` to assign and fetch the Inbound Processing Region for short codes
187
+
188
+ **Verify**
189
+ - Add `aaguid` and `date_last_approved` to passkeys factors `metadata`.
190
+
191
+ **Voice**
192
+ - Add typed Recording AccountDefaultConfiguration public API endpoints.
193
+
194
+ **Webhooks**
195
+ - ## 2026-09-24
196
+ - **Changed**: `GET /v1/Webhooks/Settings` now documents each item as the full `Setting` rather than `SettingSummary`, adding `auth`, `signature`, `connection` and `edgeZones` to the list response. The service already returned these fields; only the schema understated them. Additive for consumers — no field is removed or renamed. The now-unreferenced `SettingSummary` schema is removed.
197
+
198
+
199
+ [2026-09-09] Version 7.11.2
200
+ ---------------------------
201
+ **Library - Chore**
202
+ - [PR #804](https://github.com/twilio/twilio-ruby/pull/804): Update RubyGems publishing steps in workflow. Thanks to [@manisha1997](https://github.com/manisha1997)!
203
+ - [PR #803](https://github.com/twilio/twilio-ruby/pull/803): Update Rakefile. Thanks to [@manisha1997](https://github.com/manisha1997)!
204
+ - [PR #799](https://github.com/twilio/twilio-ruby/pull/799): release gems. Thanks to [@manisha1997](https://github.com/manisha1997)!
205
+ - [PR #798](https://github.com/twilio/twilio-ruby/pull/798): Remove docker push. Thanks to [@manisha1997](https://github.com/manisha1997)!
206
+ - [PR #797](https://github.com/twilio/twilio-ruby/pull/797): version upgrade. Thanks to [@manisha1997](https://github.com/manisha1997)!
207
+ - [PR #796](https://github.com/twilio/twilio-ruby/pull/796): change permission. Thanks to [@manisha1997](https://github.com/manisha1997)!
208
+
209
+ **Audiences**
210
+ - ## 2026-09-01
211
+ - Backticked brace- and angle-bracket-bearing tokens in descriptions for MDX safety.
212
+ - Updated a prose reference to the renamed `FetchCohortSnapshot` operation.
213
+ - ## 2026-08-26
214
+ - **Removed 5 path(s)**:
215
+ - `/preview/Audiences` (AdminListAudiences)
216
+ - `/preview/Audiences/{audienceId}` (AdminGetAudience)
217
+ - `/preview/Snapshots` (AdminListSnapshots)
218
+ - `/preview/Snapshots/{snapshotId}` (AdminGetSnapshot)
219
+ - `/preview/Operations/{operationId}` (AdminGetOperation)
220
+ - ## 2026-08-25
221
+ - Minor updates (formatting, metadata)
222
+ - ## 2026-08-24
223
+ - **Added 1 new path(s)**:
224
+ - `/preview/Snapshots/{cohortSnapshotId}/Operations` (AdminListSnapshotOperations)
225
+ - **Removed 1 path(s)**:
226
+ - `/preview/Snapshots/{snapshotId}/Operations` (ListAdminSnapshotOperations)
227
+ - ## 2026-08-20
228
+ - Renamed all 13 operations so the operationId keyword leads (`AdminGetCohort` -> `FetchAdminCohort`) to meet standard.
229
+ - Set `info` `libraryVisibility` to `hidden` to exclude this admin spec from generation.
230
+ - Added the standard `pageSize`/`pageToken` query parameters to `ListAdminSnapshotOperations`, the only list operation missing them.
231
+ - ## 2026-08-19
232
+ - **Added 5 new path(s)**:
233
+ - `/preview/Cohorts` (AdminListCohorts)
234
+ - `/preview/Cohorts/{cohortId}` (AdminGetCohort)
235
+ - `/preview/CohortSnapshots` (AdminListCohortSnapshots)
236
+ - `/preview/CohortSnapshots/{cohortSnapshotId}` (AdminGetCohortSnapshot)
237
+ - `/preview/CohortOperations/{cohortOperationId}` (AdminGetCohortOperation)
238
+ - ## 2026-09-01
239
+ - Renamed 3 `Get*` operations to `Fetch*` to match the operationId standard: `FetchCohort`, `FetchCohortSnapshot`, `FetchCohortOperation`. The transpiler skips operations whose operationId does not start with a standard keyword, which had been dropping all three from generated output.
240
+ - Set `libraryVisibility` to `private` (was `hidden`) so the spec is eligible for the private docs pipeline.
241
+ - Backticked brace- and angle-bracket-bearing tokens in descriptions for MDX safety.
242
+ - ## 2026-08-28
243
+ - **Removed 6 path(s)**:
244
+ - `/preview/Audiences` (ListAudiences, CreateAudience)
245
+ - `/preview/Audiences/{audienceId}` (FetchAudience, UpdateAudience, DeleteAudience)
246
+ - `/preview/Snapshots` (ListSnapshots, CreateSnapshot)
247
+ - `/preview/Snapshots/{snapshotId}` (FetchSnapshot, DeleteSnapshot)
248
+ - `/preview/Snapshots/{snapshotId}/Profiles` (ListSnapshotProfiles)
249
+ - `/preview/Operations/{operationId}` (FetchOperation)
250
+ - ## 2026-08-20
251
+ - Renamed 6 `Get*` operations to `Fetch*` to match the operationId standard.
252
+ - Hid the deprecated Audiences/Snapshots paths and `/preview/Operations/{operationId}`.
253
+ - Backticked 11 brace-bearing tokens in descriptions for MDX safety.
254
+
255
+ **Conversations**
256
+ - Add PATCH support for partial updates to Configuration
257
+ - Add `VIDEO` to the Conversations v2 Communication channel enum.
258
+
259
+ **Data-ingress**
260
+ - # API Changes
261
+ - ## 2026-09-01
262
+ - Minor updates (formatting, metadata)
263
+ - ## 2026-08-12
264
+ - Minor updates (formatting, metadata)
265
+ - ## 2026-08-12
266
+ - Initial release with 13 paths and 13 operations
267
+
268
+ **Destinations**
269
+ - ## 2026-09-08
270
+ - Added `prod-ie1` to `supportedRealms` and `iamOperationEnabledRealms` for all endpoints
271
+ - ## 2026-09-01
272
+ - Removed the unused `admin-api` placeholder from `supportedRealms` on the public endpoints;
273
+ - One Admin routes now live in `admin_openapi.yaml`.
274
+ - **Added 6 new path(s)** (admin_openapi.yaml):
275
+ - `/v1/ControlPlane/Destinations` (AdminListDestinations)
276
+ - `/v1/ControlPlane/Destinations/{destinationId}` (AdminGetDestination)
277
+ - `/v1/ControlPlane/Subscriptions` (AdminListSubscriptions)
278
+ - `/v1/ControlPlane/Subscriptions/{subscriptionId}` (AdminGetSubscription)
279
+ - `/v1/ControlPlane/Subscriptions/{subscriptionId}/EventTypes` (AdminListSubscribedEvents)
280
+ - `/v1/ControlPlane/Subscriptions/{subscriptionId}/EventTypes/{eventType}` (AdminGetSubscribedEvent)
281
+ - ## 2026-08-26
282
+ - Minor updates (formatting, metadata)
283
+ - ## 2026-08-26
284
+ - Minor updates (formatting, metadata)
285
+ - ## 2026-08-25
286
+ - **Content updates**:
287
+ - Updated description for `CreateDestination`
288
+ - ## 2026-08-12
289
+ - Minor updates (formatting, metadata)
290
+
291
+ **Email**
292
+ - # API Changes
293
+ - ## 2026-09-02
294
+ - **Added 1 new path(s)**:
295
+ - `/v1/Sends/Cohorts` (sendCohort)
296
+ - ## 2026-08-28
297
+ - **Content updates**:
298
+ - Updated summary for `sendTransactional`
299
+ - Added parameter(s) to `sendTransactional`: X-Twilio-Version
300
+ - Updated schema description for `SuppressionsGroup`
301
+ - Added properties to `SuppressionsGroup`: type
302
+ - Removed properties from `SuppressionsGroup`: mode
303
+ - Updated schema description for `SuppressionsGlobal`
304
+ - Added properties to `SuppressionsGlobal`: type
305
+ - Removed properties from `SuppressionsGlobal`: mode
306
+ - Updated schema description for `Suppressions`
307
+ - Updated schema description for `LongRunningOperationResponse`
308
+ - ## 2026-08-27
309
+ - **Content updates**:
310
+ - Updated description for `SendEmail`
311
+ - Added parameter(s) to `SendEmail`: Content-Encoding, Idempotency-Key
312
+ - Updated schema description for `Envelope`
313
+ - Updated schema description for `SuppressionsGroup`
314
+ - Updated schema description for `SuppressionsGlobal`
315
+
316
+ **Iam**
317
+ - Removed redirect_urls from the GET /v1/Account/AuthorizedApps/{consentSid} response
318
+ - Added company_name, homepage_url, tos_url, and redirect_urls to the GET /v1/Account/AuthorizedApps/{consentSid} response
319
+ - Added GET /v1/Account/AuthorizedApps/{consentSid} - fetch authorized app details, including allowed permissions, by consent identifier SID
320
+ - added container-scoped entitlements endpoint (GET /v2/Container/{containerId}/Entitlements)
321
+
322
+ **Instrumentation**
323
+ - # API Changes
324
+ - ## 2026-09-04
325
+ - **Content updates**:
326
+ - Added `IdempotencyKeyHeader` to Create/Patch/Delete `AutoInstrumentationRule`; corrected the shared header's description
327
+ - Added `operationId`/`createdAt` to `LongRunningOperationResponse`; corrected example `status` from `RUNNING` to `PENDING`
328
+ - Renamed `Signal.timestamp` → `occurredAt`, `HourlyStats.hourTimestamp` → `hourAt`; uppercased `Signal.type` and `ListSignals`' `signalType` enums to SCREAMING_SNAKE_CASE
329
+ - Renamed `UserBehaviors` request/response fields to camelCase; added the `summaryDelivery` webhook callback
330
+ - Reshaped `PaginationMeta` (added required `key`, corrected `pageSize` bounds) and all 6 list operations (`ListEventSources`, `ListEventSourceDatasets`, `ListEventSchemas`, `ListAutoInstrumentationRules`, `ListSignals`, `ListSignalStats`) to the `meta` envelope; added `ListSignalStats`' `500` response
331
+ - Narrowed the domain's default `supportedRealms` to `dev-us1` only; `POST /v1/UserBehaviors` (`AnalyzeUserBehaviors`) keeps its own `dev-us1`/`stage-us1` override (prod withheld pending stage validation) — every other operation is now dev-only
332
+ - ## 2026-08-31
333
+ - **Content updates**:
334
+ - Fixed stale `tdi_` TTID prefix throughout (path params, examples, transaction URLs) to `events_`; unified dataset/schema ID formats (`tdi_dat_`/`tdi_dataset_` → `events_dataset_`, `tdi_schema_` → `events_evsch_`); fixed rule-version examples to match the real `version: integer` field
335
+ - Fixed `operationId` to use the domain-agnostic `proc_job_` TTID prefix; corrected the `OperationId` parameter's length constraint (`max=34` → `max=35`) and added a `pattern`
336
+ - Fixed two length constraints hardcoded for the old `tdi_` prefix length: `IngestEventBatch`'s `sourceId` path parameter (`maxLength` 37 → 40); removed the stale, redundant `Twilio-Write-Key` header parameter
337
+ - Added the missing `AutoInstrumentationRuleId` regex `pattern`
338
+ - Fixed `info.title` ("Twilio Data Ingress - Instrumentation API" → "Events Domain - Instrumentation API")
339
+ - **Added 1 new API path**:
340
+ - `/v1/UserBehaviors` (AnalyzeUserBehaviors)
341
+ - ## 2026-07-28
342
+ - **Initial release** — 21 paths, 37 operations across three API surfaces:
343
+ - **Control Plane** (`/v1/ControlPlane/…`):
344
+ - `/v1/ControlPlane/EventSources` (CreateEventSource, ListEventSources)
345
+ - `/v1/ControlPlane/EventSources/{sourceId}` (FetchEventSource, PatchEventSource, DeleteEventSource)
346
+ - `/v1/ControlPlane/EventSources/{sourceId}/WriteKeys` (CreateWriteKey, ListWriteKeys)
347
+ - `/v1/ControlPlane/EventSources/{sourceId}/WriteKeys/{writeKey}` (DeleteWriteKey)
348
+ - `/v1/ControlPlane/EventSources/{sourceId}/Datasets` (CreateEventSourceDataset, ListEventSourceDatasets)
349
+ - `/v1/ControlPlane/EventSources/{sourceId}/Datasets/{datasetId}` (FetchEventSourceDataset, PatchEventSourceDataset, DeleteEventSourceDataset)
350
+ - `/v1/ControlPlane/EventSources/{sourceId}/EventSchemas` (CreateEventSchema, ListEventSchemas)
351
+ - `/v1/ControlPlane/EventSources/{sourceId}/EventSchemas/{schemaId}` (FetchEventSchema, PatchEventSchema, DeleteEventSchema)
352
+ - `/v1/ControlPlane/EventSources/{sourceId}/AutoInstrumentationRules` (CreateAutoInstrumentationRule, ListAutoInstrumentationRules)
353
+ - `/v1/ControlPlane/EventSources/{sourceId}/AutoInstrumentationRules/{autoInstrumentationRuleId}` (FetchAutoInstrumentationRule, PatchAutoInstrumentationRule, DeleteAutoInstrumentationRule)
354
+ - `/v1/ControlPlane/EventSources/{sourceId}/AutoInstrumentationRules/{autoInstrumentationRuleId}/Versions` (ListAutoInstrumentationRuleVersions)
355
+ - `/v1/ControlPlane/EventSources/{sourceId}/AutoInstrumentationRules/{autoInstrumentationRuleId}/Versions/{version}` (FetchAutoInstrumentationRuleVersion)
356
+ - `/v1/ControlPlane/Datasets` (ListDatasets)
357
+ - `/v1/ControlPlane/Datasets/{datasetId}` (FetchDataset)
358
+ - `/v1/ControlPlane/Operations/{operationId}` (FetchControlPlaneOperationStatus)
359
+ - `/v1/ControlPlane/Datasets` (ListDatasets)
360
+ - `/v1/ControlPlane/Datasets/{datasetId}` (FetchDataset)
361
+ - **Event Ingestion** (`/v1/EventSources/…`):
362
+ - `/v1/EventSources/{sourceId}/Batch` (IngestEventBatch)
363
+ - `/v1/EventSources/{sourceId}/AutoInstrumentationRules/{autoInstrumentationRuleId}/Preview` (TriggerAutoInstrumentationPreview)
364
+ - `/v1/EventSources/{sourceId}/AutoInstrumentationRules/{autoInstrumentationRuleId}/Preview/{operationId}` (GetAutoInstrumentationPreviewResult)
365
+ - **Signal API** (`/v1/EventSources/…`):
366
+ - `/v1/EventSources/{sourceId}/Signals` (IngestSignals, ListSignals)
367
+ - `/v1/EventSources/{sourceId}/Signals/{signalKey}` (GetSignalBySignalKey)
368
+ - `/v1/EventSources/{sourceId}/SignalStats` (ListSignalStats)
369
+
370
+ **Memory**
371
+ - ## 2026-08-18
372
+ - **Breaking change**:
373
+ - Removed the deprecated `CSV` and `DATASET` values from the `DataMappingType` enum.
374
+ - `INGRESS`, `DATASET_CLOUDAPP`, and `DATASET_WAREHOUSE` are the only valid values now.
375
+ - Removed the `DataMappingFromCSV` and `DataMappingFromDataSet` schemas and their
376
+ - `oneOf`/discriminator entries on `DataMappingFromTypes`, along with the corresponding
377
+ - `CSV`/`DATASET` discriminator mapping keys.
378
+ - Any caller still sending `type: CSV` or `type: DATASET` on `AdminListDataMappings`
379
+ - (filtering by those values) will get a 400.
380
+ - ## 2026-08-27
381
+ - **Added 2 new path(s)** for Trait Extraction Strategies:
382
+ - `/v1/ControlPlane/TraitExtractionStrategies` (ListTraitExtractionStrategies, CreateTraitExtractionStrategy)
383
+ - `/v1/ControlPlane/TraitExtractionStrategies/{traitStrategyId}` (FetchTraitExtractionStrategy, UpdateTraitExtractionStrategy, DeleteTraitExtractionStrategy)
384
+ - ## 2026-08-18
385
+ - **Breaking change**:
386
+ - Removed the deprecated `CSV` and `DATASET` values from the `DataMappingType` enum.
387
+ - `INGRESS`, `DATASET_CLOUDAPP`, and `DATASET_WAREHOUSE` are the only valid values now.
388
+ - Removed the `DataMappingFromCSV` and `DataMappingFromDataSet` schemas and their
389
+ - `oneOf`/discriminator entries on `DataMappingFromTypes`, along with the corresponding
390
+ - `CSV`/`DATASET` discriminator mapping keys.
391
+ - Any caller still sending `type: CSV` or `type: DATASET` on `CreateDataMapping` or
392
+ - `UpdateDataMapping` (or filtering `ListDataMappings`/`ListDataMappingSuggestions` by
393
+ - those values) will get a 400.
394
+
395
+ **Messaging**
396
+ - Add SenderIdentity, SenderType, and SenderRegion filter query parameters to list numbers and senders endpoint (beta)
397
+ - Add capabilities field to the numbers and senders response (beta)
398
+ - Remove the WhatsApp Senders v1 endpoints (`/v1/Channels/WhatsApp/Senders`) from RestProxy; the sender was routed to the sunsetting `messaging-whatsapp-k8s-orch` downstream. Use the Senders v2 API (`/v2/Channels/Senders`) instead.
399
+
400
+ **Verify**
401
+ - Add `Templates` optional parameter on Verification creation (a stringified JSON array of `sid`/`substitutions` entries). When provided, `Templates` takes precedence over `TemplateSid`.
402
+
403
+ **Voice**
404
+ - ## 2026-09-03
405
+ - Added `links.conversation` to Transcription resources as the absolute Conversations API URL for the
406
+ - transcript's `conversationId`. It is present once the transcript has been stored; the `links` object
407
+ - is omitted otherwise.
408
+ - ## 2026-09-01
409
+ - Removed `mediaUrl` from `CreateRequestWithMediaUrl`'s required fields so a request with neither `sourceId` nor `mediaUrl` reaches the downstream service, which rejects it with the specific error code 17500 instead of a generic gateway 400
410
+ - Set `additionalProperties: false` on both `CreateRequestWithSourceId` and `CreateRequestWithMediaUrl` so the two `oneOf` variants stay mutually exclusive: `sourceId` is undeclared on the media-URL variant and `mediaUrl` is undeclared on the source-ID variant, keeping every request shape resolvable to exactly one variant
411
+ - ## 2026-08-05
412
+ - Added GET /v3/Transcriptions to list and filter transcriptions (status, sourceId, languageCode, createdAfter/createdBefore) with pageSize/pageToken pagination. createdAfter is inclusive and createdBefore exclusive. Returns 422 (error code 17535) when a sourceId's historical item count exceeds the service scan cap
413
+
414
+ **Webhooks**
415
+ - # API Changes
416
+ - ## 2026-08-24
417
+ - **Changed**: Created Webhooks Config API ( https://docs.google.com/document/d/1zkAJD8a8MgoxWifdYDl_d465Az3W6CcD9fuCC2xlSXE/edit?tab=t.0#heading=h.u9e0ry6oe89j ), that includes 7 new resource(s)**: SharedKeys, AuthProfiles, Settings, Rules, Operations, Tests, EdgeZones in /v1/Webhooks referencing webhooks-config downstream.
418
+
419
+
3
420
  [2026-08-13] Version 7.11.1
4
421
  ---------------------------
5
422
  - chore: change permission
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- twilio-ruby (7.11.1)
4
+ twilio-ruby (7.11.3)
5
5
  faraday (>= 2.0, < 3.0)
6
6
  jwt (>= 1.5, < 4.0)
7
7
  nokogiri (>= 1.6, < 2.0)
@@ -144,7 +144,7 @@ CHECKSUMS
144
144
  rubocop-ast (1.50.0) sha256=b9ca88300da0803ee222ad20cdb30494c0a784eed06fdc35d254b06d662788db
145
145
  ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
146
146
  simplecov (1.0.3) sha256=38ef0514f16ae7562f0d0f4df02610071115103d301b6de7dacbcc000082e39b
147
- twilio-ruby (7.11.1)
147
+ twilio-ruby (7.11.3)
148
148
  unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
149
149
  unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f
150
150
  uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6
data/README.md CHANGED
@@ -39,13 +39,13 @@ This library supports the following Ruby implementations:
39
39
  To install using [Bundler][bundler] grab the latest stable version:
40
40
 
41
41
  ```ruby
42
- gem 'twilio-ruby', '~> 7.11.1'
42
+ gem 'twilio-ruby', '~> 7.11.3'
43
43
  ```
44
44
 
45
45
  To manually install `twilio-ruby` via [Rubygems][rubygems] simply gem install:
46
46
 
47
47
  ```bash
48
- gem install twilio-ruby -v 7.11.1
48
+ gem install twilio-ruby -v 7.11.3
49
49
  ```
50
50
 
51
51
  To build and install the development branch yourself from the latest source:
data/githooks/pre-commit CHANGED
@@ -1 +1,12 @@
1
+ if git diff --cached --name-only | grep -q '^Gemfile\.lock$'; then
2
+ if grep -qE 'https://[^[:space:]]+/artifactory/api/gems/[^/[:space:]]+/?' Gemfile.lock; then
3
+ # A committed lockfile must only reference public registry hosts (enforced in CI by
4
+ # gems-lockfile-hygiene) - rewrite before it lands in the commit.
5
+ sed -E -i.bak 's#https://[^[:space:]]+/artifactory/api/gems/[^/[:space:]]+/?#https://rubygems.org/#' Gemfile.lock
6
+ rm -f Gemfile.lock.bak
7
+ git add Gemfile.lock
8
+ echo "pre-commit: rewrote internal registry URLs in Gemfile.lock to rubygems.org"
9
+ fi
10
+ fi
11
+
1
12
  make test
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rack/media_type'
4
+ require 'rack/utils'
4
5
 
5
6
  module Rack
6
7
  # Middleware that authenticates webhooks from Twilio using the request
@@ -33,7 +34,7 @@ module Rack
33
34
  end
34
35
 
35
36
  def call(env)
36
- return @app.call(env) unless env['PATH_INFO'].match(@path_regex)
37
+ return @app.call(env) unless protected_path?(env['PATH_INFO'])
37
38
  request = Rack::Request.new(env)
38
39
  original_url = request.url
39
40
  params = extract_params!(request)
@@ -51,6 +52,48 @@ module Rack
51
52
  end
52
53
  end
53
54
 
55
+ # Decide whether a request path needs its signature validated.
56
+ #
57
+ # PATH_INFO arrives percent-encoded, but the routers we sit in front of
58
+ # (Rails, Sinatra) decode and normalize the path before matching it against
59
+ # their routes. Comparing the configured patterns against the raw PATH_INFO
60
+ # alone therefore lets a request like `/%76oice` slip past this middleware
61
+ # unvalidated and still reach the `/voice` action.
62
+ #
63
+ # We compare against every form the path could take downstream and validate
64
+ # if any of them matches. Erring towards validating means a path we can't
65
+ # make sense of is still checked rather than waved through.
66
+ def protected_path?(path)
67
+ path = path.to_s
68
+ candidates = [path, decode(path)]
69
+ candidates << remove_dot_segments(candidates.last)
70
+ candidates.uniq.any? { |candidate| candidate.match(@path_regex) }
71
+ end
72
+
73
+ # Percent-decode a path the way a downstream router would. `unescape_path`
74
+ # (rather than `unescape`) leaves `+` alone, since a plus is a literal plus
75
+ # in a path and only means a space in a query string. Undecodable bytes are
76
+ # scrubbed, as matching a Regexp against invalid UTF-8 raises.
77
+ def decode(path)
78
+ decoded = Rack::Utils.unescape_path(path)
79
+ decoded.valid_encoding? ? decoded : decoded.scrub
80
+ rescue ArgumentError
81
+ path
82
+ end
83
+
84
+ # Collapse `.`, `..` and repeated slashes, so an anchored pattern such as
85
+ # %r{\A/voice\z} still recognizes `/sms/../voice`.
86
+ def remove_dot_segments(path)
87
+ segments = path.split('/').each_with_object([]) do |segment, resolved|
88
+ case segment
89
+ when '', '.' then next
90
+ when '..' then resolved.pop
91
+ else resolved << segment
92
+ end
93
+ end
94
+ "/#{segments.join('/')}"
95
+ end
96
+
54
97
  # Extract the params from the the request that we can use to determine the
55
98
  # signature. This _may_ modify the passed in request since it may read/rewind
56
99
  # the body.
@@ -67,6 +110,6 @@ module Rack
67
110
  end
68
111
  end
69
112
 
70
- private :extract_params!
113
+ private :extract_params!, :protected_path?, :decode, :remove_dot_segments
71
114
  end
72
115
  end
@@ -205,65 +205,6 @@ module Twilio
205
205
  end
206
206
  end
207
207
 
208
- class AuthTokenPromotionPageMetadata < PageMetadata
209
- attr_reader :auth_token_promotion_page
210
-
211
- def initialize(version, response, solution, limit)
212
- super(version, response)
213
- @auth_token_promotion_page = []
214
- @limit = limit
215
- key = get_key(response.body)
216
- records = 0
217
- while( limit != :unset && records < limit )
218
- @auth_token_promotion_page << AuthTokenPromotionListResponse.new(version, @payload, key, limit - records)
219
- @payload = self.next_page
220
- break unless @payload
221
- records += (@payload.body[key] || []).size
222
- end
223
- # Path Solution
224
- @solution = solution
225
- end
226
-
227
- def each
228
- @auth_token_promotion_page.each do |record|
229
- yield record
230
- end
231
- end
232
-
233
- def to_s
234
- '<Twilio::REST::Accounts::V1PageMetadata>';
235
- end
236
- end
237
- class AuthTokenPromotionListResponse < InstanceListResource
238
-
239
- # @param [Array<AuthTokenPromotionInstance>] instance
240
- # @param [Hash{String => Object}] headers
241
- # @param [Integer] status_code
242
- def initialize(version, payload, key, limit = :unset)
243
- data_list = payload.body[key] || []
244
- if limit != :unset
245
- data_list = data_list[0, limit]
246
- end
247
- @auth_token_promotion = data_list.map do |data|
248
- AuthTokenPromotionInstance.new(version, data)
249
- end
250
- @headers = payload.headers
251
- @status_code = payload.status_code
252
- end
253
-
254
- def auth_token_promotion
255
- @auth_token_promotion
256
- end
257
-
258
- def headers
259
- @headers
260
- end
261
-
262
- def status_code
263
- @status_code
264
- end
265
- end
266
-
267
208
  class AuthTokenPromotionInstance < InstanceResource
268
209
  ##
269
210
  # Initialize the AuthTokenPromotionInstance