twilio-ruby 5.40.1 → 5.40.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +27 -0
  3. data/README.md +2 -2
  4. data/lib/twilio-ruby/framework/version.rb +2 -7
  5. data/lib/twilio-ruby/rest/conversations.rb +52 -0
  6. data/lib/twilio-ruby/rest/conversations/v1.rb +88 -1
  7. data/lib/twilio-ruby/rest/conversations/v1/configuration.rb +258 -0
  8. data/lib/twilio-ruby/rest/conversations/v1/conversation.rb +15 -4
  9. data/lib/twilio-ruby/rest/conversations/v1/conversation/message/delivery_receipt.rb +19 -10
  10. data/lib/twilio-ruby/rest/conversations/v1/credential.rb +427 -0
  11. data/lib/twilio-ruby/rest/conversations/v1/notification.rb +310 -0
  12. data/lib/twilio-ruby/rest/conversations/v1/role.rb +372 -0
  13. data/lib/twilio-ruby/rest/conversations/v1/service.rb +442 -0
  14. data/lib/twilio-ruby/rest/conversations/v1/service/binding.rb +385 -0
  15. data/lib/twilio-ruby/rest/conversations/v1/service/configuration.rb +259 -0
  16. data/lib/twilio-ruby/rest/conversations/v1/service/conversation.rb +586 -0
  17. data/lib/twilio-ruby/rest/conversations/v1/service/conversation/message.rb +546 -0
  18. data/lib/twilio-ruby/rest/conversations/v1/service/conversation/message/delivery_receipt.rb +388 -0
  19. data/lib/twilio-ruby/rest/conversations/v1/service/conversation/participant.rb +513 -0
  20. data/lib/twilio-ruby/rest/conversations/v1/service/conversation/webhook.rb +454 -0
  21. data/lib/twilio-ruby/rest/conversations/v1/service/role.rb +393 -0
  22. data/lib/twilio-ruby/rest/conversations/v1/service/user.rb +419 -0
  23. data/lib/twilio-ruby/rest/conversations/v1/user.rb +398 -0
  24. data/lib/twilio-ruby/rest/events.rb +8 -0
  25. data/lib/twilio-ruby/rest/events/v1.rb +15 -0
  26. data/lib/twilio-ruby/rest/events/v1/event_type.rb +291 -0
  27. data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance.rb +2 -2
  28. data/lib/twilio-ruby/rest/numbers/v2/regulatory_compliance/supporting_document.rb +18 -4
  29. data/lib/twilio-ruby/rest/proxy/v1/service/session.rb +27 -24
  30. data/lib/twilio-ruby/rest/proxy/v1/service/session/participant.rb +12 -11
  31. data/lib/twilio-ruby/rest/serverless/v1/service.rb +13 -13
  32. data/lib/twilio-ruby/rest/serverless/v1/service/asset.rb +6 -6
  33. data/lib/twilio-ruby/rest/serverless/v1/service/asset/asset_version.rb +5 -5
  34. data/lib/twilio-ruby/rest/serverless/v1/service/build.rb +8 -8
  35. data/lib/twilio-ruby/rest/serverless/v1/service/environment.rb +6 -8
  36. data/lib/twilio-ruby/rest/serverless/v1/service/environment/deployment.rb +8 -8
  37. data/lib/twilio-ruby/rest/serverless/v1/service/environment/variable.rb +14 -14
  38. data/lib/twilio-ruby/rest/serverless/v1/service/function.rb +4 -4
  39. data/lib/twilio-ruby/rest/serverless/v1/service/function/function_version.rb +7 -7
  40. data/lib/twilio-ruby/rest/serverless/v1/service/function/function_version/function_version_content.rb +1 -1
  41. data/lib/twilio-ruby/rest/supersim/v1/sim.rb +17 -7
  42. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/activity.rb +2 -1
  43. data/lib/twilio-ruby/version.rb +1 -1
  44. data/spec/framework/version_spec.rb +42 -0
  45. data/spec/holodeck/holodeck.rb +3 -3
  46. data/spec/integration/conversations/v1/configuration_spec.rb +85 -0
  47. data/spec/integration/conversations/v1/conversation/message/delivery_receipt_spec.rb +4 -0
  48. data/spec/integration/conversations/v1/conversation/participant_spec.rb +6 -6
  49. data/spec/integration/conversations/v1/conversation_spec.rb +5 -0
  50. data/spec/integration/conversations/v1/credential_spec.rb +219 -0
  51. data/spec/integration/conversations/v1/notification_spec.rb +107 -0
  52. data/spec/integration/conversations/v1/role_spec.rb +249 -0
  53. data/spec/integration/conversations/v1/service/binding_spec.rb +166 -0
  54. data/spec/integration/conversations/v1/service/configuration_spec.rb +87 -0
  55. data/spec/integration/conversations/v1/service/conversation/message/delivery_receipt_spec.rb +144 -0
  56. data/spec/integration/conversations/v1/service/conversation/message_spec.rb +429 -0
  57. data/spec/integration/conversations/v1/service/conversation/participant_spec.rb +407 -0
  58. data/spec/integration/conversations/v1/service/conversation/webhook_spec.rb +299 -0
  59. data/spec/integration/conversations/v1/service/conversation_spec.rb +289 -0
  60. data/spec/integration/conversations/v1/service/role_spec.rb +260 -0
  61. data/spec/integration/conversations/v1/service/user_spec.rb +230 -0
  62. data/spec/integration/conversations/v1/service_spec.rb +174 -0
  63. data/spec/integration/conversations/v1/user_spec.rb +220 -0
  64. data/spec/integration/events/v1/event_type_spec.rb +133 -0
  65. data/spec/integration/numbers/v2/regulatory_compliance/supporting_document_spec.rb +27 -0
  66. data/spec/integration/supersim/v1/sim_spec.rb +23 -0
  67. metadata +50 -2
