twilio-ruby 5.14.1 → 5.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +33 -0
  3. data/README.md +2 -2
  4. data/lib/twilio-ruby/rest/api/v2010/account/call/recording.rb +2 -1
  5. data/lib/twilio-ruby/rest/authy.rb +55 -0
  6. data/lib/twilio-ruby/rest/authy/v1.rb +59 -0
  7. data/lib/twilio-ruby/rest/authy/v1/form.rb +190 -0
  8. data/lib/twilio-ruby/rest/authy/v1/service.rb +378 -0
  9. data/lib/twilio-ruby/rest/authy/v1/service/entity.rb +372 -0
  10. data/lib/twilio-ruby/rest/authy/v1/service/entity/factor.rb +474 -0
  11. data/lib/twilio-ruby/rest/authy/v1/service/entity/factor/challenge.rb +405 -0
  12. data/lib/twilio-ruby/rest/autopilot.rb +47 -0
  13. data/lib/twilio-ruby/rest/autopilot/v1.rb +43 -0
  14. data/lib/twilio-ruby/rest/autopilot/v1/assistant.rb +606 -0
  15. data/lib/twilio-ruby/rest/autopilot/v1/assistant/defaults.rb +215 -0
  16. data/lib/twilio-ruby/rest/autopilot/v1/assistant/dialogue.rb +205 -0
  17. data/lib/twilio-ruby/rest/autopilot/v1/assistant/field_type.rb +417 -0
  18. data/lib/twilio-ruby/rest/autopilot/v1/assistant/field_type/field_value.rb +393 -0
  19. data/lib/twilio-ruby/rest/autopilot/v1/assistant/model_build.rb +390 -0
  20. data/lib/twilio-ruby/rest/autopilot/v1/assistant/query.rb +443 -0
  21. data/lib/twilio-ruby/rest/autopilot/v1/assistant/style_sheet.rb +215 -0
  22. data/lib/twilio-ruby/rest/{preview/understand/assistant/intent.rb → autopilot/v1/assistant/task.rb} +91 -84
  23. data/lib/twilio-ruby/rest/autopilot/v1/assistant/task/field.rb +377 -0
  24. data/lib/twilio-ruby/rest/autopilot/v1/assistant/task/sample.rb +442 -0
  25. data/lib/twilio-ruby/rest/autopilot/v1/assistant/task/task_actions.rb +244 -0
  26. data/lib/twilio-ruby/rest/{preview/understand/assistant/intent/intent_statistics.rb → autopilot/v1/assistant/task/task_statistics.rb} +49 -51
  27. data/lib/twilio-ruby/rest/chat/v1/service.rb +1 -1
  28. data/lib/twilio-ruby/rest/chat/v2/service/channel.rb +12 -6
  29. data/lib/twilio-ruby/rest/client.rb +14 -0
  30. data/lib/twilio-ruby/rest/ip_messaging/v1/service.rb +1 -1
  31. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel.rb +12 -6
  32. data/lib/twilio-ruby/rest/preview/understand.rb +2 -1
  33. data/lib/twilio-ruby/rest/preview/understand/assistant.rb +59 -29
  34. data/lib/twilio-ruby/rest/preview/understand/assistant/query.rb +17 -13
  35. data/lib/twilio-ruby/rest/preview/understand/assistant/style_sheet.rb +215 -0
  36. data/lib/twilio-ruby/rest/preview/understand/assistant/task.rb +505 -0
  37. data/lib/twilio-ruby/rest/preview/understand/assistant/{intent → task}/field.rb +25 -25
  38. data/lib/twilio-ruby/rest/preview/understand/assistant/{intent → task}/sample.rb +30 -30
  39. data/lib/twilio-ruby/rest/preview/understand/assistant/{intent/intent_actions.rb → task/task_actions.rb} +50 -54
  40. data/lib/twilio-ruby/rest/preview/understand/assistant/task/task_statistics.rb +224 -0
  41. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task_queue.rb +7 -7
  42. data/lib/twilio-ruby/rest/verify/v1/service.rb +45 -6
  43. data/lib/twilio-ruby/rest/verify/v1/service/verification.rb +9 -2
  44. data/lib/twilio-ruby/rest/wireless/v1/command.rb +32 -5
  45. data/lib/twilio-ruby/twiml/voice_response.rb +66 -5
  46. data/lib/twilio-ruby/version.rb +1 -1
  47. data/spec/integration/api/v2010/account/call/recording_spec.rb +3 -3
  48. data/spec/integration/api/v2010/account/conference/participant_spec.rb +42 -1
  49. data/spec/integration/api/v2010/account/conference/recording_spec.rb +2 -2
  50. data/spec/integration/authy/v1/form_spec.rb +48 -0
  51. data/spec/integration/authy/v1/service/entity/factor/challenge_spec.rb +267 -0
  52. data/spec/integration/authy/v1/service/entity/factor_spec.rb +269 -0
  53. data/spec/integration/authy/v1/service/entity_spec.rb +201 -0
  54. data/spec/integration/authy/v1/service_spec.rb +227 -0
  55. data/spec/integration/autopilot/v1/assistant/defaults_spec.rb +81 -0
  56. data/spec/integration/autopilot/v1/assistant/dialogue_spec.rb +47 -0
  57. data/spec/integration/autopilot/v1/assistant/field_type/field_value_spec.rb +210 -0
  58. data/spec/integration/autopilot/v1/assistant/field_type_spec.rb +246 -0
  59. data/spec/integration/autopilot/v1/assistant/model_build_spec.rb +241 -0
  60. data/spec/integration/autopilot/v1/assistant/query_spec.rb +306 -0
  61. data/spec/integration/autopilot/v1/assistant/style_sheet_spec.rb +81 -0
  62. data/spec/integration/autopilot/v1/assistant/task/field_spec.rb +207 -0
  63. data/spec/integration/autopilot/v1/assistant/task/sample_spec.rb +253 -0
  64. data/spec/integration/autopilot/v1/assistant/task/task_actions_spec.rb +87 -0
  65. data/spec/integration/autopilot/v1/assistant/task/task_statistics_spec.rb +50 -0
  66. data/spec/integration/autopilot/v1/assistant/task_spec.rb +262 -0
  67. data/spec/integration/autopilot/v1/assistant_spec.rb +270 -0
  68. data/spec/integration/preview/understand/assistant/query_spec.rb +8 -8
  69. data/spec/integration/preview/understand/assistant/style_sheet_spec.rb +81 -0
  70. data/spec/integration/preview/understand/assistant/{intent → task}/field_spec.rb +23 -23
  71. data/spec/integration/preview/understand/assistant/{intent → task}/sample_spec.rb +28 -28
  72. data/spec/integration/preview/understand/assistant/{intent/intent_actions_spec.rb → task/task_actions_spec.rb} +15 -15
  73. data/spec/integration/preview/understand/assistant/{intent/intent_statistics_spec.rb → task/task_statistics_spec.rb} +6 -6
  74. data/spec/integration/preview/understand/assistant/{intent_spec.rb → task_spec.rb} +53 -49
  75. data/spec/integration/preview/understand/assistant_spec.rb +12 -8
  76. data/spec/integration/taskrouter/v1/workspace/task_queue_spec.rb +3 -7
  77. data/spec/integration/verify/v1/service_spec.rb +30 -0
  78. data/spec/integration/wireless/v1/command_spec.rb +99 -2
  79. data/spec/twiml/voice_response_spec.rb +25 -2
  80. metadata +78 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 695b02619ce6b0eb12679c7f6b581834a3fd01cc
