twilio-ruby 5.72.0 → 5.77.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 (199) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/pr-lint.yml +8 -2
  3. data/.github/workflows/test-and-deploy.yml +3 -3
  4. data/CHANGES.md +234 -0
  5. data/CONTRIBUTING.md +1 -7
  6. data/LICENSE +1 -1
  7. data/README.md +132 -45
  8. data/advanced-examples/custom-http-client.md +170 -0
  9. data/lib/twilio-ruby/rest/api/v2010/account/address.rb +19 -3
  10. data/lib/twilio-ruby/rest/api/v2010/account/application.rb +22 -3
  11. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/local.rb +2 -2
  12. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/machine_to_machine.rb +2 -2
  13. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/mobile.rb +2 -2
  14. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/national.rb +2 -2
  15. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/shared_cost.rb +2 -2
  16. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/toll_free.rb +2 -2
  17. data/lib/twilio-ruby/rest/api/v2010/account/available_phone_number/voip.rb +2 -2
  18. data/lib/twilio-ruby/rest/api/v2010/account/call/feedback.rb +1 -1
  19. data/lib/twilio-ruby/rest/api/v2010/account/call/feedback_summary.rb +5 -5
  20. data/lib/twilio-ruby/rest/api/v2010/account/call/recording.rb +2 -2
  21. data/lib/twilio-ruby/rest/api/v2010/account/call/user_defined_message.rb +160 -0
  22. data/lib/twilio-ruby/rest/api/v2010/account/call/user_defined_message_subscription.rb +251 -0
  23. data/lib/twilio-ruby/rest/api/v2010/account/call.rb +59 -0
  24. data/lib/twilio-ruby/rest/api/v2010/account/conference/participant.rb +56 -17
  25. data/lib/twilio-ruby/rest/api/v2010/account/conference/recording.rb +1 -1
  26. data/lib/twilio-ruby/rest/api/v2010/account/conference.rb +5 -5
  27. data/lib/twilio-ruby/rest/api/v2010/account/message.rb +17 -1
  28. data/lib/twilio-ruby/rest/api/v2010/account/queue/member.rb +2 -2
  29. data/lib/twilio-ruby/rest/api/v2010/account/queue.rb +6 -6
  30. data/lib/twilio-ruby/rest/api/v2010/account/recording/transcription.rb +1 -1
  31. data/lib/twilio-ruby/rest/api/v2010/account/recording.rb +1 -1
  32. data/lib/twilio-ruby/rest/api/v2010/account/sip/ip_access_control_list/ip_address.rb +1 -1
  33. data/lib/twilio-ruby/rest/api/v2010/account/transcription.rb +1 -1
  34. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/all_time.rb +1 -1
  35. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/daily.rb +1 -1
  36. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/last_month.rb +1 -1
  37. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/monthly.rb +1 -1
  38. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/this_month.rb +1 -1
  39. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/today.rb +1 -1
  40. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/yearly.rb +1 -1
  41. data/lib/twilio-ruby/rest/api/v2010/account/usage/record/yesterday.rb +1 -1
  42. data/lib/twilio-ruby/rest/api/v2010/account/usage/record.rb +1 -1
  43. data/lib/twilio-ruby/rest/autopilot/v1/assistant/task/task_statistics.rb +2 -2
  44. data/lib/twilio-ruby/rest/bulkexports/v1/export/day.rb +1 -1
  45. data/lib/twilio-ruby/rest/chat/v1/service/channel/message.rb +1 -1
  46. data/lib/twilio-ruby/rest/chat/v1/service/channel.rb +2 -2
  47. data/lib/twilio-ruby/rest/chat/v1/service/user.rb +1 -1
  48. data/lib/twilio-ruby/rest/chat/v1/service.rb +2 -2
  49. data/lib/twilio-ruby/rest/chat/v2/service/channel/message.rb +1 -1
  50. data/lib/twilio-ruby/rest/chat/v2/service/channel.rb +2 -2
  51. data/lib/twilio-ruby/rest/chat/v2/service/user.rb +1 -1
  52. data/lib/twilio-ruby/rest/chat/v2/service.rb +4 -4
  53. data/lib/twilio-ruby/rest/chat/v3/channel.rb +2 -2
  54. data/lib/twilio-ruby/rest/client.rb +14 -0
  55. data/lib/twilio-ruby/rest/content/v1/content/approval_fetch.rb +195 -0
  56. data/lib/twilio-ruby/rest/content/v1/content.rb +346 -0
  57. data/lib/twilio-ruby/rest/content/v1/content_and_approvals.rb +240 -0
  58. data/lib/twilio-ruby/rest/content/v1/legacy_content.rb +254 -0
  59. data/lib/twilio-ruby/rest/content/v1.rb +59 -0
  60. data/lib/twilio-ruby/rest/content.rb +59 -0
  61. data/lib/twilio-ruby/rest/conversations/v1/conversation/message/delivery_receipt.rb +1 -1
  62. data/lib/twilio-ruby/rest/conversations/v1/conversation/message.rb +17 -2
  63. data/lib/twilio-ruby/rest/conversations/v1/conversation.rb +43 -5
  64. data/lib/twilio-ruby/rest/conversations/v1/service/conversation/message/delivery_receipt.rb +1 -1
  65. data/lib/twilio-ruby/rest/conversations/v1/service/conversation/message.rb +17 -2
  66. data/lib/twilio-ruby/rest/conversations/v1/service/conversation.rb +43 -5
  67. data/lib/twilio-ruby/rest/events/v1/schema/version.rb +1 -1
  68. data/lib/twilio-ruby/rest/events/v1/schema.rb +1 -1
  69. data/lib/twilio-ruby/rest/events/v1/subscription/subscribed_event.rb +1 -1
  70. data/lib/twilio-ruby/rest/flex_api/v1/assessments.rb +397 -0
  71. data/lib/twilio-ruby/rest/flex_api/v1/insights_assessments_comment.rb +314 -0
  72. data/lib/twilio-ruby/rest/flex_api/v1/insights_conversations.rb +216 -0
  73. data/lib/twilio-ruby/rest/flex_api/v1/insights_questionnaires.rb +394 -0
  74. data/lib/twilio-ruby/rest/flex_api/v1/insights_questionnaires_category.rb +313 -0
  75. data/lib/twilio-ruby/rest/flex_api/v1/insights_questionnaires_question.rb +390 -0
  76. data/lib/twilio-ruby/rest/flex_api/v1/insights_segments.rb +413 -0
  77. data/lib/twilio-ruby/rest/{preview/trusted_comms/brands_information.rb → flex_api/v1/insights_session.rb} +58 -55
  78. data/lib/twilio-ruby/rest/flex_api/v1/insights_settings_answersets.rb +144 -0
  79. data/lib/twilio-ruby/rest/flex_api/v1/insights_settings_comment.rb +130 -0
  80. data/lib/twilio-ruby/rest/{preview/trusted_comms/cps.rb → flex_api/v1/insights_user_roles.rb} +42 -54
  81. data/lib/twilio-ruby/rest/flex_api/v1.rb +122 -0
  82. data/lib/twilio-ruby/rest/flex_api/v2/web_channels.rb +133 -0
  83. data/lib/twilio-ruby/rest/flex_api/v2.rb +35 -0
  84. data/lib/twilio-ruby/rest/flex_api.rb +89 -0
  85. data/lib/twilio-ruby/rest/insights/v1/call/summary.rb +7 -0
  86. data/lib/twilio-ruby/rest/insights/v1/call_summaries.rb +16 -3
  87. data/lib/twilio-ruby/rest/insights/v1/room/participant.rb +1 -1
  88. data/lib/twilio-ruby/rest/insights/v1/room.rb +3 -3
  89. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/message.rb +1 -1
  90. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel.rb +2 -2
  91. data/lib/twilio-ruby/rest/ip_messaging/v1/service/user.rb +1 -1
  92. data/lib/twilio-ruby/rest/ip_messaging/v1/service.rb +2 -2
  93. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/message.rb +1 -1
  94. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel.rb +2 -2
  95. data/lib/twilio-ruby/rest/ip_messaging/v2/service/user.rb +1 -1
  96. data/lib/twilio-ruby/rest/ip_messaging/v2/service.rb +4 -4
  97. data/lib/twilio-ruby/rest/lookups/v2/phone_number.rb +88 -6
  98. data/lib/twilio-ruby/rest/media/v1/media_processor.rb +1 -1
  99. data/lib/twilio-ruby/rest/media/v1/media_recording.rb +2 -2
  100. data/lib/twilio-ruby/rest/media/v1/player_streamer.rb +1 -1
  101. data/lib/twilio-ruby/rest/messaging/v1/brand_registration/brand_registration_otp.rb +134 -0
  102. data/lib/twilio-ruby/rest/messaging/v1/brand_registration.rb +26 -3
  103. data/lib/twilio-ruby/rest/messaging/v1/domain_cert.rb +257 -0
  104. data/lib/twilio-ruby/rest/messaging/v1/domain_config.rb +242 -0
  105. data/lib/twilio-ruby/rest/messaging/v1/domain_config_messaging_service.rb +226 -0
  106. data/lib/twilio-ruby/rest/messaging/v1/linkshortening_messaging_service.rb +218 -0
  107. data/lib/twilio-ruby/rest/messaging/v1/service/us_app_to_person.rb +98 -3
  108. data/lib/twilio-ruby/rest/messaging/v1/service.rb +1 -1
  109. data/lib/twilio-ruby/rest/messaging/v1/tollfree_verification.rb +165 -1
  110. data/lib/twilio-ruby/rest/messaging/v1.rb +75 -0
  111. data/lib/twilio-ruby/rest/messaging.rb +36 -0
  112. data/lib/twilio-ruby/rest/microvisor/v1/account_config.rb +317 -0
  113. data/lib/twilio-ruby/rest/microvisor/v1/account_secret.rb +310 -0
  114. data/lib/twilio-ruby/rest/microvisor/v1/app/app_manifest.rb +192 -0
  115. data/lib/twilio-ruby/rest/microvisor/v1/app.rb +25 -0
  116. data/lib/twilio-ruby/rest/microvisor/v1/device/device_config.rb +342 -0
  117. data/lib/twilio-ruby/rest/microvisor/v1/device/device_secret.rb +335 -0
  118. data/lib/twilio-ruby/rest/microvisor/v1/device.rb +61 -0
  119. data/lib/twilio-ruby/rest/microvisor/v1.rb +32 -0
  120. data/lib/twilio-ruby/rest/microvisor.rb +16 -0
  121. data/lib/twilio-ruby/rest/notify/v1/service/notification.rb +1 -1
  122. data/lib/twilio-ruby/rest/numbers/v1/eligibility.rb +111 -0
  123. data/lib/twilio-ruby/rest/numbers/v1.rb +35 -0
  124. data/lib/twilio-ruby/rest/numbers.rb +13 -0
  125. data/lib/twilio-ruby/rest/oauth/v1/device_code.rb +153 -0
  126. data/lib/twilio-ruby/rest/oauth/v1/oauth.rb +162 -0
  127. data/lib/twilio-ruby/rest/oauth/v1/openid_discovery.rb +242 -0
  128. data/lib/twilio-ruby/rest/oauth/v1/token.rb +157 -0
  129. data/lib/twilio-ruby/rest/oauth/v1/user_info.rb +193 -0
  130. data/lib/twilio-ruby/rest/oauth/v1.rb +63 -0
  131. data/lib/twilio-ruby/rest/oauth.rb +68 -0
  132. data/lib/twilio-ruby/rest/preview/hosted_numbers/authorization_document/dependent_hosted_number_order.rb +2 -2
  133. data/lib/twilio-ruby/rest/preview/hosted_numbers/hosted_number_order.rb +2 -2
  134. data/lib/twilio-ruby/rest/preview/sync/service/sync_list/sync_list_item.rb +1 -1
  135. data/lib/twilio-ruby/rest/preview/understand/assistant/task/task_statistics.rb +2 -2
  136. data/lib/twilio-ruby/rest/preview/wireless/rate_plan.rb +1 -1
  137. data/lib/twilio-ruby/rest/preview.rb +0 -33
  138. data/lib/twilio-ruby/rest/proxy/v1/service/phone_number.rb +1 -1
  139. data/lib/twilio-ruby/rest/proxy/v1/service/session/participant.rb +1 -14
  140. data/lib/twilio-ruby/rest/proxy/v1/service/session.rb +5 -46
  141. data/lib/twilio-ruby/rest/proxy/v1/service.rb +1 -1
  142. data/lib/twilio-ruby/rest/studio/v1/flow.rb +1 -1
  143. data/lib/twilio-ruby/rest/studio/v2/flow/flow_revision.rb +1 -1
  144. data/lib/twilio-ruby/rest/studio/v2/flow.rb +1 -1
  145. data/lib/twilio-ruby/rest/supersim/v1/esim_profile.rb +21 -1
  146. data/lib/twilio-ruby/rest/supersim/v1/fleet.rb +1 -1
  147. data/lib/twilio-ruby/rest/supersim/v1/ip_command.rb +5 -2
  148. data/lib/twilio-ruby/rest/supersim/v1/settings_update.rb +247 -0
  149. data/lib/twilio-ruby/rest/supersim/v1/sms_command.rb +3 -3
  150. data/lib/twilio-ruby/rest/supersim/v1/usage_record.rb +4 -4
  151. data/lib/twilio-ruby/rest/supersim/v1.rb +7 -0
  152. data/lib/twilio-ruby/rest/supersim.rb +6 -0
  153. data/lib/twilio-ruby/rest/sync/v1/service/sync_list/sync_list_item.rb +1 -1
  154. data/lib/twilio-ruby/rest/sync/v1/service.rb +1 -1
  155. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/event.rb +1 -1
  156. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task/reservation.rb +18 -5
  157. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task.rb +3 -3
  158. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_cumulative_statistics.rb +12 -12
  159. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_real_time_statistics.rb +5 -5
  160. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue.rb +10 -4
  161. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/worker_channel.rb +3 -3
  162. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/workers_cumulative_statistics.rb +6 -6
  163. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/workers_real_time_statistics.rb +1 -1
  164. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker.rb +9 -3
  165. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow/workflow_cumulative_statistics.rb +13 -13
  166. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow/workflow_real_time_statistics.rb +2 -2
  167. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow.rb +1 -1
  168. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workspace_cumulative_statistics.rb +13 -13
  169. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workspace_real_time_statistics.rb +3 -3
  170. data/lib/twilio-ruby/rest/trunking/v1/trunk/origination_url.rb +2 -2
  171. data/lib/twilio-ruby/rest/verify/v2/service/access_token.rb +1 -9
  172. data/lib/twilio-ruby/rest/verify/v2/service/entity/challenge/notification.rb +1 -7
  173. data/lib/twilio-ruby/rest/verify/v2/service/entity/challenge.rb +0 -8
  174. data/lib/twilio-ruby/rest/verify/v2/service/entity/factor.rb +0 -8
  175. data/lib/twilio-ruby/rest/verify/v2/service/entity/new_factor.rb +0 -6
  176. data/lib/twilio-ruby/rest/verify/v2/service/entity.rb +0 -8
  177. data/lib/twilio-ruby/rest/verify/v2/service/rate_limit/bucket.rb +2 -2
  178. data/lib/twilio-ruby/rest/verify/v2/service/verification.rb +12 -6
  179. data/lib/twilio-ruby/rest/verify/v2/service/webhook.rb +0 -8
  180. data/lib/twilio-ruby/rest/verify/v2/service.rb +4 -4
  181. data/lib/twilio-ruby/rest/verify/v2/template.rb +10 -3
  182. data/lib/twilio-ruby/rest/verify/v2/verification_attempts_summary.rb +4 -4
  183. data/lib/twilio-ruby/rest/video/v1/composition.rb +3 -3
  184. data/lib/twilio-ruby/rest/video/v1/recording.rb +2 -2
  185. data/lib/twilio-ruby/rest/video/v1/room/recording.rb +2 -2
  186. data/lib/twilio-ruby/rest/video/v1/room.rb +4 -4
  187. data/lib/twilio-ruby/rest/voice/v1/connection_policy/connection_policy_target.rb +2 -2
  188. data/lib/twilio-ruby/rest/voice/v1/dialing_permissions/bulk_country_update.rb +1 -1
  189. data/lib/twilio-ruby/rest/voice/v1/ip_record.rb +1 -1
  190. data/lib/twilio-ruby/rest/wireless/v1/rate_plan.rb +3 -3
  191. data/lib/twilio-ruby/rest/wireless/v1/sim/data_session.rb +2 -2
  192. data/lib/twilio-ruby/twiml/voice_response.rb +132 -33
  193. data/lib/twilio-ruby/version.rb +1 -1
  194. data/twilio-ruby.gemspec +1 -1
  195. metadata +48 -12
  196. data/lib/twilio-ruby/rest/preview/trusted_comms/branded_channel/channel.rb +0 -165
  197. data/lib/twilio-ruby/rest/preview/trusted_comms/branded_channel.rb +0 -225
  198. data/lib/twilio-ruby/rest/preview/trusted_comms/current_call.rb +0 -277
  199. data/lib/twilio-ruby/rest/preview/trusted_comms.rb +0 -65
