twilio-ruby 5.40.3 → 5.44.0

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 (353) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +113 -0
  3. data/{LICENSE.md → LICENSE} +0 -0
  4. data/PULL_REQUEST_TEMPLATE.md +3 -3
  5. data/README.md +18 -2
  6. data/lib/twilio-ruby.rb +1 -1
  7. data/lib/twilio-ruby/jwt/access_token.rb +7 -2
  8. data/lib/twilio-ruby/rest/accounts.rb +12 -0
  9. data/lib/twilio-ruby/rest/accounts/v1.rb +14 -0
  10. data/lib/twilio-ruby/rest/accounts/v1/auth_token_promotion.rb +186 -0
  11. data/lib/twilio-ruby/rest/accounts/v1/secondary_auth_token.rb +200 -0
  12. data/lib/twilio-ruby/rest/api.rb +1 -1
  13. data/lib/twilio-ruby/rest/api/v2010/account/address.rb +3 -3
  14. data/lib/twilio-ruby/rest/api/v2010/account/address/dependent_phone_number.rb +2 -2
  15. data/lib/twilio-ruby/rest/api/v2010/account/application.rb +3 -3
  16. data/lib/twilio-ruby/rest/api/v2010/account/authorized_connect_app.rb +3 -3
  17. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number.rb +3 -3
  18. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/local.rb +29 -29
  19. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/machine_to_machine.rb +29 -29
  20. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/mobile.rb +29 -29
  21. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/national.rb +29 -29
  22. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/shared_cost.rb +29 -29
  23. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/toll_free.rb +29 -29
  24. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/voip.rb +29 -29
  25. data/lib/twilio-ruby/rest/api/v2010/account/call.rb +40 -20
  26. data/lib/twilio-ruby/rest/api/v2010/account/call/event.rb +201 -0
  27. data/lib/twilio-ruby/rest/api/v2010/account/call/feedback.rb +3 -3
  28. data/lib/twilio-ruby/rest/api/v2010/account/call/feedback_summary.rb +3 -3
  29. data/lib/twilio-ruby/rest/api/v2010/account/call/notification.rb +6 -6
  30. data/lib/twilio-ruby/rest/api/v2010/account/call/payment.rb +16 -16
  31. data/lib/twilio-ruby/rest/api/v2010/account/call/recording.rb +15 -8
  32. data/lib/twilio-ruby/rest/api/v2010/account/conference.rb +3 -3
  33. data/lib/twilio-ruby/rest/api/v2010/account/conference/participant.rb +26 -22
  34. data/lib/twilio-ruby/rest/api/v2010/account/conference/recording.rb +3 -3
  35. data/lib/twilio-ruby/rest/api/v2010/account/connect_app.rb +3 -3
  36. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number.rb +10 -10
  37. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/assigned_add_on.rb +3 -3
  38. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/assigned_add_on/assigned_add_on_extension.rb +3 -3
  39. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/local.rb +3 -3
  40. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/mobile.rb +3 -3
  41. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/toll_free.rb +3 -3
  42. data/lib/twilio-ruby/rest/api/v2010/account/key.rb +1 -1
  43. data/lib/twilio-ruby/rest/api/v2010/account/message.rb +25 -25
  44. data/lib/twilio-ruby/rest/api/v2010/account/message/feedback.rb +4 -4
  45. data/lib/twilio-ruby/rest/api/v2010/account/message/media.rb +3 -3
  46. data/lib/twilio-ruby/rest/api/v2010/account/notification.rb +3 -3
  47. data/lib/twilio-ruby/rest/api/v2010/account/outgoing_caller_id.rb +3 -3
  48. data/lib/twilio-ruby/rest/api/v2010/account/queue.rb +3 -3
  49. data/lib/twilio-ruby/rest/api/v2010/account/queue/member.rb +5 -5
  50. data/lib/twilio-ruby/rest/api/v2010/account/recording.rb +6 -6
  51. data/lib/twilio-ruby/rest/api/v2010/account/recording/add_on_result.rb +3 -3
  52. data/lib/twilio-ruby/rest/api/v2010/account/recording/add_on_result/payload.rb +3 -3
  53. data/lib/twilio-ruby/rest/api/v2010/account/recording/transcription.rb +6 -6
  54. data/lib/twilio-ruby/rest/api/v2010/account/short_code.rb +3 -3
  55. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain.rb +1 -1
  56. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/auth_types.rb +2 -2
  57. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/auth_types/auth_calls_mapping.rb +2 -2
  58. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/auth_types/auth_calls_mapping/auth_calls_credential_list_mapping.rb +3 -3
  59. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/auth_types/auth_calls_mapping/auth_calls_ip_access_control_list_mapping.rb +3 -3
  60. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/auth_types/auth_registrations_mapping.rb +2 -2
  61. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/auth_types/auth_registrations_mapping/auth_registrations_credential_list_mapping.rb +3 -3
  62. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/credential_list_mapping.rb +1 -1
  63. data/lib/twilio-ruby/rest/api/v2010/account/sip/ip_access_control_list.rb +1 -1
  64. data/lib/twilio-ruby/rest/api/v2010/account/sip/ip_access_control_list/ip_address.rb +1 -1
  65. data/lib/twilio-ruby/rest/api/v2010/account/token.rb +2 -2
  66. data/lib/twilio-ruby/rest/api/v2010/account/transcription.rb +3 -3
  67. data/lib/twilio-ruby/rest/api/v2010/account/usage/record.rb +6 -6
  68. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/all_time.rb +6 -6
  69. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/daily.rb +6 -6
  70. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/last_month.rb +6 -6
  71. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/monthly.rb +6 -6
  72. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/this_month.rb +6 -6
  73. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/today.rb +6 -6
  74. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/yearly.rb +6 -6
  75. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/yesterday.rb +6 -6
  76. data/lib/twilio-ruby/rest/api/v2010/account/usage/trigger.rb +18 -18
  77. data/lib/twilio-ruby/rest/api/v2010/account/validation_request.rb +3 -3
  78. data/lib/twilio-ruby/rest/autopilot/v1/assistant.rb +12 -12
  79. data/lib/twilio-ruby/rest/autopilot/v1/assistant/defaults.rb +3 -3
  80. data/lib/twilio-ruby/rest/autopilot/v1/assistant/dialogue.rb +3 -3
  81. data/lib/twilio-ruby/rest/autopilot/v1/assistant/field_type.rb +3 -3
  82. data/lib/twilio-ruby/rest/autopilot/v1/assistant/field_type/field_value.rb +11 -11
  83. data/lib/twilio-ruby/rest/autopilot/v1/assistant/model_build.rb +3 -3
  84. data/lib/twilio-ruby/rest/autopilot/v1/assistant/query.rb +26 -26
  85. data/lib/twilio-ruby/rest/autopilot/v1/assistant/style_sheet.rb +3 -3
  86. data/lib/twilio-ruby/rest/autopilot/v1/assistant/task.rb +6 -6
  87. data/lib/twilio-ruby/rest/autopilot/v1/assistant/task/field.rb +9 -9
  88. data/lib/twilio-ruby/rest/autopilot/v1/assistant/task/sample.rb +24 -24
  89. data/lib/twilio-ruby/rest/autopilot/v1/assistant/task/task_actions.rb +8 -8
  90. data/lib/twilio-ruby/rest/autopilot/v1/assistant/task/task_statistics.rb +6 -6
  91. data/lib/twilio-ruby/rest/autopilot/v1/assistant/webhook.rb +3 -3
  92. data/lib/twilio-ruby/rest/bulkexports/v1/export/day.rb +5 -22
  93. data/lib/twilio-ruby/rest/bulkexports/v1/export/export_custom_job.rb +25 -40
  94. data/lib/twilio-ruby/rest/chat/v1/service.rb +36 -36
  95. data/lib/twilio-ruby/rest/chat/v1/service/channel.rb +3 -3
  96. data/lib/twilio-ruby/rest/chat/v1/service/channel/invite.rb +19 -19
  97. data/lib/twilio-ruby/rest/chat/v1/service/channel/member.rb +28 -28
  98. data/lib/twilio-ruby/rest/chat/v1/service/channel/message.rb +7 -7
  99. data/lib/twilio-ruby/rest/chat/v1/service/role.rb +5 -5
  100. data/lib/twilio-ruby/rest/chat/v1/service/user.rb +8 -8
  101. data/lib/twilio-ruby/rest/chat/v1/service/user/user_channel.rb +2 -2
  102. data/lib/twilio-ruby/rest/chat/v2/service.rb +36 -36
  103. data/lib/twilio-ruby/rest/chat/v2/service/binding.rb +18 -18
  104. data/lib/twilio-ruby/rest/chat/v2/service/channel.rb +15 -15
  105. data/lib/twilio-ruby/rest/chat/v2/service/channel/invite.rb +19 -19
  106. data/lib/twilio-ruby/rest/chat/v2/service/channel/member.rb +54 -54
  107. data/lib/twilio-ruby/rest/chat/v2/service/channel/message.rb +25 -25
  108. data/lib/twilio-ruby/rest/chat/v2/service/channel/webhook.rb +15 -15
  109. data/lib/twilio-ruby/rest/chat/v2/service/role.rb +5 -5
  110. data/lib/twilio-ruby/rest/chat/v2/service/user.rb +8 -8
  111. data/lib/twilio-ruby/rest/chat/v2/service/user/user_binding.rb +18 -18
  112. data/lib/twilio-ruby/rest/chat/v2/service/user/user_channel.rb +20 -20
  113. data/lib/twilio-ruby/rest/client.rb +30 -4
  114. data/lib/twilio-ruby/rest/conversations/v1/configuration.rb +10 -18
  115. data/lib/twilio-ruby/rest/conversations/v1/configuration/webhook.rb +0 -8
  116. data/lib/twilio-ruby/rest/conversations/v1/conversation.rb +17 -17
  117. data/lib/twilio-ruby/rest/conversations/v1/conversation/message.rb +5 -13
  118. data/lib/twilio-ruby/rest/conversations/v1/conversation/message/delivery_receipt.rb +7 -15
  119. data/lib/twilio-ruby/rest/conversations/v1/conversation/participant.rb +12 -20
  120. data/lib/twilio-ruby/rest/conversations/v1/conversation/webhook.rb +3 -11
  121. data/lib/twilio-ruby/rest/conversations/v1/credential.rb +0 -8
  122. data/lib/twilio-ruby/rest/conversations/v1/role.rb +4 -12
  123. data/lib/twilio-ruby/rest/conversations/v1/service.rb +1 -9
  124. data/lib/twilio-ruby/rest/conversations/v1/service/binding.rb +24 -32
  125. data/lib/twilio-ruby/rest/conversations/v1/service/configuration.rb +14 -22
  126. data/lib/twilio-ruby/rest/conversations/v1/service/configuration/notification.rb +2 -10
  127. data/lib/twilio-ruby/rest/conversations/v1/service/conversation.rb +24 -22
  128. data/lib/twilio-ruby/rest/conversations/v1/service/conversation/message.rb +10 -18
  129. data/lib/twilio-ruby/rest/conversations/v1/service/conversation/message/delivery_receipt.rb +13 -21
  130. data/lib/twilio-ruby/rest/conversations/v1/service/conversation/participant.rb +18 -26
  131. data/lib/twilio-ruby/rest/conversations/v1/service/conversation/webhook.rb +9 -17
  132. data/lib/twilio-ruby/rest/conversations/v1/service/role.rb +10 -18
  133. data/lib/twilio-ruby/rest/conversations/v1/service/user.rb +41 -30
  134. data/lib/twilio-ruby/rest/conversations/v1/user.rb +35 -24
  135. data/lib/twilio-ruby/rest/events/v1/subscription.rb +12 -5
  136. data/lib/twilio-ruby/rest/fax/v1/fax.rb +27 -27
  137. data/lib/twilio-ruby/rest/insights.rb +8 -0
  138. data/lib/twilio-ruby/rest/insights/v1.rb +15 -0
  139. data/lib/twilio-ruby/rest/insights/v1/call/summary.rb +7 -0
  140. data/lib/twilio-ruby/rest/insights/v1/room.rb +487 -0
  141. data/lib/twilio-ruby/rest/insights/v1/room/participant.rb +378 -0
  142. data/lib/twilio-ruby/rest/ip_messaging.rb +8 -10
  143. data/lib/twilio-ruby/rest/ip_messaging/v1.rb +6 -8
  144. data/lib/twilio-ruby/rest/ip_messaging/v1/credential.rb +29 -68
  145. data/lib/twilio-ruby/rest/ip_messaging/v1/service.rb +198 -313
  146. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel.rb +32 -59
  147. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/invite.rb +23 -55
  148. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/member.rb +28 -71
  149. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/message.rb +31 -59
  150. data/lib/twilio-ruby/rest/ip_messaging/v1/service/role.rb +19 -39
  151. data/lib/twilio-ruby/rest/ip_messaging/v1/service/user.rb +29 -51
  152. data/lib/twilio-ruby/rest/ip_messaging/v1/service/user/user_channel.rb +12 -18
  153. data/lib/twilio-ruby/rest/ip_messaging/v2.rb +6 -6
  154. data/lib/twilio-ruby/rest/ip_messaging/v2/credential.rb +29 -66
  155. data/lib/twilio-ruby/rest/ip_messaging/v2/service.rb +116 -205
  156. data/lib/twilio-ruby/rest/ip_messaging/v2/service/binding.rb +23 -50
  157. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel.rb +41 -91
  158. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/invite.rb +23 -50
  159. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/member.rb +42 -118
  160. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/message.rb +46 -100
  161. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/webhook.rb +36 -89
  162. data/lib/twilio-ruby/rest/ip_messaging/v2/service/role.rb +19 -41
  163. data/lib/twilio-ruby/rest/ip_messaging/v2/service/user.rb +29 -53
  164. data/lib/twilio-ruby/rest/ip_messaging/v2/service/user/user_binding.rb +23 -53
  165. data/lib/twilio-ruby/rest/ip_messaging/v2/service/user/user_channel.rb +27 -56
  166. data/lib/twilio-ruby/rest/lookups.rb +1 -1
  167. data/lib/twilio-ruby/rest/lookups/v1.rb +1 -1
  168. data/lib/twilio-ruby/rest/lookups/v1/phone_number.rb +10 -10
  169. data/lib/twilio-ruby/rest/messaging/v1/service.rb +36 -36
  170. data/lib/twilio-ruby/rest/messaging/v1/service/alpha_sender.rb +3 -3
  171. data/lib/twilio-ruby/rest/messaging/v1/service/phone_number.rb +3 -3
  172. data/lib/twilio-ruby/rest/messaging/v1/service/short_code.rb +3 -3
  173. data/lib/twilio-ruby/rest/monitor/v1/event.rb +15 -15
  174. data/lib/twilio-ruby/rest/notify/v1/service.rb +24 -24
  175. data/lib/twilio-ruby/rest/notify/v1/service/binding.rb +10 -10
  176. data/lib/twilio-ruby/rest/notify/v1/service/notification.rb +17 -17
  177. data/lib/twilio-ruby/rest/preview.rb +8 -0
  178. data/lib/twilio-ruby/rest/preview/bulk_exports/export/day.rb +5 -22
  179. data/lib/twilio-ruby/rest/preview/bulk_exports/export/export_custom_job.rb +21 -39
  180. data/lib/twilio-ruby/rest/preview/hosted_numbers/authorization_document.rb +10 -10
  181. data/lib/twilio-ruby/rest/preview/hosted_numbers/authorization_document/dependent_hosted_number_order.rb +6 -6
  182. data/lib/twilio-ruby/rest/preview/hosted_numbers/hosted_number_order.rb +1 -1
  183. data/lib/twilio-ruby/rest/preview/trusted_comms.rb +15 -0
  184. data/lib/twilio-ruby/rest/preview/trusted_comms/branded_call.rb +4 -4
  185. data/lib/twilio-ruby/rest/preview/trusted_comms/branded_channel.rb +225 -0
  186. data/lib/twilio-ruby/rest/preview/trusted_comms/branded_channel/channel.rb +165 -0
  187. data/lib/twilio-ruby/rest/preview/trusted_comms/business.rb +0 -26
  188. data/lib/twilio-ruby/rest/preview/trusted_comms/current_call.rb +4 -4
  189. data/lib/twilio-ruby/rest/preview/trusted_comms/phone_call.rb +52 -52
  190. data/lib/twilio-ruby/rest/preview/understand/assistant/task/field.rb +2 -2
  191. data/lib/twilio-ruby/rest/pricing/v1/messaging.rb +2 -2
  192. data/lib/twilio-ruby/rest/pricing/v1/messaging/country.rb +4 -4
  193. data/lib/twilio-ruby/rest/pricing/v1/phone_number.rb +2 -2
  194. data/lib/twilio-ruby/rest/pricing/v1/phone_number/country.rb +4 -4
  195. data/lib/twilio-ruby/rest/pricing/v1/voice.rb +2 -2
  196. data/lib/twilio-ruby/rest/pricing/v1/voice/country.rb +4 -4
  197. data/lib/twilio-ruby/rest/pricing/v2/voice.rb +3 -3
  198. data/lib/twilio-ruby/rest/pricing/v2/voice/country.rb +4 -4
  199. data/lib/twilio-ruby/rest/pricing/v2/voice/number.rb +4 -4
  200. data/lib/twilio-ruby/rest/proxy/v1/service.rb +15 -15
  201. data/lib/twilio-ruby/rest/proxy/v1/service/phone_number.rb +11 -11
  202. data/lib/twilio-ruby/rest/proxy/v1/service/session.rb +6 -6
  203. data/lib/twilio-ruby/rest/proxy/v1/service/session/interaction.rb +6 -6
  204. data/lib/twilio-ruby/rest/proxy/v1/service/session/participant.rb +6 -6
  205. data/lib/twilio-ruby/rest/proxy/v1/service/session/participant/message_interaction.rb +9 -9
  206. data/lib/twilio-ruby/rest/proxy/v1/service/short_code.rb +8 -8
  207. data/lib/twilio-ruby/rest/serverless/v1/service.rb +5 -5
  208. data/lib/twilio-ruby/rest/serverless/v1/service/asset.rb +4 -4
  209. data/lib/twilio-ruby/rest/serverless/v1/service/asset/asset_version.rb +4 -4
  210. data/lib/twilio-ruby/rest/serverless/v1/service/build.rb +29 -4
  211. data/lib/twilio-ruby/rest/serverless/v1/service/build/build_status.rb +219 -0
  212. data/lib/twilio-ruby/rest/serverless/v1/service/environment.rb +4 -4
  213. data/lib/twilio-ruby/rest/serverless/v1/service/environment/deployment.rb +4 -4
  214. data/lib/twilio-ruby/rest/serverless/v1/service/environment/log.rb +4 -4
  215. data/lib/twilio-ruby/rest/serverless/v1/service/environment/variable.rb +4 -4
  216. data/lib/twilio-ruby/rest/serverless/v1/service/function.rb +4 -4
  217. data/lib/twilio-ruby/rest/serverless/v1/service/function/function_version.rb +4 -4
  218. data/lib/twilio-ruby/rest/serverless/v1/service/function/function_version/function_version_content.rb +4 -4
  219. data/lib/twilio-ruby/rest/studio/v1/flow/execution.rb +6 -6
  220. data/lib/twilio-ruby/rest/studio/v2/flow/execution.rb +6 -6
  221. data/lib/twilio-ruby/rest/supersim/v1/command.rb +7 -7
  222. data/lib/twilio-ruby/rest/supersim/v1/network.rb +6 -6
  223. data/lib/twilio-ruby/rest/supersim/v1/sim.rb +7 -7
  224. data/lib/twilio-ruby/rest/supersim/v1/usage_record.rb +6 -6
  225. data/lib/twilio-ruby/rest/sync/v1/service.rb +3 -3
  226. data/lib/twilio-ruby/rest/sync/v1/service/document.rb +21 -11
  227. data/lib/twilio-ruby/rest/sync/v1/service/document/document_permission.rb +6 -6
  228. data/lib/twilio-ruby/rest/sync/v1/service/sync_list.rb +21 -11
  229. data/lib/twilio-ruby/rest/sync/v1/service/sync_list/sync_list_item.rb +34 -11
  230. data/lib/twilio-ruby/rest/sync/v1/service/sync_list/sync_list_permission.rb +6 -6
  231. data/lib/twilio-ruby/rest/sync/v1/service/sync_map.rb +21 -11
  232. data/lib/twilio-ruby/rest/sync/v1/service/sync_map/sync_map_item.rb +40 -17
  233. data/lib/twilio-ruby/rest/sync/v1/service/sync_map/sync_map_permission.rb +6 -6
  234. data/lib/twilio-ruby/rest/sync/v1/service/sync_stream.rb +21 -11
  235. data/lib/twilio-ruby/rest/sync/v1/service/sync_stream/stream_message.rb +4 -4
  236. data/lib/twilio-ruby/rest/taskrouter/v1/workspace.rb +4 -4
  237. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/event.rb +6 -6
  238. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task.rb +12 -9
  239. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task/reservation.rb +12 -12
  240. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_channel.rb +16 -16
  241. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue.rb +8 -8
  242. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_cumulative_statistics.rb +6 -6
  243. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_statistics.rb +6 -6
  244. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queues_statistics.rb +9 -9
  245. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker.rb +3 -3
  246. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/reservation.rb +12 -12
  247. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/worker_statistics.rb +4 -4
  248. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/workers_cumulative_statistics.rb +4 -4
  249. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/workers_statistics.rb +6 -6
  250. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow.rb +12 -12
  251. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow/workflow_cumulative_statistics.rb +4 -4
  252. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow/workflow_statistics.rb +6 -6
  253. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workspace_cumulative_statistics.rb +4 -4
  254. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workspace_statistics.rb +6 -6
  255. data/lib/twilio-ruby/rest/trunking/v1/trunk.rb +27 -27
  256. data/lib/twilio-ruby/rest/trunking/v1/trunk/credential_list.rb +2 -2
  257. data/lib/twilio-ruby/rest/trunking/v1/trunk/ip_access_control_list.rb +2 -2
  258. data/lib/twilio-ruby/rest/trunking/v1/trunk/phone_number.rb +2 -2
  259. data/lib/twilio-ruby/rest/trunking/v1/trunk/recording.rb +21 -24
  260. data/lib/twilio-ruby/rest/verify/v2/form.rb +4 -4
  261. data/lib/twilio-ruby/rest/verify/v2/service.rb +54 -33
  262. data/lib/twilio-ruby/rest/verify/v2/service/access_token.rb +3 -3
  263. data/lib/twilio-ruby/rest/verify/v2/service/entity.rb +23 -35
  264. data/lib/twilio-ruby/rest/verify/v2/service/entity/challenge.rb +36 -61
  265. data/lib/twilio-ruby/rest/verify/v2/service/entity/factor.rb +59 -61
  266. data/lib/twilio-ruby/rest/verify/v2/service/messaging_configuration.rb +12 -12
  267. data/lib/twilio-ruby/rest/verify/v2/service/rate_limit.rb +3 -3
  268. data/lib/twilio-ruby/rest/verify/v2/service/rate_limit/bucket.rb +3 -3
  269. data/lib/twilio-ruby/rest/verify/v2/service/verification.rb +12 -12
  270. data/lib/twilio-ruby/rest/verify/v2/service/verification_check.rb +5 -5
  271. data/lib/twilio-ruby/rest/verify/v2/service/webhook.rb +4 -4
  272. data/lib/twilio-ruby/rest/video/v1/composition.rb +9 -9
  273. data/lib/twilio-ruby/rest/video/v1/composition_hook.rb +24 -24
  274. data/lib/twilio-ruby/rest/video/v1/recording.rb +6 -6
  275. data/lib/twilio-ruby/rest/video/v1/room.rb +26 -9
  276. data/lib/twilio-ruby/rest/video/v1/room/recording.rb +6 -6
  277. data/lib/twilio-ruby/rest/video/v1/room/room_participant.rb +9 -9
  278. data/lib/twilio-ruby/rest/video/v1/room/room_participant/room_participant_subscribe_rule.rb +2 -2
  279. data/lib/twilio-ruby/rest/video/v1/room/room_recording_rule.rb +150 -0
  280. data/lib/twilio-ruby/rest/voice/v1/byoc_trunk.rb +9 -9
  281. data/lib/twilio-ruby/rest/voice/v1/dialing_permissions.rb +2 -2
  282. data/lib/twilio-ruby/rest/voice/v1/dialing_permissions/country.rb +22 -22
  283. data/lib/twilio-ruby/rest/voice/v1/dialing_permissions/country/highrisk_special_prefix.rb +4 -4
  284. data/lib/twilio-ruby/rest/voice/v1/ip_record.rb +2 -2
  285. data/lib/twilio-ruby/rest/wireless/v1/command.rb +7 -7
  286. data/lib/twilio-ruby/rest/wireless/v1/rate_plan.rb +7 -7
  287. data/lib/twilio-ruby/rest/wireless/v1/sim.rb +22 -22
  288. data/lib/twilio-ruby/rest/wireless/v1/sim/data_session.rb +4 -4
  289. data/lib/twilio-ruby/rest/wireless/v1/sim/usage_record.rb +10 -10
  290. data/lib/twilio-ruby/rest/wireless/v1/usage_record.rb +6 -6
  291. data/lib/twilio-ruby/twiml/voice_response.rb +4 -2
  292. data/lib/twilio-ruby/util/configuration.rb +5 -1
  293. data/lib/twilio-ruby/version.rb +1 -1
  294. data/spec/integration/accounts/v1/auth_token_promotion_spec.rb +44 -0
  295. data/spec/integration/accounts/v1/secondary_auth_token_spec.rb +69 -0
  296. data/spec/integration/api/v2010/account/call/event_spec.rb +102 -0
  297. data/spec/integration/api/v2010/account/call/recording_spec.rb +4 -0
  298. data/spec/integration/api/v2010/account/call_spec.rb +20 -10
  299. data/spec/integration/api/v2010/account/conference/participant_spec.rb +60 -0
  300. data/spec/integration/bulkexports/v1/export/export_custom_job_spec.rb +4 -2
  301. data/spec/integration/conversations/v1/conversation_spec.rb +1 -1
  302. data/spec/integration/conversations/v1/service/conversation_spec.rb +1 -1
  303. data/spec/integration/conversations/v1/service/user_spec.rb +9 -3
  304. data/spec/integration/conversations/v1/user_spec.rb +9 -3
  305. data/spec/integration/events/v1/sink/sink_test_spec.rb +1 -1
  306. data/spec/integration/events/v1/subscription_spec.rb +49 -0
  307. data/spec/integration/insights/v1/call/summary_spec.rb +1 -0
  308. data/spec/integration/insights/v1/room/participant_spec.rb +147 -0
  309. data/spec/integration/insights/v1/room_spec.rb +164 -0
  310. data/spec/integration/ip_messaging/v1/credential_spec.rb +13 -13
  311. data/spec/integration/ip_messaging/v1/service/channel/invite_spec.rb +11 -11
  312. data/spec/integration/ip_messaging/v1/service/channel/member_spec.rb +14 -14
  313. data/spec/integration/ip_messaging/v1/service/channel/message_spec.rb +14 -14
  314. data/spec/integration/ip_messaging/v1/service/channel_spec.rb +25 -25
  315. data/spec/integration/ip_messaging/v1/service/role_spec.rb +13 -13
  316. data/spec/integration/ip_messaging/v1/service/user/user_channel_spec.rb +7 -7
  317. data/spec/integration/ip_messaging/v1/service/user_spec.rb +17 -17
  318. data/spec/integration/ip_messaging/v1/service_spec.rb +9 -9
  319. data/spec/integration/ip_messaging/v2/credential_spec.rb +13 -13
  320. data/spec/integration/ip_messaging/v2/service/binding_spec.rb +11 -11
  321. data/spec/integration/ip_messaging/v2/service/channel/invite_spec.rb +11 -11
  322. data/spec/integration/ip_messaging/v2/service/channel/member_spec.rb +13 -13
  323. data/spec/integration/ip_messaging/v2/service/channel/message_spec.rb +17 -17
  324. data/spec/integration/ip_messaging/v2/service/channel/webhook_spec.rb +15 -15
  325. data/spec/integration/ip_messaging/v2/service/channel_spec.rb +29 -29
  326. data/spec/integration/ip_messaging/v2/service/role_spec.rb +13 -13
  327. data/spec/integration/ip_messaging/v2/service/user/user_binding_spec.rb +9 -9
  328. data/spec/integration/ip_messaging/v2/service/user/user_channel_spec.rb +20 -20
  329. data/spec/integration/ip_messaging/v2/service/user_spec.rb +21 -21
  330. data/spec/integration/ip_messaging/v2/service_spec.rb +29 -29
  331. data/spec/integration/lookups/v1/phone_number_spec.rb +7 -7
  332. data/spec/integration/preview/bulk_exports/export/export_custom_job_spec.rb +4 -2
  333. data/spec/integration/preview/trusted_comms/{business/brand/branded_channel → branded_channel}/channel_spec.rb +4 -8
  334. data/spec/integration/preview/trusted_comms/{business/brand/branded_channel_spec.rb → branded_channel_spec.rb} +5 -9
  335. data/spec/integration/preview/trusted_comms/business_spec.rb +0 -1
  336. data/spec/integration/serverless/v1/service/build/build_status_spec.rb +48 -0
  337. data/spec/integration/serverless/v1/service/build_spec.rb +8 -2
  338. data/spec/integration/taskrouter/v1/workspace/worker/worker_channel_spec.rb +1 -1
  339. data/spec/integration/trunking/v1/trunk/recording_spec.rb +2 -6
  340. data/spec/integration/verify/v2/service/entity/challenge_spec.rb +56 -20
  341. data/spec/integration/verify/v2/service/entity/factor_spec.rb +11 -26
  342. data/spec/integration/verify/v2/service/entity_spec.rb +4 -12
  343. data/spec/integration/verify/v2/service_spec.rb +8 -4
  344. data/spec/integration/video/v1/room/room_recording_rule_spec.rb +89 -0
  345. data/spec/integration/video/v1/room_spec.rb +12 -7
  346. data/spec/jwt/access_token_spec.rb +9 -1
  347. data/spec/rest/client_spec.rb +24 -2
  348. data/twilio-ruby.gemspec +2 -1
  349. metadata +45 -13
  350. data/lib/twilio-ruby/rest/preview/trusted_comms/business/brand.rb +0 -233
  351. data/lib/twilio-ruby/rest/preview/trusted_comms/business/brand/branded_channel.rb +0 -260
  352. data/lib/twilio-ruby/rest/preview/trusted_comms/business/brand/branded_channel/channel.rb +0 -189
  353. data/spec/integration/preview/trusted_comms/business/brand_spec.rb +0 -48
