twilio-ruby 5.31.4 → 5.31.5

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 (50) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +9 -0
  3. data/.rubocop_todo.yml +0 -11
  4. data/CHANGES.md +38 -0
  5. data/README.md +2 -2
  6. data/lib/twilio-ruby/rest/api/v2010/account/call.rb +27 -1
  7. data/lib/twilio-ruby/rest/api/v2010/account/conference/participant.rb +5 -1
  8. data/lib/twilio-ruby/rest/flex_api/v1/configuration.rb +7 -0
  9. data/lib/twilio-ruby/rest/messaging.rb +0 -15
  10. data/lib/twilio-ruby/rest/messaging/v1.rb +0 -22
  11. data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/regulation.rb +322 -0
  12. data/lib/twilio-ruby/rest/studio/v2/flow.rb +49 -0
  13. data/lib/twilio-ruby/rest/studio/v2/flow/execution.rb +427 -0
  14. data/lib/twilio-ruby/rest/studio/v2/flow/execution/execution_context.rb +224 -0
  15. data/lib/twilio-ruby/rest/studio/v2/flow/execution/execution_step.rb +387 -0
  16. data/lib/twilio-ruby/rest/studio/v2/flow/execution/execution_step/execution_step_context.rb +239 -0
  17. data/lib/twilio-ruby/rest/studio/v2/flow/test_user.rb +215 -0
  18. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task.rb +10 -3
  19. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_cumulative_statistics.rb +7 -0
  20. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queue_real_time_statistics.rb +14 -0
  21. data/lib/twilio-ruby/rest/verify/v2/service.rb +5 -3
  22. data/lib/twilio-ruby/rest/verify/v2/service/verification.rb +5 -4
  23. data/lib/twilio-ruby/version.rb +1 -1
  24. data/spec/integration/api/v2010/account/call_spec.rb +30 -10
  25. data/spec/integration/api/v2010/account/conference/participant_spec.rb +29 -0
  26. data/spec/integration/api/v2010/account/notification_spec.rb +1 -1
  27. data/spec/integration/api/v2010/account_spec.rb +45 -0
  28. data/spec/integration/flex_api/v1/configuration_spec.rb +3 -0
  29. data/spec/integration/numbers/v2/regulatory_compliance/regulation_spec.rb +183 -0
  30. data/spec/integration/studio/v2/flow/execution/execution_context_spec.rb +51 -0
  31. data/spec/integration/studio/v2/flow/execution/execution_step/execution_step_context_spec.rb +54 -0
  32. data/spec/integration/studio/v2/flow/execution/execution_step_spec.rb +101 -0
  33. data/spec/integration/studio/v2/flow/execution_spec.rb +169 -0
  34. data/spec/integration/studio/v2/flow/test_user_spec.rb +86 -0
  35. data/spec/integration/studio/v2/flow_spec.rb +16 -4
  36. data/spec/integration/taskrouter/v1/workspace/task_queue/task_queue_cumulative_statistics_spec.rb +6 -0
  37. data/spec/integration/taskrouter/v1/workspace/task_queue/task_queue_real_time_statistics_spec.rb +2 -0
  38. data/spec/integration/taskrouter/v1/workspace/task_spec.rb +4 -0
  39. data/twilio-ruby.gemspec +1 -1
  40. metadata +22 -19
  41. data/lib/twilio-ruby/rest/messaging/v1/session.rb +0 -513
  42. data/lib/twilio-ruby/rest/messaging/v1/session/message.rb +0 -439
  43. data/lib/twilio-ruby/rest/messaging/v1/session/participant.rb +0 -458
  44. data/lib/twilio-ruby/rest/messaging/v1/session/webhook.rb +0 -444
  45. data/lib/twilio-ruby/rest/messaging/v1/webhook.rb +0 -299
  46. data/spec/integration/messaging/v1/session/message_spec.rb +0 -238
  47. data/spec/integration/messaging/v1/session/participant_spec.rb +0 -256
  48. data/spec/integration/messaging/v1/session/webhook_spec.rb +0 -300
  49. data/spec/integration/messaging/v1/session_spec.rb +0 -227
  50. data/spec/integration/messaging/v1/webhook_spec.rb +0 -94
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 37e65b21d8bff454df1a87954a26b1864e739b6df7e5502a57581c9b819e5c08
4
- data.tar.gz: 1e05c610b77492a5ff0968927d87ed975ba0ece9a22850724e4d69b514782447
3
+ metadata.gz: 45376885410dc45b3a428a4b39045e71e9903b0b42dfc271573342375c601e88
4
+ data.tar.gz: 771493f5cb84f2027b28b11a15e1ed215fd1e19a3ced562772b1a04a9d4baeb8
5
5
  SHA512:
6
- metadata.gz: 774f68bfe20691c80a5fd69ee8d56b7ede5d0bd0b6d34f279564f83278151d8ce6dfe51b1651e75fc60c70876a1d076f318f6fad8d91164290b5e2fbb08c7c61
7
- data.tar.gz: 8443537cd92bfdd94b66afe9d88a36ce5cd61779095cb8eeecb0e22ec8214026365aae4fc656fd41736aaff2b65d303ad2e0ec3d4d94daa625e2e7c7b743b788
6
+ metadata.gz: 7b75b9c9797e5e50e095e1435235ad0066ed49399b43f28f0771f55cad940ee81b1643792e320e5119a719972fbac4a60173f1eb120b35f1b08af2bae38f8002
7
+ data.tar.gz: e863b1dfc134ed8265109c35e8564ecca22bbb5e665f2660ea36607ed497a08f298a145f8add6393821464878a9f84dcc580aab5a9977c1183e3c4a5781a7cd1
data/.rubocop.yml CHANGED
@@ -39,3 +39,12 @@ Metrics/PerceivedComplexity:
39
39
 
40
40
  Metrics/CyclomaticComplexity:
41
41
  Enabled: false
42
+
43
+ Style/HashEachMethods:
44
+ Enabled: true
45
+
46
+ Style/HashTransformKeys:
47
+ Enabled: false
48
+
49
+ Style/HashTransformValues:
50
+ Enabled: false
data/.rubocop_todo.yml CHANGED
@@ -116,17 +116,6 @@ Naming/VariableName:
116
116
  - 'spec/jwt/client_capability_spec.rb'
117
117
  - 'spec/jwt/task_router_spec.rb'
118
118
 
119
- # Offense count: 8
120
- # Cop supports --auto-correct.
121
- # Configuration parameters: EnforcedStyle.
122
- # SupportedStyles: braces, no_braces, context_dependent
123
- Style/BracesAroundHashParameters:
124
- Exclude:
125
- - 'spec/framework/serialize_spec.rb'
126
- - 'spec/jwt/access_token_spec.rb'
127
- - 'spec/jwt/client_capability_spec.rb'
128
- - 'spec/rack/twilio_webhook_authentication_spec.rb'
129
-
130
119
  # Offense count: 38
131
120
  Style/Documentation:
132
121
  Enabled: false
data/CHANGES.md CHANGED
@@ -1,6 +1,44 @@
1
1
  twilio-ruby changelog
2
2
  =====================
3
3
 