@@ -75,6 +75,14 @@ module Twilio
75
75
  # Lists ConversationInstance records from the API as a list.
76
76
  # Unlike stream(), this operation is eager and will load `limit` records into
77
77
  # memory before returning.
78
+ # @param [String] start_date Start date or time in ISO8601 format for filtering
79
+ # list of Conversations. If a date is provided, the start time of the date is used
80
+ # (YYYY-MM-DDT00:00:00Z). Can be combined with other filters.
81
+ # @param [String] end_date End date or time in ISO8601 format for filtering list
82
+ # of Conversations. If a date is provided, the end time of the date is used
83
+ # (YYYY-MM-DDT23:59:59Z). Can be combined with other filters.
84
+ # @param [conversation.State] state State for sorting and filtering list of
85
+ # Conversations. Can be `active`, `inactive` or `closed`
78
86
  # @param [Integer] limit Upper limit for the number of records to return. stream()
79
87
  # guarantees to never return more than limit. Default is no limit
80
88
  # @param [Integer] page_size Number of records to fetch per request, when
@@ -82,14 +90,28 @@ module Twilio
82
90
  # but a limit is defined, stream() will attempt to read the limit with the most
83
91
  # efficient page size, i.e. min(limit, 1000)
84
92
  # @return [Array] Array of up to limit results