4
- data.tar.gz: 45c5a81aaf31343678d57c14f0029b7f742ad550
3
+ metadata.gz: 82c6b89bf22181ab4c74c1214738562fbfd45806
4
+ data.tar.gz: 711415d89893d32bc5c8d35c3e2431a96e047d34
5
5
  SHA512:
6
- metadata.gz: f71591f4762fefee517c5278de1d742f64b1e3a36e6de2c3ae3f7930d5779a4e49bda592fed71750b27dedea492bf290d79a0421936c85640160150ead8e18a1
7
- data.tar.gz: c7c9bf6c34747894d9372f152fb0f5c4f7eeeb05607f8f2af2600138150f4aee0b645ecd1889217d6508c7fbd59bc805cabd6a3bbbeae67fb23ee0d5be712bce
6
+ metadata.gz: 3bd5ca81977cc69f73e9bfe379c17a569e6a8ef07ccdf3e5c3b0a9c1621dba9a91b4f9eefc4b29f8ea98e67fe83dad8b5d1a9eaf42ab230707646cc5a81422f2
7
+ data.tar.gz: f04fdf23b7966d7dcdb33ad324d23087a1bdff8751049328094e734737c08b0e7635b03ce9b296ae853a8024ba95de196b29df598c17ba22b2cc5e98f9b071fe
data/CHANGES.md CHANGED
@@ -1,6 +1,39 @@
1
1
  twilio-ruby changelog
