twilio-ruby 5.14.1 → 5.15.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 (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