85
- def list(limit: nil, page_size: nil)
86
- self.stream(limit: limit, page_size: page_size).entries
93
+ def list(start_date: :unset, end_date: :unset, state: :unset, limit: nil, page_size: nil)
94
+ self.stream(
95
+ start_date: start_date,
96
+ end_date: end_date,
97
+ state: state,
98
+ limit: limit,
99
+ page_size: page_size
100
+ ).entries
87
101
  end
88
102
 
89
103
  ##
90
104
  # Streams ConversationInstance records from the API as an Enumerable.
91
105
  # This operation lazily loads records as efficiently as possible until the limit
92
106
  # is reached.
107
+ # @param [String] start_date Start date or time in ISO8601 format for filtering
108
+ # list of Conversations. If a date is provided, the start time of the date is used
109
+ # (YYYY-MM-DDT00:00:00Z). Can be combined with other filters.
110
+ # @param [String] end_date End date or time in ISO8601 format for filtering list
111
+ # of Conversations. If a date is provided, the end time of the date is used
112
+ # (YYYY-MM-DDT23:59:59Z). Can be combined with other filters.
113
+ # @param [conversation.State] state State for sorting and filtering list of
114
+ # Conversations. Can be `active`, `inactive` or `closed`
93
115
  # @param [Integer] limit Upper limit for the number of records to return. stream()
