twilio-ruby 5.4.3 → 5.4.4

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 (83) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +12 -0
  3. data/README.md +2 -2
  4. data/lib/twilio-ruby/framework/serialize.rb +9 -0
  5. data/lib/twilio-ruby/http/http_client.rb +1 -1
  6. data/lib/twilio-ruby/rest/api/v2010/account/call.rb +1 -1
  7. data/lib/twilio-ruby/rest/api/v2010/account/call/feedback.rb +8 -2
  8. data/lib/twilio-ruby/rest/api/v2010/account/conference/participant.rb +2 -2
  9. data/lib/twilio-ruby/rest/api/v2010/account/connect_app.rb +1 -1
  10. data/lib/twilio-ruby/rest/api/v2010/account/message.rb +1 -1
  11. data/lib/twilio-ruby/rest/chat/v1/service.rb +1 -1
  12. data/lib/twilio-ruby/rest/chat/v1/service/channel.rb +1 -1
  13. data/lib/twilio-ruby/rest/chat/v1/service/channel/invite.rb +1 -1
  14. data/lib/twilio-ruby/rest/chat/v1/service/channel/member.rb +1 -1
  15. data/lib/twilio-ruby/rest/chat/v1/service/role.rb +2 -2
  16. data/lib/twilio-ruby/rest/chat/v2/service.rb +1 -1
  17. data/lib/twilio-ruby/rest/chat/v2/service/binding.rb +2 -2
  18. data/lib/twilio-ruby/rest/chat/v2/service/channel.rb +1 -1
  19. data/lib/twilio-ruby/rest/chat/v2/service/channel/invite.rb +1 -1
  20. data/lib/twilio-ruby/rest/chat/v2/service/channel/member.rb +1 -1
  21. data/lib/twilio-ruby/rest/chat/v2/service/role.rb +2 -2
  22. data/lib/twilio-ruby/rest/chat/v2/service/user/user_binding.rb +1 -1
  23. data/lib/twilio-ruby/rest/ip_messaging/v1/service.rb +1 -1
  24. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel.rb +1 -1
  25. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/invite.rb +1 -1
  26. data/lib/twilio-ruby/rest/ip_messaging/v1/service/channel/member.rb +1 -1
  27. data/lib/twilio-ruby/rest/ip_messaging/v1/service/role.rb +2 -2
  28. data/lib/twilio-ruby/rest/ip_messaging/v2/service.rb +1 -1
  29. data/lib/twilio-ruby/rest/ip_messaging/v2/service/binding.rb +2 -2
  30. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel.rb +1 -1
  31. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/invite.rb +1 -1
  32. data/lib/twilio-ruby/rest/ip_messaging/v2/service/channel/member.rb +1 -1
  33. data/lib/twilio-ruby/rest/ip_messaging/v2/service/role.rb +2 -2
  34. data/lib/twilio-ruby/rest/ip_messaging/v2/service/user/user_binding.rb +1 -1
  35. data/lib/twilio-ruby/rest/lookups/v1/phone_number.rb +5 -1
  36. data/lib/twilio-ruby/rest/notify/v1/service/binding.rb +3 -3
  37. data/lib/twilio-ruby/rest/notify/v1/service/notification.rb +4 -4
  38. data/lib/twilio-ruby/rest/notify/v1/service/user.rb +5 -2
  39. data/lib/twilio-ruby/rest/notify/v1/service/user/user_binding.rb +2 -2
  40. data/lib/twilio-ruby/rest/preview.rb +10 -3
  41. data/lib/twilio-ruby/rest/preview/hosted_numbers/authorization_document.rb +4 -4
  42. data/lib/twilio-ruby/rest/preview/hosted_numbers/hosted_number_order.rb +2 -2
  43. data/lib/twilio-ruby/rest/preview/proxy/service/session.rb +2 -2
  44. data/lib/twilio-ruby/rest/preview/proxy/service/session/participant/message_interaction.rb +1 -1
  45. data/lib/twilio-ruby/rest/preview/understand.rb +41 -0
  46. data/lib/twilio-ruby/rest/preview/understand/service.rb +503 -0
  47. data/lib/twilio-ruby/rest/preview/understand/service/field_type.rb +399 -0
  48. data/lib/twilio-ruby/rest/preview/understand/service/field_type/field_value.rb +375 -0
  49. data/lib/twilio-ruby/rest/preview/understand/service/intent.rb +421 -0
  50. data/lib/twilio-ruby/rest/preview/understand/service/intent/field.rb +371 -0
  51. data/lib/twilio-ruby/rest/preview/understand/service/intent/sample.rb +407 -0
  52. data/lib/twilio-ruby/rest/preview/understand/service/model_build.rb +358 -0
  53. data/lib/twilio-ruby/rest/preview/understand/service/query.rb +422 -0
  54. data/lib/twilio-ruby/rest/preview/wireless/rate_plan.rb +1 -1
  55. data/lib/twilio-ruby/rest/proxy/v1/service/session.rb +2 -2
  56. data/lib/twilio-ruby/rest/proxy/v1/service/session/participant/message_interaction.rb +1 -1
  57. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task.rb +1 -1
  58. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/task/reservation.rb +3 -3
  59. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/worker/reservation.rb +3 -3
  60. data/lib/twilio-ruby/rest/video/v1/recording.rb +1 -1
  61. data/lib/twilio-ruby/rest/video/v1/room.rb +27 -1
  62. data/lib/twilio-ruby/rest/video/v1/room/room_participant.rb +407 -0
  63. data/lib/twilio-ruby/rest/video/v1/room/room_participant/room_participant_published_track.rb +326 -0
  64. data/lib/twilio-ruby/rest/wireless/v1/rate_plan.rb +1 -1
  65. data/lib/twilio-ruby/version.rb +1 -1
  66. data/spec/framework/serialize_spec.rb +21 -0
  67. data/spec/integration/chat/v1/service/role_spec.rb +6 -2
  68. data/spec/integration/chat/v2/service/role_spec.rb +6 -2
  69. data/spec/integration/ip_messaging/v1/service/role_spec.rb +6 -2
  70. data/spec/integration/ip_messaging/v2/service/role_spec.rb +6 -2
  71. data/spec/integration/preview/hosted_numbers/authorization_document_spec.rb +1 -1
  72. data/spec/integration/preview/understand/service/field_type/field_value_spec.rb +205 -0
  73. data/spec/integration/preview/understand/service/field_type_spec.rb +244 -0
  74. data/spec/integration/preview/understand/service/intent/field_spec.rb +205 -0
  75. data/spec/integration/preview/understand/service/intent/sample_spec.rb +247 -0
  76. data/spec/integration/preview/understand/service/intent_spec.rb +252 -0
  77. data/spec/integration/preview/understand/service/model_build_spec.rb +231 -0
  78. data/spec/integration/preview/understand/service/query_spec.rb +300 -0
  79. data/spec/integration/preview/understand/service_spec.rb +256 -0
  80. data/spec/integration/video/v1/room/room_participant/room_participant_published_track_spec.rb +94 -0
  81. data/spec/integration/video/v1/room/room_participant_spec.rb +182 -0
  82. data/spec/integration/video/v1/room_spec.rb +4 -0
  83. metadata +33 -2
