twilio-ruby 5.33.0 → 5.36.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +8 -0
  3. data/.rubocop_todo.yml +5 -26
  4. data/.travis.yml +9 -1
  5. data/CHANGES.md +110 -0
  6. data/README.md +17 -2
  7. data/lib/twilio-ruby.rb +4 -12
  8. data/lib/twilio-ruby/framework/error.rb +3 -3
  9. data/lib/twilio-ruby/jwt/jwt.rb +6 -0
  10. data/lib/twilio-ruby/rest/api/v2010/account/call.rb +90 -90
  11. data/lib/twilio-ruby/rest/api/v2010/account/conference.rb +14 -0
  12. data/lib/twilio-ruby/rest/api/v2010/account/message.rb +75 -72
  13. data/lib/twilio-ruby/rest/api/v2010/account/queue.rb +29 -29
  14. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain.rb +38 -3
  15. data/lib/twilio-ruby/rest/autopilot.rb +6 -0
  16. data/lib/twilio-ruby/rest/autopilot/v1.rb +7 -0
  17. data/lib/twilio-ruby/rest/autopilot/v1/restore_assistant.rb +198 -0
  18. data/lib/twilio-ruby/rest/client.rb +35 -8
  19. data/lib/twilio-ruby/rest/conversations/v1/conversation.rb +19 -3
  20. data/lib/twilio-ruby/rest/conversations/v1/conversation/participant.rb +27 -4
  21. data/lib/twilio-ruby/rest/flex_api/v1/channel.rb +2 -1
  22. data/lib/twilio-ruby/rest/flex_api/v1/configuration.rb +7 -0
  23. data/lib/twilio-ruby/rest/flex_api/v1/flex_flow.rb +20 -11
  24. data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/bundle.rb +26 -0
  25. data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/bundle/evaluation.rb +324 -0
  26. data/lib/twilio-ruby/rest/preview/trusted_comms/business.rb +26 -0
  27. data/lib/twilio-ruby/rest/preview/trusted_comms/business/brand.rb +239 -0
  28. data/lib/twilio-ruby/rest/preview/trusted_comms/business/brand/branded_channel.rb +266 -0
  29. data/lib/twilio-ruby/rest/preview/trusted_comms/business/brand/branded_channel/channel.rb +197 -0
  30. data/lib/twilio-ruby/rest/serverless/v1/service/environment/log.rb +7 -0
  31. data/lib/twilio-ruby/rest/studio.rb +2 -2
  32. data/lib/twilio-ruby/rest/studio/v1/flow/execution.rb +26 -0
  33. data/lib/twilio-ruby/rest/studio/v2.rb +3 -3
  34. data/lib/twilio-ruby/rest/studio/v2/flow.rb +7 -0
  35. data/lib/twilio-ruby/rest/studio/v2/flow/execution.rb +71 -24
  36. data/lib/twilio-ruby/rest/studio/v2/flow/execution/execution_context.rb +12 -11
  37. data/lib/twilio-ruby/rest/studio/v2/flow/execution/execution_step.rb +21 -20
  38. data/lib/twilio-ruby/rest/studio/v2/flow/execution/execution_step/execution_step_context.rb +18 -15
  39. data/lib/twilio-ruby/rest/supersim.rb +18 -0
  40. data/lib/twilio-ruby/rest/supersim/v1.rb +30 -0
  41. data/lib/twilio-ruby/rest/supersim/v1/fleet.rb +53 -10
  42. data/lib/twilio-ruby/rest/supersim/v1/network.rb +315 -0
  43. data/lib/twilio-ruby/rest/supersim/v1/network_access_profile.rb +378 -0
  44. data/lib/twilio-ruby/rest/supersim/v1/network_access_profile/network_access_profile_network.rb +352 -0
  45. data/lib/twilio-ruby/rest/verify.rb +9 -0
  46. data/lib/twilio-ruby/rest/verify/v2.rb +16 -0
  47. data/lib/twilio-ruby/rest/verify/v2/form.rb +197 -0
  48. data/lib/twilio-ruby/rest/verify/v2/service.rb +48 -3
  49. data/lib/twilio-ruby/rest/verify/v2/service/entity.rb +379 -0
  50. data/lib/twilio-ruby/rest/verify/v2/service/entity/factor.rb +500 -0
  51. data/lib/twilio-ruby/rest/verify/v2/service/entity/factor/challenge.rb +494 -0
  52. data/lib/twilio-ruby/rest/verify/v2/service/verification.rb +3 -3
  53. data/lib/twilio-ruby/rest/video/v1/composition_settings.rb +8 -12
  54. data/lib/twilio-ruby/rest/video/v1/recording_settings.rb +8 -12
  55. data/lib/twilio-ruby/rest/voice.rb +36 -0
  56. data/lib/twilio-ruby/rest/voice/v1.rb +64 -0
  57. data/lib/twilio-ruby/rest/voice/v1/byoc_trunk.rb +513 -0
  58. data/lib/twilio-ruby/rest/voice/v1/connection_policy.rb +379 -0
  59. data/lib/twilio-ruby/rest/voice/v1/connection_policy/connection_policy_target.rb +458 -0
  60. data/lib/twilio-ruby/rest/voice/v1/ip_record.rb +366 -0
  61. data/lib/twilio-ruby/rest/voice/v1/source_ip_mapping.rb +346 -0
  62. data/lib/twilio-ruby/twiml/twiml.rb +4 -0
  63. data/lib/twilio-ruby/twiml/voice_response.rb +3 -2
  64. data/lib/twilio-ruby/util/configuration.rb +9 -1
  65. data/lib/twilio-ruby/version.rb +1 -1
  66. data/spec/integration/api/v2010/account/call_spec.rb +5 -5
  67. data/spec/integration/api/v2010/account/conference_spec.rb +42 -14
  68. data/spec/integration/api/v2010/account/sip/domain_spec.rb +12 -4
  69. data/spec/integration/api/v2010/account/token_spec.rb +23 -11
  70. data/spec/integration/autopilot/v1/restore_assistant_spec.rb +53 -0
  71. data/spec/integration/bulkexports/v1/export/day_spec.rb +1 -1
  72. data/spec/integration/conversations/v1/conversation/participant_spec.rb +7 -0
  73. data/spec/integration/conversations/v1/conversation_spec.rb +4 -0
  74. data/spec/integration/flex_api/v1/configuration_spec.rb +3 -0
  75. data/spec/integration/numbers/v2/regulatory_compliance/bundle/evaluation_spec.rb +623 -0
  76. data/spec/integration/numbers/v2/regulatory_compliance/bundle_spec.rb +4 -0
  77. data/spec/integration/preview/bulk_exports/export/day_spec.rb +1 -1
  78. data/spec/integration/preview/trusted_comms/business/brand/branded_channel/channel_spec.rb +54 -0
  79. data/spec/integration/preview/trusted_comms/business/brand/branded_channel_spec.rb +52 -0
  80. data/spec/integration/preview/trusted_comms/business/brand_spec.rb +49 -0
  81. data/spec/integration/preview/trusted_comms/business_spec.rb +1 -0
  82. data/spec/integration/serverless/v1/service/asset/asset_version_spec.rb +1 -1
  83. data/spec/integration/serverless/v1/service/build_spec.rb +4 -4
  84. data/spec/integration/serverless/v1/service/environment/log_spec.rb +1 -0
  85. data/spec/integration/serverless/v1/service/function/function_version_spec.rb +1 -1
  86. data/spec/integration/studio/v1/flow/execution_spec.rb +46 -0
  87. data/spec/integration/studio/v2/flow/execution_spec.rb +45 -0
  88. data/spec/integration/studio/v2/flow_spec.rb +4 -0
  89. data/spec/integration/studio/v2/flow_validate_spec.rb +2 -2
  90. data/spec/integration/supersim/v1/fleet_spec.rb +12 -4
  91. data/spec/integration/supersim/v1/network_access_profile/network_access_profile_network_spec.rb +179 -0
  92. data/spec/integration/supersim/v1/network_access_profile_spec.rb +223 -0
  93. data/spec/integration/supersim/v1/network_spec.rb +139 -0
  94. data/spec/integration/trunking/v1/trunk/credential_list_spec.rb +13 -13
  95. data/spec/integration/trunking/v1/trunk/ip_access_control_list_spec.rb +23 -23
  96. data/spec/integration/trunking/v1/trunk/origination_url_spec.rb +28 -28
  97. data/spec/integration/trunking/v1/trunk/phone_number_spec.rb +17 -17
  98. data/spec/integration/trunking/v1/trunk_spec.rb +33 -33
  99. data/spec/integration/verify/v2/form_spec.rb +48 -0
  100. data/spec/integration/verify/v2/service/entity/factor/challenge_spec.rb +353 -0
  101. data/spec/integration/verify/v2/service/entity/factor_spec.rb +298 -0
  102. data/spec/integration/verify/v2/service/entity_spec.rb +201 -0
  103. data/spec/integration/verify/v2/service_spec.rb +28 -4
  104. data/spec/integration/video/v1/composition_settings_spec.rb +2 -2
  105. data/spec/integration/video/v1/recording_settings_spec.rb +2 -2
  106. data/spec/integration/video/v1/recording_spec.rb +2 -2
  107. data/spec/integration/video/v1/room/recording_spec.rb +2 -2
  108. data/spec/integration/voice/v1/byoc_trunk_spec.rb +250 -0
  109. data/spec/integration/voice/v1/connection_policy/connection_policy_target_spec.rb +246 -0
  110. data/spec/integration/voice/v1/connection_policy_spec.rb +226 -0
  111. data/spec/integration/voice/v1/ip_record_spec.rb +223 -0
  112. data/spec/integration/voice/v1/source_ip_mapping_spec.rb +219 -0
  113. data/spec/rest/client_spec.rb +173 -23
  114. data/spec/util/configuration_spec.rb +12 -0
  115. data/twilio-ruby.gemspec +4 -4
  116. metadata +67 -10