4
+ [2020-02-19] Version 5.31.5
5
+ ---------------------------
6
+ **Library - Chore**
7
+ - [PR #495](https://github.com/twilio/twilio-ruby/pull/495): bump the rubocop version. Thanks to [@childish-sambino](https://github.com/childish-sambino)!
8
+
9
+ **Api**
10
+ - Make call create parameters `async_amd`, `async_amd_status_callback`, and `async_amd_status_callback_method` public
11
+ - Add `trunk_sid` as an optional field to Call resource fetch/read responses
12
+ - Add property `queue_time` to successful response of create, fetch, and update requests for Call
13
+ - Add optional parameter `byoc` to conference participant create.
14
+
15
+ **Authy**
16
+ - Added support for challenges associated to push factors
17
+
18
+ **Flex**
19
+ - Adding `ui_dependencies` to Flex Configuration
20
+
21
+ **Messaging**
22
+ - Deprecate Session API **(breaking change)**
23
+
24
+ **Numbers**
25
+ - Add Regulations API
26
+
27
+ **Studio**
28
+ - Add Execution and Step endpoints to v2 API
29
+ - Add webhook_url to Flow response and add new /TestUsers endpoint to v2 API
30
+
31
+ **Taskrouter**
32
+ - Adding `longest_relative_task_age_in_queue` and `longest_relative_task_sid_in_queue` to TaskQueue Real Time Statistics API.
33
+ - Add `wait_duration_in_queue_until_accepted` aggregations to TaskQueues Cumulative Statistics endpoint
34
+ - Add TaskQueueEnteredDate property to Tasks.
35
+
36
+ **Video**
37
+ - [Composer] Clarification for the composition hooks creation documentation: one source is mandatory, either the `audio_sources` or the `video_layout`, but one of them has to be provided
38
+ - [Composer] `audio_sources` type on the composer HTTP POST command, changed from `sid[]` to `string[]` **(breaking change)**
39
+ - [Composer] Clarification for the composition creation documentation: one source is mandatory, either the `audio_sources` or the `video_layout`, but one of them has to be provided
40
+
41
+
4
42
  [2020-02-05] Version 5.31.4
5
43
  ---------------------------
6
44
  **Api**
data/README.md CHANGED
@@ -32,13 +32,13 @@ This library supports the following Ruby implementations:
32
32
  To install using [Bundler][bundler] grab the latest stable version:
33
33
 
34
34
  ```ruby
35
- gem 'twilio-ruby', '~> 5.31.4'
35
+ gem 'twilio-ruby', '~> 5.31.5'
36
36
  ```
37
37
 
38
38
  To manually install `twilio-ruby` via [Rubygems][rubygems] simply gem install:
39
39
 
40
40
  ```bash
41
- gem install twilio-ruby -v 5.31.4
41
+ gem install twilio-ruby -v 5.31.5
42
42
  ```
43
43
 
44
44
  To build and install the development branch yourself from the latest source:
@@ -127,6 +127,15 @@ module Twilio
127
127
  # @param [String] machine_detection_silence_timeout The number of milliseconds of
128
128
  # initial silence after which an `unknown` AnsweredBy result will be returned.
129
129
  # Possible Values: 2000-10000. Default: 5000.
130
+ # @param [String] async_amd Select whether to perform answering machine detection
131
+ # in the background. Default, blocks the execution of the call until Answering
132
+ # Machine Detection is completed. Can be: `true` or `false`.
133
+ # @param [String] async_amd_status_callback The URL that we should call using the
134
+ # `async_amd_status_callback_method` to notify customer application whether the
135
+ # call was answered by human, machine or fax.
136
+ # @param [String] async_amd_status_callback_method The HTTP method we should use
137
+ # when calling the `async_amd_status_callback` URL. Can be: `GET` or `POST` and
138
+ # the default is `POST`.
130
139
  # @param [String] byoc The SID of a BYOC (Bring Your Own Carrier) trunk to route
131
140
  # this call with. Note that `byoc` is only meaningful when `to` is a phone number;
132
141
  # it will otherwise be ignored. (Beta)
@@ -141,7 +150,7 @@ module Twilio
141
150
  # @param [String] application_sid The SID of the Application resource that will
142
151
  # handle the call, if the call will be handled by an application.
143
152
  # @return [CallInstance] Newly created CallInstance
144
- def create(to: nil, from: nil, method: :unset, fallback_url: :unset, fallback_method: :unset, status_callback: :unset, status_callback_event: :unset, status_callback_method: :unset, send_digits: :unset, timeout: :unset, record: :unset, recording_channels: :unset, recording_status_callback: :unset, recording_status_callback_method: :unset, sip_auth_username: :unset, sip_auth_password: :unset, machine_detection: :unset, machine_detection_timeout: :unset, recording_status_callback_event: :unset, trim: :unset, caller_id: :unset, machine_detection_speech_threshold: :unset, machine_detection_speech_end_threshold: :unset, machine_detection_silence_timeout: :unset, byoc: :unset, url: :unset, twiml: :unset, application_sid: :unset)
153
+ def create(to: nil, from: nil, method: :unset, fallback_url: :unset, fallback_method: :unset, status_callback: :unset, status_callback_event: :unset, status_callback_method: :unset, send_digits: :unset, timeout: :unset, record: :unset, recording_channels: :unset, recording_status_callback: :unset, recording_status_callback_method: :unset, sip_auth_username: :unset, sip_auth_password: :unset, machine_detection: :unset, machine_detection_timeout: :unset, recording_status_callback_event: :unset, trim: :unset, caller_id: :unset, machine_detection_speech_threshold: :unset, machine_detection_speech_end_threshold: :unset, machine_detection_silence_timeout: :unset, async_amd: :unset, async_amd_status_callback: :unset, async_amd_status_callback_method: :unset, byoc: :unset, url: :unset, twiml: :unset, application_sid: :unset)
145
154
  data = Twilio::Values.of({
146
155
  'To' => to,
147
156
  'From' => from,
@@ -170,6 +179,9 @@ module Twilio
170
179
  'MachineDetectionSpeechThreshold' => machine_detection_speech_threshold,
171
180
  'MachineDetectionSpeechEndThreshold' => machine_detection_speech_end_threshold,
172
181
  'MachineDetectionSilenceTimeout' => machine_detection_silence_timeout,
182
+ 'AsyncAmd' => async_amd,
183
+ 'AsyncAmdStatusCallback' => async_amd_status_callback,
184
+ 'AsyncAmdStatusCallbackMethod' => async_amd_status_callback_method,
173
185
  'Byoc' => byoc,
174
186
  })
175
187
 
@@ -622,7 +634,9 @@ module Twilio
622
634
  'subresource_uris' => payload['subresource_uris'],
623
635
  'to' => payload['to'],
624
636
  'to_formatted' => payload['to_formatted'],
637
+ 'trunk_sid' => payload['trunk_sid'],
625
638
  'uri' => payload['uri'],
639
+ 'queue_time' => payload['queue_time'],
626
640
  }