@@ -15,8 +15,8 @@ module Twilio
15
15
  ##
16
16
  # Initialize the DataSessionList
17
17
  # @param [Version] version Version that contains the resource
18
- # @param [String] sim_sid The SID of the [Sim
19
- # resource](https://www.twilio.com/docs/wireless/api/sim-resource) that the Data
18
+ # @param [String] sim_sid The SID of the {Sim
19
+ # resource}[https://www.twilio.com/docs/wireless/api/sim-resource] that the Data
20
20
  # Session is for.
21
21
  # @return [DataSessionList] DataSessionList
22
22
  def initialize(version, sim_sid: nil)
@@ -148,8 +148,8 @@ module Twilio
148
148
  # Initialize the DataSessionInstance
149
149
  # @param [Version] version Version that contains the resource
150
150
  # @param [Hash] payload payload that contains response from Twilio
151
- # @param [String] sim_sid The SID of the [Sim
152
- # resource](https://www.twilio.com/docs/wireless/api/sim-resource) that the Data
151
+ # @param [String] sim_sid The SID of the {Sim
152
+ # resource}[https://www.twilio.com/docs/wireless/api/sim-resource] that the Data
153
153
  # Session is for.
154
154
  # @return [DataSessionInstance] DataSessionInstance
155
155
  def initialize(version, payload, sim_sid: nil)
