twilio-ruby 3.11.5 → 5.0.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 (435) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -1
  3. data/.rubocop.yml +21 -0
  4. data/.rubocop_todo.yml +187 -0
  5. data/.travis.yml +10 -10
  6. data/AUTHORS.md +21 -0
  7. data/CHANGES.md +351 -0
  8. data/Gemfile +8 -1
  9. data/{LICENSE → LICENSE.md} +13 -11
  10. data/Makefile +15 -3
  11. data/README.md +90 -95
  12. data/Rakefile +59 -7
  13. data/VERSIONS.md +64 -0
  14. data/examples/examples.rb +62 -49
  15. data/examples/{print-call-log.rb → print_call_log.rb} +7 -7
  16. data/lib/rack/twilio_webhook_authentication.rb +46 -0
  17. data/lib/twilio-ruby/framework/domain.rb +34 -0
  18. data/lib/twilio-ruby/framework/error.rb +30 -0
  19. data/lib/twilio-ruby/framework/helper.rb +9 -0
  20. data/lib/twilio-ruby/framework/page.rb +101 -0
  21. data/lib/twilio-ruby/framework/resource.rb +21 -0
  22. data/lib/twilio-ruby/framework/serialize.rb +70 -0
  23. data/lib/twilio-ruby/framework/twilio_response.rb +15 -0
  24. data/lib/twilio-ruby/framework/values.rb +7 -0
  25. data/lib/twilio-ruby/framework/version.rb +164 -0
  26. data/lib/twilio-ruby/http/http_client.rb +46 -0
  27. data/lib/twilio-ruby/jwt/access_token.rb +232 -0
  28. data/lib/twilio-ruby/jwt/client_capability.rb +102 -0
  29. data/lib/twilio-ruby/jwt/jwt.rb +50 -0
  30. data/lib/twilio-ruby/jwt/task_router.rb +174 -0
  31. data/lib/twilio-ruby/rest/accounts/v1/credential/public_key.rb +370 -0
  32. data/lib/twilio-ruby/rest/accounts/v1/credential.rb +105 -0
  33. data/lib/twilio-ruby/rest/accounts/v1.rb +39 -0
  34. data/lib/twilio-ruby/rest/accounts.rb +36 -9
  35. data/lib/twilio-ruby/rest/api/v2010/account/address/dependent_phone_number.rb +265 -0
  36. data/lib/twilio-ruby/rest/api/v2010/account/address.rb +509 -0
  37. data/lib/twilio-ruby/rest/api/v2010/account/application.rb +620 -0
  38. data/lib/twilio-ruby/rest/api/v2010/account/authorized_connect_app.rb +331 -0
  39. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/local.rb +389 -0
  40. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/mobile.rb +389 -0
  41. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/toll_free.rb +389 -0
  42. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number.rb +370 -0
  43. data/lib/twilio-ruby/rest/api/v2010/account/call/feedback.rb +296 -0
  44. data/lib/twilio-ruby/rest/api/v2010/account/call/feedback_summary.rb +317 -0
  45. data/lib/twilio-ruby/rest/api/v2010/account/call/notification.rb +427 -0
  46. data/lib/twilio-ruby/rest/api/v2010/account/call/recording.rb +379 -0
  47. data/lib/twilio-ruby/rest/api/v2010/account/call.rb +799 -0
  48. data/lib/twilio-ruby/rest/api/v2010/account/conference/participant.rb +515 -0
  49. data/lib/twilio-ruby/rest/api/v2010/account/conference.rb +455 -0
  50. data/lib/twilio-ruby/rest/api/v2010/account/connect_app.rb +413 -0
  51. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/local.rb +445 -0
  52. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/mobile.rb +445 -0
  53. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number/toll_free.rb +445 -0
  54. data/lib/twilio-ruby/rest/api/v2010/account/incoming_phone_number.rb +786 -0
  55. data/lib/twilio-ruby/rest/api/v2010/account/key.rb +336 -0
  56. data/lib/twilio-ruby/rest/api/v2010/account/message/feedback.rb +165 -0
  57. data/lib/twilio-ruby/rest/api/v2010/account/message/media.rb +355 -0
  58. data/lib/twilio-ruby/rest/api/v2010/account/message.rb +583 -0
  59. data/lib/twilio-ruby/rest/api/v2010/account/new_key.rb +153 -0
  60. data/lib/twilio-ruby/rest/api/v2010/account/new_signing_key.rb +153 -0
  61. data/lib/twilio-ruby/rest/api/v2010/account/notification.rb +418 -0
  62. data/lib/twilio-ruby/rest/api/v2010/account/outgoing_caller_id.rb +377 -0
  63. data/lib/twilio-ruby/rest/api/v2010/account/queue/member.rb +345 -0
  64. data/lib/twilio-ruby/rest/api/v2010/account/queue.rb +438 -0
  65. data/lib/twilio-ruby/rest/api/v2010/account/recording/add_on_result/payload.rb +378 -0
  66. data/lib/twilio-ruby/rest/api/v2010/account/recording/add_on_result.rb +397 -0
  67. data/lib/twilio-ruby/rest/api/v2010/account/recording/transcription.rb +375 -0
  68. data/lib/twilio-ruby/rest/api/v2010/account/recording.rb +479 -0
  69. data/lib/twilio-ruby/rest/api/v2010/account/short_code.rb +430 -0
  70. data/lib/twilio-ruby/rest/api/v2010/account/signing_key.rb +336 -0
  71. data/lib/twilio-ruby/rest/api/v2010/account/sip/credential_list/credential.rb +395 -0
  72. data/lib/twilio-ruby/rest/api/v2010/account/sip/credential_list.rb +419 -0
  73. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/credential_list_mapping.rb +361 -0
  74. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/ip_access_control_list_mapping.rb +361 -0
  75. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain.rb +570 -0
  76. data/lib/twilio-ruby/rest/api/v2010/account/sip/ip_access_control_list/ip_address.rb +406 -0
  77. data/lib/twilio-ruby/rest/api/v2010/account/sip/ip_access_control_list.rb +424 -0
  78. data/lib/twilio-ruby/rest/api/v2010/account/sip.rb +174 -0
  79. data/lib/twilio-ruby/rest/api/v2010/account/token.rb +168 -0
  80. data/lib/twilio-ruby/rest/api/v2010/account/transcription.rb +366 -0
  81. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/all_time.rb +304 -0
  82. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/daily.rb +304 -0
  83. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/last_month.rb +304 -0
  84. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/monthly.rb +304 -0
  85. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/this_month.rb +304 -0
  86. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/today.rb +304 -0
  87. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/yearly.rb +304 -0
  88. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/yesterday.rb +304 -0
  89. data/lib/twilio-ruby/rest/api/v2010/account/usage/record.rb +418 -0
  90. data/lib/twilio-ruby/rest/api/v2010/account/usage/trigger.rb +507 -0
  91. data/lib/twilio-ruby/rest/api/v2010/account/usage.rb +127 -0
  92. data/lib/twilio-ruby/rest/api/v2010/account/validation_request.rb +161 -0
  93. data/lib/twilio-ruby/rest/api/v2010/account.rb +1098 -0
  94. data/lib/twilio-ruby/rest/api/v2010.rb +147 -0
  95. data/lib/twilio-ruby/rest/api.rb +234 -0
  96. data/lib/twilio-ruby/rest/chat/v1/credential.rb +403 -0
  97. data/lib/twilio-ruby/rest/chat/v1/service/channel/invite.rb +386 -0
  98. data/lib/twilio-ruby/rest/chat/v1/service/channel/member.rb +431 -0
  99. data/lib/twilio-ruby/rest/chat/v1/service/channel/message.rb +447 -0
  100. data/lib/twilio-ruby/rest/chat/v1/service/channel.rb +554 -0
  101. data/lib/twilio-ruby/rest/chat/v1/service/role.rb +396 -0
  102. data/lib/twilio-ruby/rest/chat/v1/service/user/user_channel.rb +244 -0
  103. data/lib/twilio-ruby/rest/chat/v1/service/user.rb +467 -0
  104. data/lib/twilio-ruby/rest/chat/v1/service.rb +935 -0
  105. data/lib/twilio-ruby/rest/chat/v1.rb +56 -0
  106. data/lib/twilio-ruby/rest/chat/v2/credential.rb +403 -0
  107. data/lib/twilio-ruby/rest/chat/v2/service/channel/invite.rb +386 -0
  108. data/lib/twilio-ruby/rest/chat/v2/service/channel/member.rb +431 -0
  109. data/lib/twilio-ruby/rest/chat/v2/service/channel/message.rb +447 -0
  110. data/lib/twilio-ruby/rest/chat/v2/service/channel.rb +554 -0
  111. data/lib/twilio-ruby/rest/chat/v2/service/role.rb +396 -0
  112. data/lib/twilio-ruby/rest/chat/v2/service/user/user_channel.rb +244 -0
  113. data/lib/twilio-ruby/rest/chat/v2/service/user.rb +467 -0
  114. data/lib/twilio-ruby/rest/chat/v2/service.rb +688 -0
  115. data/lib/twilio-ruby/rest/chat/v2.rb +56 -0
  116. data/lib/twilio-ruby/rest/chat.rb +59 -0
  117. data/lib/twilio-ruby/rest/client.rb +307 -215
  118. data/lib/twilio-ruby/rest/ip_messaging/v1/credential.rb +403 -0
  119. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/invite.rb +386 -0
  120. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/member.rb +431 -0
  121. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/message.rb +447 -0
  122. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel.rb +554 -0
  123. data/lib/twilio-ruby/rest/ip_messaging/v1/service/role.rb +396 -0
  124. data/lib/twilio-ruby/rest/ip_messaging/v1/service/user/user_channel.rb +244 -0
  125. data/lib/twilio-ruby/rest/ip_messaging/v1/service/user.rb +467 -0
  126. data/lib/twilio-ruby/rest/ip_messaging/v1/service.rb +935 -0
  127. data/lib/twilio-ruby/rest/ip_messaging/v1.rb +56 -0
  128. data/lib/twilio-ruby/rest/ip_messaging/v2/credential.rb +403 -0
  129. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/invite.rb +386 -0
  130. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/member.rb +431 -0
  131. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/message.rb +447 -0
  132. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel.rb +554 -0
  133. data/lib/twilio-ruby/rest/ip_messaging/v2/service/role.rb +396 -0
  134. data/lib/twilio-ruby/rest/ip_messaging/v2/service/user/user_channel.rb +244 -0
  135. data/lib/twilio-ruby/rest/ip_messaging/v2/service/user.rb +467 -0
  136. data/lib/twilio-ruby/rest/ip_messaging/v2/service.rb +688 -0
  137. data/lib/twilio-ruby/rest/ip_messaging/v2.rb +56 -0
  138. data/lib/twilio-ruby/rest/ip_messaging.rb +59 -0
  139. data/lib/twilio-ruby/rest/lookups/v1/phone_number.rb +224 -0
  140. data/lib/twilio-ruby/rest/lookups/v1.rb +41 -0
  141. data/lib/twilio-ruby/rest/lookups.rb +44 -0
  142. data/lib/twilio-ruby/rest/monitor/v1/alert.rb +398 -0
  143. data/lib/twilio-ruby/rest/monitor/v1/event.rb +381 -0
  144. data/lib/twilio-ruby/rest/monitor/v1.rb +56 -0
  145. data/lib/twilio-ruby/rest/monitor.rb +52 -0
  146. data/lib/twilio-ruby/rest/pricing/v1/messaging/country.rb +291 -0
  147. data/lib/twilio-ruby/rest/pricing/v1/messaging.rb +129 -0
  148. data/lib/twilio-ruby/rest/pricing/v1/phone_number/country.rb +284 -0
  149. data/lib/twilio-ruby/rest/pricing/v1/phone_number.rb +129 -0
  150. data/lib/twilio-ruby/rest/pricing/v1/voice/country.rb +291 -0
  151. data/lib/twilio-ruby/rest/pricing/v1/voice/number.rb +208 -0
  152. data/lib/twilio-ruby/rest/pricing/v1/voice.rb +150 -0
  153. data/lib/twilio-ruby/rest/pricing/v1.rb +65 -0
  154. data/lib/twilio-ruby/rest/pricing.rb +54 -0
  155. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/activity.rb +399 -0
  156. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/event.rb +418 -0
  157. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task/reservation.rb +461 -0
  158. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task.rb +584 -0
  159. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_channel.rb +315 -0
  160. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_statistics.rb +230 -0
  161. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queues_statistics.rb +243 -0
  162. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue.rb +527 -0
  163. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/reservation.rb +461 -0
  164. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/worker_channel.rb +406 -0
  165. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/worker_statistics.rb +223 -0
  166. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/workers_statistics.rb +226 -0
  167. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker.rb +585 -0
  168. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow/workflow_statistics.rb +230 -0
  169. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow.rb +475 -0
  170. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workspace_statistics.rb +212 -0
  171. data/lib/twilio-ruby/rest/taskrouter/v1/workspace.rb +712 -0
  172. data/lib/twilio-ruby/rest/taskrouter/v1.rb +41 -0
  173. data/lib/twilio-ruby/rest/taskrouter.rb +44 -0
  174. data/lib/twilio-ruby/rest/trunking/v1/trunk/credential_list.rb +345 -0
  175. data/lib/twilio-ruby/rest/trunking/v1/trunk/ip_access_control_list.rb +345 -0
  176. data/lib/twilio-ruby/rest/trunking/v1/trunk/origination_url.rb +430 -0
  177. data/lib/twilio-ruby/rest/trunking/v1/trunk/phone_number.rb +478 -0
  178. data/lib/twilio-ruby/rest/trunking/v1/trunk.rb +577 -0
  179. data/lib/twilio-ruby/rest/trunking/v1.rb +41 -0
  180. data/lib/twilio-ruby/rest/trunking.rb +44 -0
  181. data/lib/twilio-ruby/rest/video/v1/recording.rb +382 -0
  182. data/lib/twilio-ruby/rest/video/v1/room/recording.rb +381 -0
  183. data/lib/twilio-ruby/rest/video/v1/room.rb +485 -0
  184. data/lib/twilio-ruby/rest/video/v1.rb +56 -0
  185. data/lib/twilio-ruby/rest/video.rb +52 -0
  186. data/lib/twilio-ruby/security/request_validator.rb +54 -0
  187. data/lib/twilio-ruby/twiml/messaging_response.rb +141 -0
  188. data/lib/twilio-ruby/twiml/twiml.rb +69 -0
  189. data/lib/twilio-ruby/twiml/voice_response.rb +916 -0
  190. data/lib/twilio-ruby/util/configuration.rb +7 -0
  191. data/lib/twilio-ruby/util.rb +1 -1
  192. data/lib/twilio-ruby/version.rb +1 -1
  193. data/lib/twilio-ruby.rb +52 -49
  194. data/spec/framework/serialize_spec.rb +59 -0
  195. data/spec/holodeck/holodeck.rb +61 -0
  196. data/spec/holodeck/hologram.rb +4 -0
  197. data/spec/integration/accounts/v1/credential/public_key_spec.rb +226 -0
  198. data/spec/integration/accounts/v1/credential_spec.rb +10 -0
  199. data/spec/integration/api/v2010/account/address/dependent_phone_number_spec.rb +90 -0
  200. data/spec/integration/api/v2010/account/address_spec.rb +267 -0
  201. data/spec/integration/api/v2010/account/application_spec.rb +286 -0
  202. data/spec/integration/api/v2010/account/authorized_connect_app_spec.rb +137 -0
  203. data/spec/integration/api/v2010/account/available_phone_number/local_spec.rb +101 -0
  204. data/spec/integration/api/v2010/account/available_phone_number/mobile_spec.rb +100 -0
  205. data/spec/integration/api/v2010/account/available_phone_number/toll_free_spec.rb +100 -0
  206. data/spec/integration/api/v2010/account/available_phone_number_spec.rb +128 -0
  207. data/spec/integration/api/v2010/account/call/feedback_spec.rb +141 -0
  208. data/spec/integration/api/v2010/account/call/feedback_summary_spec.rb +149 -0
  209. data/spec/integration/api/v2010/account/call/notification_spec.rb +179 -0
  210. data/spec/integration/api/v2010/account/call/recording_spec.rb +178 -0
  211. data/spec/integration/api/v2010/account/call_spec.rb +319 -0
  212. data/spec/integration/api/v2010/account/conference/participant_spec.rb +283 -0
  213. data/spec/integration/api/v2010/account/conference_spec.rb +174 -0
  214. data/spec/integration/api/v2010/account/connect_app_spec.rb +177 -0
  215. data/spec/integration/api/v2010/account/incoming_phone_number/local_spec.rb +181 -0
  216. data/spec/integration/api/v2010/account/incoming_phone_number/mobile_spec.rb +181 -0
  217. data/spec/integration/api/v2010/account/incoming_phone_number/toll_free_spec.rb +181 -0
  218. data/spec/integration/api/v2010/account/incoming_phone_number_spec.rb +331 -0
  219. data/spec/integration/api/v2010/account/key_spec.rb +178 -0
  220. data/spec/integration/api/v2010/account/message/feedback_spec.rb +48 -0
  221. data/spec/integration/api/v2010/account/message/media_spec.rb +162 -0
  222. data/spec/integration/api/v2010/account/message_spec.rb +297 -0
  223. data/spec/integration/api/v2010/account/new_key_spec.rb +45 -0
  224. data/spec/integration/api/v2010/account/new_signing_key_spec.rb +45 -0
  225. data/spec/integration/api/v2010/account/notification_spec.rb +172 -0
  226. data/spec/integration/api/v2010/account/outgoing_caller_id_spec.rb +193 -0
  227. data/spec/integration/api/v2010/account/queue/member_spec.rb +170 -0
  228. data/spec/integration/api/v2010/account/queue_spec.rb +242 -0
  229. data/spec/integration/api/v2010/account/recording/add_on_result/payload_spec.rb +175 -0
  230. data/spec/integration/api/v2010/account/recording/add_on_result_spec.rb +166 -0
  231. data/spec/integration/api/v2010/account/recording/transcription_spec.rb +174 -0
  232. data/spec/integration/api/v2010/account/recording_spec.rb +179 -0
  233. data/spec/integration/api/v2010/account/short_code_spec.rb +180 -0
  234. data/spec/integration/api/v2010/account/signing_key_spec.rb +178 -0
  235. data/spec/integration/api/v2010/account/sip/credential_list/credential_spec.rb +257 -0
  236. data/spec/integration/api/v2010/account/sip/credential_list_spec.rb +246 -0
  237. data/spec/integration/api/v2010/account/sip/domain/credential_list_mapping_spec.rb +210 -0
  238. data/spec/integration/api/v2010/account/sip/domain/ip_access_control_list_mapping_spec.rb +220 -0
  239. data/spec/integration/api/v2010/account/sip/domain_spec.rb +283 -0
  240. data/spec/integration/api/v2010/account/sip/ip_access_control_list/ip_address_spec.rb +261 -0
  241. data/spec/integration/api/v2010/account/sip/ip_access_control_list_spec.rb +256 -0
  242. data/spec/integration/api/v2010/account/sip_spec.rb +10 -0
  243. data/spec/integration/api/v2010/account/token_spec.rb +56 -0
  244. data/spec/integration/api/v2010/account/transcription_spec.rb +167 -0
  245. data/spec/integration/api/v2010/account/usage/record/all_time_spec.rb +111 -0
  246. data/spec/integration/api/v2010/account/usage/record/daily_spec.rb +111 -0
  247. data/spec/integration/api/v2010/account/usage/record/last_month_spec.rb +111 -0
  248. data/spec/integration/api/v2010/account/usage/record/monthly_spec.rb +111 -0
  249. data/spec/integration/api/v2010/account/usage/record/this_month_spec.rb +111 -0
  250. data/spec/integration/api/v2010/account/usage/record/today_spec.rb +111 -0
  251. data/spec/integration/api/v2010/account/usage/record/yearly_spec.rb +111 -0
  252. data/spec/integration/api/v2010/account/usage/record/yesterday_spec.rb +111 -0
  253. data/spec/integration/api/v2010/account/usage/record_spec.rb +108 -0
  254. data/spec/integration/api/v2010/account/usage/trigger_spec.rb +283 -0
  255. data/spec/integration/api/v2010/account/usage_spec.rb +10 -0
  256. data/spec/integration/api/v2010/account/validation_request_spec.rb +48 -0
  257. data/spec/integration/api/v2010/account_spec.rb +254 -0
  258. data/spec/integration/chat/v1/credential_spec.rb +223 -0
  259. data/spec/integration/chat/v1/service/channel/invite_spec.rb +210 -0
  260. data/spec/integration/chat/v1/service/channel/member_spec.rb +284 -0
  261. data/spec/integration/chat/v1/service/channel/message_spec.rb +294 -0
  262. data/spec/integration/chat/v1/service/channel_spec.rb +275 -0
  263. data/spec/integration/chat/v1/service/role_spec.rb +263 -0
  264. data/spec/integration/chat/v1/service/user/user_channel_spec.rb +92 -0
  265. data/spec/integration/chat/v1/service/user_spec.rb +266 -0
  266. data/spec/integration/chat/v1/service_spec.rb +299 -0
  267. data/spec/integration/chat/v2/credential_spec.rb +223 -0
  268. data/spec/integration/chat/v2/service/channel/invite_spec.rb +210 -0
  269. data/spec/integration/chat/v2/service/channel/member_spec.rb +284 -0
  270. data/spec/integration/chat/v2/service/channel/message_spec.rb +294 -0
  271. data/spec/integration/chat/v2/service/channel_spec.rb +275 -0
  272. data/spec/integration/chat/v2/service/role_spec.rb +263 -0
  273. data/spec/integration/chat/v2/service/user/user_channel_spec.rb +92 -0
  274. data/spec/integration/chat/v2/service/user_spec.rb +266 -0
  275. data/spec/integration/chat/v2/service_spec.rb +325 -0
  276. data/spec/integration/ip_messaging/v1/credential_spec.rb +223 -0
  277. data/spec/integration/ip_messaging/v1/service/channel/invite_spec.rb +210 -0
  278. data/spec/integration/ip_messaging/v1/service/channel/member_spec.rb +284 -0
  279. data/spec/integration/ip_messaging/v1/service/channel/message_spec.rb +294 -0
  280. data/spec/integration/ip_messaging/v1/service/channel_spec.rb +275 -0
  281. data/spec/integration/ip_messaging/v1/service/role_spec.rb +263 -0
  282. data/spec/integration/ip_messaging/v1/service/user/user_channel_spec.rb +92 -0
  283. data/spec/integration/ip_messaging/v1/service/user_spec.rb +266 -0
  284. data/spec/integration/ip_messaging/v1/service_spec.rb +299 -0
  285. data/spec/integration/ip_messaging/v2/credential_spec.rb +223 -0
  286. data/spec/integration/ip_messaging/v2/service/channel/invite_spec.rb +210 -0
  287. data/spec/integration/ip_messaging/v2/service/channel/member_spec.rb +284 -0
  288. data/spec/integration/ip_messaging/v2/service/channel/message_spec.rb +294 -0
  289. data/spec/integration/ip_messaging/v2/service/channel_spec.rb +275 -0
  290. data/spec/integration/ip_messaging/v2/service/role_spec.rb +263 -0
  291. data/spec/integration/ip_messaging/v2/service/user/user_channel_spec.rb +92 -0
  292. data/spec/integration/ip_messaging/v2/service/user_spec.rb +266 -0
  293. data/spec/integration/ip_messaging/v2/service_spec.rb +325 -0
  294. data/spec/integration/lookups/v1/phone_number_spec.rb +60 -0
  295. data/spec/integration/monitor/v1/alert_spec.rb +161 -0
  296. data/spec/integration/monitor/v1/event_spec.rb +148 -0
  297. data/spec/integration/pricing/v1/messaging/country_spec.rb +137 -0
  298. data/spec/integration/pricing/v1/messaging_spec.rb +10 -0
  299. data/spec/integration/pricing/v1/phone_number/country_spec.rb +128 -0
  300. data/spec/integration/pricing/v1/phone_number_spec.rb +10 -0
  301. data/spec/integration/pricing/v1/voice/country_spec.rb +266 -0
  302. data/spec/integration/pricing/v1/voice/number_spec.rb +54 -0
  303. data/spec/integration/pricing/v1/voice_spec.rb +10 -0
  304. data/spec/integration/taskrouter/v1/workspace/activity_spec.rb +236 -0
  305. data/spec/integration/taskrouter/v1/workspace/event_spec.rb +157 -0
  306. data/spec/integration/taskrouter/v1/workspace/task/reservation_spec.rb +192 -0
  307. data/spec/integration/taskrouter/v1/workspace/task_channel_spec.rb +127 -0
  308. data/spec/integration/taskrouter/v1/workspace/task_queue/task_queue_statistics_spec.rb +106 -0
  309. data/spec/integration/taskrouter/v1/workspace/task_queue/task_queues_statistics_spec.rb +144 -0
  310. data/spec/integration/taskrouter/v1/workspace/task_queue_spec.rb +292 -0
  311. data/spec/integration/taskrouter/v1/workspace/task_spec.rb +324 -0
  312. data/spec/integration/taskrouter/v1/workspace/worker/reservation_spec.rb +192 -0
  313. data/spec/integration/taskrouter/v1/workspace/worker/worker_channel_spec.rb +201 -0
  314. data/spec/integration/taskrouter/v1/workspace/worker/worker_statistics_spec.rb +107 -0
  315. data/spec/integration/taskrouter/v1/workspace/worker/workers_statistics_spec.rb +141 -0
  316. data/spec/integration/taskrouter/v1/workspace/worker_spec.rb +282 -0
  317. data/spec/integration/taskrouter/v1/workspace/workflow/workflow_statistics_spec.rb +69 -0
  318. data/spec/integration/taskrouter/v1/workspace/workflow_spec.rb +265 -0
  319. data/spec/integration/taskrouter/v1/workspace/workspace_statistics_spec.rb +103 -0
  320. data/spec/integration/taskrouter/v1/workspace_spec.rb +287 -0
  321. data/spec/integration/trunking/v1/trunk/credential_list_spec.rb +192 -0
  322. data/spec/integration/trunking/v1/trunk/ip_access_control_list_spec.rb +192 -0
  323. data/spec/integration/trunking/v1/trunk/origination_url_spec.rb +250 -0
  324. data/spec/integration/trunking/v1/trunk/phone_number_spec.rb +267 -0
  325. data/spec/integration/trunking/v1/trunk_spec.rb +276 -0
  326. data/spec/integration/video/v1/recording_spec.rb +165 -0
  327. data/spec/integration/video/v1/room/recording_spec.rb +146 -0
  328. data/spec/integration/video/v1/room_spec.rb +237 -0
  329. data/spec/jwt/access_token_spec.rb +130 -0
  330. data/spec/jwt/client_capability_spec.rb +104 -0
  331. data/spec/jwt/task_router_spec.rb +172 -0
  332. data/spec/rack/twilio_webhook_authentication_spec.rb +106 -0
  333. data/spec/security/request_validator_spec.rb +113 -0
  334. data/spec/spec_helper.rb +29 -3
  335. data/spec/support/fakeweb.rb +2 -0
  336. data/spec/twilio_spec.rb +15 -0
  337. data/spec/twiml/messaging_response_spec.rb +90 -0
  338. data/spec/twiml/voice_response_spec.rb +474 -0
  339. data/spec/util/configuration_spec.rb +15 -0
  340. data/spec/util/url_encode_spec.rb +2 -2
  341. data/twilio-ruby.gemspec +32 -26
  342. metadata +502 -152
  343. data/CHANGES +0 -47
  344. data/docs/Makefile +0 -130
  345. data/docs/_themes/LICENSE +0 -45
  346. data/docs/_themes/README.rst +0 -25
  347. data/docs/_themes/flask_theme_support.py +0 -86
  348. data/docs/_themes/kr/layout.html +0 -32
  349. data/docs/_themes/kr/relations.html +0 -19
  350. data/docs/_themes/kr/static/flasky.css_t +0 -469
  351. data/docs/_themes/kr/static/small_flask.css +0 -70
  352. data/docs/_themes/kr/theme.conf +0 -7
  353. data/docs/_themes/kr_small/layout.html +0 -22
  354. data/docs/_themes/kr_small/static/flasky.css_t +0 -287
  355. data/docs/_themes/kr_small/theme.conf +0 -10
  356. data/docs/changelog.rst +0 -1
  357. data/docs/conf.py +0 -266
  358. data/docs/faq.rst +0 -42
  359. data/docs/getting-started.rst +0 -91
  360. data/docs/index.rst +0 -109
  361. data/docs/make.bat +0 -170
  362. data/docs/src/pip-delete-this-directory.txt +0 -5
  363. data/docs/usage/accounts.rst +0 -89
  364. data/docs/usage/applications.rst +0 -108
  365. data/docs/usage/basics.rst +0 -102
  366. data/docs/usage/caller-ids.rst +0 -45
  367. data/docs/usage/conferences.rst +0 -108
  368. data/docs/usage/errors.rst +0 -29
  369. data/docs/usage/messages.rst +0 -109
  370. data/docs/usage/notifications.rst +0 -70
  371. data/docs/usage/phone-calls.rst +0 -166
  372. data/docs/usage/phone-numbers.rst +0 -174
  373. data/docs/usage/queues.rst +0 -112
  374. data/docs/usage/recordings.rst +0 -96
  375. data/docs/usage/sip.rst +0 -103
  376. data/docs/usage/token-generation.rst +0 -81
  377. data/docs/usage/transcriptions.rst +0 -31
  378. data/docs/usage/twiml.rst +0 -69
  379. data/docs/usage/validation.rst +0 -71
  380. data/lib/twilio-ruby/rest/applications.rb +0 -6
  381. data/lib/twilio-ruby/rest/authorized_connect_apps.rb +0 -6
  382. data/lib/twilio-ruby/rest/available_phone_numbers/country.rb +0 -10
  383. data/lib/twilio-ruby/rest/available_phone_numbers/local.rb +0 -11
  384. data/lib/twilio-ruby/rest/available_phone_numbers/mobile.rb +0 -11
  385. data/lib/twilio-ruby/rest/available_phone_numbers/toll_free.rb +0 -11
  386. data/lib/twilio-ruby/rest/available_phone_numbers.rb +0 -13
  387. data/lib/twilio-ruby/rest/calls.rb +0 -28
  388. data/lib/twilio-ruby/rest/conferences/participants.rb +0 -23
  389. data/lib/twilio-ruby/rest/conferences.rb +0 -12
  390. data/lib/twilio-ruby/rest/connect_apps.rb +0 -6
  391. data/lib/twilio-ruby/rest/errors.rb +0 -14
  392. data/lib/twilio-ruby/rest/incoming_phone_numbers/local.rb +0 -13
  393. data/lib/twilio-ruby/rest/incoming_phone_numbers/mobile.rb +0 -13
  394. data/lib/twilio-ruby/rest/incoming_phone_numbers/toll_free.rb +0 -13
  395. data/lib/twilio-ruby/rest/incoming_phone_numbers.rb +0 -17
  396. data/lib/twilio-ruby/rest/instance_resource.rb +0 -101
  397. data/lib/twilio-ruby/rest/list_resource.rb +0 -110
  398. data/lib/twilio-ruby/rest/media.rb +0 -14
  399. data/lib/twilio-ruby/rest/messages.rb +0 -17
  400. data/lib/twilio-ruby/rest/notifications.rb +0 -6
  401. data/lib/twilio-ruby/rest/outgoing_caller_ids.rb +0 -25
  402. data/lib/twilio-ruby/rest/queues/members.rb +0 -29
  403. data/lib/twilio-ruby/rest/queues.rb +0 -12
  404. data/lib/twilio-ruby/rest/recordings.rb +0 -35
  405. data/lib/twilio-ruby/rest/sandbox.rb +0 -5
  406. data/lib/twilio-ruby/rest/sip/credential_lists/credentials.rb +0 -6
  407. data/lib/twilio-ruby/rest/sip/credential_lists.rb +0 -11
  408. data/lib/twilio-ruby/rest/sip/domains/credential_list_mappings.rb +0 -6
  409. data/lib/twilio-ruby/rest/sip/domains/ip_access_control_list_mappings.rb +0 -6
  410. data/lib/twilio-ruby/rest/sip/domains.rb +0 -12
  411. data/lib/twilio-ruby/rest/sip/ip_access_control_lists/ip_addresses.rb +0 -6
  412. data/lib/twilio-ruby/rest/sip/ip_access_control_lists.rb +0 -11
  413. data/lib/twilio-ruby/rest/sip.rb +0 -12
  414. data/lib/twilio-ruby/rest/sms/messages.rb +0 -15
  415. data/lib/twilio-ruby/rest/sms/short_codes.rb +0 -8
  416. data/lib/twilio-ruby/rest/sms.rb +0 -11
  417. data/lib/twilio-ruby/rest/transcriptions.rb +0 -6
  418. data/lib/twilio-ruby/rest/usage/records.rb +0 -21
  419. data/lib/twilio-ruby/rest/usage/triggers.rb +0 -12
  420. data/lib/twilio-ruby/rest/usage.rb +0 -10
  421. data/lib/twilio-ruby/rest/utils.rb +0 -25
  422. data/lib/twilio-ruby/twiml/response.rb +0 -15
  423. data/lib/twilio-ruby/util/capability.rb +0 -61
  424. data/lib/twilio-ruby/util/request_validator.rb +0 -22
  425. data/spec/rest/account_spec.rb +0 -58
  426. data/spec/rest/call_spec.rb +0 -18
  427. data/spec/rest/client_spec.rb +0 -100
  428. data/spec/rest/conference_spec.rb +0 -9
  429. data/spec/rest/instance_resource_spec.rb +0 -15
  430. data/spec/rest/message_spec.rb +0 -12
  431. data/spec/rest/numbers_spec.rb +0 -46
  432. data/spec/rest/queue_spec.rb +0 -9
  433. data/spec/rest/recording_spec.rb +0 -9
  434. data/spec/util/capability_spec.rb +0 -137
  435. data/spec/util/request_validator_spec.rb +0 -65