2
2
  =====================
3
3
 
4
+ [2018-10-15] Version 5.15.0
5
+ ----------------------------
6
+ **Library**
7
+ - PR #428: Fix custom param tests. Thanks to @ryan-rowland!
8
+
9
+ **Api**
10
+ - Add `coaching` and `call_sid_to_coach` to participant properties, create and update requests.
11
+
12
+ **Authy**
13
+ - Set public library visibility, and added PII stanza
14
+ - Dropped support for `FactorType` param given new Factor prefixes **(breaking change)**
15
+ - Supported `DELETE` actions for Authy resources
16
+ - Move Authy Services resources to `authy` subdomain
17
+
18
+ **Autopilot**
19
+ - Introduce `autopilot` subdomain with all resources from `preview.understand`
20
+
21
+ **Preview**
22
+ - Renamed Understand intent to task **(breaking change)**
23
+ - Deprecated Authy endpoints from `preview` to `authy` subdomain
24
+
25
+ **Taskrouter**
26
+ - Allow TaskQueue ReservationActivitySid and AssignmentActivitySid to not be configured for MultiTask Workspaces
27
+
28
+ **Verify**
29
+ - Add `LookupEnabled` optional parameter on Service resource creation or update.
30
+ - Add `SendDigits` optional parameter on Verification creation.
31
+ - Add delete action on Service resourse.
32
+
33
+ **Twiml**
34
+ - Add custom parameters to TwiML `Client` noun and renamed the optional `name` field to `identity`. This is a breaking change in Ruby, and applications will need to transition from `dial.client ''` and `dial.client 'alice'` formats to `dial.client` and `dial.client(identity: alice)` formats. **(breaking change)**
35
+
36
+
4
37
  [2018-10-04] Version 5.14.1
5
38
  ----------------------------