@@ -29,6 +29,9 @@ module Twilio
29
29
  # Create the ConversationInstance
30
30
  # @param [String] friendly_name The human-readable name of this conversation,
31
31
  # limited to 256 characters. Optional.
32
+ # @param [String] unique_name An application-defined string that uniquely
33
+ # identifies the resource. It can be used to address the resource in place of the
34
+ # resource's `sid` in the URL.
32
35
  # @param [Time] date_created The date that this resource was created.
33
36
  # @param [Time] date_updated The date that this resource was last updated.
34
37
  # @param [String] messaging_service_sid The unique id of the [SMS
@@ -47,9 +50,10 @@ module Twilio
47
50
  # @param [conversation.WebhookEnabledType] x_twilio_webhook_enabled The
48
51
  # X-Twilio-Webhook-Enabled HTTP request header
49
52
  # @return [ConversationInstance] Created ConversationInstance
50
- def create(friendly_name: :unset, date_created: :unset, date_updated: :unset, messaging_service_sid: :unset, attributes: :unset, state: :unset, timers_inactive: :unset, timers_closed: :unset, x_twilio_webhook_enabled: :unset)
53
+ def create(friendly_name: :unset, unique_name: :unset, date_created: :unset, date_updated: :unset, messaging_service_sid: :unset, attributes: :unset, state: :unset, timers_inactive: :unset, timers_closed: :unset, x_twilio_webhook_enabled: :unset)
51
54
  data = Twilio::Values.of({
52
55
  'FriendlyName' => friendly_name,
56
+ 'UniqueName' => unique_name,
53
57
  'DateCreated' => Twilio.serialize_iso8601_datetime(date_created),
54
58
  'DateUpdated' => Twilio.serialize_iso8601_datetime(date_updated),
55
59
  'MessagingServiceSid' => messaging_service_sid,
@@ -190,7 +194,7 @@ module Twilio
190
194
  # Initialize the ConversationContext
191
195
  # @param [Version] version Version that contains the resource
192
196
  # @param [String] sid A 34 character string that uniquely identifies this
193
- # resource.
197
+ # resource. Can also be the `unique_name` of the Conversation.
194
198
  # @return [ConversationContext] ConversationContext
195
199
  def initialize(version, sid)
196
200
  super(version)
@@ -342,7 +346,7 @@ module Twilio
342
346
  # @param [Version] version Version that contains the resource
343
347
  # @param [Hash] payload payload that contains response from Twilio
344
348
  # @param [String] sid A 34 character string that uniquely identifies this
345
- # resource.
349
+ # resource. Can also be the `unique_name` of the Conversation.
346
350
  # @return [ConversationInstance] ConversationInstance
347
351
  def initialize(version, payload, sid: nil)
348
352
  super(version)
@@ -354,6 +358,7 @@ module Twilio
354
358
  'messaging_service_sid' => payload['messaging_service_sid'],
355
359
  'sid' => payload['sid'],
356
360
  'friendly_name' => payload['friendly_name'],
361
+ 'unique_name' => payload['unique_name'],
357
362
  'attributes' => payload['attributes'],
358
363
  'state' => payload['state'],
359
364
  'date_created' => Twilio.deserialize_iso8601_datetime(payload['date_created']),
@@ -409,6 +414,12 @@ module Twilio
409
414
  @properties['friendly_name']
410
415
  end
411
416
 
417
+ ##
418
+ # @return [String] An application-defined string that uniquely identifies the resource
419
+ def unique_name
420
+ @properties['unique_name']
421
+ end
422
+
412
423
  ##
413
424
  # @return [String] An optional string metadata field you can use to store any data you wish.
414
425
  def attributes
@@ -446,7 +457,7 @@ module Twilio
446
457
  end
447
458
 
448
459
  ##
449
- # @return [String] Absolute URLs to access the Participants of this Conversation.
460
+ # @return [String] Absolute URLs to access the Participants, Messages and Webhooks of this Conversation.
450
461
  def links
451
462
  @properties['links']
452
463
  end
@@ -18,7 +18,8 @@ module Twilio
18
18
  ##
19
19
  # Initialize the DeliveryReceiptList
20
20
  # @param [Version] version Version that contains the resource
21
- # @param [String] conversation_sid The conversation_sid
21
+ # @param [String] conversation_sid The unique id of the
22
+ # [Conversation](https://www.twilio.com/docs/conversations/api/conversation-resource) for this message.
22
23
  # @param [String] message_sid The sid of the message within a
23
24
  # [Conversation](https://www.twilio.com/docs/conversations/api/conversation-resource) the delivery receipt belongs to
24
25
  # @return [DeliveryReceiptList] DeliveryReceiptList
@@ -162,7 +163,7 @@ module Twilio
162
163
  # @param [String] conversation_sid The unique id of the
163
164
  # [Conversation](https://www.twilio.com/docs/conversations/api/conversation-resource) for this message.
164
165
  # @param [String] message_sid The sid of the message within a
165
- # [Conversation](https://www.twilio.com/docs/conversations/api/conversation-resource) the delivery receipt belongs to
166
+ # [Conversation](https://www.twilio.com/docs/conversations/api/conversation-resource) the delivery receipt belongs to.
166
167
  # @param [String] sid A 34 character string that uniquely identifies this
167
168
  # resource.
168
169
  # @return [DeliveryReceiptContext] DeliveryReceiptContext
@@ -211,7 +212,8 @@ module Twilio
211
212
  # Initialize the DeliveryReceiptInstance
212
213
  # @param [Version] version Version that contains the resource
213
214
  # @param [Hash] payload payload that contains response from Twilio
214
- # @param [String] conversation_sid The conversation_sid
215
+ # @param [String] conversation_sid The unique id of the
216
+ # [Conversation](https://www.twilio.com/docs/conversations/api/conversation-resource) for this message.
215
217
  # @param [String] message_sid The sid of the message within a
216
218
  # [Conversation](https://www.twilio.com/docs/conversations/api/conversation-resource) the delivery receipt belongs to
217
219
  # @param [String] sid A 34 character string that uniquely identifies this
@@ -222,9 +224,10 @@ module Twilio
222
224
 
223
225
  # Marshaled Properties
224
226
  @properties = {
227
+ 'account_sid' => payload['account_sid'],
228
+ 'conversation_sid' => payload['conversation_sid'],
225
229
  'sid' => payload['sid'],
226
230
  'message_sid' => payload['message_sid'],
227
- 'conversation_sid' => payload['conversation_sid'],
228
231
  'channel_message_sid' => payload['channel_message_sid'],
229
232
  'participant_sid' => payload['participant_sid'],
230
233
  'status' => payload['status'],
@@ -259,6 +262,18 @@ module Twilio
259
262
  @instance_context
260
263
  end
261
264
 
265
+ ##
266
+ # @return [String] The unique id of the Account responsible for this participant.
267
+ def account_sid
268
+ @properties['account_sid']
269
+ end
270
+
271
+ ##
272
+ # @return [String] The unique id of the Conversation for this message.
273
+ def conversation_sid
274
+ @properties['conversation_sid']
275
+ end
276
+
262
277
  ##
263
278
  # @return [String] A 34 character string that uniquely identifies this resource.
264
279
  def sid
@@ -271,12 +286,6 @@ module Twilio
271
286
  @properties['message_sid']
272
287
  end
273
288
 
274
- ##
275
- # @return [String] The conversation_sid
276
- def conversation_sid
277
- @properties['conversation_sid']
278
- end
279
-
280
289
  ##
281
290
  # @return [String] A messaging channel-specific identifier for the message delivered to participant
282
291
  def channel_message_sid
@@ -0,0 +1,427 @@
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 Conversations < Domain
12
+ class V1 < Version
13
+ ##
14
+ # PLEASE NOTE that this class contains beta products that are subject to change. Use them with caution.
15
+ class CredentialList < ListResource
16
+ ##
17
+ # Initialize the CredentialList
18
+ # @param [Version] version Version that contains the resource
19
+ # @return [CredentialList] CredentialList
20
+ def initialize(version)
21
+ super(version)
22
+
23
+ # Path Solution
24
+ @solution = {}
25
+ @uri = "/Credentials"
26
+ end
27
+
28
+ ##
29
+ # Create the CredentialInstance
30
+ # @param [credential.PushType] type The type of push-notification service the
31
+ # credential is for. Can be: `fcm`, `gcm`, or `apn`.
32
+ # @param [String] friendly_name A descriptive string that you create to describe
33
+ # the new resource. It can be up to 64 characters long.
34
+ # @param [String] certificate [APN only] The URL encoded representation of the
35
+ # certificate. For example,
36
+ # `-----BEGIN CERTIFICATE-----
37
+ # MIIFnTCCBIWgAwIBAgIIAjy9H849+E8wDQYJKoZIhvcNAQEF.....A==
38
+ # -----END CERTIFICATE-----`.
39
+ # @param [String] private_key [APN only] The URL encoded representation of the
40
+ # private key. For example,
41
+ # `-----BEGIN RSA PRIVATE KEY-----
42
+ # MIIEpQIBAAKCAQEAuyf/lNrH9ck8DmNyo3fG...
43
+ # -----END RSA PRIVATE KEY-----`.
44
+ # @param [Boolean] sandbox [APN only] Whether to send the credential to sandbox
45
+ # APNs. Can be `true` to send to sandbox APNs or `false` to send to production.
46
+ # @param [String] api_key [GCM only] The API key for the project that was obtained
47
+ # from the Google Developer console for your GCM Service application credential.
48
+ # @param [String] secret [FCM only] The **Server key** of your project from the
49
+ # Firebase console, found under Settings / Cloud messaging.
50
+ # @return [CredentialInstance] Created CredentialInstance
51
+ def create(type: nil, friendly_name: :unset, certificate: :unset, private_key: :unset, sandbox: :unset, api_key: :unset, secret: :unset)
52
+ data = Twilio::Values.of({
53
+ 'Type' => type,
54
+ 'FriendlyName' => friendly_name,
55
+ 'Certificate' => certificate,
56
+ 'PrivateKey' => private_key,
57
+ 'Sandbox' => sandbox,
58
+ 'ApiKey' => api_key,
59
+ 'Secret' => secret,
60
+ })
61
+
62
+ payload = @version.create('POST', @uri, data: data)
63
+
64
+ CredentialInstance.new(@version, payload, )
65
+ end
66
+
67
+ ##
68
+ # Lists CredentialInstance records from the API as a list.
69
+ # Unlike stream(), this operation is eager and will load `limit` records into
70
+ # memory before returning.
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 [Array] Array of up to limit results
78
+ def list(limit: nil, page_size: nil)
79
+ self.stream(limit: limit, page_size: page_size).entries
80
+ end
81
+
82
+ ##
83
+ # Streams CredentialInstance records from the API as an Enumerable.
84
+ # This operation lazily loads records as efficiently as possible until the limit
85
+ # is reached.
86
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
87
+ # guarantees to never return more than limit. Default is no limit.
88
+ # @param [Integer] page_size Number of records to fetch per request, when
89
+ # not set will use the default value of 50 records. If no page_size is defined
90
+ # but a limit is defined, stream() will attempt to read the limit with the most
91
+ # efficient page size, i.e. min(limit, 1000)
92
+ # @return [Enumerable] Enumerable that will yield up to limit results
93
+ def stream(limit: nil, page_size: nil)
94
+ limits = @version.read_limits(limit, page_size)
95
+
96
+ page = self.page(page_size: limits[:page_size], )
97
+
98
+ @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit])
99
+ end
100
+
101
+ ##
102
+ # When passed a block, yields CredentialInstance records from the API.
103
+ # This operation lazily loads records as efficiently as possible until the limit
104
+ # is reached.
105
+ def each
106
+ limits = @version.read_limits
107
+
108
+ page = self.page(page_size: limits[:page_size], )
109
+
110
+ @version.stream(page,
111
+ limit: limits[:limit],
112
+ page_limit: limits[:page_limit]).each {|x| yield x}
113
+ end
114
+
115
+ ##
116
+ # Retrieve a single page of CredentialInstance records from the API.
117
+ # Request is executed immediately.
118
+ # @param [String] page_token PageToken provided by the API
119
+ # @param [Integer] page_number Page Number, this value is simply for client state
120
+ # @param [Integer] page_size Number of records to return, defaults to 50
121
+ # @return [Page] Page of CredentialInstance
122
+ def page(page_token: :unset, page_number: :unset, page_size: :unset)
123
+ params = Twilio::Values.of({
124
+ 'PageToken' => page_token,
125
+ 'Page' => page_number,
126
+ 'PageSize' => page_size,
127
+ })
128
+
129
+ response = @version.page('GET', @uri, params: params)
130
+
131
+ CredentialPage.new(@version, response, @solution)
132
+ end
133
+
134
+ ##
135
+ # Retrieve a single page of CredentialInstance records from the API.
136
+ # Request is executed immediately.
137
+ # @param [String] target_url API-generated URL for the requested results page
138
+ # @return [Page] Page of CredentialInstance
139
+ def get_page(target_url)
140
+ response = @version.domain.request(
141
+ 'GET',
142
+ target_url
143
+ )
144
+ CredentialPage.new(@version, response, @solution)
145
+ end
146
+
147
+ ##
148
+ # Provide a user friendly representation
149
+ def to_s
150
+ '#<Twilio.Conversations.V1.CredentialList>'
151
+ end
152
+ end
153
+
154
+ ##
155
+ # PLEASE NOTE that this class contains beta products that are subject to change. Use them with caution.
156
+ class CredentialPage < Page
157
+ ##
158
+ # Initialize the CredentialPage
159
+ # @param [Version] version Version that contains the resource
160
+ # @param [Response] response Response from the API
161
+ # @param [Hash] solution Path solution for the resource
162
+ # @return [CredentialPage] CredentialPage
163
+ def initialize(version, response, solution)
164
+ super(version, response)
165
+
166
+ # Path Solution
167
+ @solution = solution
168
+ end
169
+
170
+ ##
171
+ # Build an instance of CredentialInstance
172
+ # @param [Hash] payload Payload response from the API
173
+ # @return [CredentialInstance] CredentialInstance
174
+ def get_instance(payload)
175
+ CredentialInstance.new(@version, payload, )
176
+ end
177
+
178
+ ##
179
+ # Provide a user friendly representation
180
+ def to_s
181
+ '<Twilio.Conversations.V1.CredentialPage>'
182
+ end
183
+ end
184
+
185
+ ##
186
+ # PLEASE NOTE that this class contains beta products that are subject to change. Use them with caution.
187
+ class CredentialContext < InstanceContext
188
+ ##
189
+ # Initialize the CredentialContext
190
+ # @param [Version] version Version that contains the resource
191
+ # @param [String] sid A 34 character string that uniquely identifies this
192
+ # resource.
193
+ # @return [CredentialContext] CredentialContext
194
+ def initialize(version, sid)
195
+ super(version)
196
+
197
+ # Path Solution
198
+ @solution = {sid: sid, }
199
+ @uri = "/Credentials/#{@solution[:sid]}"
200
+ end
201
+
202
+ ##
203
+ # Update the CredentialInstance
204
+ # @param [credential.PushType] type The type of push-notification service the
205
+ # credential is for. Can be: `fcm`, `gcm`, or `apn`.
206
+ # @param [String] friendly_name A descriptive string that you create to describe
207
+ # the new resource. It can be up to 64 characters long.
208
+ # @param [String] certificate [APN only] The URL encoded representation of the
209
+ # certificate. For example,
210
+ # `-----BEGIN CERTIFICATE-----
211
+ # MIIFnTCCBIWgAwIBAgIIAjy9H849+E8wDQYJKoZIhvcNAQEF.....A==
212
+ # -----END CERTIFICATE-----`.
213
+ # @param [String] private_key [APN only] The URL encoded representation of the
214
+ # private key. For example,
215
+ # `-----BEGIN RSA PRIVATE KEY-----
216
+ # MIIEpQIBAAKCAQEAuyf/lNrH9ck8DmNyo3fG...
217
+ # -----END RSA PRIVATE KEY-----`.
218
+ # @param [Boolean] sandbox [APN only] Whether to send the credential to sandbox
219
+ # APNs. Can be `true` to send to sandbox APNs or `false` to send to production.
220
+ # @param [String] api_key [GCM only] The API key for the project that was obtained
221
+ # from the Google Developer console for your GCM Service application credential.
222
+ # @param [String] secret [FCM only] The **Server key** of your project from the
223
+ # Firebase console, found under Settings / Cloud messaging.
224
+ # @return [CredentialInstance] Updated CredentialInstance
225
+ def update(type: :unset, friendly_name: :unset, certificate: :unset, private_key: :unset, sandbox: :unset, api_key: :unset, secret: :unset)
226
+ data = Twilio::Values.of({
227
+ 'Type' => type,
228
+ 'FriendlyName' => friendly_name,
229
+ 'Certificate' => certificate,
230
+ 'PrivateKey' => private_key,
231
+ 'Sandbox' => sandbox,
232
+ 'ApiKey' => api_key,
233
+ 'Secret' => secret,
234
+ })
235
+
236
+ payload = @version.update('POST', @uri, data: data)
237
+
238
+ CredentialInstance.new(@version, payload, sid: @solution[:sid], )
239
+ end
240
+
241
+ ##
242
+ # Delete the CredentialInstance
243
+ # @return [Boolean] true if delete succeeds, false otherwise
244
+ def delete
245
+ @version.delete('DELETE', @uri)
246
+ end
247
+
248
+ ##
249
+ # Fetch the CredentialInstance
250
+ # @return [CredentialInstance] Fetched CredentialInstance
251
+ def fetch
252
+ payload = @version.fetch('GET', @uri)
253
+
254
+ CredentialInstance.new(@version, payload, sid: @solution[:sid], )
255
+ end
256
+
257
+ ##
258
+ # Provide a user friendly representation
259
+ def to_s
260
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
261
+ "#<Twilio.Conversations.V1.CredentialContext #{context}>"
262
+ end
263
+
264
+ ##
265
+ # Provide a detailed, user friendly representation
266
+ def inspect
267
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
268
+ "#<Twilio.Conversations.V1.CredentialContext #{context}>"
269
+ end
270
+ end
271
+
272
+ ##
273
+ # PLEASE NOTE that this class contains beta products that are subject to change. Use them with caution.
274
+ class CredentialInstance < InstanceResource
275
+ ##
276
+ # Initialize the CredentialInstance
277
+ # @param [Version] version Version that contains the resource
278
+ # @param [Hash] payload payload that contains response from Twilio
279
+ # @param [String] sid A 34 character string that uniquely identifies this
280
+ # resource.
281
+ # @return [CredentialInstance] CredentialInstance
282
+ def initialize(version, payload, sid: nil)
283
+ super(version)
284
+
285
+ # Marshaled Properties
286
+ @properties = {
287
+ 'sid' => payload['sid'],
288
+ 'account_sid' => payload['account_sid'],
289
+ 'friendly_name' => payload['friendly_name'],
290
+ 'type' => payload['type'],
291
+ 'sandbox' => payload['sandbox'],
292
+ 'date_created' => Twilio.deserialize_iso8601_datetime(payload['date_created']),
293
+ 'date_updated' => Twilio.deserialize_iso8601_datetime(payload['date_updated']),
294
+ 'url' => payload['url'],
295
+ }
296
+
297
+ # Context
298
+ @instance_context = nil
299
+ @params = {'sid' => sid || @properties['sid'], }
300
+ end
301
+
302
+ ##
303
+ # Generate an instance context for the instance, the context is capable of
304
+ # performing various actions. All instance actions are proxied to the context
305
+ # @return [CredentialContext] CredentialContext for this CredentialInstance
306
+ def context
307
+ unless @instance_context
308
+ @instance_context = CredentialContext.new(@version, @params['sid'], )
309
+ end
310
+ @instance_context
311
+ end
312
+
313
+ ##
314
+ # @return [String] A 34 character string that uniquely identifies this resource.
315
+ def sid
316
+ @properties['sid']
317
+ end
318
+
319
+ ##
320
+ # @return [String] The unique id of the Account responsible for this credential.
321
+ def account_sid
322
+ @properties['account_sid']
323
+ end
324
+
325
+ ##
326
+ # @return [String] The human-readable name of this credential.
327
+ def friendly_name
328
+ @properties['friendly_name']
329
+ end
330
+
331
+ ##
332
+ # @return [credential.PushType] The type of push-notification service the credential is for.
333
+ def type
334
+ @properties['type']
335
+ end
336
+
337
+ ##
338
+ # @return [String] [APN only] Whether to send the credential to sandbox APNs.
339
+ def sandbox
340
+ @properties['sandbox']
341
+ end
342
+
343
+ ##
344
+ # @return [Time] The date that this resource was created.
345
+ def date_created
346
+ @properties['date_created']
347
+ end
348
+
349
+ ##
350
+ # @return [Time] The date that this resource was last updated.
351
+ def date_updated
352
+ @properties['date_updated']
353
+ end
354
+
355
+ ##
356
+ # @return [String] An absolute URL for this credential.
357
+ def url
358
+ @properties['url']
359
+ end
360
+
361
+ ##
362
+ # Update the CredentialInstance
363
+ # @param [credential.PushType] type The type of push-notification service the
364
+ # credential is for. Can be: `fcm`, `gcm`, or `apn`.
365
+ # @param [String] friendly_name A descriptive string that you create to describe
366
+ # the new resource. It can be up to 64 characters long.
367
+ # @param [String] certificate [APN only] The URL encoded representation of the
368
+ # certificate. For example,
369
+ # `-----BEGIN CERTIFICATE-----
370
+ # MIIFnTCCBIWgAwIBAgIIAjy9H849+E8wDQYJKoZIhvcNAQEF.....A==
371
+ # -----END CERTIFICATE-----`.
372
+ # @param [String] private_key [APN only] The URL encoded representation of the
373
+ # private key. For example,
374
+ # `-----BEGIN RSA PRIVATE KEY-----
375
+ # MIIEpQIBAAKCAQEAuyf/lNrH9ck8DmNyo3fG...
376
+ # -----END RSA PRIVATE KEY-----`.
377
+ # @param [Boolean] sandbox [APN only] Whether to send the credential to sandbox
378
+ # APNs. Can be `true` to send to sandbox APNs or `false` to send to production.
379
+ # @param [String] api_key [GCM only] The API key for the project that was obtained
380
+ # from the Google Developer console for your GCM Service application credential.
381
+ # @param [String] secret [FCM only] The **Server key** of your project from the
382
+ # Firebase console, found under Settings / Cloud messaging.
383
+ # @return [CredentialInstance] Updated CredentialInstance
384
+ def update(type: :unset, friendly_name: :unset, certificate: :unset, private_key: :unset, sandbox: :unset, api_key: :unset, secret: :unset)
385
+ context.update(
386
+ type: type,
387
+ friendly_name: friendly_name,
388
+ certificate: certificate,
389
+ private_key: private_key,
390
+ sandbox: sandbox,
391
+ api_key: api_key,
392
+ secret: secret,
393
+ )
394
+ end
395
+
396
+ ##
397
+ # Delete the CredentialInstance
398
+ # @return [Boolean] true if delete succeeds, false otherwise
399
+ def delete
400
+ context.delete
401
+ end
402
+
403
+ ##
404
+ # Fetch the CredentialInstance
405
+ # @return [CredentialInstance] Fetched CredentialInstance
406
+ def fetch
407
+ context.fetch
408
+ end
409
+
410
+ ##
411
+ # Provide a user friendly representation
412
+ def to_s
413
+ values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
414
+ "<Twilio.Conversations.V1.CredentialInstance #{values}>"
415
+ end
416
+
417
+ ##
418
+ # Provide a detailed, user friendly representation
419
+ def inspect
420
+ values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ")
421
+ "<Twilio.Conversations.V1.CredentialInstance #{values}>"
422
+ end
423
+ end
424
+ end
425
+ end
426
+ end
427
+ end