@@ -15,8 +15,8 @@ module Twilio
15
15
  ##
16
16
  # Initialize the UsageRecordList
17
17
  # @param [Version] version Version that contains the resource
18
- # @param [String] sim_sid The SID of the [Sim
19
- # resource](https://www.twilio.com/docs/wireless/api/sim-resource) that this Usage
18
+ # @param [String] sim_sid The SID of the {Sim
19
+ # resource}[https://www.twilio.com/docs/wireless/api/sim-resource] that this Usage
20
20
  # Record is for.
21
21
  # @return [UsageRecordList] UsageRecordList
22
22
  def initialize(version, sim_sid: nil)
@@ -32,10 +32,10 @@ module Twilio
32
32
  # Unlike stream(), this operation is eager and will load `limit` records into
33
33
  # memory before returning.
34
34
  # @param [Time] end_ Only include usage that occurred on or before this date,
35
- # specified in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html).
35
+ # specified in {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
36
36
  # The default is the current time.
37
37
  # @param [Time] start Only include usage that has occurred on or after this date,
38
- # specified in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html).
38
+ # specified in {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
39
39
  # The default is one month before the `end` parameter value.
40
40
  # @param [usage_record.Granularity] granularity How to summarize the usage by
41
41
  # time. Can be: `daily`, `hourly`, or `all`. The default is `all`. A value of