6
39
  **Twiml**
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.14.1'
30
+ gem 'twilio-ruby', '~> 5.15.0'
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.14.1
36
+ gem install twilio-ruby -v 5.15.0
37
37
  ```
38
38
 
39
39
  To build and install the development branch yourself from the latest source:
@@ -39,7 +39,8 @@ module Twilio
39
39
  # values separate them with a space. Defaults to `completed`.
40
40
  # @param [String] recording_status_callback The URL which Twilio will make its GET
41
41
  # or POST request to for the recording events specified in parameter
42
- # RecordingStatusCallbackEvent.
42
+ # RecordingStatusCallbackEvent. See [RecordingStatusCallback
43
+ # parameters](https://www.twilio.com/docs/voice/api/recording#recordingstatuscallback) for more details.
43
44
  # @param [String] recording_status_callback_method The HTTP method Twilio should
44
45
  # use when making a request to the RecordingStatusCallback URL. Possible values:
45
46
  # `GET`, `POST`. Defaults to `POST`.
@@ -0,0 +1,55 @@
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 Authy < Domain
12
+ ##
13
+ # Initialize the Authy Domain
14
+ def initialize(twilio)
15
+ super
16
+
17
+ @base_url = 'https://authy.twilio.com'
18
+ @host = 'authy.twilio.com'
19
+ @port = 443
20
+
21
+ # Versions
22
+ @v1 = nil
23
+ end
24
+
25
+ ##
26
+ # Version v1 of authy
27
+ def v1
28
+ @v1 ||= V1.new self
29
+ end
30
+
31
+ ##
32
+ # @param [String] sid A 34 character string that uniquely identifies this Service.
33
+ # @return [Twilio::REST::Authy::V1::ServiceInstance] if sid was passed.
34
+ # @return [Twilio::REST::Authy::V1::ServiceList]
35
+ def services(sid=:unset)
36
+ self.v1.services(sid)
37
+ end
38
+
39
+ ##
40
+ # @param [form.FormType] form_type The Form Type of this Form. One of
41
+ # `form-app-push`, `form-sms` or `form-totp`.
42
+ # @return [Twilio::REST::Authy::V1::FormInstance] if form_type was passed.
43
+ # @return [Twilio::REST::Authy::V1::FormList]
44
+ def forms(form_type=:unset)
45
+ self.v1.forms(form_type)
46
+ end
47
+
48
+ ##
49
+ # Provide a user friendly representation
50
+ def to_s
51
+ '#<Twilio::REST::Authy>'
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,59 @@
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 Authy
12
+ class V1 < Version
13
+ ##
14
+ # Initialize the V1 version of Authy
15
+ def initialize(domain)
16
+ super
17
+ @version = 'v1'
18
+ @services = nil
19
+ @forms = nil
20
+ end
21
+
22
+ ##
23
+ # @param [String] sid A 34 character string that uniquely identifies this Service.
24
+ # @return [Twilio::REST::Authy::V1::ServiceContext] if sid was passed.
25
+ # @return [Twilio::REST::Authy::V1::ServiceList]
26
+ def services(sid=:unset)
27
+ if sid.nil?
28
+ raise ArgumentError, 'sid cannot be nil'
29
+ elsif sid == :unset
30
+ @services ||= ServiceList.new self
31
+ else
32
+ ServiceContext.new(self, sid)
33
+ end
34
+ end
35
+
36
+ ##
37
+ # @param [form.FormType] form_type The Form Type of this Form. One of
38
+ # `form-app-push`, `form-sms` or `form-totp`.
39
+ # @return [Twilio::REST::Authy::V1::FormContext] if form_type was passed.
40
+ # @return [Twilio::REST::Authy::V1::FormList]
41
+ def forms(form_type=:unset)
42
+ if form_type.nil?
43
+ raise ArgumentError, 'form_type cannot be nil'
44
+ elsif form_type == :unset
45
+ @forms ||= FormList.new self
46
+ else
47
+ FormContext.new(self, form_type)
48
+ end
49
+ end
50
+
51
+ ##
52
+ # Provide a user friendly representation
53
+ def to_s
54
+ '<Twilio::REST::Authy::V1>'
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,190 @@
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 Authy < 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 FormList < ListResource
16
+ ##
17
+ # Initialize the FormList
18
+ # @param [Version] version Version that contains the resource
19
+ # @return [FormList] FormList
20
+ def initialize(version)
21
+ super(version)
22
+
23
+ # Path Solution
24
+ @solution = {}
25
+ end
26
+
27
+ ##
28
+ # Provide a user friendly representation
29
+ def to_s
30
+ '#<Twilio.Authy.V1.FormList>'
31
+ end
32
+ end
33
+
34
+ ##
35
+ # 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.
36
+ class FormPage < Page
37
+ ##
38
+ # Initialize the FormPage
39
+ # @param [Version] version Version that contains the resource
40
+ # @param [Response] response Response from the API
41
+ # @param [Hash] solution Path solution for the resource
42
+ # @return [FormPage] FormPage
43
+ def initialize(version, response, solution)
44
+ super(version, response)
45
+
46
+ # Path Solution
47
+ @solution = solution
48
+ end
49
+
50
+ ##
51
+ # Build an instance of FormInstance
52
+ # @param [Hash] payload Payload response from the API
53
+ # @return [FormInstance] FormInstance
54
+ def get_instance(payload)
55
+ FormInstance.new(@version, payload, )
56
+ end
57
+
58
+ ##
59
+ # Provide a user friendly representation
60
+ def to_s
61
+ '<Twilio.Authy.V1.FormPage>'
62
+ end
63
+ end
64
+
65
+ ##
66
+ # 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.
67
+ class FormContext < InstanceContext
68
+ ##
69
+ # Initialize the FormContext
70
+ # @param [Version] version Version that contains the resource
71
+ # @param [form.FormType] form_type The Form Type of this Form. One of
72
+ # `form-app-push`, `form-sms` or `form-totp`.
73
+ # @return [FormContext] FormContext
74
+ def initialize(version, form_type)
75
+ super(version)
76
+
77
+ # Path Solution
78
+ @solution = {form_type: form_type, }
79
+ @uri = "/Forms/#{@solution[:form_type]}"
80
+ end
81
+
82
+ ##
83
+ # Fetch a FormInstance
84
+ # @return [FormInstance] Fetched FormInstance
85
+ def fetch
86
+ params = Twilio::Values.of({})
87
+
88
+ payload = @version.fetch(
89
+ 'GET',
90
+ @uri,
91
+ params,
92
+ )
93
+
94
+ FormInstance.new(@version, payload, form_type: @solution[:form_type], )
95
+ end
96
+
97
+ ##
98
+ # Provide a user friendly representation
99
+ def to_s
100
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
101
+ "#<Twilio.Authy.V1.FormContext #{context}>"
102
+ end
103
+ end
104
+
105
+ ##
106
+ # 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.
107
+ class FormInstance < InstanceResource
108
+ ##
109
+ # Initialize the FormInstance
110
+ # @param [Version] version Version that contains the resource
111
+ # @param [Hash] payload payload that contains response from Twilio
112
+ # @param [form.FormType] form_type The Form Type of this Form. One of
113
+ # `form-app-push`, `form-sms` or `form-totp`.
114
+ # @return [FormInstance] FormInstance
115
+ def initialize(version, payload, form_type: nil)
116
+ super(version)
117
+
118
+ # Marshaled Properties
119
+ @properties = {
120
+ 'form_type' => payload['form_type'],
121
+ 'forms' => payload['forms'],
122
+ 'form_meta' => payload['form_meta'],
123
+ 'url' => payload['url'],
124
+ }
125
+
126
+ # Context
127
+ @instance_context = nil
128
+ @params = {'form_type' => form_type || @properties['form_type'], }
129
+ end
130
+
131
+ ##
132
+ # Generate an instance context for the instance, the context is capable of
133
+ # performing various actions. All instance actions are proxied to the context
134
+ # @return [FormContext] FormContext for this FormInstance
135
+ def context
136
+ unless @instance_context
137
+ @instance_context = FormContext.new(@version, @params['form_type'], )
138
+ end
139
+ @instance_context
140
+ end
141
+
142
+ ##
143
+ # @return [form.FormType] The Form Type of this Form
144
+ def form_type
145
+ @properties['form_type']
146
+ end
147
+
148
+ ##
149
+ # @return [Hash] Object that contains the available forms for this form type.
150
+ def forms
151
+ @properties['forms']
152
+ end
153
+
154
+ ##
155
+ # @return [Hash] Additional information for the available forms for this form type.
156
+ def form_meta
157
+ @properties['form_meta']
158
+ end
159
+
160
+ ##
161
+ # @return [String] The URL to access the forms for this form type.
162
+ def url
163
+ @properties['url']
164
+ end
165
+
166
+ ##
167
+ # Fetch a FormInstance
168
+ # @return [FormInstance] Fetched FormInstance
169
+ def fetch
170
+ context.fetch
171
+ end
172
+
173
+ ##
174
+ # Provide a user friendly representation
175
+ def to_s
176
+ values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
177
+ "<Twilio.Authy.V1.FormInstance #{values}>"
178
+ end
179
+
180
+ ##
181
+ # Provide a detailed, user friendly representation
182
+ def inspect
183
+ values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ")
184
+ "<Twilio.Authy.V1.FormInstance #{values}>"
185
+ end
186
+ end
187
+ end
188
+ end
189
+ end
190
+ 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 Authy < 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 ServiceList < ListResource
16
+ ##
17
+ # Initialize the ServiceList
18
+ # @param [Version] version Version that contains the resource
19
+ # @return [ServiceList] ServiceList
20
+ def initialize(version)
21
+ super(version)
22
+
23
+ # Path Solution
24
+ @solution = {}
25
+ @uri = "/Services"
26
+ end
27
+
28
+ ##
29
+ # Retrieve a single page of ServiceInstance records from the API.
30
+ # Request is executed immediately.
31
+ # @param [String] friendly_name A human readable description of this resource, up
32
+ # to 64 characters.
33
+ # @return [ServiceInstance] Newly created ServiceInstance
34
+ def create(friendly_name: nil)
35
+ data = Twilio::Values.of({'FriendlyName' => friendly_name, })
36
+
37
+ payload = @version.create(
38
+ 'POST',
39
+ @uri,
40
+ data: data
41
+ )
42
+
43
+ ServiceInstance.new(@version, payload, )
44
+ end
45
+
46
+ ##
47
+ # Lists ServiceInstance records from the API as a list.
48
+ # Unlike stream(), this operation is eager and will load `limit` records into
49
+ # memory before returning.
50
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
51
+ # guarantees to never return more than limit. Default is no limit
52
+ # @param [Integer] page_size Number of records to fetch per request, when
53
+ # not set will use the default value of 50 records. If no page_size is defined
54
+ # but a limit is defined, stream() will attempt to read the limit with the most
55
+ # efficient page size, i.e. min(limit, 1000)
56
+ # @return [Array] Array of up to limit results
57
+ def list(limit: nil, page_size: nil)
58
+ self.stream(limit: limit, page_size: page_size).entries
59
+ end
60
+
61
+ ##
62
+ # Streams ServiceInstance records from the API as an Enumerable.
63
+ # This operation lazily loads records as efficiently as possible until the limit
64
+ # is reached.
65
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
66
+ # guarantees to never return more than limit. Default is no limit.
67
+ # @param [Integer] page_size Number of records to fetch per request, when
68
+ # not set will use the default value of 50 records. If no page_size is defined
69
+ # but a limit is defined, stream() will attempt to read the limit with the most
70
+ # efficient page size, i.e. min(limit, 1000)
71
+ # @return [Enumerable] Enumerable that will yield up to limit results
72
+ def stream(limit: nil, page_size: nil)
73
+ limits = @version.read_limits(limit, page_size)
74
+
75
+ page = self.page(page_size: limits[:page_size], )
76
+
77
+ @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit])
78
+ end
79
+
80
+ ##
81
+ # When passed a block, yields ServiceInstance records from the API.
82
+ # This operation lazily loads records as efficiently as possible until the limit
83
+ # is reached.
84
+ def each
85
+ limits = @version.read_limits
86
+
87
+ page = self.page(page_size: limits[:page_size], )
88
+
89
+ @version.stream(page,
90
+ limit: limits[:limit],
91
+ page_limit: limits[:page_limit]).each {|x| yield x}
92
+ end
93
+
94
+ ##
95
+ # Retrieve a single page of ServiceInstance records from the API.
96
+ # Request is executed immediately.
97
+ # @param [String] page_token PageToken provided by the API
98
+ # @param [Integer] page_number Page Number, this value is simply for client state
99
+ # @param [Integer] page_size Number of records to return, defaults to 50
100
+ # @return [Page] Page of ServiceInstance
101
+ def page(page_token: :unset, page_number: :unset, page_size: :unset)
102
+ params = Twilio::Values.of({
103
+ 'PageToken' => page_token,
104
+ 'Page' => page_number,
105
+ 'PageSize' => page_size,
106
+ })
107
+ response = @version.page(
108
+ 'GET',
109
+ @uri,
110
+ params
111
+ )
112
+ ServicePage.new(@version, response, @solution)
113
+ end
114
+
115
+ ##
116
+ # Retrieve a single page of ServiceInstance records from the API.
117
+ # Request is executed immediately.
118
+ # @param [String] target_url API-generated URL for the requested results page
119
+ # @return [Page] Page of ServiceInstance
120
+ def get_page(target_url)
121
+ response = @version.domain.request(
122
+ 'GET',
123
+ target_url
124
+ )
125
+ ServicePage.new(@version, response, @solution)
126
+ end
127
+
128
+ ##
129
+ # Provide a user friendly representation
130
+ def to_s
131
+ '#<Twilio.Authy.V1.ServiceList>'
132
+ end
133
+ end
134
+
135
+ ##
136
+ # 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.
137
+ class ServicePage < Page
138
+ ##
139
+ # Initialize the ServicePage
140
+ # @param [Version] version Version that contains the resource
141
+ # @param [Response] response Response from the API
142
+ # @param [Hash] solution Path solution for the resource
143
+ # @return [ServicePage] ServicePage
144
+ def initialize(version, response, solution)
145
+ super(version, response)
146
+
147
+ # Path Solution
148
+ @solution = solution
149
+ end
150
+
151
+ ##
152
+ # Build an instance of ServiceInstance
153
+ # @param [Hash] payload Payload response from the API
154
+ # @return [ServiceInstance] ServiceInstance
155
+ def get_instance(payload)
156
+ ServiceInstance.new(@version, payload, )
157
+ end
158
+
159
+ ##
160
+ # Provide a user friendly representation
161
+ def to_s
162
+ '<Twilio.Authy.V1.ServicePage>'
163
+ end
164
+ end
165
+
166
+ ##
167
+ # 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.
168
+ class ServiceContext < InstanceContext
169
+ ##
170
+ # Initialize the ServiceContext
171
+ # @param [Version] version Version that contains the resource
172
+ # @param [String] sid A 34 character string that uniquely identifies this Service.
173
+ # @return [ServiceContext] ServiceContext
174
+ def initialize(version, sid)
175
+ super(version)
176
+
177
+ # Path Solution
178
+ @solution = {sid: sid, }
179
+ @uri = "/Services/#{@solution[:sid]}"
180
+
181
+ # Dependents
182
+ @entities = nil
183
+ end
184
+
185
+ ##
186
+ # Deletes the ServiceInstance
187
+ # @return [Boolean] true if delete succeeds, true otherwise
188
+ def delete
189
+ @version.delete('delete', @uri)
190
+ end
191
+
192
+ ##
193
+ # Fetch a ServiceInstance
194
+ # @return [ServiceInstance] Fetched ServiceInstance
195
+ def fetch
196
+ params = Twilio::Values.of({})
197
+
198
+ payload = @version.fetch(
199
+ 'GET',
200
+ @uri,
201
+ params,
202
+ )
203
+
204
+ ServiceInstance.new(@version, payload, sid: @solution[:sid], )
205
+ end
206
+
207
+ ##
208
+ # Update the ServiceInstance
209
+ # @param [String] friendly_name A human readable description of this resource, up
210
+ # to 64 characters.
211
+ # @return [ServiceInstance] Updated ServiceInstance
212
+ def update(friendly_name: :unset)
213
+ data = Twilio::Values.of({'FriendlyName' => friendly_name, })
214
+
215
+ payload = @version.update(
216
+ 'POST',
217
+ @uri,
218
+ data: data,
219
+ )
220
+
221
+ ServiceInstance.new(@version, payload, sid: @solution[:sid], )
222
+ end
223
+
224
+ ##
225
+ # Access the entities
226
+ # @return [EntityList]
227
+ # @return [EntityContext] if identity was passed.
228
+ def entities(identity=:unset)
229
+ raise ArgumentError, 'identity cannot be nil' if identity.nil?
230
+
231
+ if identity != :unset
232
+ return EntityContext.new(@version, @solution[:sid], identity, )
233
+ end
234
+
235
+ unless @entities
236
+ @entities = EntityList.new(@version, service_sid: @solution[:sid], )
237
+ end
238
+
239
+ @entities
240
+ end
241
+
242
+ ##
243
+ # Provide a user friendly representation
244
+ def to_s
245
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
246
+ "#<Twilio.Authy.V1.ServiceContext #{context}>"
247
+ end
248
+ end
249
+
250
+ ##
251
+ # 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.
252
+ class ServiceInstance < InstanceResource
253
+ ##
254
+ # Initialize the ServiceInstance
255
+ # @param [Version] version Version that contains the resource
256
+ # @param [Hash] payload payload that contains response from Twilio
257
+ # @param [String] sid A 34 character string that uniquely identifies this Service.
258
+ # @return [ServiceInstance] ServiceInstance
259
+ def initialize(version, payload, sid: nil)
260
+ super(version)
261
+
262
+ # Marshaled Properties
263
+ @properties = {
264
+ 'sid' => payload['sid'],
265
+ 'friendly_name' => payload['friendly_name'],
266
+ 'account_sid' => payload['account_sid'],
267
+ 'date_created' => Twilio.deserialize_iso8601_datetime(payload['date_created']),
268
+ 'date_updated' => Twilio.deserialize_iso8601_datetime(payload['date_updated']),
269
+ 'url' => payload['url'],
270
+ 'links' => payload['links'],
271
+ }
272
+
273
+ # Context
274
+ @instance_context = nil
275
+ @params = {'sid' => sid || @properties['sid'], }
276
+ end
277
+
278
+ ##
279
+ # Generate an instance context for the instance, the context is capable of
280
+ # performing various actions. All instance actions are proxied to the context
281
+ # @return [ServiceContext] ServiceContext for this ServiceInstance
282
+ def context
283
+ unless @instance_context
284
+ @instance_context = ServiceContext.new(@version, @params['sid'], )
285
+ end
286
+ @instance_context
287
+ end
288
+
289
+ ##
290
+ # @return [String] A string that uniquely identifies this Service.
291
+ def sid
292
+ @properties['sid']
293
+ end
294
+
295
+ ##
296
+ # @return [String] A human readable description of this resource.
297
+ def friendly_name
298
+ @properties['friendly_name']
299
+ end
300
+
301
+ ##
302
+ # @return [String] Account Sid.
303
+ def account_sid
304
+ @properties['account_sid']
305
+ end
306
+
307
+ ##
308
+ # @return [Time] The date this Service was created
309
+ def date_created
310
+ @properties['date_created']
311
+ end
312
+
313
+ ##
314
+ # @return [Time] The date this Service was updated
315
+ def date_updated
316
+ @properties['date_updated']
317
+ end
318
+
319
+ ##
320
+ # @return [String] The URL of this resource.
321
+ def url
322
+ @properties['url']
323
+ end
324
+
325
+ ##
326
+ # @return [String] Nested resource URLs.
327
+ def links
328
+ @properties['links']
329
+ end
330
+
331
+ ##
332
+ # Deletes the ServiceInstance
333
+ # @return [Boolean] true if delete succeeds, true otherwise
334
+ def delete
335
+ context.delete
336
+ end
337
+
338
+ ##
339
+ # Fetch a ServiceInstance
340
+ # @return [ServiceInstance] Fetched ServiceInstance
341
+ def fetch
342
+ context.fetch
343
+ end
344
+
345
+ ##
346
+ # Update the ServiceInstance
347
+ # @param [String] friendly_name A human readable description of this resource, up
348
+ # to 64 characters.
349
+ # @return [ServiceInstance] Updated ServiceInstance
350
+ def update(friendly_name: :unset)
351
+ context.update(friendly_name: friendly_name, )
352
+ end
353
+
354
+ ##
355
+ # Access the entities
356
+ # @return [entities] entities
357
+ def entities
358
+ context.entities
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.Authy.V1.ServiceInstance #{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.Authy.V1.ServiceInstance #{values}>"
373
+ end
374
+ end
375
+ end
376
+ end
377
+ end
378
+ end