twilio-ruby 5.33.0 → 5.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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