94
116
  # guarantees to never return more than limit. Default is no limit.
95
117
  # @param [Integer] page_size Number of records to fetch per request, when
@@ -97,10 +119,15 @@ module Twilio
97
119
  # but a limit is defined, stream() will attempt to read the limit with the most
98
120
  # efficient page size, i.e. min(limit, 1000)
99
121
  # @return [Enumerable] Enumerable that will yield up to limit results
100
- def stream(limit: nil, page_size: nil)
122
+ def stream(start_date: :unset, end_date: :unset, state: :unset, limit: nil, page_size: nil)
101
123
  limits = @version.read_limits(limit, page_size)
102
124
 
103
- page = self.page(page_size: limits[:page_size], )
125
+ page = self.page(
126
+ start_date: start_date,
127
+ end_date: end_date,
128
+ state: state,
129
+ page_size: limits[:page_size],
130
+ )
104
131
 
105
132
  @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit])
106
133
  end
@@ -122,12 +149,23 @@ module Twilio
122
149
  ##
123
150
  # Retrieve a single page of ConversationInstance records from the API.
124
151
  # Request is executed immediately.
152
+ # @param [String] start_date Start date or time in ISO8601 format for filtering
153
+ # list of Conversations. If a date is provided, the start time of the date is used
154
+ # (YYYY-MM-DDT00:00:00Z). Can be combined with other filters.
155
+ # @param [String] end_date End date or time in ISO8601 format for filtering list
156
+ # of Conversations. If a date is provided, the end time of the date is used
157
+ # (YYYY-MM-DDT23:59:59Z). Can be combined with other filters.
158
+ # @param [conversation.State] state State for sorting and filtering list of
159
+ # Conversations. Can be `active`, `inactive` or `closed`
125
160
  # @param [String] page_token PageToken provided by the API