627
641
 
628
642
  # Context
@@ -785,12 +799,24 @@ module Twilio
785
799
  @properties['to_formatted']
786
800
  end
787
801
 
802
+ ##
803
+ # @return [String] The (optional) unique identifier of the trunk resource that was used for this call.
804
+ def trunk_sid
805
+ @properties['trunk_sid']
806
+ end
807
+
788
808
  ##
789
809
  # @return [String] The URI of this resource, relative to `https://api.twilio.com`
790
810
  def uri
791
811
  @properties['uri']
792
812
  end
793
813
 
814
+ ##
815
+ # @return [String] The wait time in milliseconds before the call is placed.
816
+ def queue_time
817
+ @properties['queue_time']
818
+ end
819
+
794
820
  ##
795
821
  # Deletes the CallInstance
796
822
  # @return [Boolean] true if delete succeeds, false otherwise
@@ -128,8 +128,11 @@ module Twilio
128
128
  # @param [String] call_sid_to_coach The SID of the participant who is being
129
129
  # `coached`. The participant being coached is the only participant who can hear
130
130
  # the participant who is `coaching`.
131
+ # @param [String] byoc The SID of a BYOC (Bring Your Own Carrier) trunk to route
132
+ # this call with. Note that `byoc` is only meaningful when `to` is a phone number;
133
+ # it will otherwise be ignored. (Beta)
131
134
  # @return [ParticipantInstance] Newly created ParticipantInstance