@@ -131,7 +131,7 @@ module Twilio
131
131
  def page(priority: :unset, assignment_status: :unset, workflow_sid: :unset, workflow_name: :unset, task_queue_sid: :unset, task_queue_name: :unset, evaluate_task_attributes: :unset, ordering: :unset, has_addons: :unset, page_token: :unset, page_number: :unset, page_size: :unset)
132
132
  params = Twilio::Values.of({
133
133
  'Priority' => priority,
134
- 'AssignmentStatus' => assignment_status,
134
+ 'AssignmentStatus' => Twilio.serialize_list(assignment_status) { |e| e },
135
135
  'WorkflowSid' => workflow_sid,
136
136
  'WorkflowName' => workflow_name,
137
137
  'TaskQueueSid' => task_queue_sid,
@@ -272,7 +272,7 @@ module Twilio
272
272
  'From' => from,
273
273
  'StatusCallback' => status_callback,
274
274
  'StatusCallbackMethod' => status_callback_method,
275
- 'StatusCallbackEvent' => status_callback_event,
275
+ 'StatusCallbackEvent' => Twilio.serialize_list(status_callback_event) { |e| e },
276
276
  'Timeout' => timeout,
277
277
  'Record' => record,
278
278
  'Muted' => muted,
@@ -285,7 +285,7 @@ module Twilio
285
285
  'MaxParticipants' => max_participants,
286
286
  'ConferenceStatusCallback' => conference_status_callback,
287
287
  'ConferenceStatusCallbackMethod' => conference_status_callback_method,
288
- 'ConferenceStatusCallbackEvent' => conference_status_callback_event,
288
+ 'ConferenceStatusCallbackEvent' => Twilio.serialize_list(conference_status_callback_event) { |e| e },
289
289
  'ConferenceRecord' => conference_record,
290
290
  'ConferenceTrim' => conference_trim,
291
291
  'RecordingChannels' => recording_channels,
@@ -296,7 +296,7 @@ module Twilio
296
296
  'Region' => region,
297
297
  'SipAuthUsername' => sip_auth_username,
298
298
  'SipAuthPassword' => sip_auth_password,
299
- 'DequeueStatusCallbackEvent' => dequeue_status_callback_event,
299
+ 'DequeueStatusCallbackEvent' => Twilio.serialize_list(dequeue_status_callback_event) { |e| e },
300
300
  'PostWorkActivitySid' => post_work_activity_sid,
301
301
  })