@@ -62,10 +62,10 @@ module Twilio
62
62
  # This operation lazily loads records as efficiently as possible until the limit
63
63
  # is reached.
64
64
  # @param [Time] end_ Only include usage that occurred on or before this date,
65
- # specified in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html).
65
+ # specified in {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
66
66
  # The default is the current time.
67
67
  # @param [Time] start Only include usage that has occurred on or after this date,
68
- # specified in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html).
68
+ # specified in {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
69
69
  # The default is one month before the `end` parameter value.
70
70
  # @param [usage_record.Granularity] granularity How to summarize the usage by
71
71
  # time. Can be: `daily`, `hourly`, or `all`. The default is `all`. A value of
@@ -103,10 +103,10 @@ module Twilio
103
103
  # Retrieve a single page of UsageRecordInstance records from the API.
104
104
  # Request is executed immediately.
105
105
  # @param [Time] end_ Only include usage that occurred on or before this date,
106
- # specified in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html).
106
+ # specified in {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
107
107
  # The default is the current time.
108
108
  # @param [Time] start Only include usage that has occurred on or after this date,
109
- # specified in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html).
109
+ # specified in {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
110
110
  # The default is one month before the `end` parameter value.
111
111
  # @param [usage_record.Granularity] granularity How to summarize the usage by