132
- def create(from: nil, to: nil, status_callback: :unset, status_callback_method: :unset, status_callback_event: :unset, timeout: :unset, record: :unset, muted: :unset, beep: :unset, start_conference_on_enter: :unset, end_conference_on_exit: :unset, wait_url: :unset, wait_method: :unset, early_media: :unset, max_participants: :unset, conference_record: :unset, conference_trim: :unset, conference_status_callback: :unset, conference_status_callback_method: :unset, conference_status_callback_event: :unset, recording_channels: :unset, recording_status_callback: :unset, recording_status_callback_method: :unset, sip_auth_username: :unset, sip_auth_password: :unset, region: :unset, conference_recording_status_callback: :unset, conference_recording_status_callback_method: :unset, recording_status_callback_event: :unset, conference_recording_status_callback_event: :unset, coaching: :unset, call_sid_to_coach: :unset)
135
+ def create(from: nil, to: nil, status_callback: :unset, status_callback_method: :unset, status_callback_event: :unset, timeout: :unset, record: :unset, muted: :unset, beep: :unset, start_conference_on_enter: :unset, end_conference_on_exit: :unset, wait_url: :unset, wait_method: :unset, early_media: :unset, max_participants: :unset, conference_record: :unset, conference_trim: :unset, conference_status_callback: :unset, conference_status_callback_method: :unset, conference_status_callback_event: :unset, recording_channels: :unset, recording_status_callback: :unset, recording_status_callback_method: :unset, sip_auth_username: :unset, sip_auth_password: :unset, region: :unset, conference_recording_status_callback: :unset, conference_recording_status_callback_method: :unset, recording_status_callback_event: :unset, conference_recording_status_callback_event: :unset, coaching: :unset, call_sid_to_coach: :unset, byoc: :unset)
133
136
  data = Twilio::Values.of({
134
137
  'From' => from,
135
138
  'To' => to,
@@ -163,6 +166,7 @@ module Twilio
163
166
  'ConferenceRecordingStatusCallbackEvent' => Twilio.serialize_list(conference_recording_status_callback_event) { |e| e },
164
167
  'Coaching' => coaching,
165
168
  'CallSidToCoach' => call_sid_to_coach,
169
+ 'Byoc' => byoc,
166
170
  })
167
171
 
