twilio-ruby 5.31.1 → 5.31.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/.rubocop_todo.yml +4 -3
  4. data/CHANGES.md +16 -0
  5. data/LICENSE.md +1 -1
  6. data/README.md +2 -2
  7. data/lib/twilio-ruby.rb +5 -5
  8. data/lib/twilio-ruby/rest/client.rb +7 -0
  9. data/lib/twilio-ruby/rest/numbers.rb +44 -0
  10. data/lib/twilio-ruby/rest/numbers/v2.rb +35 -0
  11. data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance.rb +189 -0
  12. data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/bundle.rb +482 -0
  13. data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/bundle/item_assignment.rb +333 -0
  14. data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/end_user.rb +361 -0
  15. data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/end_user_type.rb +281 -0
  16. data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/supporting_document.rb +374 -0
  17. data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/supporting_document_type.rb +281 -0
  18. data/lib/twilio-ruby/rest/serverless/v1/service/environment/log.rb +30 -5
  19. data/lib/twilio-ruby/rest/studio.rb +16 -3
  20. data/lib/twilio-ruby/rest/studio/v2.rb +50 -0
  21. data/lib/twilio-ruby/rest/studio/v2/flow.rb +451 -0
  22. data/lib/twilio-ruby/rest/studio/v2/flow/flow_revision.rb +343 -0
  23. data/lib/twilio-ruby/rest/studio/v2/flow_validate.rb +126 -0
  24. data/lib/twilio-ruby/twiml/voice_response.rb +3 -2
  25. data/lib/twilio-ruby/version.rb +1 -1
  26. data/spec/integration/numbers/v2/regulatory_compliance/bundle/item_assignment_spec.rb +198 -0
  27. data/spec/integration/numbers/v2/regulatory_compliance/bundle_spec.rb +226 -0
  28. data/spec/integration/numbers/v2/regulatory_compliance/end_user_spec.rb +214 -0
  29. data/spec/integration/numbers/v2/regulatory_compliance/end_user_type_spec.rb +143 -0
  30. data/spec/integration/numbers/v2/regulatory_compliance/supporting_document_spec.rb +226 -0
  31. data/spec/integration/numbers/v2/regulatory_compliance/supporting_document_type_spec.rb +133 -0
  32. data/spec/integration/numbers/v2/regulatory_compliance_spec.rb +12 -0
  33. data/spec/integration/serverless/v1/service/environment/log_spec.rb +2 -2
  34. data/spec/integration/studio/v2/flow/flow_revision_spec.rb +112 -0
  35. data/spec/integration/studio/v2/flow_spec.rb +234 -0
  36. data/spec/integration/studio/v2/flow_validate_spec.rb +42 -0
  37. data/twilio-ruby.gemspec +2 -2
  38. metadata +39 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: da33f200b81c577227ae4cf3995c0f9f543c02ac772650dec19b18e957f5aafd
4
- data.tar.gz: 23bb9c4f559311cd52f5bff9e4ecfe1180bf58c8f6e78ab4ad99cff53161cca2
3
+ metadata.gz: 97e9af8abf406d407ed5b2ac3335d5920a14b3f15c57959ccb08f19d767380bd
4
+ data.tar.gz: 45777c544fddd89d53041a640e43d3eef9efb62d3b14a89955c42dc031a113ca
5
5
  SHA512:
6
- metadata.gz: 4dd198905771ba661dcf12953312a76c2b28bce1883edace5a074a2da34a53a69db9231e2ec3b4a8427fb39f309f2bed81c04aece804bffe53c7cddac8ab43aa
7
- data.tar.gz: 57ca86c1045b02240b6b8e1f061a7e36b6fd14f662cc04f3269e3df40a2c10db954cff234d19906a8f32832d645f4a48ce24857792576da58f0d418a7563e575
6
+ metadata.gz: d1166fef8722efcdf85db0594e8ffc1b94612d3ac64f78c0caf955e55a98f7c73cd437a731bab380daff56ac297a0f1e4badc68b42214dab5c4c716105eaa14d
7
+ data.tar.gz: 0a135ab533b362d551dc6832925fbcf8e295165d020a08c9108dd35c85ae931750fe8463d67135b24b316a09efdb15fbabc3f94dd6f352d7403ceac6907e6c30
data/.rubocop.yml CHANGED
@@ -10,7 +10,7 @@ AllCops:
10
10
  - 'lib/twilio-ruby/util/configuration.rb'
11
11
  - 'vendor/**/*'