112
112
  # time. Can be: `daily`, `hourly`, or `all`. The default is `all`. A value of
@@ -184,8 +184,8 @@ module Twilio
184
184
  # Initialize the UsageRecordInstance
185
185
  # @param [Version] version Version that contains the resource
186
186
  # @param [Hash] payload payload that contains response from Twilio
187
- # @param [String] sim_sid The SID of the [Sim
188
- # resource](https://www.twilio.com/docs/wireless/api/sim-resource) that this Usage
187
+ # @param [String] sim_sid The SID of the {Sim
188
+ # resource}[https://www.twilio.com/docs/wireless/api/sim-resource] that this Usage
189
189
  # Record is for.
190
190
  # @return [UsageRecordInstance] UsageRecordInstance
191
191
  def initialize(version, payload, sim_sid: nil)
@@ -28,9 +28,9 @@ module Twilio
28
28
  # Unlike stream(), this operation is eager and will load `limit` records into
29
29
  # memory before returning.
30
30
  # @param [Time] end_ Only include usage that has occurred on or before this date.
31
- # Format is [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html).
31
+ # Format is {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
32
32
  # @param [Time] start Only include usage that has occurred on or after this date.
33
- # Format is [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html).
33
+ # Format is {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
34
34
  # @param [usage_record.Granularity] granularity How to summarize the usage by