302
302
 
@@ -272,7 +272,7 @@ module Twilio
272
272
  'From' => from,
273
273
  'StatusCallback' => status_callback,
274
274
  'StatusCallbackMethod' => status_callback_method,
275
- 'StatusCallbackEvent' => status_callback_event,
275
+ 'StatusCallbackEvent' => Twilio.serialize_list(status_callback_event) { |e| e },
276
276
  'Timeout' => timeout,
277
277
  'Record' => record,
278
278
  'Muted' => muted,
@@ -285,7 +285,7 @@ module Twilio
285
285
  'MaxParticipants' => max_participants,
286
286
  'ConferenceStatusCallback' => conference_status_callback,
287
287
  'ConferenceStatusCallbackMethod' => conference_status_callback_method,
288
- 'ConferenceStatusCallbackEvent' => conference_status_callback_event,
288
+ 'ConferenceStatusCallbackEvent' => Twilio.serialize_list(conference_status_callback_event) { |e| e },
289
289
  'ConferenceRecord' => conference_record,
290
290
  'ConferenceTrim' => conference_trim,
291
291
  'RecordingChannels' => recording_channels,
@@ -296,7 +296,7 @@ module Twilio
296
296
  'Region' => region,
297
297
  'SipAuthUsername' => sip_auth_username,
298
298
  'SipAuthPassword' => sip_auth_password,
299
- 'DequeueStatusCallbackEvent' => dequeue_status_callback_event,
299
+ 'DequeueStatusCallbackEvent' => Twilio.serialize_list(dequeue_status_callback_event) { |e| e },
300
300
  'PostWorkActivitySid' => post_work_activity_sid,
301
301
  })
302
302
 
@@ -110,7 +110,7 @@ module Twilio
110
110
  params = Twilio::Values.of({
111
111
  'Status' => status,
112
112
  'SourceSid' => source_sid,
113
- 'GroupingSid' => grouping_sid,
113
+ 'GroupingSid' => Twilio.serialize_list(grouping_sid) { |e| e },
114
114
  'DateCreatedAfter' => Twilio.serialize_iso8601_datetime(date_created_after),
115
115
  'DateCreatedBefore' => Twilio.serialize_iso8601_datetime(date_created_before),
116
116
  'PageToken' => page_token,
@@ -44,7 +44,7 @@ module Twilio
44
44
  'StatusCallbackMethod' => status_callback_method,
45
45
  'MaxParticipants' => max_participants,
46
46
  'RecordParticipantsOnConnect' => record_participants_on_connect,
47
- 'VideoCodecs' => video_codecs,
47
+ 'VideoCodecs' => Twilio.serialize_list(video_codecs) { |e| e },
48
48
  'MediaRegion' => media_region,
49
49
  })