12
12
 
13
- Metrics/LineLength:
13
+ Layout/LineLength:
14
14
  Max: 120
15
15
  Exclude:
16
16
  - 'spec/**/*'
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2019-12-18 11:23:55 -0600 using RuboCop version 0.77.0.
3
+ # on 2020-01-06 13:56:04 -0300 using RuboCop version 0.79.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -16,7 +16,7 @@ Gemspec/OrderedDependencies:
16
16
 
17
17
  # Offense count: 1
18
18
  # Configuration parameters: Include.
19
- # Include: **/*.gemspec,
19
+ # Include: **/*.gemspec
20
20
  Gemspec/RequiredRubyVersion:
21
21
  Exclude:
22
22
  - 'twilio-ruby.gemspec'
@@ -37,7 +37,8 @@ Layout/ExtraSpacing:
37
37
 
38
38
  # Offense count: 2
39
39
  # Cop supports --auto-correct.
40
- # Configuration parameters: AllowForAlignment.
40
+ # Configuration parameters: AllowForAlignment, EnforcedStyleForExponentOperator.
41
+ # SupportedStylesForExponentOperator: space, no_space
41
42
  Layout/SpaceAroundOperators:
42
43
  Exclude:
43
44
  - 'spec/jwt/client_capability_spec.rb'
data/CHANGES.md CHANGED
@@ -1,6 +1,22 @@
1
1
  twilio-ruby changelog
2
2
  =====================
3
3
 