@@ -0,0 +1,230 @@
1
+ ##
2
+ # This code was generated by
3
+ # \ / _ _ _| _ _
4
+ # | (_)\/(_)(_|\/| |(/_ v1.0.0
5
+ # / /
6
+
7
+ module Twilio
8
+ module REST
9
+ class Taskrouter < Domain
10
+ class V1 < Version
11
+ class WorkspaceContext < InstanceContext
12
+ class WorkflowContext < InstanceContext
13
+ class WorkflowStatisticsList < ListResource
14
+ ##
15
+ # Initialize the WorkflowStatisticsList
16
+ # @param [Version] version Version that contains the resource
17
+ # @param [String] workspace_sid The workspace_sid
18
+ # @param [String] workflow_sid The workflow_sid
19
+ # @return [WorkflowStatisticsList] WorkflowStatisticsList
20
+ def initialize(version, workspace_sid: nil, workflow_sid: nil)
21
+ super(version)
22
+
23
+ # Path Solution
24
+ @solution = {
25
+ workspace_sid: workspace_sid,
26
+ workflow_sid: workflow_sid
27
+ }
28
+ end
29
+
30
+ ##
31
+ # Provide a user friendly representation
32
+ def to_s
33
+ '#<Twilio.Taskrouter.V1.WorkflowStatisticsList>'
34
+ end
35
+ end
36
+
37
+ class WorkflowStatisticsPage < Page
38
+ ##
39
+ # Initialize the WorkflowStatisticsPage
40
+ # @param [Version] version Version that contains the resource
41
+ # @param [Response] response Response from the API
42
+ # @param [Hash] solution Path solution for the resource
43
+ # @return [WorkflowStatisticsPage] WorkflowStatisticsPage
44
+ def initialize(version, response, solution)
45
+ super(version, response)
46
+
47
+ # Path Solution
48
+ @solution = solution
49
+ end
50
+
51
+ ##
52
+ # Build an instance of WorkflowStatisticsInstance
53
+ # @param [Hash] payload Payload response from the API
54
+ # @return [WorkflowStatisticsInstance] WorkflowStatisticsInstance
55
+ def get_instance(payload)
56
+ WorkflowStatisticsInstance.new(
57
+ @version,
58
+ payload,
59
+ workspace_sid: @solution[:workspace_sid],
60
+ workflow_sid: @solution[:workflow_sid],
61
+ )
62
+ end
63
+
64
+ ##
65
+ # Provide a user friendly representation
66
+ def to_s
67
+ '<Twilio.Taskrouter.V1.WorkflowStatisticsPage>'
68
+ end
69
+ end
70
+
71
+ class WorkflowStatisticsContext < InstanceContext
72
+ ##
73
+ # Initialize the WorkflowStatisticsContext
74
+ # @param [Version] version Version that contains the resource
75
+ # @param [String] workspace_sid The workspace_sid
76
+ # @param [String] workflow_sid The workflow_sid
77
+ # @return [WorkflowStatisticsContext] WorkflowStatisticsContext
78
+ def initialize(version, workspace_sid, workflow_sid)
79
+ super(version)
80
+
81
+ # Path Solution
82
+ @solution = {
83
+ workspace_sid: workspace_sid,
84
+ workflow_sid: workflow_sid,
85
+ }
86
+ @uri = "/Workspaces/#{@solution[:workspace_sid]}/Workflows/#{@solution[:workflow_sid]}/Statistics"
87
+ end
88
+
89
+ ##
90
+ # Fetch a WorkflowStatisticsInstance
91
+ # @param [String] minutes The minutes
92
+ # @param [Time] start_date The start_date
93
+ # @param [Time] end_date The end_date
94
+ # @return [WorkflowStatisticsInstance] Fetched WorkflowStatisticsInstance
95
+ def fetch(minutes: :unset, start_date: :unset, end_date: :unset)
96
+ params = Twilio::Values.of({
97
+ 'Minutes' => minutes,
98
+ 'StartDate' => Twilio.serialize_iso8601_datetime(start_date),
99
+ 'EndDate' => Twilio.serialize_iso8601_datetime(end_date),
100
+ })
101
+
102
+ payload = @version.fetch(
103
+ 'GET',
104
+ @uri,
105
+ params,
106
+ )
107
+
108
+ WorkflowStatisticsInstance.new(
109
+ @version,
110
+ payload,
111
+ workspace_sid: @solution[:workspace_sid],
112
+ workflow_sid: @solution[:workflow_sid],
113
+ )
114
+ end
115
+
116
+ ##
117
+ # Provide a user friendly representation
118
+ def to_s
119
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
120
+ "#<Twilio.Taskrouter.V1.WorkflowStatisticsContext #{context}>"
121
+ end
122
+ end
123
+
124
+ class WorkflowStatisticsInstance < InstanceResource
125
+ ##
126
+ # Initialize the WorkflowStatisticsInstance
127
+ # @param [Version] version Version that contains the resource
128
+ # @param [Hash] payload payload that contains response from Twilio
129
+ # @param [String] workspace_sid The workspace_sid
130
+ # @param [String] workflow_sid The workflow_sid
131
+ # @return [WorkflowStatisticsInstance] WorkflowStatisticsInstance
132
+ def initialize(version, payload, workspace_sid: nil, workflow_sid: nil)
133
+ super(version)
134
+
135
+ # Marshaled Properties
136
+ @properties = {
137
+ 'account_sid' => payload['account_sid'],
138
+ 'cumulative' => payload['cumulative'],
139
+ 'realtime' => payload['realtime'],
140
+ 'workflow_sid' => payload['workflow_sid'],
141
+ 'workspace_sid' => payload['workspace_sid'],
142
+ 'url' => payload['url'],
143
+ }
144
+
145
+ # Context
146
+ @instance_context = nil
147
+ @params = {
148
+ 'workspace_sid' => workspace_sid,
149
+ 'workflow_sid' => workflow_sid,
150
+ }
151
+ end
152
+
153
+ ##
154
+ # Generate an instance context for the instance, the context is capable of
155
+ # performing various actions. All instance actions are proxied to the context
156
+ # @return [WorkflowStatisticsContext] WorkflowStatisticsContext for this WorkflowStatisticsInstance
157
+ def context
158
+ unless @instance_context
159
+ @instance_context = WorkflowStatisticsContext.new(
160
+ @version,
161
+ @params['workspace_sid'],
162
+ @params['workflow_sid'],
163
+ )
164
+ end
165
+ @instance_context
166
+ end
167
+
168
+ ##
169
+ # @return [String] The account_sid
170
+ def account_sid
171
+ @properties['account_sid']
172
+ end
173
+
174
+ ##
175
+ # @return [Hash] The cumulative
176
+ def cumulative
177
+ @properties['cumulative']
178
+ end
179
+
180
+ ##
181
+ # @return [Hash] The realtime
182
+ def realtime
183
+ @properties['realtime']
184
+ end
185
+
186
+ ##
187
+ # @return [String] The workflow_sid
188
+ def workflow_sid
189
+ @properties['workflow_sid']
190
+ end
191
+
192
+ ##
193
+ # @return [String] The workspace_sid
194
+ def workspace_sid
195
+ @properties['workspace_sid']
196
+ end
197
+
198
+ ##
199
+ # @return [String] The url
200
+ def url
201
+ @properties['url']
202
+ end
203
+
204
+ ##
205
+ # Fetch a WorkflowStatisticsInstance
206
+ # @param [String] minutes The minutes
207
+ # @param [Time] start_date The start_date
208
+ # @param [Time] end_date The end_date
209
+ # @return [WorkflowStatisticsInstance] Fetched WorkflowStatisticsInstance
210
+ def fetch(minutes: :unset, start_date: :unset, end_date: :unset)
211
+ context.fetch(
212
+ minutes: minutes,
213
+ start_date: start_date,
214
+ end_date: end_date,
215
+ )
216
+ end
217
+
218
+ ##
219
+ # Provide a user friendly representation
220
+ def to_s
221
+ values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
222
+ "<Twilio.Taskrouter.V1.WorkflowStatisticsInstance #{values}>"
223
+ end
224
+ end
225
+ end
226
+ end
227
+ end
228
+ end
229
+ end
230
+ end
@@ -0,0 +1,475 @@
1
+ ##
2
+ # This code was generated by
3
+ # \ / _ _ _| _ _
4
+ # | (_)\/(_)(_|\/| |(/_ v1.0.0
5
+ # / /
6
+
7
+ module Twilio
8
+ module REST
9
+ class Taskrouter < Domain
10
+ class V1 < Version
11
+ class WorkspaceContext < InstanceContext
12
+ class WorkflowList < ListResource
13
+ ##
14
+ # Initialize the WorkflowList
15
+ # @param [Version] version Version that contains the resource
16
+ # @param [String] workspace_sid The workspace_sid
17
+ # @return [WorkflowList] WorkflowList
18
+ def initialize(version, workspace_sid: nil)
19
+ super(version)
20
+
21
+ # Path Solution
22
+ @solution = {
23
+ workspace_sid: workspace_sid
24
+ }
25
+ @uri = "/Workspaces/#{@solution[:workspace_sid]}/Workflows"
26
+ end
27
+
28
+ ##
29
+ # Lists WorkflowInstance records from the API as a list.
30
+ # Unlike stream(), this operation is eager and will load `limit` records into
31
+ # memory before returning.
32
+ # @param [String] friendly_name The friendly_name
33
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
34
+ # guarantees to never return more than limit. Default is no limit
35
+ # @param [Integer] page_size Number of records to fetch per request, when not set will use
36
+ # the default value of 50 records. If no page_size is defined
37
+ # but a limit is defined, stream() will attempt to read the
38
+ # limit with the most efficient page size, i.e. min(limit, 1000)
39
+ # @return [Array] Array of up to limit results
40
+ def list(friendly_name: :unset, limit: nil, page_size: nil)
41
+ self.stream(
42
+ friendly_name: friendly_name,
43
+ limit: limit,
44
+ page_size: page_size
45
+ ).entries
46
+ end
47
+
48
+ ##
49
+ # Streams WorkflowInstance records from the API as an Enumerable.
50
+ # This operation lazily loads records as efficiently as possible until the limit
51
+ # is reached.
52
+ # @param [String] friendly_name The friendly_name
53
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
54
+ # guarantees to never return more than limit. Default is no limit
55
+ # @param [Integer] page_size Number of records to fetch per request, when not set will use
56
+ # the default value of 50 records. If no page_size is defined
57
+ # but a limit is defined, stream() will attempt to read the
58
+ # limit with the most efficient page size, i.e. min(limit, 1000)
59
+ # @return [Enumerable] Enumerable that will yield up to limit results
60
+ def stream(friendly_name: :unset, limit: nil, page_size: nil)
61
+ limits = @version.read_limits(limit, page_size)
62
+
63
+ page = self.page(
64
+ friendly_name: friendly_name,
65
+ page_size: limits[:page_size],
66
+ )
67
+
68
+ @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit])
69
+ end
70
+
71
+ ##
72
+ # When passed a block, yields WorkflowInstance records from the API.
73
+ # This operation lazily loads records as efficiently as possible until the limit
74
+ # is reached.
75
+ def each
76
+ limits = @version.read_limits
77
+
78
+ page = self.page(
79
+ page_size: limits[:page_size],
80
+ )
81
+
82
+ @version.stream(page,
83
+ limit: limits[:limit],
84
+ page_limit: limits[:page_limit]).each {|x| yield x}
85
+ end
86
+
87
+ ##
88
+ # Retrieve a single page of WorkflowInstance records from the API.
89
+ # Request is executed immediately.
90
+ # @param [String] friendly_name The friendly_name
91
+ # @param [String] page_token PageToken provided by the API
92
+ # @param [Integer] page_number Page Number, this value is simply for client state
93
+ # @param [Integer] page_size Number of records to return, defaults to 50
94
+ # @return [Page] Page of WorkflowInstance
95
+ def page(friendly_name: :unset, page_token: :unset, page_number: :unset, page_size: :unset)
96
+ params = Twilio::Values.of({
97
+ 'FriendlyName' => friendly_name,
98
+ 'PageToken' => page_token,
99
+ 'Page' => page_number,
100
+ 'PageSize' => page_size,
101
+ })
102
+ response = @version.page(
103
+ 'GET',
104
+ @uri,
105
+ params
106
+ )
107
+ WorkflowPage.new(@version, response, @solution)
108
+ end
109
+
110
+ ##
111
+ # Retrieve a single page of WorkflowInstance records from the API.
112
+ # Request is executed immediately.
113
+ # @param [String] target_url API-generated URL for the requested results page
114
+ # @return [Page] Page of WorkflowInstance
115
+ def get_page(target_url)
116
+ response = @version.domain.request(
117
+ 'GET',
118
+ target_url
119
+ )
120
+ WorkflowPage.new(@version, response, @solution)
121
+ end
122
+
123
+ ##
124
+ # Retrieve a single page of WorkflowInstance records from the API.
125
+ # Request is executed immediately.
126
+ # @param [String] friendly_name The friendly_name
127
+ # @param [String] configuration The configuration
128
+ # @param [String] assignment_callback_url The assignment_callback_url
129
+ # @param [String] fallback_assignment_callback_url The
130
+ # fallback_assignment_callback_url
131
+ # @param [String] task_reservation_timeout The task_reservation_timeout
132
+ # @return [WorkflowInstance] Newly created WorkflowInstance
133
+ def create(friendly_name: nil, configuration: nil, assignment_callback_url: :unset, fallback_assignment_callback_url: :unset, task_reservation_timeout: :unset)
134
+ data = Twilio::Values.of({
135
+ 'FriendlyName' => friendly_name,
136
+ 'Configuration' => configuration,
137
+ 'AssignmentCallbackUrl' => assignment_callback_url,
138
+ 'FallbackAssignmentCallbackUrl' => fallback_assignment_callback_url,
139
+ 'TaskReservationTimeout' => task_reservation_timeout,
140
+ })
141
+
142
+ payload = @version.create(
143
+ 'POST',
144
+ @uri,
145
+ data: data
146
+ )
147
+
148
+ WorkflowInstance.new(
149
+ @version,
150
+ payload,
151
+ workspace_sid: @solution[:workspace_sid],
152
+ )
153
+ end
154
+
155
+ ##
156
+ # Provide a user friendly representation
157
+ def to_s
158
+ '#<Twilio.Taskrouter.V1.WorkflowList>'
159
+ end
160
+ end
161
+
162
+ class WorkflowPage < Page
163
+ ##
164
+ # Initialize the WorkflowPage
165
+ # @param [Version] version Version that contains the resource
166
+ # @param [Response] response Response from the API
167
+ # @param [Hash] solution Path solution for the resource
168
+ # @return [WorkflowPage] WorkflowPage
169
+ def initialize(version, response, solution)
170
+ super(version, response)
171
+
172
+ # Path Solution
173
+ @solution = solution
174
+ end
175
+
176
+ ##
177
+ # Build an instance of WorkflowInstance
178
+ # @param [Hash] payload Payload response from the API
179
+ # @return [WorkflowInstance] WorkflowInstance
180
+ def get_instance(payload)
181
+ WorkflowInstance.new(
182
+ @version,
183
+ payload,
184
+ workspace_sid: @solution[:workspace_sid],
185
+ )
186
+ end
187
+
188
+ ##
189
+ # Provide a user friendly representation
190
+ def to_s
191
+ '<Twilio.Taskrouter.V1.WorkflowPage>'
192
+ end
193
+ end
194
+
195
+ class WorkflowContext < InstanceContext
196
+ ##
197
+ # Initialize the WorkflowContext
198
+ # @param [Version] version Version that contains the resource
199
+ # @param [String] workspace_sid The workspace_sid
200
+ # @param [String] sid The sid
201
+ # @return [WorkflowContext] WorkflowContext
202
+ def initialize(version, workspace_sid, sid)
203
+ super(version)
204
+
205
+ # Path Solution
206
+ @solution = {
207
+ workspace_sid: workspace_sid,
208
+ sid: sid,
209
+ }
210
+ @uri = "/Workspaces/#{@solution[:workspace_sid]}/Workflows/#{@solution[:sid]}"
211
+
212
+ # Dependents
213
+ @statistics = nil
214
+ end
215
+
216
+ ##
217
+ # Fetch a WorkflowInstance
218
+ # @return [WorkflowInstance] Fetched WorkflowInstance
219
+ def fetch
220
+ params = Twilio::Values.of({})
221
+
222
+ payload = @version.fetch(
223
+ 'GET',
224
+ @uri,
225
+ params,
226
+ )
227
+
228
+ WorkflowInstance.new(
229
+ @version,
230
+ payload,
231
+ workspace_sid: @solution[:workspace_sid],
232
+ sid: @solution[:sid],
233
+ )
234
+ end
235
+
236
+ ##
237
+ # Update the WorkflowInstance
238
+ # @param [String] friendly_name The friendly_name
239
+ # @param [String] assignment_callback_url The assignment_callback_url
240
+ # @param [String] fallback_assignment_callback_url The
241
+ # fallback_assignment_callback_url
242
+ # @param [String] configuration The configuration
243
+ # @param [String] task_reservation_timeout The task_reservation_timeout
244
+ # @return [WorkflowInstance] Updated WorkflowInstance
245
+ def update(friendly_name: :unset, assignment_callback_url: :unset, fallback_assignment_callback_url: :unset, configuration: :unset, task_reservation_timeout: :unset)
246
+ data = Twilio::Values.of({
247
+ 'FriendlyName' => friendly_name,
248
+ 'AssignmentCallbackUrl' => assignment_callback_url,
249
+ 'FallbackAssignmentCallbackUrl' => fallback_assignment_callback_url,
250
+ 'Configuration' => configuration,
251
+ 'TaskReservationTimeout' => task_reservation_timeout,
252
+ })
253
+
254
+ payload = @version.update(
255
+ 'POST',
256
+ @uri,
257
+ data: data,
258
+ )
259
+
260
+ WorkflowInstance.new(
261
+ @version,
262
+ payload,
263
+ workspace_sid: @solution[:workspace_sid],
264
+ sid: @solution[:sid],
265
+ )
266
+ end
267
+
268
+ ##
269
+ # Deletes the WorkflowInstance
270
+ # @return [Boolean] true if delete succeeds, true otherwise
271
+ def delete
272
+ @version.delete('delete', @uri)
273
+ end
274
+
275
+ ##
276
+ # Access the statistics
277
+ # @return [WorkflowStatisticsList]
278
+ # @return [WorkflowStatisticsContext]
279
+ def statistics
280
+ WorkflowStatisticsContext.new(
281
+ @version,
282
+ @solution[:workspace_sid],
283
+ @solution[:sid],
284
+ )
285
+ end
286
+
287
+ ##
288
+ # Provide a user friendly representation
289
+ def to_s
290
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
291
+ "#<Twilio.Taskrouter.V1.WorkflowContext #{context}>"
292
+ end
293
+ end
294
+
295
+ class WorkflowInstance < InstanceResource
296
+ ##
297
+ # Initialize the WorkflowInstance
298
+ # @param [Version] version Version that contains the resource
299
+ # @param [Hash] payload payload that contains response from Twilio
300
+ # @param [String] workspace_sid The workspace_sid
301
+ # @param [String] sid The sid
302
+ # @return [WorkflowInstance] WorkflowInstance
303
+ def initialize(version, payload, workspace_sid: nil, sid: nil)
304
+ super(version)
305
+
306
+ # Marshaled Properties
307
+ @properties = {
308
+ 'account_sid' => payload['account_sid'],
309
+ 'assignment_callback_url' => payload['assignment_callback_url'],
310
+ 'configuration' => payload['configuration'],
311
+ 'date_created' => Twilio.deserialize_iso8601_datetime(payload['date_created']),
312
+ 'date_updated' => Twilio.deserialize_iso8601_datetime(payload['date_updated']),
313
+ 'document_content_type' => payload['document_content_type'],
314
+ 'fallback_assignment_callback_url' => payload['fallback_assignment_callback_url'],
315
+ 'friendly_name' => payload['friendly_name'],
316
+ 'sid' => payload['sid'],
317
+ 'task_reservation_timeout' => payload['task_reservation_timeout'].to_i,
318
+ 'workspace_sid' => payload['workspace_sid'],
319
+ 'url' => payload['url'],
320
+ 'links' => payload['links'],
321
+ }
322
+
323
+ # Context
324
+ @instance_context = nil
325
+ @params = {
326
+ 'workspace_sid' => workspace_sid,
327
+ 'sid' => sid || @properties['sid'],
328
+ }
329
+ end
330
+
331
+ ##
332
+ # Generate an instance context for the instance, the context is capable of
333
+ # performing various actions. All instance actions are proxied to the context
334
+ # @return [WorkflowContext] WorkflowContext for this WorkflowInstance
335
+ def context
336
+ unless @instance_context
337
+ @instance_context = WorkflowContext.new(
338
+ @version,
339
+ @params['workspace_sid'],
340
+ @params['sid'],
341
+ )
342
+ end
343
+ @instance_context
344
+ end
345
+
346
+ ##
347
+ # @return [String] The account_sid
348
+ def account_sid
349
+ @properties['account_sid']
350
+ end
351
+
352
+ ##
353
+ # @return [String] The assignment_callback_url
354
+ def assignment_callback_url
355
+ @properties['assignment_callback_url']
356
+ end
357
+
358
+ ##
359
+ # @return [String] The configuration
360
+ def configuration
361
+ @properties['configuration']
362
+ end
363
+
364
+ ##
365
+ # @return [Time] The date_created
366
+ def date_created
367
+ @properties['date_created']
368
+ end
369
+
370
+ ##
371
+ # @return [Time] The date_updated
372
+ def date_updated
373
+ @properties['date_updated']
374
+ end
375
+
376
+ ##
377
+ # @return [String] The document_content_type
378
+ def document_content_type
379
+ @properties['document_content_type']
380
+ end
381
+
382
+ ##
383
+ # @return [String] The fallback_assignment_callback_url
384
+ def fallback_assignment_callback_url
385
+ @properties['fallback_assignment_callback_url']
386
+ end
387
+
388
+ ##
389
+ # @return [String] The friendly_name
390
+ def friendly_name
391
+ @properties['friendly_name']
392
+ end
393
+
394
+ ##
395
+ # @return [String] The sid
396
+ def sid
397
+ @properties['sid']
398
+ end
399
+
400
+ ##
401
+ # @return [String] The task_reservation_timeout
402
+ def task_reservation_timeout
403
+ @properties['task_reservation_timeout']
404
+ end
405
+
406
+ ##
407
+ # @return [String] The workspace_sid
408
+ def workspace_sid
409
+ @properties['workspace_sid']
410
+ end
411
+
412
+ ##
413
+ # @return [String] The url
414
+ def url
415
+ @properties['url']
416
+ end
417
+
418
+ ##
419
+ # @return [String] The links
420
+ def links
421
+ @properties['links']
422
+ end
423
+
424
+ ##
425
+ # Fetch a WorkflowInstance
426
+ # @return [WorkflowInstance] Fetched WorkflowInstance
427
+ def fetch
428
+ context.fetch
429
+ end
430
+
431
+ ##
432
+ # Update the WorkflowInstance
433
+ # @param [String] friendly_name The friendly_name
434
+ # @param [String] assignment_callback_url The assignment_callback_url
435
+ # @param [String] fallback_assignment_callback_url The
436
+ # fallback_assignment_callback_url
437
+ # @param [String] configuration The configuration
438
+ # @param [String] task_reservation_timeout The task_reservation_timeout
439
+ # @return [WorkflowInstance] Updated WorkflowInstance
440
+ def update(friendly_name: :unset, assignment_callback_url: :unset, fallback_assignment_callback_url: :unset, configuration: :unset, task_reservation_timeout: :unset)
441
+ context.update(
442
+ friendly_name: friendly_name,
443
+ assignment_callback_url: assignment_callback_url,
444
+ fallback_assignment_callback_url: fallback_assignment_callback_url,
445
+ configuration: configuration,
446
+ task_reservation_timeout: task_reservation_timeout,
447
+ )
448
+ end
449
+
450
+ ##
451
+ # Deletes the WorkflowInstance
452
+ # @return [Boolean] true if delete succeeds, true otherwise
453
+ def delete
454
+ context.delete
455
+ end
456
+
457
+ ##
458
+ # Access the statistics
459
+ # @return [statistics] statistics
460
+ def statistics
461
+ context.statistics
462
+ end
463
+
464
+ ##
465
+ # Provide a user friendly representation
466
+ def to_s
467
+ values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
468
+ "<Twilio.Taskrouter.V1.WorkflowInstance #{values}>"
469
+ end
470
+ end
471
+ end
472
+ end
473
+ end
474
+ end
475
+ end