35
35
  # time. Can be: `daily`, `hourly`, or `all`. A value of `all` returns one Usage
36
36
  # Record that describes the usage for the entire period.
@@ -56,9 +56,9 @@ module Twilio
56
56
  # This operation lazily loads records as efficiently as possible until the limit
57
57
  # is reached.
58
58
  # @param [Time] end_ Only include usage that has occurred on or before this date.
59
- # Format is [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html).
59
+ # Format is {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
60
60
  # @param [Time] start Only include usage that has occurred on or after this date.
61
- # Format is [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html).
61
+ # Format is {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
62
62
  # @param [usage_record.Granularity] granularity How to summarize the usage by
63
63
  # time. Can be: `daily`, `hourly`, or `all`. A value of `all` returns one Usage
64
64
  # Record that describes the usage for the entire period.
@@ -95,9 +95,9 @@ module Twilio
95
95
  # Retrieve a single page of UsageRecordInstance records from the API.
96
96
  # Request is executed immediately.
97
97
  # @param [Time] end_ Only include usage that has occurred on or before this date.
98
- # Format is [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html).
98
+ # Format is {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
99
99
  # @param [Time] start Only include usage that has occurred on or after this date.
100
- # Format is [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html).
100
+ # Format is {ISO 8601}[https://www.iso.org/iso-8601-date-and-time-format.html].
101
101
  # @param [usage_record.Granularity] granularity How to summarize the usage by
102
102
  # time. Can be: `daily`, `hourly`, or `all`. A value of `all` returns one Usage
103
103
  # Record that describes the usage for the entire period.
@@ -968,9 +968,11 @@ module Twilio
968
968
  # recording_status_callback_method:: Recording status callback URL method
969
969
  # recording_status_callback_event:: Recording status callback events
970
970
  # event_callback_url:: Event callback URL
971
+ # jitter_buffer_size:: Size of jitter buffer for participant
972
+ # participant_label:: A label for participant
971
973
  # keyword_args:: additional attributes
972
- def conference(name, muted: nil, beep: nil, start_conference_on_enter: nil, end_conference_on_exit: nil, wait_url: nil, wait_method: nil, max_participants: nil, record: nil, region: nil, coach: nil, trim: nil, status_callback_event: nil, status_callback: nil, status_callback_method: nil, recording_status_callback: nil, recording_status_callback_method: nil, recording_status_callback_event: nil, event_callback_url: nil, **keyword_args)
973
- append(Conference.new(name, muted: muted, beep: beep, start_conference_on_enter: start_conference_on_enter, end_conference_on_exit: end_conference_on_exit, wait_url: wait_url, wait_method: wait_method, max_participants: max_participants, record: record, region: region, coach: coach, trim: trim, status_callback_event: status_callback_event, status_callback: status_callback, status_callback_method: status_callback_method, recording_status_callback: recording_status_callback, recording_status_callback_method: recording_status_callback_method, recording_status_callback_event: recording_status_callback_event, event_callback_url: event_callback_url, **keyword_args))
974
+ def conference(name, muted: nil, beep: nil, start_conference_on_enter: nil, end_conference_on_exit: nil, wait_url: nil, wait_method: nil, max_participants: nil, record: nil, region: nil, coach: nil, trim: nil, status_callback_event: nil, status_callback: nil, status_callback_method: nil, recording_status_callback: nil, recording_status_callback_method: nil, recording_status_callback_event: nil, event_callback_url: nil, jitter_buffer_size: nil, participant_label: nil, **keyword_args)
975
+ append(Conference.new(name, muted: muted, beep: beep, start_conference_on_enter: start_conference_on_enter, end_conference_on_exit: end_conference_on_exit, wait_url: wait_url, wait_method: wait_method, max_participants: max_participants, record: record, region: region, coach: coach, trim: trim, status_callback_event: status_callback_event, status_callback: status_callback, status_callback_method: status_callback_method, recording_status_callback: recording_status_callback, recording_status_callback_method: recording_status_callback_method, recording_status_callback_event: recording_status_callback_event, event_callback_url: event_callback_url, jitter_buffer_size: jitter_buffer_size, participant_label: participant_label, **keyword_args))
974
976
  end