50
50
 
@@ -219,6 +219,7 @@ module Twilio
219
219
 
220
220
  # Dependents
221
221
  @recordings = nil
222
+ @participants = nil
222
223
  end
223
224
 
224
225
  ##
@@ -270,6 +271,24 @@ module Twilio
270
271
  @recordings
271
272
  end
272
273
 
274
+ ##
275
+ # Access the participants
276
+ # @return [RoomParticipantList]
277
+ # @return [RoomParticipantContext] if sid was passed.
278
+ def participants(sid=:unset)
279
+ raise ArgumentError, 'sid cannot be nil' if sid.nil?
280
+
281
+ if sid != :unset
282
+ return RoomParticipantContext.new(@version, @solution[:sid], sid,)
283
+ end
284
+
285
+ unless @participants
286
+ @participants = RoomParticipantList.new(@version, room_sid: @solution[:sid],)
287
+ end
288
+
289
+ @participants
290
+ end
291
+
273
292
  ##
274
293
  # Provide a user friendly representation
275
294
  def to_s
@@ -449,6 +468,13 @@ module Twilio
449
468
  context.recordings
450
469
  end
451
470
 
471
+ ##
472
+ # Access the participants
473
+ # @return [participants] participants
474
+ def participants
475
+ context.participants
476
+ end
477
+
452
478
  ##
453
479
  # Provide a user friendly representation
454
480
  def to_s