@@ -0,0 +1,315 @@
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 Supersim < 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 NetworkList < ListResource
16
+ ##
17
+ # Initialize the NetworkList
18
+ # @param [Version] version Version that contains the resource
19
+ # @return [NetworkList] NetworkList
20
+ def initialize(version)
21
+ super(version)
22
+
23
+ # Path Solution
24
+ @solution = {}
25
+ @uri = "/Networks"
26
+ end
27
+
28
+ ##
29
+ # Lists NetworkInstance records from the API as a list.
30
+ # Unlike stream(), this operation is eager and will load `limit` records into
31
+ # memory before returning.
32
+ # @param [String] iso_country The [ISO country
33
+ # code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) of the Network resources
34
+ # to read.
35
+ # @param [String] mcc The 'mobile country code' of a country. Network resources
36
+ # with this `mcc` in their `identifiers` will be read.
37
+ # @param [String] mnc The 'mobile network code' of a mobile operator network.
38
+ # Network resources with this `mnc` in their `identifiers` will be read.
39
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
40
+ # guarantees to never return more than limit. Default is no limit
41
+ # @param [Integer] page_size Number of records to fetch per request, when
42
+ # not set will use the default value of 50 records. If no page_size is defined
43
+ # but a limit is defined, stream() will attempt to read the limit with the most
44
+ # efficient page size, i.e. min(limit, 1000)
45
+ # @return [Array] Array of up to limit results
46
+ def list(iso_country: :unset, mcc: :unset, mnc: :unset, limit: nil, page_size: nil)
47
+ self.stream(
48
+ iso_country: iso_country,
49
+ mcc: mcc,
50
+ mnc: mnc,
51
+ limit: limit,
52
+ page_size: page_size
53
+ ).entries
54
+ end
55
+
56
+ ##
57
+ # Streams NetworkInstance records from the API as an Enumerable.
58
+ # This operation lazily loads records as efficiently as possible until the limit
59
+ # is reached.
60
+ # @param [String] iso_country The [ISO country
61
+ # code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) of the Network resources
62
+ # to read.
63
+ # @param [String] mcc The 'mobile country code' of a country. Network resources
64
+ # with this `mcc` in their `identifiers` will be read.
65
+ # @param [String] mnc The 'mobile network code' of a mobile operator network.
66
+ # Network resources with this `mnc` in their `identifiers` will be read.
67
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
68
+ # guarantees to never return more than limit. Default is no limit.
69
+ # @param [Integer] page_size Number of records to fetch per request, when
70
+ # not set will use the default value of 50 records. If no page_size is defined
71
+ # but a limit is defined, stream() will attempt to read the limit with the most
72
+ # efficient page size, i.e. min(limit, 1000)
73
+ # @return [Enumerable] Enumerable that will yield up to limit results
74
+ def stream(iso_country: :unset, mcc: :unset, mnc: :unset, limit: nil, page_size: nil)
75
+ limits = @version.read_limits(limit, page_size)
76
+
77
+ page = self.page(iso_country: iso_country, mcc: mcc, mnc: mnc, page_size: limits[:page_size], )
78
+
79
+ @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit])
80
+ end
81
+
82
+ ##
83
+ # When passed a block, yields NetworkInstance 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 NetworkInstance records from the API.
98
+ # Request is executed immediately.
99
+ # @param [String] iso_country The [ISO country
100
+ # code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) of the Network resources
101
+ # to read.
102
+ # @param [String] mcc The 'mobile country code' of a country. Network resources
103
+ # with this `mcc` in their `identifiers` will be read.
104
+ # @param [String] mnc The 'mobile network code' of a mobile operator network.
105
+ # Network resources with this `mnc` in their `identifiers` will be read.
106
+ # @param [String] page_token PageToken provided by the API
107
+ # @param [Integer] page_number Page Number, this value is simply for client state
108
+ # @param [Integer] page_size Number of records to return, defaults to 50
109
+ # @return [Page] Page of NetworkInstance
110
+ def page(iso_country: :unset, mcc: :unset, mnc: :unset, page_token: :unset, page_number: :unset, page_size: :unset)
111
+ params = Twilio::Values.of({
112
+ 'IsoCountry' => iso_country,
113
+ 'Mcc' => mcc,
114
+ 'Mnc' => mnc,
115
+ 'PageToken' => page_token,
116
+ 'Page' => page_number,
117
+ 'PageSize' => page_size,
118
+ })
119
+ response = @version.page(
120
+ 'GET',
121
+ @uri,
122
+ params
123
+ )
124
+ NetworkPage.new(@version, response, @solution)
125
+ end
126
+
127
+ ##
128
+ # Retrieve a single page of NetworkInstance records from the API.
129
+ # Request is executed immediately.
130
+ # @param [String] target_url API-generated URL for the requested results page
131
+ # @return [Page] Page of NetworkInstance
132
+ def get_page(target_url)
133
+ response = @version.domain.request(
134
+ 'GET',
135
+ target_url
136
+ )
137
+ NetworkPage.new(@version, response, @solution)
138
+ end
139
+
140
+ ##
141
+ # Provide a user friendly representation
142
+ def to_s
143
+ '#<Twilio.Supersim.V1.NetworkList>'
144
+ end
145
+ end
146
+
147
+ ##
148
+ # 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.
149
+ class NetworkPage < Page
150
+ ##
151
+ # Initialize the NetworkPage
152
+ # @param [Version] version Version that contains the resource
153
+ # @param [Response] response Response from the API
154
+ # @param [Hash] solution Path solution for the resource
155
+ # @return [NetworkPage] NetworkPage
156
+ def initialize(version, response, solution)
157
+ super(version, response)
158
+
159
+ # Path Solution
160
+ @solution = solution
161
+ end
162
+
163
+ ##
164
+ # Build an instance of NetworkInstance
165
+ # @param [Hash] payload Payload response from the API
166
+ # @return [NetworkInstance] NetworkInstance
167
+ def get_instance(payload)
168
+ NetworkInstance.new(@version, payload, )
169
+ end
170
+
171
+ ##
172
+ # Provide a user friendly representation
173
+ def to_s
174
+ '<Twilio.Supersim.V1.NetworkPage>'
175
+ end
176
+ end
177
+
178
+ ##
179
+ # 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.
180
+ class NetworkContext < InstanceContext
181
+ ##
182
+ # Initialize the NetworkContext
183
+ # @param [Version] version Version that contains the resource
184
+ # @param [String] sid The SID of the Network resource to fetch.
185
+ # @return [NetworkContext] NetworkContext
186
+ def initialize(version, sid)
187
+ super(version)
188
+
189
+ # Path Solution
190
+ @solution = {sid: sid, }
191
+ @uri = "/Networks/#{@solution[:sid]}"
192
+ end
193
+
194
+ ##
195
+ # Fetch a NetworkInstance
196
+ # @return [NetworkInstance] Fetched NetworkInstance
197
+ def fetch
198
+ params = Twilio::Values.of({})
199
+
200
+ payload = @version.fetch(
201
+ 'GET',
202
+ @uri,
203
+ params,
204
+ )
205
+
206
+ NetworkInstance.new(@version, payload, sid: @solution[:sid], )
207
+ end
208
+
209
+ ##
210
+ # Provide a user friendly representation
211
+ def to_s
212
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
213
+ "#<Twilio.Supersim.V1.NetworkContext #{context}>"
214
+ end
215
+
216
+ ##
217
+ # Provide a detailed, user friendly representation
218
+ def inspect
219
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
220
+ "#<Twilio.Supersim.V1.NetworkContext #{context}>"
221
+ end
222
+ end
223
+
224
+ ##
225
+ # 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.
226
+ class NetworkInstance < InstanceResource
227
+ ##
228
+ # Initialize the NetworkInstance
229
+ # @param [Version] version Version that contains the resource
230
+ # @param [Hash] payload payload that contains response from Twilio
231
+ # @param [String] sid The SID of the Network resource to fetch.
232
+ # @return [NetworkInstance] NetworkInstance
233
+ def initialize(version, payload, sid: nil)
234
+ super(version)
235
+
236
+ # Marshaled Properties
237
+ @properties = {
238
+ 'sid' => payload['sid'],
239
+ 'friendly_name' => payload['friendly_name'],
240
+ 'url' => payload['url'],
241
+ 'iso_country' => payload['iso_country'],
242
+ 'identifiers' => payload['identifiers'],
243
+ }
244
+
245
+ # Context
246
+ @instance_context = nil
247
+ @params = {'sid' => sid || @properties['sid'], }
248
+ end
249
+
250
+ ##
251
+ # Generate an instance context for the instance, the context is capable of
252
+ # performing various actions. All instance actions are proxied to the context
253
+ # @return [NetworkContext] NetworkContext for this NetworkInstance
254
+ def context
255
+ unless @instance_context
256
+ @instance_context = NetworkContext.new(@version, @params['sid'], )
257
+ end
258
+ @instance_context
259
+ end
260
+
261
+ ##
262
+ # @return [String] The unique string that identifies the resource
263
+ def sid
264
+ @properties['sid']
265
+ end
266
+
267
+ ##
268
+ # @return [String] A human readable identifier of this resource
269
+ def friendly_name
270
+ @properties['friendly_name']
271
+ end
272
+
273
+ ##
274
+ # @return [String] The absolute URL of the Network resource
275
+ def url
276
+ @properties['url']
277
+ end
278
+
279
+ ##
280
+ # @return [String] The ISO country code of the Network resource
281
+ def iso_country
282
+ @properties['iso_country']
283
+ end
284
+
285
+ ##
286
+ # @return [Hash] The MCC/MNCs included in the Network resource
287
+ def identifiers
288
+ @properties['identifiers']
289
+ end
290
+
291
+ ##
292
+ # Fetch a NetworkInstance
293
+ # @return [NetworkInstance] Fetched NetworkInstance
294
+ def fetch
295
+ context.fetch
296
+ end
297
+
298
+ ##
299
+ # Provide a user friendly representation
300
+ def to_s
301
+ values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
302
+ "<Twilio.Supersim.V1.NetworkInstance #{values}>"
303
+ end
304
+
305
+ ##
306
+ # Provide a detailed, user friendly representation
307
+ def inspect
308
+ values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ")
309
+ "<Twilio.Supersim.V1.NetworkInstance #{values}>"
310
+ end
311
+ end
312
+ end
313
+ end
314
+ end
315
+ end
@@ -0,0 +1,378 @@
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 Supersim < 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 NetworkAccessProfileList < ListResource
16
+ ##
17
+ # Initialize the NetworkAccessProfileList
18
+ # @param [Version] version Version that contains the resource
19
+ # @return [NetworkAccessProfileList] NetworkAccessProfileList
20
+ def initialize(version)
21
+ super(version)
22
+
23
+ # Path Solution
24
+ @solution = {}
25
+ @uri = "/NetworkAccessProfiles"
26
+ end
27
+
28
+ ##
29
+ # Retrieve a single page of NetworkAccessProfileInstance records from the API.
30
+ # Request is executed immediately.
31
+ # @param [String] unique_name An application-defined string that uniquely
32
+ # identifies the resource. It can be used in place of the resource's `sid` in the
33
+ # URL to address the resource.
34
+ # @param [String] networks List of Network SIDs that this Network Access Profile
35
+ # will allow connections to.
36
+ # @return [NetworkAccessProfileInstance] Newly created NetworkAccessProfileInstance
37
+ def create(unique_name: :unset, networks: :unset)
38
+ data = Twilio::Values.of({
39
+ 'UniqueName' => unique_name,
40
+ 'Networks' => Twilio.serialize_list(networks) { |e| e },
41
+ })
42
+
43
+ payload = @version.create(
44
+ 'POST',
45
+ @uri,
46
+ data: data
47
+ )
48
+
49
+ NetworkAccessProfileInstance.new(@version, payload, )
50
+ end
51
+
52
+ ##
53
+ # Lists NetworkAccessProfileInstance records from the API as a list.
54
+ # Unlike stream(), this operation is eager and will load `limit` records into
55
+ # memory before returning.
56
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
57
+ # guarantees to never return more than limit. Default is no limit
58
+ # @param [Integer] page_size Number of records to fetch per request, when
59
+ # not set will use the default value of 50 records. If no page_size is defined
60
+ # but a limit is defined, stream() will attempt to read the limit with the most
61
+ # efficient page size, i.e. min(limit, 1000)
62
+ # @return [Array] Array of up to limit results
63
+ def list(limit: nil, page_size: nil)
64
+ self.stream(limit: limit, page_size: page_size).entries
65
+ end
66
+
67
+ ##
68
+ # Streams NetworkAccessProfileInstance records from the API as an Enumerable.
69
+ # This operation lazily loads records as efficiently as possible until the limit
70
+ # is reached.
71
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
72
+ # guarantees to never return more than limit. Default is no limit.
73
+ # @param [Integer] page_size Number of records to fetch per request, when
74
+ # not set will use the default value of 50 records. If no page_size is defined
75
+ # but a limit is defined, stream() will attempt to read the limit with the most
76
+ # efficient page size, i.e. min(limit, 1000)
77
+ # @return [Enumerable] Enumerable that will yield up to limit results
78
+ def stream(limit: nil, page_size: nil)
79
+ limits = @version.read_limits(limit, page_size)
80
+
81
+ page = self.page(page_size: limits[:page_size], )
82
+
83
+ @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit])
84
+ end
85
+
86
+ ##
87
+ # When passed a block, yields NetworkAccessProfileInstance records from the API.
88
+ # This operation lazily loads records as efficiently as possible until the limit
89
+ # is reached.
90
+ def each
91
+ limits = @version.read_limits
92
+
93
+ page = self.page(page_size: limits[:page_size], )
94
+
95
+ @version.stream(page,
96
+ limit: limits[:limit],
97
+ page_limit: limits[:page_limit]).each {|x| yield x}
98
+ end
99
+
100
+ ##
101
+ # Retrieve a single page of NetworkAccessProfileInstance records from the API.
102
+ # Request is executed immediately.
103
+ # @param [String] page_token PageToken provided by the API
104
+ # @param [Integer] page_number Page Number, this value is simply for client state
105
+ # @param [Integer] page_size Number of records to return, defaults to 50
106
+ # @return [Page] Page of NetworkAccessProfileInstance
107
+ def page(page_token: :unset, page_number: :unset, page_size: :unset)
108
+ params = Twilio::Values.of({
109
+ 'PageToken' => page_token,
110
+ 'Page' => page_number,
111
+ 'PageSize' => page_size,
112
+ })
113
+ response = @version.page(
114
+ 'GET',
115
+ @uri,
116
+ params
117
+ )
118
+ NetworkAccessProfilePage.new(@version, response, @solution)
119
+ end
120
+
121
+ ##
122
+ # Retrieve a single page of NetworkAccessProfileInstance records from the API.
123
+ # Request is executed immediately.
124
+ # @param [String] target_url API-generated URL for the requested results page
125
+ # @return [Page] Page of NetworkAccessProfileInstance
126
+ def get_page(target_url)
127
+ response = @version.domain.request(
128
+ 'GET',
129
+ target_url
130
+ )
131
+ NetworkAccessProfilePage.new(@version, response, @solution)
132
+ end
133
+
134
+ ##
135
+ # Provide a user friendly representation
136
+ def to_s
137
+ '#<Twilio.Supersim.V1.NetworkAccessProfileList>'
138
+ end
139
+ end
140
+
141
+ ##
142
+ # 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.
143
+ class NetworkAccessProfilePage < Page
144
+ ##
145
+ # Initialize the NetworkAccessProfilePage
146
+ # @param [Version] version Version that contains the resource
147
+ # @param [Response] response Response from the API
148
+ # @param [Hash] solution Path solution for the resource
149
+ # @return [NetworkAccessProfilePage] NetworkAccessProfilePage
150
+ def initialize(version, response, solution)
151
+ super(version, response)
152
+
153
+ # Path Solution
154
+ @solution = solution
155
+ end
156
+
157
+ ##
158
+ # Build an instance of NetworkAccessProfileInstance
159
+ # @param [Hash] payload Payload response from the API
160
+ # @return [NetworkAccessProfileInstance] NetworkAccessProfileInstance
161
+ def get_instance(payload)
162
+ NetworkAccessProfileInstance.new(@version, payload, )
163
+ end
164
+
165
+ ##
166
+ # Provide a user friendly representation
167
+ def to_s
168
+ '<Twilio.Supersim.V1.NetworkAccessProfilePage>'
169
+ end
170
+ end
171
+
172
+ ##
173
+ # 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.
174
+ class NetworkAccessProfileContext < InstanceContext
175
+ ##
176
+ # Initialize the NetworkAccessProfileContext
177
+ # @param [Version] version Version that contains the resource
178
+ # @param [String] sid The SID of the Network Access Profile resource to fetch.
179
+ # @return [NetworkAccessProfileContext] NetworkAccessProfileContext
180
+ def initialize(version, sid)
181
+ super(version)
182
+
183
+ # Path Solution
184
+ @solution = {sid: sid, }
185
+ @uri = "/NetworkAccessProfiles/#{@solution[:sid]}"
186
+
187
+ # Dependents
188
+ @networks = nil
189
+ end
190
+
191
+ ##
192
+ # Fetch a NetworkAccessProfileInstance
193
+ # @return [NetworkAccessProfileInstance] Fetched NetworkAccessProfileInstance
194
+ def fetch
195
+ params = Twilio::Values.of({})
196
+
197
+ payload = @version.fetch(
198
+ 'GET',
199
+ @uri,
200
+ params,
201
+ )
202
+
203
+ NetworkAccessProfileInstance.new(@version, payload, sid: @solution[:sid], )
204
+ end
205
+
206
+ ##
207
+ # Update the NetworkAccessProfileInstance
208
+ # @param [String] unique_name The new unique name of the Network Access Profile.
209
+ # @return [NetworkAccessProfileInstance] Updated NetworkAccessProfileInstance
210
+ def update(unique_name: :unset)
211
+ data = Twilio::Values.of({'UniqueName' => unique_name, })
212
+
213
+ payload = @version.update(
214
+ 'POST',
215
+ @uri,
216
+ data: data,
217
+ )
218
+
219
+ NetworkAccessProfileInstance.new(@version, payload, sid: @solution[:sid], )
220
+ end
221
+
222
+ ##
223
+ # Access the networks
224
+ # @return [NetworkAccessProfileNetworkList]
225
+ # @return [NetworkAccessProfileNetworkContext] if sid was passed.
226
+ def networks(sid=:unset)
227
+ raise ArgumentError, 'sid cannot be nil' if sid.nil?
228
+
229
+ if sid != :unset
230
+ return NetworkAccessProfileNetworkContext.new(@version, @solution[:sid], sid, )
231
+ end
232
+
233
+ unless @networks
234
+ @networks = NetworkAccessProfileNetworkList.new(
235
+ @version,
236
+ network_access_profile_sid: @solution[:sid],
237
+ )
238
+ end
239
+
240
+ @networks
241
+ end
242
+
243
+ ##
244
+ # Provide a user friendly representation
245
+ def to_s
246
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
247
+ "#<Twilio.Supersim.V1.NetworkAccessProfileContext #{context}>"
248
+ end
249
+
250
+ ##
251
+ # Provide a detailed, user friendly representation
252
+ def inspect
253
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
254
+ "#<Twilio.Supersim.V1.NetworkAccessProfileContext #{context}>"
255
+ end
256
+ end
257
+
258
+ ##
259
+ # 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.
260
+ class NetworkAccessProfileInstance < InstanceResource
261
+ ##
262
+ # Initialize the NetworkAccessProfileInstance
263
+ # @param [Version] version Version that contains the resource
264
+ # @param [Hash] payload payload that contains response from Twilio
265
+ # @param [String] sid The SID of the Network Access Profile resource to fetch.
266
+ # @return [NetworkAccessProfileInstance] NetworkAccessProfileInstance
267
+ def initialize(version, payload, sid: nil)
268
+ super(version)
269
+
270
+ # Marshaled Properties
271
+ @properties = {
272
+ 'sid' => payload['sid'],
273
+ 'unique_name' => payload['unique_name'],
274
+ 'account_sid' => payload['account_sid'],
275
+ 'date_created' => Twilio.deserialize_iso8601_datetime(payload['date_created']),
276
+ 'date_updated' => Twilio.deserialize_iso8601_datetime(payload['date_updated']),
277
+ 'url' => payload['url'],
278
+ 'links' => payload['links'],
279
+ }
280
+
281
+ # Context
282
+ @instance_context = nil
283
+ @params = {'sid' => sid || @properties['sid'], }
284
+ end
285
+
286
+ ##
287
+ # Generate an instance context for the instance, the context is capable of
288
+ # performing various actions. All instance actions are proxied to the context
289
+ # @return [NetworkAccessProfileContext] NetworkAccessProfileContext for this NetworkAccessProfileInstance
290
+ def context
291
+ unless @instance_context
292
+ @instance_context = NetworkAccessProfileContext.new(@version, @params['sid'], )
293
+ end
294
+ @instance_context
295
+ end
296
+
297
+ ##
298
+ # @return [String] The unique string that identifies the resource
299
+ def sid
300
+ @properties['sid']
301
+ end
302
+
303
+ ##
304
+ # @return [String] An application-defined string that uniquely identifies the resource
305
+ def unique_name
306
+ @properties['unique_name']
307
+ end
308
+
309
+ ##
310
+ # @return [String] The SID of the Account that the Network Access Profile belongs to
311
+ def account_sid
312
+ @properties['account_sid']
313
+ end
314
+
315
+ ##
316
+ # @return [Time] The ISO 8601 date and time in GMT when the resource was created
317
+ def date_created
318
+ @properties['date_created']
319
+ end
320
+
321
+ ##
322
+ # @return [Time] The ISO 8601 date and time in GMT when the resource was last updated
323
+ def date_updated
324
+ @properties['date_updated']
325
+ end
326
+
327
+ ##
328
+ # @return [String] The absolute URL of the resource
329
+ def url
330
+ @properties['url']
331
+ end
332
+
333
+ ##
334
+ # @return [String] The links
335
+ def links
336
+ @properties['links']
337
+ end
338
+
339
+ ##
340
+ # Fetch a NetworkAccessProfileInstance
341
+ # @return [NetworkAccessProfileInstance] Fetched NetworkAccessProfileInstance
342
+ def fetch
343
+ context.fetch
344
+ end
345
+
346
+ ##
347
+ # Update the NetworkAccessProfileInstance
348
+ # @param [String] unique_name The new unique name of the Network Access Profile.
349
+ # @return [NetworkAccessProfileInstance] Updated NetworkAccessProfileInstance
350
+ def update(unique_name: :unset)
351
+ context.update(unique_name: unique_name, )
352
+ end
353
+
354
+ ##
355
+ # Access the networks
356
+ # @return [networks] networks
357
+ def networks
358
+ context.networks
359
+ end
360
+
361
+ ##
362
+ # Provide a user friendly representation
363
+ def to_s
364
+ values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
365
+ "<Twilio.Supersim.V1.NetworkAccessProfileInstance #{values}>"
366
+ end
367
+
368
+ ##
369
+ # Provide a detailed, user friendly representation
370
+ def inspect
371
+ values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ")
372
+ "<Twilio.Supersim.V1.NetworkAccessProfileInstance #{values}>"
373
+ end
374
+ end
375
+ end
376
+ end
377
+ end
378
+ end