975
977
 
976
978
  ##
@@ -3,7 +3,7 @@
3
3
  module Twilio
4
4
  module Util
5
5
  class Configuration
6
- attr_accessor :account_sid, :auth_token, :http_client, :region, :edge
6
+ attr_accessor :account_sid, :auth_token, :http_client, :region, :edge, :logger
7
7
 
8
8
  def account_sid=(value)
9
9
  @account_sid = value
@@ -24,6 +24,10 @@ module Twilio
24
24
  def edge=(value)
25
25
  @edge = value
26
26
  end
27
+
28
+ def logger=(value)
29
+ @logger = value
30
+ end
27
31
  end
28
32
  end
29
33
  end
@@ -1,3 +1,3 @@
1
1
  module Twilio
2
- VERSION = '5.40.3'
2
+ VERSION = '5.44.0'
3
3
  end
@@ -0,0 +1,44 @@
1
+ ##
2
+ # This code was generated by
3
+ # \ / _ _ _| _ _
4
+ # | (_)\/(_)(_|\/| |(/_ v1.0.0
5
+ # / /
6
+ #
7
+ # frozen_string_literal: true
8
+
9
+ require 'spec_helper.rb'
10
+
11
+ describe 'AuthTokenPromotion' do
12
+ it "can update" do
13
+ @holodeck.mock(Twilio::Response.new(500, ''))
14
+
15
+ expect {
16
+ @client.accounts.v1.auth_token_promotion().update()
17
+ }.to raise_exception(Twilio::REST::TwilioError)
18
+
19
+ expect(
20
+ @holodeck.has_request?(Holodeck::Request.new(
21
+ method: 'post',
22
+ url: 'https://accounts.twilio.com/v1/AuthTokens/Promote',
23
+ ))).to eq(true)
24
+ end
25
+
26
+ it "receives update responses" do
27
+ @holodeck.mock(Twilio::Response.new(
28
+ 200,
29
+ %q[
30
+ {
31
+ "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
32
+ "auth_token": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
33
+ "date_created": "2015-07-31T04:00:00Z",
34
+ "date_updated": "2015-07-31T04:00:00Z",
35
+ "url": "https://accounts.twilio.com/v1/AuthTokens/Promote"
36
+ }
37
+ ]
38
+ ))
39
+
40
+ actual = @client.accounts.v1.auth_token_promotion().update()
41
+
42
+ expect(actual).to_not eq(nil)
43
+ end
44
+ end
@@ -0,0 +1,69 @@
1
+ ##
2
+ # This code was generated by
3
+ # \ / _ _ _| _ _
4
+ # | (_)\/(_)(_|\/| |(/_ v1.0.0
5
+ # / /
6
+ #
7
+ # frozen_string_literal: true
8
+
9
+ require 'spec_helper.rb'
10
+
11
+ describe 'SecondaryAuthToken' do
12
+ it "can create" do
13
+ @holodeck.mock(Twilio::Response.new(500, ''))
14
+
15
+ expect {
16
+ @client.accounts.v1.secondary_auth_token().create()
17
+ }.to raise_exception(Twilio::REST::TwilioError)
18
+
19
+ expect(
20
+ @holodeck.has_request?(Holodeck::Request.new(
21
+ method: 'post',
22
+ url: 'https://accounts.twilio.com/v1/AuthTokens/Secondary',
23
+ ))).to eq(true)
24
+ end
25
+
26
+ it "receives create responses" do
27
+ @holodeck.mock(Twilio::Response.new(
28
+ 201,
29
+ %q[
30
+ {
31
+ "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
32
+ "date_created": "2015-07-31T04:00:00Z",
33
+ "date_updated": "2015-07-31T04:00:00Z",
34
+ "secondary_auth_token": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
35
+ "url": "https://accounts.twilio.com/v1/AuthTokens/Secondary"
36
+ }
37
+ ]
38
+ ))
39
+
40
+ actual = @client.accounts.v1.secondary_auth_token().create()
41
+
42
+ expect(actual).to_not eq(nil)
43
+ end
44
+
45
+ it "can delete" do
46
+ @holodeck.mock(Twilio::Response.new(500, ''))
47
+
48
+ expect {
49
+ @client.accounts.v1.secondary_auth_token().delete()
50
+ }.to raise_exception(Twilio::REST::TwilioError)
51
+
52
+ expect(
53
+ @holodeck.has_request?(Holodeck::Request.new(
54
+ method: 'delete',
55
+ url: 'https://accounts.twilio.com/v1/AuthTokens/Secondary',
56
+ ))).to eq(true)
57
+ end
58
+
59
+ it "receives delete responses" do
60
+ @holodeck.mock(Twilio::Response.new(
61
+ 204,
62
+ nil,
63
+ ))
64
+
65
+ actual = @client.accounts.v1.secondary_auth_token().delete()
66
+
67
+ expect(actual).to eq(true)
68
+ end
69
+ end
@@ -0,0 +1,102 @@
1
+ ##
2
+ # This code was generated by
3
+ # \ / _ _ _| _ _
4
+ # | (_)\/(_)(_|\/| |(/_ v1.0.0
5
+ # / /
6
+ #
7
+ # frozen_string_literal: true
8
+
9
+ require 'spec_helper.rb'
10
+
11
+ describe 'Event' do
12
+ it "can read" do
13
+ @holodeck.mock(Twilio::Response.new(500, ''))
14
+
15
+ expect {
16
+ @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
17
+ .calls('CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
18
+ .events.list()
19
+ }.to raise_exception(Twilio::REST::TwilioError)
20
+
21
+ expect(
22
+ @holodeck.has_request?(Holodeck::Request.new(
23
+ method: 'get',
24
+ url: 'https://api.twilio.com/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Calls/CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Events.json',
25
+ ))).to eq(true)
26
+ end
27
+
28
+ it "receives read_full responses" do
29
+ @holodeck.mock(Twilio::Response.new(
30
+ 200,
31
+ %q[
32
+ {
33
+ "events": [
34
+ {
35
+ "request": {
36
+ "method": "POST",
37
+ "url": "https://api.twilio.com/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json",
38
+ "parameters": {
39
+ "status_callback_method": "POST",
40
+ "twiml": "<Response><Say>Hi!</Say></Response>",
41
+ "trim": "trim-silence",
42
+ "timeout": "55",
43
+ "method": "POST",
44
+ "from": "+987654321",
45
+ "to": "+123456789",
46
+ "account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
47
+ "machine_detection_timeout": "0"
48
+ }
49
+ },
50
+ "response": {
51
+ "response_code": 201,
52
+ "request_duration": 50,
53
+ "content_type": "application/json",
54
+ "response_body": "{\\"sid\\": \\"CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\"}",
55
+ "date_created": "Tue, 11 Aug 2020 17:44:08 +0000"
56
+ }
57
+ }
58
+ ],
59
+ "end": 0,
60
+ "first_page_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json?PageSize=50&Page=0",
61
+ "next_page_uri": null,
62
+ "page": 0,
63
+ "page_size": 50,
64
+ "previous_page_uri": null,
65
+ "start": 0,
66
+ "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json?PageSize=50&Page=0"
67
+ }
68
+ ]
69
+ ))
70
+
71
+ actual = @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
72
+ .calls('CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
73
+ .events.list()
74
+
75
+ expect(actual).to_not eq(nil)
76
+ end
77
+
78
+ it "receives read_empty responses" do
79
+ @holodeck.mock(Twilio::Response.new(
80
+ 200,
81
+ %q[
82
+ {
83
+ "events": [],
84
+ "end": 0,
85
+ "first_page_uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json?PageSize=50&Page=0",
86
+ "next_page_uri": null,
87
+ "page": 0,
88
+ "page_size": 50,
89
+ "previous_page_uri": null,
90
+ "start": 0,
91
+ "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json?PageSize=50&Page=0"
92
+ }
93
+ ]
94
+ ))
95
+
96
+ actual = @client.api.v2010.accounts('ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
97
+ .calls('CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
98
+ .events.list()
99
+
100
+ expect(actual).to_not eq(nil)
101
+ end
102
+ end
@@ -46,6 +46,7 @@ describe 'Recording' do
46
46
  "status": "in-progress",
47
47
  "error_code": null,
48
48
  "encryption_details": null,
49
+ "track": "both",
49
50
  "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings/REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json"
50
51
  }
51
52
  ]
@@ -97,6 +98,7 @@ describe 'Recording' do
97
98
  "status": "paused",
98
99
  "error_code": null,
99
100
  "encryption_details": null,
101
+ "track": "both",
100
102
  "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings/REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json"
101
103
  }
102
104
  ]