@@ -0,0 +1,407 @@
1
+ ##
2
+ # This code was generated by
3
+ # \ / _ _ _| _ _
4
+ # | (_)\/(_)(_|\/| |(/_ v1.0.0
5
+ # / /
6
+
7
+ module Twilio
8
+ module REST
9
+ class Video < Domain
10
+ class V1 < Version
11
+ class RoomContext < InstanceContext
12
+ class RoomParticipantList < ListResource
13
+ ##
14
+ # Initialize the RoomParticipantList
15
+ # @param [Version] version Version that contains the resource
16
+ # @param [String] room_sid The room_sid
17
+ # @return [RoomParticipantList] RoomParticipantList
18
+ def initialize(version, room_sid: nil)
19
+ super(version)
20
+
21
+ # Path Solution
22
+ @solution = {room_sid: room_sid}
23
+ @uri = "/Rooms/#{@solution[:room_sid]}/Participants"
24
+ end
25
+
26
+ ##
27
+ # Lists RoomParticipantInstance records from the API as a list.
28
+ # Unlike stream(), this operation is eager and will load `limit` records into
29
+ # memory before returning.
30
+ # @param [room_participant.Status] status The status
31
+ # @param [String] identity The identity
32
+ # @param [Time] date_created_after The date_created_after
33
+ # @param [Time] date_created_before The date_created_before
34
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
35
+ # guarantees to never return more than limit. Default is no limit
36
+ # @param [Integer] page_size Number of records to fetch per request, when
37
+ # not set will use the default value of 50 records. If no page_size is defined
38
+ # but a limit is defined, stream() will attempt to read the limit with the most
39
+ # efficient page size, i.e. min(limit, 1000)
40
+ # @return [Array] Array of up to limit results
41
+ def list(status: :unset, identity: :unset, date_created_after: :unset, date_created_before: :unset, limit: nil, page_size: nil)
42
+ self.stream(
43
+ status: status,
44
+ identity: identity,
45
+ date_created_after: date_created_after,
46
+ date_created_before: date_created_before,
47
+ limit: limit,
48
+ page_size: page_size
49
+ ).entries
50
+ end
51
+
52
+ ##
53
+ # Streams RoomParticipantInstance records from the API as an Enumerable.
54
+ # This operation lazily loads records as efficiently as possible until the limit
55
+ # is reached.
56
+ # @param [room_participant.Status] status The status
57
+ # @param [String] identity The identity
58
+ # @param [Time] date_created_after The date_created_after
59
+ # @param [Time] date_created_before The date_created_before
60
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
61
+ # guarantees to never return more than limit. Default is no limit.
62
+ # @param [Integer] page_size Number of records to fetch per request, when
63
+ # not set will use the default value of 50 records. If no page_size is defined
64
+ # but a limit is defined, stream() will attempt to read the limit with the most
65
+ # efficient page size, i.e. min(limit, 1000)
66
+ # @return [Enumerable] Enumerable that will yield up to limit results
67
+ def stream(status: :unset, identity: :unset, date_created_after: :unset, date_created_before: :unset, limit: nil, page_size: nil)
68
+ limits = @version.read_limits(limit, page_size)
69
+
70
+ page = self.page(
71
+ status: status,
72
+ identity: identity,
73
+ date_created_after: date_created_after,
74
+ date_created_before: date_created_before,
75
+ page_size: limits[:page_size],
76
+ )
77
+
78
+ @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit])
79
+ end
80
+
81
+ ##
82
+ # When passed a block, yields RoomParticipantInstance records from the API.
83
+ # This operation lazily loads records as efficiently as possible until the limit
84
+ # is reached.
85
+ def each
86
+ limits = @version.read_limits
87
+
88
+ page = self.page(page_size: limits[:page_size],)
89
+
90
+ @version.stream(page,
91
+ limit: limits[:limit],
92
+ page_limit: limits[:page_limit]).each {|x| yield x}
93
+ end
94
+
95
+ ##
96
+ # Retrieve a single page of RoomParticipantInstance records from the API.
97
+ # Request is executed immediately.
98
+ # @param [room_participant.Status] status The status
99
+ # @param [String] identity The identity
100
+ # @param [Time] date_created_after The date_created_after
101
+ # @param [Time] date_created_before The date_created_before
102
+ # @param [String] page_token PageToken provided by the API
103
+ # @param [Integer] page_number Page Number, this value is simply for client state
104
+ # @param [Integer] page_size Number of records to return, defaults to 50
105
+ # @return [Page] Page of RoomParticipantInstance
106
+ def page(status: :unset, identity: :unset, date_created_after: :unset, date_created_before: :unset, page_token: :unset, page_number: :unset, page_size: :unset)
107
+ params = Twilio::Values.of({
108
+ 'Status' => status,
109
+ 'Identity' => identity,
110
+ 'DateCreatedAfter' => Twilio.serialize_iso8601_datetime(date_created_after),
111
+ 'DateCreatedBefore' => Twilio.serialize_iso8601_datetime(date_created_before),
112
+ 'PageToken' => page_token,
113
+ 'Page' => page_number,
114
+ 'PageSize' => page_size,
115
+ })
116
+ response = @version.page(
117
+ 'GET',
118
+ @uri,
119
+ params
120
+ )
121
+ RoomParticipantPage.new(@version, response, @solution)
122
+ end
123
+
124
+ ##
125
+ # Retrieve a single page of RoomParticipantInstance records from the API.
126
+ # Request is executed immediately.
127
+ # @param [String] target_url API-generated URL for the requested results page
128
+ # @return [Page] Page of RoomParticipantInstance
129
+ def get_page(target_url)
130
+ response = @version.domain.request(
131
+ 'GET',
132
+ target_url
133
+ )
134
+ RoomParticipantPage.new(@version, response, @solution)
135
+ end
136
+
137
+ ##
138
+ # Provide a user friendly representation
139
+ def to_s
140
+ '#<Twilio.Video.V1.RoomParticipantList>'
141
+ end
142
+ end
143
+
144
+ class RoomParticipantPage < Page
145
+ ##
146
+ # Initialize the RoomParticipantPage
147
+ # @param [Version] version Version that contains the resource
148
+ # @param [Response] response Response from the API
149
+ # @param [Hash] solution Path solution for the resource
150
+ # @return [RoomParticipantPage] RoomParticipantPage
151
+ def initialize(version, response, solution)
152
+ super(version, response)
153
+
154
+ # Path Solution
155
+ @solution = solution
156
+ end
157
+
158
+ ##
159
+ # Build an instance of RoomParticipantInstance
160
+ # @param [Hash] payload Payload response from the API
161
+ # @return [RoomParticipantInstance] RoomParticipantInstance
162
+ def get_instance(payload)
163
+ RoomParticipantInstance.new(@version, payload, room_sid: @solution[:room_sid],)
164
+ end
165
+
166
+ ##
167
+ # Provide a user friendly representation
168
+ def to_s
169
+ '<Twilio.Video.V1.RoomParticipantPage>'
170
+ end
171
+ end
172
+
173
+ class RoomParticipantContext < InstanceContext
174
+ ##
175
+ # Initialize the RoomParticipantContext
176
+ # @param [Version] version Version that contains the resource
177
+ # @param [String] room_sid The room_sid
178
+ # @param [String] sid The sid
179
+ # @return [RoomParticipantContext] RoomParticipantContext
180
+ def initialize(version, room_sid, sid)
181
+ super(version)
182
+
183
+ # Path Solution
184
+ @solution = {room_sid: room_sid, sid: sid,}
185
+ @uri = "/Rooms/#{@solution[:room_sid]}/Participants/#{@solution[:sid]}"
186
+
187
+ # Dependents
188
+ @published_tracks = nil
189
+ end
190
+
191
+ ##
192
+ # Fetch a RoomParticipantInstance
193
+ # @return [RoomParticipantInstance] Fetched RoomParticipantInstance
194
+ def fetch
195
+ params = Twilio::Values.of({})
196
+
197
+ payload = @version.fetch(
198
+ 'GET',
199
+ @uri,
200
+ params,
201
+ )
202
+
203
+ RoomParticipantInstance.new(@version, payload, room_sid: @solution[:room_sid], sid: @solution[:sid],)
204
+ end
205
+
206
+ ##
207
+ # Update the RoomParticipantInstance
208
+ # @param [room_participant.Status] status The status
209
+ # @return [RoomParticipantInstance] Updated RoomParticipantInstance
210
+ def update(status: :unset)
211
+ data = Twilio::Values.of({'Status' => status,})
212
+
213
+ payload = @version.update(
214
+ 'POST',
215
+ @uri,
216
+ data: data,
217
+ )
218
+
219
+ RoomParticipantInstance.new(@version, payload, room_sid: @solution[:room_sid], sid: @solution[:sid],)
220
+ end
221
+
222
+ ##
223
+ # Access the published_tracks
224
+ # @return [PublishedTrackList]
225
+ # @return [PublishedTrackContext] if sid was passed.
226
+ def published_tracks(sid=:unset)
227
+ raise ArgumentError, 'sid cannot be nil' if sid.nil?
228
+
229
+ if sid != :unset
230
+ return PublishedTrackContext.new(@version, @solution[:room_sid], @solution[:sid], sid,)
231
+ end
232
+
233
+ unless @published_tracks
234
+ @published_tracks = PublishedTrackList.new(
235
+ @version,
236
+ room_sid: @solution[:room_sid],
237
+ participant_sid: @solution[:sid],
238
+ )
239
+ end
240
+
241
+ @published_tracks
242
+ end
243
+
244
+ ##
245
+ # Provide a user friendly representation
246
+ def to_s
247
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
248
+ "#<Twilio.Video.V1.RoomParticipantContext #{context}>"
249
+ end
250
+ end
251
+
252
+ class RoomParticipantInstance < InstanceResource
253
+ ##
254
+ # Initialize the RoomParticipantInstance
255
+ # @param [Version] version Version that contains the resource
256
+ # @param [Hash] payload payload that contains response from Twilio
257
+ # @param [String] room_sid The room_sid
258
+ # @param [String] sid The sid
259
+ # @return [RoomParticipantInstance] RoomParticipantInstance
260
+ def initialize(version, payload, room_sid: nil, sid: nil)
261
+ super(version)
262
+
263
+ # Marshaled Properties
264
+ @properties = {
265
+ 'sid' => payload['sid'],
266
+ 'room_sid' => payload['room_sid'],
267
+ 'account_sid' => payload['account_sid'],
268
+ 'status' => payload['status'],
269
+ 'identity' => payload['identity'],
270
+ 'date_created' => Twilio.deserialize_iso8601_datetime(payload['date_created']),
271
+ 'date_updated' => Twilio.deserialize_iso8601_datetime(payload['date_updated']),
272
+ 'start_time' => Twilio.deserialize_iso8601_datetime(payload['start_time']),
273
+ 'end_time' => Twilio.deserialize_iso8601_datetime(payload['end_time']),
274
+ 'duration' => payload['duration'] == nil ? payload['duration'] : payload['duration'].to_i,
275
+ 'url' => payload['url'],
276
+ 'links' => payload['links'],
277
+ }
278
+
279
+ # Context
280
+ @instance_context = nil
281
+ @params = {'room_sid' => room_sid, 'sid' => sid || @properties['sid'],}
282
+ end
283
+
284
+ ##
285
+ # Generate an instance context for the instance, the context is capable of
286
+ # performing various actions. All instance actions are proxied to the context
287
+ # @return [RoomParticipantContext] RoomParticipantContext for this RoomParticipantInstance
288
+ def context
289
+ unless @instance_context
290
+ @instance_context = RoomParticipantContext.new(@version, @params['room_sid'], @params['sid'],)
291
+ end
292
+ @instance_context
293
+ end
294
+
295
+ ##
296
+ # @return [String] The sid
297
+ def sid
298
+ @properties['sid']
299
+ end
300
+
301
+ ##
302
+ # @return [String] The room_sid
303
+ def room_sid
304
+ @properties['room_sid']
305
+ end
306
+
307
+ ##
308
+ # @return [String] The account_sid
309
+ def account_sid
310
+ @properties['account_sid']
311
+ end
312
+
313
+ ##
314
+ # @return [room_participant.Status] The status
315
+ def status
316
+ @properties['status']
317
+ end
318
+
319
+ ##
320
+ # @return [String] The identity
321
+ def identity
322
+ @properties['identity']
323
+ end
324
+
325
+ ##
326
+ # @return [Time] The date_created
327
+ def date_created
328
+ @properties['date_created']
329
+ end
330
+
331
+ ##
332
+ # @return [Time] The date_updated
333
+ def date_updated
334
+ @properties['date_updated']
335
+ end
336
+
337
+ ##
338
+ # @return [Time] The start_time
339
+ def start_time
340
+ @properties['start_time']
341
+ end
342
+
343
+ ##
344
+ # @return [Time] The end_time
345
+ def end_time
346
+ @properties['end_time']
347
+ end
348
+
349
+ ##
350
+ # @return [String] The duration
351
+ def duration
352
+ @properties['duration']
353
+ end
354
+
355
+ ##
356
+ # @return [String] The url
357
+ def url
358
+ @properties['url']
359
+ end
360
+
361
+ ##
362
+ # @return [String] The links
363
+ def links
364
+ @properties['links']
365
+ end
366
+
367
+ ##
368
+ # Fetch a RoomParticipantInstance
369
+ # @return [RoomParticipantInstance] Fetched RoomParticipantInstance
370
+ def fetch
371
+ context.fetch
372
+ end
373
+
374
+ ##
375
+ # Update the RoomParticipantInstance
376
+ # @param [room_participant.Status] status The status
377
+ # @return [RoomParticipantInstance] Updated RoomParticipantInstance
378
+ def update(status: :unset)
379
+ context.update(status: status,)
380
+ end
381
+
382
+ ##
383
+ # Access the published_tracks
384
+ # @return [published_tracks] published_tracks
385
+ def published_tracks
386
+ context.published_tracks
387
+ end
388
+
389
+ ##
390
+ # Provide a user friendly representation
391
+ def to_s
392
+ values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
393
+ "<Twilio.Video.V1.RoomParticipantInstance #{values}>"
394
+ end
395
+
396
+ ##
397
+ # Provide a detailed, user friendly representation
398
+ def inspect
399
+ values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ")
400
+ "<Twilio.Video.V1.RoomParticipantInstance #{values}>"
401
+ end
402
+ end
403
+ end
404
+ end
405
+ end
406
+ end
407
+ end