4
+ [2020-01-08] Version 5.31.2
5
+ ---------------------------
6
+ **Library - Chore**
7
+ - [PR #491](https://github.com/twilio/twilio-ruby/pull/491): upgrade rubocop to 0.79.0. Thanks to [@juampi](https://github.com/juampi)!
8
+ - [PR #489](https://github.com/twilio/twilio-ruby/pull/489): upgrade faraday to 1.0.0. Thanks to [@juampi](https://github.com/juampi)!
9
+
10
+ **Numbers**
11
+ - Add Regulatory Compliance CRUD APIs
12
+
13
+ **Studio**
14
+ - Add parameter validation for Studio v2 Flows API
15
+
16
+ **Twiml**
17
+ - Add support for `speech_model` to `Gather` verb
18
+
19
+
4
20
  [2019-12-18] Version 5.31.1
5
21
  ---------------------------
6
22
  **Library - Chore**
data/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (C) 2019, Twilio, Inc. <help@twilio.com>
3
+ Copyright (C) 2020, Twilio, Inc. <help@twilio.com>
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of
6
6
  this software and associated documentation files (the "Software"), to deal in
data/README.md CHANGED
@@ -31,13 +31,13 @@ This library supports the following Ruby implementations:
31
31
  To install using [Bundler][bundler] grab the latest stable version:
32
32
 
33
33
  ```ruby
34
- gem 'twilio-ruby', '~> 5.31.1'
34
+ gem 'twilio-ruby', '~> 5.31.2'
35
35
  ```
36
36
 
37
37
  To manually install `twilio-ruby` via [Rubygems][rubygems] simply gem install:
38
38
 
39
39
  ```bash
40
- gem install twilio-ruby -v 5.31.1
40
+ gem install twilio-ruby -v 5.31.2
41
41
  ```
42
42
 
43
43
  To build and install the development branch yourself from the latest source:
data/lib/twilio-ruby.rb CHANGED
@@ -27,19 +27,19 @@ require 'twilio-ruby/twiml/fax_response'
27
27
  require 'twilio-ruby/twiml/messaging_response'
28
28
  require 'twilio-ruby/twiml/voice_response'
29
29
 
30
- Dir[File.dirname(__FILE__) + '/twilio-ruby/http/**/*.rb'].each do |file|
30
+ Dir[File.dirname(__FILE__) + '/twilio-ruby/http/**/*.rb'].sort.each do |file|
31
31
  require file
32
32
  end
33
- Dir[File.dirname(__FILE__) + '/twilio-ruby/framework/**/*.rb'].each do |file|
33
+ Dir[File.dirname(__FILE__) + '/twilio-ruby/framework/**/*.rb'].sort.each do |file|
34
34
  require file
35
35
  end
36
- Dir[File.dirname(__FILE__) + '/twilio-ruby/rest/*.rb'].each do |file|
36
+ Dir[File.dirname(__FILE__) + '/twilio-ruby/rest/*.rb'].sort.each do |file|
37
37
  require file
38
38
  end
39
- Dir[File.dirname(__FILE__) + '/twilio-ruby/rest/**/*.rb'].each do |file|
39
+ Dir[File.dirname(__FILE__) + '/twilio-ruby/rest/**/*.rb'].sort.each do |file|
40
40
  require file
41
41
  end
42
- Dir[File.dirname(__FILE__) + '/twilio-ruby/compatibility/**/*.rb'].each do |file|
42
+ Dir[File.dirname(__FILE__) + '/twilio-ruby/compatibility/**/*.rb'].sort.each do |file|
43
43
  require file
44
44
  end
45
45
 
@@ -39,6 +39,7 @@ module Twilio
39
39
  @messaging = nil
40
40
  @monitor = nil
41
41
  @notify = nil
42
+ @numbers = nil
42
43
  @preview = nil
43
44
  @pricing = nil
44
45
  @proxy = nil
@@ -185,6 +186,12 @@ module Twilio
185
186
  @notify ||= Notify.new self
186
187
  end
187
188
 
189
+ ##
190
+ # Access the Numbers Twilio Domain
191
+ def numbers
192
+ @numbers ||= Numbers.new self
193
+ end
194
+
188
195
  ##
189
196
  # Access the Preview Twilio Domain
190
197
  def preview
@@ -0,0 +1,44 @@
1
+ ##
2
+ # This code was generated by
3
+ # \ / _ _ _| _ _
4
+ # | (_)\/(_)(_|\/| |(/_ v1.0.0
5
+ # / /
6
+ #
7
+ # frozen_string_literal: true
8
+
9
+ module Twilio
10
+ module REST
11
+ class Numbers < Domain
12
+ ##
13
+ # Initialize the Numbers Domain
14
+ def initialize(twilio)
15
+ super
16
+
17
+ @base_url = 'https://numbers.twilio.com'
18
+ @host = 'numbers.twilio.com'
19
+ @port = 443
20
+
21
+ # Versions
22
+ @v2 = nil
23
+ end
24
+
25
+ ##
26
+ # Version v2 of numbers
27
+ def v2
28
+ @v2 ||= V2.new self
29
+ end
30
+
31
+ ##
32
+ # @return [Twilio::REST::Numbers::V2::RegulatoryComplianceInstance]
33
+ def regulatory_compliance
34
+ self.v2.regulatory_compliance()
35
+ end
36
+
37
+ ##
38
+ # Provide a user friendly representation
39
+ def to_s
40
+ '#<Twilio::REST::Numbers>'
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,35 @@
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
12
+ class V2 < Version
13
+ ##
14
+ # Initialize the V2 version of Numbers
15
+ def initialize(domain)
16
+ super
17
+ @version = 'v2'
18
+ @regulatory_compliance = nil
19
+ end
20
+
21
+ ##
22
+ # @return [Twilio::REST::Numbers::V2::RegulatoryComplianceContext]
23
+ def regulatory_compliance
24
+ @regulatory_compliance ||= RegulatoryComplianceList.new self
25
+ end
26
+
27
+ ##
28
+ # Provide a user friendly representation
29
+ def to_s
30
+ '<Twilio::REST::Numbers::V2>'
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,189 @@
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
+ ##
15
+ # Initialize the RegulatoryComplianceList
16
+ # @param [Version] version Version that contains the resource
17
+ # @return [RegulatoryComplianceList] RegulatoryComplianceList
18
+ def initialize(version)
19
+ super(version)
20
+
21
+ # Path Solution
22
+ @solution = {}
23
+
24
+ # Components
25
+ @bundles = nil
26
+ @end_users = nil
27
+ @end_user_types = nil
28
+ @regulations = nil
29
+ @supporting_documents = nil
30
+ @supporting_document_types = nil
31
+ end
32
+
33
+ ##
34
+ # Access the bundles
35
+ # @param [String] sid The unique string that we created to identify the Bundle
36
+ # resource.
37
+ # @return [BundleList]
38
+ # @return [BundleContext] if sid was passed.
39
+ def bundles(sid=:unset)
40
+ raise ArgumentError, 'sid cannot be nil' if sid.nil?
41
+
42
+ if sid != :unset
43
+ return BundleContext.new(@version, sid, )
44
+ end
45
+
46
+ @bundles ||= BundleList.new(@version, )
47
+ end
48
+
49
+ ##
50
+ # Access the end_users
51
+ # @param [String] sid The unique string that we created to identify the End User
52
+ # resource.
53
+ # @return [EndUserList]
54
+ # @return [EndUserContext] if sid was passed.
55
+ def end_users(sid=:unset)
56
+ raise ArgumentError, 'sid cannot be nil' if sid.nil?
57
+
58
+ if sid != :unset
59
+ return EndUserContext.new(@version, sid, )
60
+ end
61
+
62
+ @end_users ||= EndUserList.new(@version, )
63
+ end
64
+
65
+ ##
66
+ # Access the end_user_types
67
+ # @param [String] sid The unique string that identifies the End-User Type
68
+ # resource.
69
+ # @return [EndUserTypeList]
70
+ # @return [EndUserTypeContext] if sid was passed.
71
+ def end_user_types(sid=:unset)
72
+ raise ArgumentError, 'sid cannot be nil' if sid.nil?
73
+
74
+ if sid != :unset
75
+ return EndUserTypeContext.new(@version, sid, )
76
+ end
77
+
78
+ @end_user_types ||= EndUserTypeList.new(@version, )
79
+ end
80
+
81
+ ##
82
+ # Access the regulations
83
+ # @param [String] sid The unique string that identifies the Regulation resource.
84
+ # @return [RegulationList]
85
+ # @return [RegulationContext] if sid was passed.
86
+ def regulations(sid=:unset)
87
+ raise ArgumentError, 'sid cannot be nil' if sid.nil?
88
+
89
+ if sid != :unset
90
+ return RegulationContext.new(@version, sid, )
91
+ end
92
+
93
+ @regulations ||= RegulationList.new(@version, )
94
+ end
95
+
96
+ ##
97
+ # Access the supporting_documents
98
+ # @param [String] sid The unique string that we created to identify the Supporting
99
+ # Document resource.
100
+ # @return [SupportingDocumentList]
101
+ # @return [SupportingDocumentContext] if sid was passed.
102
+ def supporting_documents(sid=:unset)
103
+ raise ArgumentError, 'sid cannot be nil' if sid.nil?
104
+
105
+ if sid != :unset
106
+ return SupportingDocumentContext.new(@version, sid, )
107
+ end
108
+
109
+ @supporting_documents ||= SupportingDocumentList.new(@version, )
110
+ end
111
+
112
+ ##
113
+ # Access the supporting_document_types
114
+ # @param [String] sid The unique string that identifies the Supporting Document
115
+ # Type resource.
116
+ # @return [SupportingDocumentTypeList]
117
+ # @return [SupportingDocumentTypeContext] if sid was passed.
118
+ def supporting_document_types(sid=:unset)
119
+ raise ArgumentError, 'sid cannot be nil' if sid.nil?
120
+
121
+ if sid != :unset
122
+ return SupportingDocumentTypeContext.new(@version, sid, )
123
+ end
124
+
125
+ @supporting_document_types ||= SupportingDocumentTypeList.new(@version, )
126
+ end
127
+
128
+ ##
129
+ # Provide a user friendly representation
130
+ def to_s
131
+ '#<Twilio.Numbers.V2.RegulatoryComplianceList>'
132
+ end
133
+ end
134
+
135
+ class RegulatoryCompliancePage < Page
136
+ ##
137
+ # Initialize the RegulatoryCompliancePage
138
+ # @param [Version] version Version that contains the resource
139
+ # @param [Response] response Response from the API
140
+ # @param [Hash] solution Path solution for the resource
141
+ # @return [RegulatoryCompliancePage] RegulatoryCompliancePage
142
+ def initialize(version, response, solution)
143
+ super(version, response)
144
+
145
+ # Path Solution
146
+ @solution = solution
147
+ end
148
+
149
+ ##
150
+ # Build an instance of RegulatoryComplianceInstance
151
+ # @param [Hash] payload Payload response from the API
152
+ # @return [RegulatoryComplianceInstance] RegulatoryComplianceInstance
153
+ def get_instance(payload)
154
+ RegulatoryComplianceInstance.new(@version, payload, )
155
+ end
156
+
157
+ ##
158
+ # Provide a user friendly representation
159
+ def to_s
160
+ '<Twilio.Numbers.V2.RegulatoryCompliancePage>'
161
+ end
162
+ end
163
+
164
+ class RegulatoryComplianceInstance < InstanceResource
165
+ ##
166
+ # Initialize the RegulatoryComplianceInstance
167
+ # @param [Version] version Version that contains the resource
168
+ # @param [Hash] payload payload that contains response from Twilio
169
+ # @return [RegulatoryComplianceInstance] RegulatoryComplianceInstance
170
+ def initialize(version, payload)
171
+ super(version)
172
+ end
173
+
174
+ ##
175
+ # Provide a user friendly representation
176
+ def to_s
177
+ "<Twilio.Numbers.V2.RegulatoryComplianceInstance>"
178
+ end
179
+
180
+ ##
181
+ # Provide a detailed, user friendly representation
182
+ def inspect
183
+ "<Twilio.Numbers.V2.RegulatoryComplianceInstance>"
184
+ end
185
+ end
186
+ end
187
+ end
188
+ end
189
+ end
@@ -0,0 +1,482 @@
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 BundleList < ListResource
15
+ ##
16
+ # Initialize the BundleList
17
+ # @param [Version] version Version that contains the resource
18
+ # @return [BundleList] BundleList
19
+ def initialize(version)
20
+ super(version)
21
+
22
+ # Path Solution
23
+ @solution = {}
24
+ @uri = "/RegulatoryCompliance/Bundles"
25
+ end
26
+
27
+ ##
28
+ # Retrieve a single page of BundleInstance records from the API.
29
+ # Request is executed immediately.
30
+ # @param [String] friendly_name The string that you assigned to describe the
31
+ # resource.
32
+ # @param [String] email The email address that will receive updates when the
33
+ # Bundle resource changes status.
34
+ # @param [String] status_callback The URL we call to inform your application of
35
+ # status changes.
36
+ # @param [String] regulation_sid The unique string of a regulation that is
37
+ # associated to the Bundle resource.
38
+ # @param [String] iso_country The ISO country code of the Bundle's phone number
39
+ # country ownership request.
40
+ # @param [bundle.EndUserType] end_user_type The type of End User of the Bundle
41
+ # resource.
42
+ # @param [String] number_type The type of phone number of the Bundle's ownership
43
+ # request.
44
+ # @return [BundleInstance] Newly created BundleInstance
45
+ def create(friendly_name: nil, email: nil, status_callback: :unset, regulation_sid: :unset, iso_country: :unset, end_user_type: :unset, number_type: :unset)
46
+ data = Twilio::Values.of({
47
+ 'FriendlyName' => friendly_name,
48
+ 'Email' => email,
49
+ 'StatusCallback' => status_callback,
50
+ 'RegulationSid' => regulation_sid,
51
+ 'IsoCountry' => iso_country,
52
+ 'EndUserType' => end_user_type,
53
+ 'NumberType' => number_type,
54
+ })
55
+
56
+ payload = @version.create(
57
+ 'POST',
58
+ @uri,
59
+ data: data
60
+ )
61
+
62
+ BundleInstance.new(@version, payload, )
63
+ end
64
+
65
+ ##
66
+ # Lists BundleInstance records from the API as a list.
67
+ # Unlike stream(), this operation is eager and will load `limit` records into
68
+ # memory before returning.
69
+ # @param [bundle.Status] status The verification status of the Bundle resource.
70
+ # @param [String] friendly_name The string that you assigned to describe the
71
+ # resource.
72
+ # @param [String] regulation_sid The unique string of a regulation that is
73
+ # associated to the Bundle resource.
74
+ # @param [String] iso_country The ISO country code of the Bundle's phone number
75
+ # country ownership request.
76
+ # @param [String] number_type The type of phone number of the Bundle's ownership
77
+ # request.
78
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
79
+ # guarantees to never return more than limit. Default is no limit
80
+ # @param [Integer] page_size Number of records to fetch per request, when
81
+ # not set will use the default value of 50 records. If no page_size is defined
82
+ # but a limit is defined, stream() will attempt to read the limit with the most
83
+ # efficient page size, i.e. min(limit, 1000)
84
+ # @return [Array] Array of up to limit results
85
+ def list(status: :unset, friendly_name: :unset, regulation_sid: :unset, iso_country: :unset, number_type: :unset, limit: nil, page_size: nil)
86
+ self.stream(
87
+ status: status,
88
+ friendly_name: friendly_name,
89
+ regulation_sid: regulation_sid,
90
+ iso_country: iso_country,
91
+ number_type: number_type,
92
+ limit: limit,
93
+ page_size: page_size
94
+ ).entries
95
+ end
96
+
97
+ ##
98
+ # Streams BundleInstance records from the API as an Enumerable.
99
+ # This operation lazily loads records as efficiently as possible until the limit
100
+ # is reached.
101
+ # @param [bundle.Status] status The verification status of the Bundle resource.
102
+ # @param [String] friendly_name The string that you assigned to describe the
103
+ # resource.
104
+ # @param [String] regulation_sid The unique string of a regulation that is
105
+ # associated to the Bundle resource.
106
+ # @param [String] iso_country The ISO country code of the Bundle's phone number
107
+ # country ownership request.
108
+ # @param [String] number_type The type of phone number of the Bundle's ownership
109
+ # request.
110
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
111
+ # guarantees to never return more than limit. Default is no limit.
112
+ # @param [Integer] page_size Number of records to fetch per request, when
113
+ # not set will use the default value of 50 records. If no page_size is defined
114
+ # but a limit is defined, stream() will attempt to read the limit with the most
115
+ # efficient page size, i.e. min(limit, 1000)
116
+ # @return [Enumerable] Enumerable that will yield up to limit results
117
+ def stream(status: :unset, friendly_name: :unset, regulation_sid: :unset, iso_country: :unset, number_type: :unset, limit: nil, page_size: nil)
118
+ limits = @version.read_limits(limit, page_size)
119
+
120
+ page = self.page(
121
+ status: status,
122
+ friendly_name: friendly_name,
123
+ regulation_sid: regulation_sid,
124
+ iso_country: iso_country,
125
+ number_type: number_type,
126
+ page_size: limits[:page_size],
127
+ )
128
+
129
+ @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit])
130
+ end
131
+
132
+ ##
133
+ # When passed a block, yields BundleInstance records from the API.
134
+ # This operation lazily loads records as efficiently as possible until the limit
135
+ # is reached.
136
+ def each
137
+ limits = @version.read_limits
138
+
139
+ page = self.page(page_size: limits[:page_size], )
140
+
141
+ @version.stream(page,
142
+ limit: limits[:limit],
143
+ page_limit: limits[:page_limit]).each {|x| yield x}
144
+ end
145
+
146
+ ##
147
+ # Retrieve a single page of BundleInstance records from the API.
148
+ # Request is executed immediately.
149
+ # @param [bundle.Status] status The verification status of the Bundle resource.
150
+ # @param [String] friendly_name The string that you assigned to describe the
151
+ # resource.
152
+ # @param [String] regulation_sid The unique string of a regulation that is
153
+ # associated to the Bundle resource.
154
+ # @param [String] iso_country The ISO country code of the Bundle's phone number
155
+ # country ownership request.
156
+ # @param [String] number_type The type of phone number of the Bundle's ownership
157
+ # request.
158
+ # @param [String] page_token PageToken provided by the API
159
+ # @param [Integer] page_number Page Number, this value is simply for client state
160
+ # @param [Integer] page_size Number of records to return, defaults to 50
161
+ # @return [Page] Page of BundleInstance
162
+ def page(status: :unset, friendly_name: :unset, regulation_sid: :unset, iso_country: :unset, number_type: :unset, page_token: :unset, page_number: :unset, page_size: :unset)
163
+ params = Twilio::Values.of({
164
+ 'Status' => status,
165
+ 'FriendlyName' => friendly_name,
166
+ 'RegulationSid' => regulation_sid,
167
+ 'IsoCountry' => iso_country,
168
+ 'NumberType' => number_type,
169
+ 'PageToken' => page_token,
170
+ 'Page' => page_number,
171
+ 'PageSize' => page_size,
172
+ })
173
+ response = @version.page(
174
+ 'GET',
175
+ @uri,
176
+ params
177
+ )
178
+ BundlePage.new(@version, response, @solution)
179
+ end
180
+
181
+ ##
182
+ # Retrieve a single page of BundleInstance records from the API.
183
+ # Request is executed immediately.
184
+ # @param [String] target_url API-generated URL for the requested results page
185
+ # @return [Page] Page of BundleInstance
186
+ def get_page(target_url)
187
+ response = @version.domain.request(
188
+ 'GET',
189
+ target_url
190
+ )
191
+ BundlePage.new(@version, response, @solution)
192
+ end
193
+
194
+ ##
195
+ # Provide a user friendly representation
196
+ def to_s
197
+ '#<Twilio.Numbers.V2.BundleList>'
198
+ end
199
+ end
200
+
201
+ class BundlePage < Page
202
+ ##
203
+ # Initialize the BundlePage
204
+ # @param [Version] version Version that contains the resource
205
+ # @param [Response] response Response from the API
206
+ # @param [Hash] solution Path solution for the resource
207
+ # @return [BundlePage] BundlePage
208
+ def initialize(version, response, solution)
209
+ super(version, response)
210
+
211
+ # Path Solution
212
+ @solution = solution
213
+ end
214
+
215
+ ##
216
+ # Build an instance of BundleInstance
217
+ # @param [Hash] payload Payload response from the API
218
+ # @return [BundleInstance] BundleInstance
219
+ def get_instance(payload)
220
+ BundleInstance.new(@version, payload, )
221
+ end
222
+
223
+ ##
224
+ # Provide a user friendly representation
225
+ def to_s
226
+ '<Twilio.Numbers.V2.BundlePage>'
227
+ end
228
+ end
229
+
230
+ class BundleContext < InstanceContext
231
+ ##
232
+ # Initialize the BundleContext
233
+ # @param [Version] version Version that contains the resource
234
+ # @param [String] sid The unique string that we created to identify the Bundle
235
+ # resource.
236
+ # @return [BundleContext] BundleContext
237
+ def initialize(version, sid)
238
+ super(version)
239
+
240
+ # Path Solution
241
+ @solution = {sid: sid, }
242
+ @uri = "/RegulatoryCompliance/Bundles/#{@solution[:sid]}"
243
+
244
+ # Dependents
245
+ @item_assignments = nil
246
+ end
247
+
248
+ ##
249
+ # Fetch a BundleInstance
250
+ # @return [BundleInstance] Fetched BundleInstance
251
+ def fetch
252
+ params = Twilio::Values.of({})
253
+
254
+ payload = @version.fetch(
255
+ 'GET',
256
+ @uri,
257
+ params,
258
+ )
259
+
260
+ BundleInstance.new(@version, payload, sid: @solution[:sid], )
261
+ end
262
+
263
+ ##
264
+ # Update the BundleInstance
265
+ # @param [bundle.Status] status The verification status of the Bundle resource.
266
+ # @param [String] status_callback The URL we call to inform your application of
267
+ # status changes.
268
+ # @param [String] friendly_name The string that you assigned to describe the
269
+ # resource.
270
+ # @param [String] email The email address that will receive updates when the
271
+ # Bundle resource changes status.
272
+ # @return [BundleInstance] Updated BundleInstance
273
+ def update(status: :unset, status_callback: :unset, friendly_name: :unset, email: :unset)
274
+ data = Twilio::Values.of({
275
+ 'Status' => status,
276
+ 'StatusCallback' => status_callback,
277
+ 'FriendlyName' => friendly_name,
278
+ 'Email' => email,
279
+ })
280
+
281
+ payload = @version.update(
282
+ 'POST',
283
+ @uri,
284
+ data: data,
285
+ )
286
+
287
+ BundleInstance.new(@version, payload, sid: @solution[:sid], )
288
+ end
289
+
290
+ ##
291
+ # Access the item_assignments
292
+ # @return [ItemAssignmentList]
293
+ # @return [ItemAssignmentContext] if sid was passed.
294
+ def item_assignments(sid=:unset)
295
+ raise ArgumentError, 'sid cannot be nil' if sid.nil?
296
+
297
+ if sid != :unset
298
+ return ItemAssignmentContext.new(@version, @solution[:sid], sid, )
299
+ end
300
+
301
+ unless @item_assignments
302
+ @item_assignments = ItemAssignmentList.new(@version, bundle_sid: @solution[:sid], )
303
+ end
304
+
305
+ @item_assignments
306
+ end
307
+
308
+ ##
309
+ # Provide a user friendly representation
310
+ def to_s
311
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
312
+ "#<Twilio.Numbers.V2.BundleContext #{context}>"
313
+ end
314
+
315
+ ##
316
+ # Provide a detailed, user friendly representation
317
+ def inspect
318
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
319
+ "#<Twilio.Numbers.V2.BundleContext #{context}>"
320
+ end
321
+ end
322
+
323
+ class BundleInstance < InstanceResource
324
+ ##
325
+ # Initialize the BundleInstance
326
+ # @param [Version] version Version that contains the resource
327
+ # @param [Hash] payload payload that contains response from Twilio
328
+ # @param [String] sid The unique string that we created to identify the Bundle
329
+ # resource.
330
+ # @return [BundleInstance] BundleInstance
331
+ def initialize(version, payload, sid: nil)
332
+ super(version)
333
+
334
+ # Marshaled Properties
335
+ @properties = {
336
+ 'sid' => payload['sid'],
337
+ 'account_sid' => payload['account_sid'],
338
+ 'regulation_sid' => payload['regulation_sid'],
339
+ 'friendly_name' => payload['friendly_name'],
340
+ 'status' => payload['status'],
341
+ 'email' => payload['email'],
342
+ 'status_callback' => payload['status_callback'],
343
+ 'date_created' => Twilio.deserialize_iso8601_datetime(payload['date_created']),
344
+ 'date_updated' => Twilio.deserialize_iso8601_datetime(payload['date_updated']),
345
+ 'url' => payload['url'],
346
+ 'links' => payload['links'],
347
+ }
348
+
349
+ # Context
350
+ @instance_context = nil
351
+ @params = {'sid' => sid || @properties['sid'], }
352
+ end
353
+
354
+ ##
355
+ # Generate an instance context for the instance, the context is capable of
356
+ # performing various actions. All instance actions are proxied to the context
357
+ # @return [BundleContext] BundleContext for this BundleInstance
358
+ def context
359
+ unless @instance_context
360
+ @instance_context = BundleContext.new(@version, @params['sid'], )
361
+ end
362
+ @instance_context
363
+ end
364
+
365
+ ##
366
+ # @return [String] The unique string that identifies the resource.
367
+ def sid
368
+ @properties['sid']
369
+ end
370
+
371
+ ##
372
+ # @return [String] The SID of the Account that created the resource
373
+ def account_sid
374
+ @properties['account_sid']
375
+ end
376
+
377
+ ##
378
+ # @return [String] The unique string of a regulation.
379
+ def regulation_sid
380
+ @properties['regulation_sid']
381
+ end
382
+
383
+ ##
384
+ # @return [String] The string that you assigned to describe the resource
385
+ def friendly_name
386
+ @properties['friendly_name']
387
+ end
388
+
389
+ ##
390
+ # @return [bundle.Status] The verification status of the Bundle resource
391
+ def status
392
+ @properties['status']
393
+ end
394
+
395
+ ##
396
+ # @return [String] The email address
397
+ def email
398
+ @properties['email']
399
+ end
400
+
401
+ ##
402
+ # @return [String] The URL we call to inform your application of status changes.
403
+ def status_callback
404
+ @properties['status_callback']
405
+ end
406
+
407
+ ##
408
+ # @return [Time] The ISO 8601 date and time in GMT when the resource was created
409
+ def date_created
410
+ @properties['date_created']
411
+ end
412
+
413
+ ##
414
+ # @return [Time] The ISO 8601 date and time in GMT when the resource was last updated
415
+ def date_updated
416
+ @properties['date_updated']
417
+ end
418
+
419
+ ##
420
+ # @return [String] The absolute URL of the Bundle resource
421
+ def url
422
+ @properties['url']
423
+ end
424
+
425
+ ##
426
+ # @return [String] The URLs of the Assigned Items of the Bundle resource
427
+ def links
428
+ @properties['links']
429
+ end
430
+
431
+ ##
432
+ # Fetch a BundleInstance
433
+ # @return [BundleInstance] Fetched BundleInstance
434
+ def fetch
435
+ context.fetch
436
+ end
437
+
438
+ ##
439
+ # Update the BundleInstance
440
+ # @param [bundle.Status] status The verification status of the Bundle resource.
441
+ # @param [String] status_callback The URL we call to inform your application of
442
+ # status changes.
443
+ # @param [String] friendly_name The string that you assigned to describe the
444
+ # resource.
445
+ # @param [String] email The email address that will receive updates when the
446
+ # Bundle resource changes status.
447
+ # @return [BundleInstance] Updated BundleInstance
448
+ def update(status: :unset, status_callback: :unset, friendly_name: :unset, email: :unset)
449
+ context.update(
450
+ status: status,
451
+ status_callback: status_callback,
452
+ friendly_name: friendly_name,
453
+ email: email,
454
+ )
455
+ end
456
+
457
+ ##
458
+ # Access the item_assignments
459
+ # @return [item_assignments] item_assignments
460
+ def item_assignments
461
+ context.item_assignments
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.Numbers.V2.BundleInstance #{values}>"
469
+ end
470
+
471
+ ##
472
+ # Provide a detailed, user friendly representation
473
+ def inspect
474
+ values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ")
475
+ "<Twilio.Numbers.V2.BundleInstance #{values}>"
476
+ end
477
+ end
478
+ end
479
+ end
480
+ end
481
+ end
482
+ end