126
161
  # @param [Integer] page_number Page Number, this value is simply for client state
127
162
  # @param [Integer] page_size Number of records to return, defaults to 50
128
163
  # @return [Page] Page of ConversationInstance
129
- def page(page_token: :unset, page_number: :unset, page_size: :unset)
164
+ def page(start_date: :unset, end_date: :unset, state: :unset, page_token: :unset, page_number: :unset, page_size: :unset)
130
165
  params = Twilio::Values.of({
166
+ 'StartDate' => start_date,
167
+ 'EndDate' => end_date,
168
+ 'State' => state,
131
169
  'PageToken' => page_token,
132
170
  'Page' => page_number,
133
171
  'PageSize' => page_size,
@@ -210,7 +210,7 @@ module Twilio
210
210
  # Marshaled Properties
211
211
  @properties = {
212
212
  'id' => payload['id'],
213
- 'schema_version' => payload['schema_version'].to_i,
213
+ 'schema_version' => payload['schema_version'] == nil ? payload['schema_version'] : payload['schema_version'].to_i,
214
214
  'date_created' => Twilio.deserialize_iso8601_datetime(payload['date_created']),
215
215
  'url' => payload['url'],
216
216
  'raw' => payload['raw'],
@@ -143,7 +143,7 @@ module Twilio
143
143
  'url' => payload['url'],
144
144
  'links' => payload['links'],
145
145
  'latest_version_date_created' => Twilio.deserialize_iso8601_datetime(payload['latest_version_date_created']),
146
- 'latest_version' => payload['latest_version'].to_i,
146
+ 'latest_version' => payload['latest_version'] == nil ? payload['latest_version'] : payload['latest_version'].to_i,
147
147
  }
148
148
 
149
149
  # Context
@@ -247,7 +247,7 @@ module Twilio
247
247
  @properties = {
248
248
  'account_sid' => payload['account_sid'],
249
249
  'type' => payload['type'],
250
- 'schema_version' => payload['schema_version'].to_i,
250
+ 'schema_version' => payload['schema_version'] == nil ? payload['schema_version'] : payload['schema_version'].to_i,
251
251
  'subscription_sid' => payload['subscription_sid'],
252
252
  'url' => payload['url'],
253
253
  }
@@ -0,0 +1,397 @@
1
+ ##
2
+ # This code was generated by
3
+ # \ / _ _ _| _ _
4
+ # | (_)\/(_)(_|\/| |(/_ v1.0.0
5
+ # / /
6
+ #
7
+ # frozen_string_literal: true
8
+
9
+ module Twilio
10
+ module REST
11
+ class FlexApi < Domain
12
+ class V1 < Version
13
+ ##
14
+ # PLEASE NOTE that this class contains preview products that are subject to change. Use them with caution. If you currently do not have developer preview access, please contact help@twilio.com.
15
+ class AssessmentsList < ListResource
16
+ ##
17
+ # Initialize the AssessmentsList
18
+ # @param [Version] version Version that contains the resource
19
+ # @return [AssessmentsList] AssessmentsList
20
+ def initialize(version)
21
+ super(version)
22
+
23
+ # Path Solution
24
+ @solution = {}
25
+ @uri = "/Insights/QM/Assessments"
26
+ end
27
+
28
+ ##
29
+ # Create the AssessmentsInstance
30
+ # @param [String] category_id The id of the category
31
+ # @param [String] category_name The name of the category
32
+ # @param [String] segment_id Segment Id of the conversation
33
+ # @param [String] user_name Name of the user assessing conversation
34
+ # @param [String] user_email Email of the user assessing conversation
35
+ # @param [String] agent_id The id of the Agent
36
+ # @param [String] offset The offset of the conversation.
37
+ # @param [String] metric_id The question Id selected for assessment
38
+ # @param [String] metric_name The question name of the assessment
39
+ # @param [String] answer_text The answer text selected by user
40
+ # @param [String] answer_id The id of the answer selected by user
41
+ # @param [String] questionnaire_id Questionnaire Id of the associated question
42
+ # @param [String] token The Token HTTP request header
43
+ # @return [AssessmentsInstance] Created AssessmentsInstance
44
+ def create(category_id: nil, category_name: nil, segment_id: nil, user_name: nil, user_email: nil, agent_id: nil, offset: nil, metric_id: nil, metric_name: nil, answer_text: nil, answer_id: nil, questionnaire_id: nil, token: :unset)
45
+ data = Twilio::Values.of({
46
+ 'CategoryId' => category_id,
47
+ 'CategoryName' => category_name,
48
+ 'SegmentId' => segment_id,
49
+ 'UserName' => user_name,
50
+ 'UserEmail' => user_email,
51
+ 'AgentId' => agent_id,
52
+ 'Offset' => offset,
53
+ 'MetricId' => metric_id,
54
+ 'MetricName' => metric_name,
55
+ 'AnswerText' => answer_text,
56
+ 'AnswerId' => answer_id,
57
+ 'QuestionnaireId' => questionnaire_id,
58
+ })
59
+ headers = Twilio::Values.of({'Token' => token, })
60
+
61
+ payload = @version.create('POST', @uri, data: data, headers: headers)
62
+
63
+ AssessmentsInstance.new(@version, payload, )
64
+ end
65
+
66
+ ##
67
+ # Lists AssessmentsInstance records from the API as a list.
68
+ # Unlike stream(), this operation is eager and will load `limit` records into
69
+ # memory before returning.
70
+ # @param [String] segment_id The id of the segment.
71
+ # @param [String] token The Token HTTP request header
72
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
73
+ # guarantees to never return more than limit. Default is no limit
74
+ # @param [Integer] page_size Number of records to fetch per request, when
75
+ # not set will use the default value of 50 records. If no page_size is defined
76
+ # but a limit is defined, stream() will attempt to read the limit with the most
77
+ # efficient page size, i.e. min(limit, 1000)
78
+ # @return [Array] Array of up to limit results
79
+ def list(segment_id: :unset, token: :unset, limit: nil, page_size: nil)
80
+ self.stream(segment_id: segment_id, token: token, limit: limit, page_size: page_size).entries
81
+ end
82
+
83
+ ##
84
+ # Streams AssessmentsInstance records from the API as an Enumerable.
85
+ # This operation lazily loads records as efficiently as possible until the limit
86
+ # is reached.
87
+ # @param [String] segment_id The id of the segment.
88
+ # @param [String] token The Token HTTP request header
89
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
90
+ # guarantees to never return more than limit. Default is no limit.
91
+ # @param [Integer] page_size Number of records to fetch per request, when
92
+ # not set will use the default value of 50 records. If no page_size is defined
93
+ # but a limit is defined, stream() will attempt to read the limit with the most
94
+ # efficient page size, i.e. min(limit, 1000)
95
+ # @return [Enumerable] Enumerable that will yield up to limit results
96
+ def stream(segment_id: :unset, token: :unset, limit: nil, page_size: nil)
97
+ limits = @version.read_limits(limit, page_size)
98
+
99
+ page = self.page(segment_id: segment_id, token: token, page_size: limits[:page_size], )
100
+
101
+ @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit])
102
+ end
103
+
104
+ ##
105
+ # When passed a block, yields AssessmentsInstance records from the API.
106
+ # This operation lazily loads records as efficiently as possible until the limit
107
+ # is reached.
108
+ def each
109
+ limits = @version.read_limits
110
+
111
+ page = self.page(page_size: limits[:page_size], )
112
+
113
+ @version.stream(page,
114
+ limit: limits[:limit],
115
+ page_limit: limits[:page_limit]).each {|x| yield x}
116
+ end
117
+
118
+ ##
119
+ # Retrieve a single page of AssessmentsInstance records from the API.
120
+ # Request is executed immediately.
121
+ # @param [String] segment_id The id of the segment.
122
+ # @param [String] token The Token HTTP request header
123
+ # @param [String] page_token PageToken provided by the API
124
+ # @param [Integer] page_number Page Number, this value is simply for client state
125
+ # @param [Integer] page_size Number of records to return, defaults to 50
126
+ # @return [Page] Page of AssessmentsInstance
127
+ def page(segment_id: :unset, token: :unset, page_token: :unset, page_number: :unset, page_size: :unset)
128
+ params = Twilio::Values.of({
129
+ 'SegmentId' => segment_id,
130
+ 'PageToken' => page_token,
131
+ 'Page' => page_number,
132
+ 'PageSize' => page_size,
133
+ })
134
+ headers = Twilio::Values.of({'Token' => token, })
135
+
136
+ response = @version.page('GET', @uri, params: params, headers: headers)
137
+
138
+ AssessmentsPage.new(@version, response, @solution)
139
+ end
140
+
141
+ ##
142
+ # Retrieve a single page of AssessmentsInstance records from the API.
143
+ # Request is executed immediately.
144
+ # @param [String] target_url API-generated URL for the requested results page
145
+ # @return [Page] Page of AssessmentsInstance
146
+ def get_page(target_url)
147
+ response = @version.domain.request(
148
+ 'GET',
149
+ target_url
150
+ )
151
+ AssessmentsPage.new(@version, response, @solution)
152
+ end
153
+
154
+ ##
155
+ # Provide a user friendly representation
156
+ def to_s
157
+ '#<Twilio.FlexApi.V1.AssessmentsList>'
158
+ end
159
+ end
160
+
161
+ ##
162
+ # PLEASE NOTE that this class contains preview products that are subject to change. Use them with caution. If you currently do not have developer preview access, please contact help@twilio.com.
163
+ class AssessmentsPage < Page
164
+ ##
165
+ # Initialize the AssessmentsPage
166
+ # @param [Version] version Version that contains the resource
167
+ # @param [Response] response Response from the API
168
+ # @param [Hash] solution Path solution for the resource
169
+ # @return [AssessmentsPage] AssessmentsPage
170
+ def initialize(version, response, solution)
171
+ super(version, response)
172
+
173
+ # Path Solution
174
+ @solution = solution
175
+ end
176
+
177
+ ##
178
+ # Build an instance of AssessmentsInstance
179
+ # @param [Hash] payload Payload response from the API
180
+ # @return [AssessmentsInstance] AssessmentsInstance
181
+ def get_instance(payload)
182
+ AssessmentsInstance.new(@version, payload, )
183
+ end
184
+
185
+ ##
186
+ # Provide a user friendly representation
187
+ def to_s
188
+ '<Twilio.FlexApi.V1.AssessmentsPage>'
189
+ end
190
+ end
191
+
192
+ ##
193
+ # PLEASE NOTE that this class contains preview products that are subject to change. Use them with caution. If you currently do not have developer preview access, please contact help@twilio.com.
194
+ class AssessmentsContext < InstanceContext
195
+ ##
196
+ # Initialize the AssessmentsContext
197
+ # @param [Version] version Version that contains the resource
198
+ # @param [String] assessment_id The id of the assessment to be modified
199
+ # @return [AssessmentsContext] AssessmentsContext
200
+ def initialize(version, assessment_id)
201
+ super(version)
202
+
203
+ # Path Solution
204
+ @solution = {assessment_id: assessment_id, }
205
+ @uri = "/Insights/QM/Assessments/#{@solution[:assessment_id]}"
206
+ end
207
+
208
+ ##
209
+ # Update the AssessmentsInstance
210
+ # @param [String] offset The offset of the conversation
211
+ # @param [String] answer_text The answer text selected by user
212
+ # @param [String] answer_id The id of the answer selected by user
213
+ # @param [String] token The Token HTTP request header
214
+ # @return [AssessmentsInstance] Updated AssessmentsInstance
215
+ def update(offset: nil, answer_text: nil, answer_id: nil, token: :unset)
216
+ data = Twilio::Values.of({'Offset' => offset, 'AnswerText' => answer_text, 'AnswerId' => answer_id, })
217
+ headers = Twilio::Values.of({'Token' => token, })
218
+
219
+ payload = @version.update('POST', @uri, data: data, headers: headers)
220
+
221
+ AssessmentsInstance.new(@version, payload, assessment_id: @solution[:assessment_id], )
222
+ end
223
+
224
+ ##
225
+ # Provide a user friendly representation
226
+ def to_s
227
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
228
+ "#<Twilio.FlexApi.V1.AssessmentsContext #{context}>"
229
+ end
230
+
231
+ ##
232
+ # Provide a detailed, user friendly representation
233
+ def inspect
234
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
235
+ "#<Twilio.FlexApi.V1.AssessmentsContext #{context}>"
236
+ end
237
+ end
238
+
239
+ ##
240
+ # PLEASE NOTE that this class contains preview products that are subject to change. Use them with caution. If you currently do not have developer preview access, please contact help@twilio.com.
241
+ class AssessmentsInstance < InstanceResource
242
+ ##
243
+ # Initialize the AssessmentsInstance
244
+ # @param [Version] version Version that contains the resource
245
+ # @param [Hash] payload payload that contains response from Twilio
246
+ # @param [String] assessment_id The id of the assessment to be modified
247
+ # @return [AssessmentsInstance] AssessmentsInstance
248
+ def initialize(version, payload, assessment_id: nil)
249
+ super(version)
250
+
251
+ # Marshaled Properties
252
+ @properties = {
253
+ 'account_sid' => payload['account_sid'],
254
+ 'assessment_id' => payload['assessment_id'],
255
+ 'offset' => payload['offset'] == nil ? payload['offset'] : payload['offset'].to_f,
256
+ 'report' => payload['report'],
257
+ 'weight' => payload['weight'] == nil ? payload['weight'] : payload['weight'].to_f,
258
+ 'agent_id' => payload['agent_id'],
259
+ 'segment_id' => payload['segment_id'],
260
+ 'user_name' => payload['user_name'],
261
+ 'user_email' => payload['user_email'],
262
+ 'answer_text' => payload['answer_text'],
263
+ 'answer_id' => payload['answer_id'],
264
+ 'assessment' => payload['assessment'],
265
+ 'timestamp' => payload['timestamp'] == nil ? payload['timestamp'] : payload['timestamp'].to_f,
266
+ 'url' => payload['url'],
267
+ }
268
+
269
+ # Context
270
+ @instance_context = nil
271
+ @params = {'assessment_id' => assessment_id || @properties['assessment_id'], }
272
+ end
273
+
274
+ ##
275
+ # Generate an instance context for the instance, the context is capable of
276
+ # performing various actions. All instance actions are proxied to the context
277
+ # @return [AssessmentsContext] AssessmentsContext for this AssessmentsInstance
278
+ def context
279
+ unless @instance_context
280
+ @instance_context = AssessmentsContext.new(@version, @params['assessment_id'], )
281
+ end
282
+ @instance_context
283
+ end
284
+
285
+ ##
286
+ # @return [String] Account Sid.
287
+ def account_sid
288
+ @properties['account_sid']
289
+ end
290
+
291
+ ##
292
+ # @return [String] Assessment id
293
+ def assessment_id
294
+ @properties['assessment_id']
295
+ end
296
+
297
+ ##
298
+ # @return [String] offset
299
+ def offset
300
+ @properties['offset']
301
+ end
302
+
303
+ ##
304
+ # @return [Boolean] Part of assessment report
305
+ def report
306
+ @properties['report']
307
+ end
308
+
309
+ ##
310
+ # @return [String] The weightage
311
+ def weight
312
+ @properties['weight']
313
+ end
314
+
315
+ ##
316
+ # @return [String] AgentID
317
+ def agent_id
318
+ @properties['agent_id']
319
+ end
320
+
321
+ ##
322
+ # @return [String] Segment Id
323
+ def segment_id
324
+ @properties['segment_id']
325
+ end
326
+
327
+ ##
328
+ # @return [String] The user name.
329
+ def user_name
330
+ @properties['user_name']
331
+ end
332
+
333
+ ##
334
+ # @return [String] The user email id.
335
+ def user_email
336
+ @properties['user_email']
337
+ end
338
+
339
+ ##
340
+ # @return [String] Answer text
341
+ def answer_text
342
+ @properties['answer_text']
343
+ end
344
+
345
+ ##
346
+ # @return [String] Answer Id
347
+ def answer_id
348
+ @properties['answer_id']
349
+ end
350
+
351
+ ##
352
+ # @return [Hash] Assessment Details
353
+ def assessment
354
+ @properties['assessment']
355
+ end
356
+
357
+ ##
358
+ # @return [String] The timestamp
359
+ def timestamp
360
+ @properties['timestamp']
361
+ end
362
+
363
+ ##
364
+ # @return [String] The url
365
+ def url
366
+ @properties['url']
367
+ end
368
+
369
+ ##
370
+ # Update the AssessmentsInstance
371
+ # @param [String] offset The offset of the conversation
372
+ # @param [String] answer_text The answer text selected by user
373
+ # @param [String] answer_id The id of the answer selected by user
374
+ # @param [String] token The Token HTTP request header
375
+ # @return [AssessmentsInstance] Updated AssessmentsInstance
376
+ def update(offset: nil, answer_text: nil, answer_id: nil, token: :unset)
377
+ context.update(offset: offset, answer_text: answer_text, answer_id: answer_id, token: token, )
378
+ end
379
+
380
+ ##
381
+ # Provide a user friendly representation
382
+ def to_s
383
+ values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
384
+ "<Twilio.FlexApi.V1.AssessmentsInstance #{values}>"
385
+ end
386
+
387
+ ##
388
+ # Provide a detailed, user friendly representation
389
+ def inspect
390
+ values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ")
391
+ "<Twilio.FlexApi.V1.AssessmentsInstance #{values}>"
392
+ end
393
+ end
394
+ end
395
+ end
396
+ end
397
+ end