@@ -150,6 +152,7 @@ describe 'Recording' do
150
152
  "source": "StartCallRecordingAPI",
151
153
  "status": "completed",
152
154
  "error_code": null,
155
+ "track": "both",
153
156
  "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings/REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json"
154
157
  }
155
158
  ]
@@ -239,6 +242,7 @@ describe 'Recording' do
239
242
  },
240
243
  "source": "StartCallRecordingAPI",
241
244
  "status": "completed",
245
+ "track": "both",
242
246
  "error_code": null,
243
247
  "uri": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings/REaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json"
244
248
  }
@@ -57,7 +57,8 @@ describe 'Call' do
57
57
  "recordings": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings.json",
58
58
  "feedback": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Feedback.json",
59
59
  "feedback_summaries": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/FeedbackSummary.json",
60
- "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json"
60
+ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json",
61
+ "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json"
61
62
  },
62
63
  "to": "+14158675309",
63
64
  "to_formatted": "(415) 867-5309",
@@ -105,7 +106,8 @@ describe 'Call' do
105
106
  "recordings": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings.json",
106
107
  "feedback": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Feedback.json",
107
108
  "feedback_summaries": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/FeedbackSummary.json",
108
- "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json"
109
+ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json",
110
+ "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json"
109
111
  },
110
112
  "to": "+14158675309",
111
113
  "to_formatted": "(415) 867-5309",
@@ -195,7 +197,8 @@ describe 'Call' do
195
197
  "recordings": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings.json",
196
198
  "feedback": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Feedback.json",
197
199
  "feedback_summaries": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/FeedbackSummary.json",
198
- "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json"
200
+ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json",
201
+ "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json"
199
202
  },
200
203
  "to": "+13051913581",
201
204
  "to_formatted": "(305) 191-3581",
@@ -260,7 +263,8 @@ describe 'Call' do
260
263
  "feedback_summaries": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/FeedbackSummary.json",
261
264
  "notifications": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Notifications.json",
262
265
  "recordings": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings.json",
263
- "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json"
266
+ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json",
267
+ "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json"
264
268
  },
265
269
  "to": "+13051913581",
266
270
  "to_formatted": "(305) 191-3581",
@@ -295,7 +299,8 @@ describe 'Call' do
295
299
  "feedback_summaries": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/FeedbackSummary.json",
296
300
  "notifications": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Notifications.json",
297
301
  "recordings": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Recordings.json",
298
- "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Payments.json"
302
+ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Payments.json",
303
+ "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Events.json"
299
304
  },
300
305
  "to": "+13051913580",
301
306
  "to_formatted": "(305) 191-3580",
@@ -355,7 +360,8 @@ describe 'Call' do
355
360
  "feedback_summaries": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/FeedbackSummary.json",
356
361
  "notifications": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Notifications.json",
357
362
  "recordings": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings.json",
358
- "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json"
363
+ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json",
364
+ "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json"
359
365
  },
360
366
  "to": "+13051913581",
361
367
  "to_formatted": "(305) 191-3581",
@@ -390,7 +396,8 @@ describe 'Call' do
390
396
  "feedback_summaries": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/FeedbackSummary.json",
391
397
  "notifications": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Notifications.json",
392
398
  "recordings": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Recordings.json",
393
- "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Payments.json"
399
+ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Payments.json",
400
+ "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0/Events.json"
394
401
  },
395
402
  "to": "+13051913580",
396
403
  "to_formatted": "(305) 191-3580",
@@ -535,7 +542,8 @@ describe 'Call' do
535
542
  "recordings": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings.json",
536
543
  "feedback": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Feedback.json",
537
544
  "feedback_summaries": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/FeedbackSummary.json",
538
- "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json"
545
+ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json",
546
+ "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json"
539
547
  },
540
548
  "to": "+14158675309",
541
549
  "to_formatted": "(415) 867-5309",
@@ -583,7 +591,8 @@ describe 'Call' do
583
591
  "recordings": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings.json",
584
592
  "feedback": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Feedback.json",
585
593
  "feedback_summaries": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/FeedbackSummary.json",
586
- "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json"
594
+ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json",
595
+ "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json"
587
596
  },
588
597
  "to": "+14158675309",
589
598
  "to_formatted": "(415) 867-5309",
@@ -631,7 +640,8 @@ describe 'Call' do
631
640
  "recordings": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Recordings.json",
632
641
  "feedback": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Feedback.json",
633
642
  "feedback_summaries": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/FeedbackSummary.json",
634
- "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json"
643
+ "payments": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Payments.json",
644
+ "events": "/2010-04-01/Accounts/ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Calls/CAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Events.json"
635
645
  },
636
646
  "to": "+14158675309",
637
647
  "to_formatted": "(415) 867-5309",