twilio-ruby 5.3.0 → 5.3.1

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 (39) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/CHANGES.md +9 -0
  4. data/README.md +2 -11
  5. data/lib/twilio-ruby.rb +17 -0
  6. data/lib/twilio-ruby/rest/client.rb +3 -3
  7. data/lib/twilio-ruby/rest/preview.rb +7 -0
  8. data/lib/twilio-ruby/rest/preview/acc_security.rb +41 -0
  9. data/lib/twilio-ruby/rest/preview/acc_security/service.rb +429 -0
  10. data/lib/twilio-ruby/rest/preview/acc_security/service/verification.rb +197 -0
  11. data/lib/twilio-ruby/rest/preview/acc_security/service/verification_check.rb +193 -0
  12. data/lib/twilio-ruby/rest/taskrouter/v1/workspace.rb +14 -14
  13. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue.rb +35 -44
  14. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue/task_queues_statistics.rb +1 -1
  15. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker.rb +14 -14
  16. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/workflow.rb +14 -14
  17. data/lib/twilio-ruby/util.rb +2 -0
  18. data/lib/twilio-ruby/util/configuration.rb +17 -0
  19. data/lib/twilio-ruby/version.rb +1 -1
  20. data/spec/integration/preview/acc_security/service/verification_check_spec.rb +52 -0
  21. data/spec/integration/preview/acc_security/service/verification_spec.rb +53 -0
  22. data/spec/integration/preview/acc_security/service_spec.rb +185 -0
  23. data/spec/integration/taskrouter/v1/workspace/task_queue/task_queue_cumulative_statistics_spec.rb +2 -2
  24. data/spec/integration/taskrouter/v1/workspace/task_queue/task_queue_real_time_statistics_spec.rb +2 -2
  25. data/spec/integration/taskrouter/v1/workspace/task_queue/task_queue_statistics_spec.rb +2 -2
  26. data/spec/integration/taskrouter/v1/workspace/task_queue/task_queues_statistics_spec.rb +6 -6
  27. data/spec/integration/taskrouter/v1/workspace/task_queue_spec.rb +12 -16
  28. data/spec/integration/taskrouter/v1/workspace/worker/workers_cumulative_statistics_spec.rb +2 -2
  29. data/spec/integration/taskrouter/v1/workspace/worker/workers_real_time_statistics_spec.rb +2 -2
  30. data/spec/integration/taskrouter/v1/workspace/worker_spec.rb +12 -8
  31. data/spec/integration/taskrouter/v1/workspace/workflow/workflow_cumulative_statistics_spec.rb +2 -2
  32. data/spec/integration/taskrouter/v1/workspace/workflow/workflow_real_time_statistics_spec.rb +2 -2
  33. data/spec/integration/taskrouter/v1/workspace/workflow_spec.rb +8 -8
  34. data/spec/integration/taskrouter/v1/workspace/workspace_cumulative_statistics_spec.rb +2 -2
  35. data/spec/integration/taskrouter/v1/workspace/workspace_real_time_statistics_spec.rb +2 -2
  36. data/spec/integration/taskrouter/v1/workspace_spec.rb +8 -8
  37. data/spec/twilio_spec.rb +15 -0
  38. data/spec/util/configuration_spec.rb +15 -0
  39. metadata +16 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 088b6c58d49ae8c6b5aab315bccc32e9660daaba
4
- data.tar.gz: 9c3e344611be8f54f83c719d8c56e79a2008112f
3
+ metadata.gz: 28600f3f5e0d481da956dbb2220933c52aa949dd
4
+ data.tar.gz: 83b9e42f778ae67c4d9d3c7a6690cbabba9de09d
5
5
  SHA512:
6
- metadata.gz: f160ffb9e3c889ee406c611c98f8870e925bc78ea91a397911f6ba888dc5c342516cae66455237f153cdff01313096c8e54ecf60efb45d2648057b0342653a67
7
- data.tar.gz: f3aeabd256f24bd9f60cf77dc7fa2e659446a2d5eb88f91e385613c836254afdd83efe089546c33d8fc0e4b272329d5db14e5d7f48e17a9e2703c43759af54f1
6
+ metadata.gz: 88883d2d4ba13c23d42d602e8e244d1606b717197cb854a9803a8c6f0da6338c179e6ac55a7f24b9c3965eda91936ccd50e2611acc3653c594c7277134e16ca3
7
+ data.tar.gz: 95c16494c7f80f1ce8d22891a81e5fd1fc64e0bb0af5b38f0457a30d21b01be950030fe5b5e7709f80f6cd29d2477ca1e9346c6a440c2f19c0fea932d91c7a3b
data/.rubocop.yml CHANGED
@@ -7,6 +7,7 @@ AllCops:
7
7
  - 'spec/integration/**/*'
8
8
  - 'lib/twilio-ruby/version.rb'
9
9
  - 'lib/twilio-ruby/twiml/**/*'
10
+ - 'lib/twilio-ruby/util/configuration.rb'
10
11
 
11
12
  Metrics/LineLength:
12
13
  Max: 120
data/CHANGES.md CHANGED
@@ -1,6 +1,15 @@
1
1
  twilio-ruby changelog
2
2
  =====================
3
3
 
4
+ [2017-10-06] Version 5.3.1
5
+ ---------------------------
6
+ **Preview**
7
+ - Add `acc_security` (authy-phone-verification) initial api-definitions
8
+
9
+ **Taskrouter**
10
+ - [bi] Less verbose naming of cumulative and real time statistics
11
+
12
+
4
13
  [2017-09-29] Version 5.3.0
5
14
  ---------------------------
6
15
  **Library**
data/README.md CHANGED
@@ -27,13 +27,13 @@ in-line code documentation here in the library.
27
27
  To install using [Bundler][bundler] grab the latest stable version:
28
28
 
29
29
  ```ruby
30
- gem 'twilio-ruby', '~> 5.3.0'
30
+ gem 'twilio-ruby', '~> 5.3.1'
31
31
  ```
32
32
 
33
33
  To manually install `twilio-ruby` via [Rubygems][rubygems] simply gem install:
34
34
 
35
35
  ```bash
36
- gem install twilio-ruby -v 5.3.0
36
+ gem install twilio-ruby -v 5.3.1
37
37
  ```
38
38
 
39
39
  To build and install the development branch yourself from the latest source:
@@ -66,15 +66,6 @@ auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'
66
66
 
67
67
  # set up a client to talk to the Twilio REST API
68
68
  @client = Twilio::REST::Client.new account_sid, auth_token