168
172
  payload = @version.create(
@@ -163,6 +163,7 @@ module Twilio
163
163
  'chat_service_instance_sid' => payload['chat_service_instance_sid'],
164
164
  'ui_language' => payload['ui_language'],
165
165
  'ui_attributes' => payload['ui_attributes'],
166
+ 'ui_dependencies' => payload['ui_dependencies'],
166
167
  'ui_version' => payload['ui_version'],
167
168
  'service_version' => payload['service_version'],
168
169
  'call_recording_enabled' => payload['call_recording_enabled'],
@@ -305,6 +306,12 @@ module Twilio
305
306
  @properties['ui_attributes']
306
307
  end
307
308
 
309
+ ##
310
+ # @return [Hash] The object that defines the NPM packages and versions to be used in Hosted Flex
311
+ def ui_dependencies
312
+ @properties['ui_dependencies']
313
+ end
314
+
308
315
  ##
309
316
  # @return [String] The Pinned UI version
310
317
  def ui_version
@@ -37,21 +37,6 @@ module Twilio
37
37
  self.v1.services(sid)
38
38
  end
39
39
 
40
- ##
41
- # @param [String] sid The unique string that we created to identify the Session
42
- # resource.
43
- # @return [Twilio::REST::Messaging::V1::SessionInstance] if sid was passed.
44
- # @return [Twilio::REST::Messaging::V1::SessionList]
45
- def sessions(sid=:unset)
46
- self.v1.sessions(sid)
47
- end
48
-
49
- ##
50
- # @return [Twilio::REST::Messaging::V1::WebhookInstance]
51
- def webhooks
52
- self.v1.webhooks()
53
- end
54
-
55
40
  ##
56
41
  # Provide a user friendly representation
57
42
  def to_s
@@ -16,8 +16,6 @@ module Twilio
16
16
  super
17
17
  @version = 'v1'
18
18
  @services = nil
19
- @sessions = nil
20
- @webhooks = nil
21
19
  end
22
20
 
23
21
  ##
@@ -34,26 +32,6 @@ module Twilio
34
32
  end
35
33
  end
36
34
 
37
- ##
38
- # @param [String] sid The SID of the Session resource to fetch.
39
- # @return [Twilio::REST::Messaging::V1::SessionContext] if sid was passed.
40
- # @return [Twilio::REST::Messaging::V1::SessionList]
41
- def sessions(sid=:unset)
42
- if sid.nil?
43
- raise ArgumentError, 'sid cannot be nil'
44
- elsif sid == :unset
45
- @sessions ||= SessionList.new self
46
- else
47
- SessionContext.new(self, sid)
48
- end
49
- end
50
-
51
- ##
52
- # @return [Twilio::REST::Messaging::V1::WebhookContext]
53
- def webhooks
54
- @webhooks ||= WebhookContext.new self
55
- end
56
-
57
35
  ##
58
36
  # Provide a user friendly representation
59
37
  def to_s
@@ -0,0 +1,322 @@
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 Numbers < Domain
12
+ class V2 < Version
13
+ class RegulatoryComplianceList < ListResource
14
+ class RegulationList < ListResource
15
+ ##
16
+ # Initialize the RegulationList
17
+ # @param [Version] version Version that contains the resource
18
+ # @return [RegulationList] RegulationList
19
+ def initialize(version)
20
+ super(version)
21
+
22
+ # Path Solution
23
+ @solution = {}
24
+ @uri = "/RegulatoryCompliance/Regulations"
25
+ end
26
+
27
+ ##
28
+ # Lists RegulationInstance records from the API as a list.
29
+ # Unlike stream(), this operation is eager and will load `limit` records into
30
+ # memory before returning.
31
+ # @param [regulation.EndUserType] end_user_type The type of End User the
32
+ # regulation requires - can be `individual` or `business`.
33
+ # @param [String] iso_country The ISO country code of the phone number's country.
34
+ # @param [String] number_type The type of phone number that the regulatory
35
+ # requiremnt is restricting.
36
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
37
+ # guarantees to never return more than limit. Default is no limit
38
+ # @param [Integer] page_size Number of records to fetch per request, when
39
+ # not set will use the default value of 50 records. If no page_size is defined
40
+ # but a limit is defined, stream() will attempt to read the limit with the most
41
+ # efficient page size, i.e. min(limit, 1000)
42
+ # @return [Array] Array of up to limit results
43
+ def list(end_user_type: :unset, iso_country: :unset, number_type: :unset, limit: nil, page_size: nil)
44
+ self.stream(
45
+ end_user_type: end_user_type,
46
+ iso_country: iso_country,
47
+ number_type: number_type,
48
+ limit: limit,
49
+ page_size: page_size
50
+ ).entries
51
+ end
52
+
53
+ ##
54
+ # Streams RegulationInstance records from the API as an Enumerable.
55
+ # This operation lazily loads records as efficiently as possible until the limit
56
+ # is reached.
57
+ # @param [regulation.EndUserType] end_user_type The type of End User the
58
+ # regulation requires - can be `individual` or `business`.
59
+ # @param [String] iso_country The ISO country code of the phone number's country.
60
+ # @param [String] number_type The type of phone number that the regulatory
61
+ # requiremnt is restricting.
62
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
63
+ # guarantees to never return more than limit. Default is no limit.
64
+ # @param [Integer] page_size Number of records to fetch per request, when
65
+ # not set will use the default value of 50 records. If no page_size is defined
66
+ # but a limit is defined, stream() will attempt to read the limit with the most
67
+ # efficient page size, i.e. min(limit, 1000)
68
+ # @return [Enumerable] Enumerable that will yield up to limit results
69
+ def stream(end_user_type: :unset, iso_country: :unset, number_type: :unset, limit: nil, page_size: nil)
70
+ limits = @version.read_limits(limit, page_size)
71
+
72
+ page = self.page(
73
+ end_user_type: end_user_type,
74
+ iso_country: iso_country,
75
+ number_type: number_type,
76
+ page_size: limits[:page_size],
77
+ )
78
+
79
+ @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit])
80
+ end
81
+
82
+ ##
83
+ # When passed a block, yields RegulationInstance records from the API.
84
+ # This operation lazily loads records as efficiently as possible until the limit
85
+ # is reached.
86
+ def each
87
+ limits = @version.read_limits
88
+
89
+ page = self.page(page_size: limits[:page_size], )
90
+
91
+ @version.stream(page,
92
+ limit: limits[:limit],
93
+ page_limit: limits[:page_limit]).each {|x| yield x}
94
+ end
95
+
96
+ ##
97
+ # Retrieve a single page of RegulationInstance records from the API.
98
+ # Request is executed immediately.
99
+ # @param [regulation.EndUserType] end_user_type The type of End User the
100
+ # regulation requires - can be `individual` or `business`.
101
+ # @param [String] iso_country The ISO country code of the phone number's country.
102
+ # @param [String] number_type The type of phone number that the regulatory
103
+ # requiremnt is restricting.
104
+ # @param [String] page_token PageToken provided by the API
105
+ # @param [Integer] page_number Page Number, this value is simply for client state
106
+ # @param [Integer] page_size Number of records to return, defaults to 50
107
+ # @return [Page] Page of RegulationInstance
108
+ def page(end_user_type: :unset, iso_country: :unset, number_type: :unset, page_token: :unset, page_number: :unset, page_size: :unset)
109
+ params = Twilio::Values.of({
110
+ 'EndUserType' => end_user_type,
111
+ 'IsoCountry' => iso_country,
112
+ 'NumberType' => number_type,
113
+ 'PageToken' => page_token,
114
+ 'Page' => page_number,
115
+ 'PageSize' => page_size,
116
+ })
117
+ response = @version.page(
118
+ 'GET',
119
+ @uri,
120
+ params
121
+ )
122
+ RegulationPage.new(@version, response, @solution)
123
+ end
124
+
125
+ ##
126
+ # Retrieve a single page of RegulationInstance records from the API.
127
+ # Request is executed immediately.
128
+ # @param [String] target_url API-generated URL for the requested results page
129
+ # @return [Page] Page of RegulationInstance
130
+ def get_page(target_url)
131
+ response = @version.domain.request(
132
+ 'GET',
133
+ target_url
134
+ )
135
+ RegulationPage.new(@version, response, @solution)
136
+ end
137
+
138
+ ##
139
+ # Provide a user friendly representation
140
+ def to_s
141
+ '#<Twilio.Numbers.V2.RegulationList>'
142
+ end
143
+ end
144
+
145
+ class RegulationPage < Page
146
+ ##
147
+ # Initialize the RegulationPage
148
+ # @param [Version] version Version that contains the resource
149
+ # @param [Response] response Response from the API
150
+ # @param [Hash] solution Path solution for the resource
151
+ # @return [RegulationPage] RegulationPage
152
+ def initialize(version, response, solution)
153
+ super(version, response)
154
+
155
+ # Path Solution
156
+ @solution = solution
157
+ end
158
+
159
+ ##
160
+ # Build an instance of RegulationInstance
161
+ # @param [Hash] payload Payload response from the API
162
+ # @return [RegulationInstance] RegulationInstance
163
+ def get_instance(payload)
164
+ RegulationInstance.new(@version, payload, )
165
+ end
166
+
167
+ ##
168
+ # Provide a user friendly representation
169
+ def to_s
170
+ '<Twilio.Numbers.V2.RegulationPage>'
171
+ end
172
+ end
173
+
174
+ class RegulationContext < InstanceContext
175
+ ##
176
+ # Initialize the RegulationContext
177
+ # @param [Version] version Version that contains the resource
178
+ # @param [String] sid The unique string that identifies the Regulation resource.
179
+ # @return [RegulationContext] RegulationContext
180
+ def initialize(version, sid)
181
+ super(version)
182
+
183
+ # Path Solution
184
+ @solution = {sid: sid, }
185
+ @uri = "/RegulatoryCompliance/Regulations/#{@solution[:sid]}"
186
+ end
187
+
188
+ ##
189
+ # Fetch a RegulationInstance
190
+ # @return [RegulationInstance] Fetched RegulationInstance
191
+ def fetch
192
+ params = Twilio::Values.of({})
193
+
194
+ payload = @version.fetch(
195
+ 'GET',
196
+ @uri,
197
+ params,
198
+ )
199
+
200
+ RegulationInstance.new(@version, payload, sid: @solution[:sid], )
201
+ end
202
+
203
+ ##
204
+ # Provide a user friendly representation
205
+ def to_s
206
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
207
+ "#<Twilio.Numbers.V2.RegulationContext #{context}>"
208
+ end
209
+
210
+ ##
211
+ # Provide a detailed, user friendly representation
212
+ def inspect
213
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
214
+ "#<Twilio.Numbers.V2.RegulationContext #{context}>"
215
+ end
216
+ end
217
+
218
+ class RegulationInstance < InstanceResource
219
+ ##
220
+ # Initialize the RegulationInstance
221
+ # @param [Version] version Version that contains the resource
222
+ # @param [Hash] payload payload that contains response from Twilio
223
+ # @param [String] sid The unique string that identifies the Regulation resource.
224
+ # @return [RegulationInstance] RegulationInstance
225
+ def initialize(version, payload, sid: nil)
226
+ super(version)
227
+
228
+ # Marshaled Properties
229
+ @properties = {
230
+ 'sid' => payload['sid'],
231
+ 'friendly_name' => payload['friendly_name'],
232
+ 'iso_country' => payload['iso_country'],
233
+ 'number_type' => payload['number_type'],
234
+ 'end_user_type' => payload['end_user_type'],
235
+ 'requirements' => payload['requirements'],
236
+ 'url' => payload['url'],
237
+ }
238
+
239
+ # Context
240
+ @instance_context = nil
241
+ @params = {'sid' => sid || @properties['sid'], }
242
+ end
243
+
244
+ ##
245
+ # Generate an instance context for the instance, the context is capable of
246
+ # performing various actions. All instance actions are proxied to the context
247
+ # @return [RegulationContext] RegulationContext for this RegulationInstance
248
+ def context
249
+ unless @instance_context
250
+ @instance_context = RegulationContext.new(@version, @params['sid'], )
251
+ end
252
+ @instance_context
253
+ end
254
+
255
+ ##
256
+ # @return [String] The unique string that identifies the Regulation resource
257
+ def sid
258
+ @properties['sid']
259
+ end
260
+
261
+ ##
262
+ # @return [String] A human-readable description of the Regulation resource
263
+ def friendly_name
264
+ @properties['friendly_name']
265
+ end
266
+
267
+ ##
268
+ # @return [String] The ISO country code of the phone number's country
269
+ def iso_country
270
+ @properties['iso_country']
271
+ end
272
+
273
+ ##
274
+ # @return [String] The type of phone number restricted by the regulatory requirement
275
+ def number_type
276
+ @properties['number_type']
277
+ end
278
+
279
+ ##
280
+ # @return [regulation.EndUserType] The type of End User of the Regulation resource
281
+ def end_user_type
282
+ @properties['end_user_type']
283
+ end
284
+
285
+ ##
286
+ # @return [Hash] The sid of a regulation object that dictates requirements
287
+ def requirements
288
+ @properties['requirements']
289
+ end
290
+
291
+ ##
292
+ # @return [String] The absolute URL of the Regulation resource
293
+ def url
294
+ @properties['url']
295
+ end
296
+
297
+ ##
298
+ # Fetch a RegulationInstance
299
+ # @return [RegulationInstance] Fetched RegulationInstance
300
+ def fetch
301
+ context.fetch
302
+ end
303
+
304
+ ##
305
+ # Provide a user friendly representation
306
+ def to_s
307
+ values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
308
+ "<Twilio.Numbers.V2.RegulationInstance #{values}>"
309
+ end
310
+
311
+ ##
312
+ # Provide a detailed, user friendly representation
313
+ def inspect
314
+ values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ")
315
+ "<Twilio.Numbers.V2.RegulationInstance #{values}>"
316
+ end
317
+ end
318
+ end
319
+ end
320
+ end
321
+ end
322
+ end