69
-
70
- # alternatively, you can preconfigure the client like so
71
- Twilio.configure do |config|
72
- config.account_sid = account_sid
73
- config.auth_token = auth_token
74
- end
75
-
76
- # and then you can create a new client without parameters
77
- @client = Twilio::REST::Client.new
78
69
  ```
79
70
 
80
71
  ### Make a Call
data/lib/twilio-ruby.rb CHANGED
@@ -17,6 +17,7 @@ require 'twilio-ruby/jwt/access_token'
17
17
  require 'twilio-ruby/jwt/client_capability'
18
18
  require 'twilio-ruby/jwt/task_router'
19
19
  require 'twilio-ruby/security/request_validator'
20
+ require 'twilio-ruby/util/configuration'
20
21
 
21
22
  require 'twilio-ruby/twiml/twiml'
22
23
  require 'twilio-ruby/twiml/voice_response'
@@ -40,4 +41,20 @@ end
40
41
 
41
42
  module Twilio
42
43
  extend SingleForwardable
44
+
45
+ def_delegators :configuration, :account_sid, :auth_token
46
+
47
+ ##
48
+ # Pre-configure with account SID and auth token so that you don't need to
49
+ # pass them to various initializers each time.
50
+ def self.configure(&block)
51
+ yield configuration
52
+ end
53
+
54
+ ##
55
+ # Returns an existing or instantiates a new configuration object.
56
+ def self.configuration
57
+ @configuration ||= Util::Configuration.new
58
+ end
59
+ private_class_method :configuration
43
60
  end
@@ -14,8 +14,8 @@ module Twilio
14
14
  ##
15
15
  # Initializes the Twilio Client
16
16
  def initialize(username=nil, password=nil, account_sid=nil, region=nil, http_client=Twilio::HTTP::Client.new)
17
- @username = username
18
- @password = password
17
+ @username = username || Twilio.account_sid
18
+ @password = password || Twilio.auth_token
19
19
  @region = region
20
20
  @account_sid = account_sid || @username
21
21
  @auth_token = @password
@@ -394,4 +394,4 @@ module Twilio
394
394
  # Dummy client which provides no functionality. Please use Twilio::REST::Client instead.
395
395
  class TrunkingClient < ObsoleteClient; end
396
396
  end
397
- end
397
+ end
@@ -22,6 +22,7 @@ module Twilio
22
22
  @hosted_numbers = nil
23
23
  @marketplace = nil
24
24
  @proxy = nil
25
+ @acc_security = nil
25
26
  @sync = nil
26
27
  @wireless = nil
27
28
  end
@@ -56,6 +57,12 @@ module Twilio
56
57
  @proxy ||= Proxy.new self
57
58
  end
58
59
 
60
+ ##
61
+ # Version acc_security of preview
62
+ def acc_security
63
+ @acc_security ||= AccSecurity.new self
64
+ end
65
+
59
66
  ##
60
67
  # Version sync of preview
61
68
  def sync
@@ -0,0 +1,41 @@
1
+ ##
2
+ # This code was generated by
3
+ # \ / _ _ _| _ _
4
+ # | (_)\/(_)(_|\/| |(/_ v1.0.0
5
+ # / /
6
+
7
+ module Twilio
8
+ module REST
9
+ class Preview
10
+ class AccSecurity < Version
11
+ ##
12
+ # Initialize the AccSecurity version of Preview
13
+ def initialize(domain)
14
+ super
15
+ @version = 'Verification'
16
+ @services = nil
17
+ end
18
+
19
+ ##
20
+ # @param [String] sid The unique SID identifier of Verification Service Instance.
21
+ # @return [Twilio::REST::Preview::AccSecurity::ServiceInstance] if sid was passed.
22
+ # @return [Twilio::REST::Preview::AccSecurity::ServiceList]
23
+ def services(sid=:unset)
24
+ if sid.nil?
25
+ raise ArgumentError, 'sid cannot be nil'
26
+ elsif sid == :unset
27
+ @services ||= ServiceList.new self
28
+ else
29
+ ServiceContext.new(self, sid)
30
+ end
31
+ end
32
+
33
+ ##
34
+ # Provide a user friendly representation
35
+ def to_s
36
+ '<Twilio::REST::Preview::AccSecurity>'
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,429 @@
1
+ ##
2
+ # This code was generated by
3
+ # \ / _ _ _| _ _
4
+ # | (_)\/(_)(_|\/| |(/_ v1.0.0
5
+ # / /
6
+
7
+ module Twilio
8
+ module REST
9
+ class Preview < Domain
10
+ class AccSecurity < Version
11
+ ##
12
+ # 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.
13
+ class ServiceList < ListResource
14
+ ##
15
+ # Initialize the ServiceList
16
+ # @param [Version] version Version that contains the resource
17
+ # @return [ServiceList] ServiceList
18
+ def initialize(version)
19
+ super(version)
20
+
21
+ # Path Solution
22
+ @solution = {}
23
+ @uri = "/Services"
24
+ end
25
+
26
+ ##
27
+ # Retrieve a single page of ServiceInstance records from the API.
28
+ # Request is executed immediately.
29
+ # @param [String] name A 1-64 character string with friendly name of service
30
+ # @param [String] code_length The length of the verification code to be generated.
31
+ # Must be an integer value between 4-10
32
+ # @return [ServiceInstance] Newly created ServiceInstance
33
+ def create(name: nil, code_length: :unset)
34
+ data = Twilio::Values.of({
35
+ 'Name' => name,
36
+ 'CodeLength' => code_length,
37
+ })
38
+
39
+ payload = @version.create(
40
+ 'POST',
41
+ @uri,
42
+ data: data
43
+ )
44
+
45
+ ServiceInstance.new(
46
+ @version,
47
+ payload,
48
+ )
49
+ end
50
+
51
+ ##
52
+ # Lists ServiceInstance records from the API as a list.
53
+ # Unlike stream(), this operation is eager and will load `limit` records into
54
+ # memory before returning.
55
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
56
+ # guarantees to never return more than limit. Default is no limit
57
+ # @param [Integer] page_size Number of records to fetch per request, when
58
+ # not set will use the default value of 50 records. If no page_size is defined
59
+ # but a limit is defined, stream() will attempt to read the limit with the most
60
+ # efficient page size, i.e. min(limit, 1000)
61
+ # @return [Array] Array of up to limit results
62
+ def list(limit: nil, page_size: nil)
63
+ self.stream(
64
+ limit: limit,
65
+ page_size: page_size
66
+ ).entries
67
+ end
68
+
69
+ ##
70
+ # Streams ServiceInstance records from the API as an Enumerable.
71
+ # This operation lazily loads records as efficiently as possible until the limit
72
+ # is reached.
73
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
74
+ # guarantees to never return more than limit. Default is no limit.
75
+ # @param [Integer] page_size Number of records to fetch per request, when
76
+ # not set will use the default value of 50 records. If no page_size is defined
77
+ # but a limit is defined, stream() will attempt to read the limit with the most
78
+ # efficient page size, i.e. min(limit, 1000)
79
+ # @return [Enumerable] Enumerable that will yield up to limit results
80
+ def stream(limit: nil, page_size: nil)
81
+ limits = @version.read_limits(limit, page_size)
82
+
83
+ page = self.page(
84
+ page_size: limits[:page_size],
85
+ )
86
+
87
+ @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit])
88
+ end
89
+
90
+ ##
91
+ # When passed a block, yields ServiceInstance records from the API.
92
+ # This operation lazily loads records as efficiently as possible until the limit
93
+ # is reached.
94
+ def each
95
+ limits = @version.read_limits
96
+
97
+ page = self.page(
98
+ page_size: limits[:page_size],
99
+ )
100
+
101
+ @version.stream(page,
102
+ limit: limits[:limit],
103
+ page_limit: limits[:page_limit]).each {|x| yield x}
104
+ end
105
+
106
+ ##
107
+ # Retrieve a single page of ServiceInstance records from the API.
108
+ # Request is executed immediately.
109
+ # @param [String] page_token PageToken provided by the API
110
+ # @param [Integer] page_number Page Number, this value is simply for client state
111
+ # @param [Integer] page_size Number of records to return, defaults to 50
112
+ # @return [Page] Page of ServiceInstance
113
+ def page(page_token: :unset, page_number: :unset, page_size: :unset)
114
+ params = Twilio::Values.of({
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
+ ServicePage.new(@version, response, @solution)
125
+ end
126
+
127
+ ##
128
+ # Retrieve a single page of ServiceInstance 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 ServiceInstance
132
+ def get_page(target_url)
133
+ response = @version.domain.request(
134
+ 'GET',
135
+ target_url
136
+ )
137
+ ServicePage.new(@version, response, @solution)
138
+ end
139
+
140
+ ##
141
+ # Provide a user friendly representation
142
+ def to_s
143
+ '#<Twilio.Preview.AccSecurity.ServiceList>'
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 ServicePage < Page
150
+ ##
151
+ # Initialize the ServicePage
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 [ServicePage] ServicePage
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 ServiceInstance
165
+ # @param [Hash] payload Payload response from the API
166
+ # @return [ServiceInstance] ServiceInstance
167
+ def get_instance(payload)
168
+ ServiceInstance.new(
169
+ @version,
170
+ payload,
171
+ )
172
+ end
173
+
174
+ ##
175
+ # Provide a user friendly representation
176
+ def to_s
177
+ '<Twilio.Preview.AccSecurity.ServicePage>'
178
+ end
179
+ end
180
+
181
+ ##
182
+ # 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.
183
+ class ServiceContext < InstanceContext
184
+ ##
185
+ # Initialize the ServiceContext
186
+ # @param [Version] version Version that contains the resource
187
+ # @param [String] sid The unique SID identifier of Verification Service Instance.
188
+ # @return [ServiceContext] ServiceContext
189
+ def initialize(version, sid)
190
+ super(version)
191
+
192
+ # Path Solution
193
+ @solution = {
194
+ sid: sid,
195
+ }
196
+ @uri = "/Services/#{@solution[:sid]}"
197
+
198
+ # Dependents
199
+ @verifications = nil
200
+ @verification_checks = nil
201
+ end
202
+
203
+ ##
204
+ # Fetch a ServiceInstance
205
+ # @return [ServiceInstance] Fetched ServiceInstance
206
+ def fetch
207
+ params = Twilio::Values.of({})
208
+
209
+ payload = @version.fetch(
210
+ 'GET',
211
+ @uri,
212
+ params,
213
+ )
214
+
215
+ ServiceInstance.new(
216
+ @version,
217
+ payload,
218
+ sid: @solution[:sid],
219
+ )
220
+ end
221
+
222
+ ##
223
+ # Update the ServiceInstance
224
+ # @param [String] name A 1-64 character string with friendly name of service
225
+ # @param [String] code_length The length of the verification code to be generated.
226
+ # Must be an integer value between 4-10
227
+ # @return [ServiceInstance] Updated ServiceInstance
228
+ def update(name: :unset, code_length: :unset)
229
+ data = Twilio::Values.of({
230
+ 'Name' => name,
231
+ 'CodeLength' => code_length,
232
+ })
233
+
234
+ payload = @version.update(
235
+ 'POST',
236
+ @uri,
237
+ data: data,
238
+ )
239
+
240
+ ServiceInstance.new(
241
+ @version,
242
+ payload,
243
+ sid: @solution[:sid],
244
+ )
245
+ end
246
+
247
+ ##
248
+ # Access the verifications
249
+ # @return [VerificationList]
250
+ # @return [VerificationContext]
251
+ def verifications
252
+ unless @verifications
253
+ @verifications = VerificationList.new(
254
+ @version,
255
+ service_sid: @solution[:sid],
256
+ )
257
+ end
258
+
259
+ @verifications
260
+ end
261
+
262
+ ##
263
+ # Access the verification_checks
264
+ # @return [VerificationCheckList]
265
+ # @return [VerificationCheckContext]
266
+ def verification_checks
267
+ unless @verification_checks
268
+ @verification_checks = VerificationCheckList.new(
269
+ @version,
270
+ service_sid: @solution[:sid],
271
+ )
272
+ end
273
+
274
+ @verification_checks
275
+ end
276
+
277
+ ##
278
+ # Provide a user friendly representation
279
+ def to_s
280
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
281
+ "#<Twilio.Preview.AccSecurity.ServiceContext #{context}>"
282
+ end
283
+ end
284
+
285
+ ##
286
+ # 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.
287
+ class ServiceInstance < InstanceResource
288
+ ##
289
+ # Initialize the ServiceInstance
290
+ # @param [Version] version Version that contains the resource
291
+ # @param [Hash] payload payload that contains response from Twilio
292
+ # @param [String] sid The unique SID identifier of Verification Service Instance.
293
+ # @return [ServiceInstance] ServiceInstance
294
+ def initialize(version, payload, sid: nil)
295
+ super(version)
296
+
297
+ # Marshaled Properties
298
+ @properties = {
299
+ 'sid' => payload['sid'],
300
+ 'account_sid' => payload['account_sid'],
301
+ 'name' => payload['name'],
302
+ 'code_length' => payload['code_length'].to_i,
303
+ 'date_created' => Twilio.deserialize_iso8601_datetime(payload['date_created']),
304
+ 'date_updated' => Twilio.deserialize_iso8601_datetime(payload['date_updated']),
305
+ 'url' => payload['url'],
306
+ 'links' => payload['links'],
307
+ }
308
+
309
+ # Context
310
+ @instance_context = nil
311
+ @params = {
312
+ 'sid' => sid || @properties['sid'],
313
+ }
314
+ end
315
+
316
+ ##
317
+ # Generate an instance context for the instance, the context is capable of
318
+ # performing various actions. All instance actions are proxied to the context
319
+ # @return [ServiceContext] ServiceContext for this ServiceInstance
320
+ def context
321
+ unless @instance_context
322
+ @instance_context = ServiceContext.new(
323
+ @version,
324
+ @params['sid'],
325
+ )
326
+ end
327
+ @instance_context
328
+ end
329
+
330
+ ##
331
+ # @return [String] A string that uniquely identifies this Service.
332
+ def sid
333
+ @properties['sid']
334
+ end
335
+
336
+ ##
337
+ # @return [String] Account Sid.
338
+ def account_sid
339
+ @properties['account_sid']
340
+ end
341
+
342
+ ##
343
+ # @return [String] Friendly name of the service
344
+ def name
345
+ @properties['name']
346
+ end
347
+
348
+ ##
349
+ # @return [String] Length of verification code. Valid values are 4-10
350
+ def code_length
351
+ @properties['code_length']
352
+ end
353
+
354
+ ##
355
+ # @return [Time] The date this Service was created
356
+ def date_created
357
+ @properties['date_created']
358
+ end
359
+
360
+ ##
361
+ # @return [Time] The date this Service was updated
362
+ def date_updated
363
+ @properties['date_updated']
364
+ end
365
+
366
+ ##
367
+ # @return [String] The url
368
+ def url
369
+ @properties['url']
370
+ end
371
+
372
+ ##
373
+ # @return [String] The links
374
+ def links
375
+ @properties['links']
376
+ end
377
+
378
+ ##
379
+ # Fetch a ServiceInstance
380
+ # @return [ServiceInstance] Fetched ServiceInstance
381
+ def fetch
382
+ context.fetch
383
+ end
384
+
385
+ ##
386
+ # Update the ServiceInstance
387
+ # @param [String] name A 1-64 character string with friendly name of service
388
+ # @param [String] code_length The length of the verification code to be generated.
389
+ # Must be an integer value between 4-10
390
+ # @return [ServiceInstance] Updated ServiceInstance
391
+ def update(name: :unset, code_length: :unset)
392
+ context.update(
393
+ name: name,
394
+ code_length: code_length,
395
+ )
396
+ end
397
+
398
+ ##
399
+ # Access the verifications
400
+ # @return [verifications] verifications
401
+ def verifications
402
+ context.verifications
403
+ end
404
+
405
+ ##
406
+ # Access the verification_checks
407
+ # @return [verification_checks] verification_checks
408
+ def verification_checks
409
+ context.verification_checks
410
+ end
411
+
412
+ ##
413
+ # Provide a user friendly representation
414
+ def to_s
415
+ values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
416
+ "<Twilio.Preview.AccSecurity.ServiceInstance #{values}>"
417
+ end
418
+
419
+ ##
420
+ # Provide a detailed, user friendly representation
421
+ def inspect
422
+ values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ")
423
+ "<Twilio.Preview.AccSecurity.ServiceInstance #{values}>"
424
+ end
425
+ end
426
+ end
427
+ end
428
+ end
429
+ end