livepeer 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +7 -0
  2. data/lib/livepeer.rb +96 -0
  3. data/lib/sdk/access_control.rb +195 -0
  4. data/lib/sdk/asset.rb +248 -0
  5. data/lib/sdk/metrics.rb +158 -0
  6. data/lib/sdk/models/operations/createmultistreamtarget.rb +34 -0
  7. data/lib/sdk/models/operations/createsigningkey.rb +35 -0
  8. data/lib/sdk/models/operations/createstream.rb +34 -0
  9. data/lib/sdk/models/operations/createwebhook.rb +35 -0
  10. data/lib/sdk/models/operations/deleteasset.rb +45 -0
  11. data/lib/sdk/models/operations/deletemultistreamtarget.rb +45 -0
  12. data/lib/sdk/models/operations/deletesigningkey.rb +45 -0
  13. data/lib/sdk/models/operations/deletestream.rb +45 -0
  14. data/lib/sdk/models/operations/deletewebhook.rb +49 -0
  15. data/lib/sdk/models/operations/get_session_id_clips.rb +48 -0
  16. data/lib/sdk/models/operations/get_stream_id_clips.rb +48 -0
  17. data/lib/sdk/models/operations/getasset.rb +49 -0
  18. data/lib/sdk/models/operations/getassets.rb +34 -0
  19. data/lib/sdk/models/operations/getcreatormetrics.rb +98 -0
  20. data/lib/sdk/models/operations/getmultistreamtarget.rb +49 -0
  21. data/lib/sdk/models/operations/getmultistreamtargets.rb +34 -0
  22. data/lib/sdk/models/operations/getplaybackinfo.rb +53 -0
  23. data/lib/sdk/models/operations/getpublictotalviewsmetrics.rb +76 -0
  24. data/lib/sdk/models/operations/getrecordedsessions.rb +53 -0
  25. data/lib/sdk/models/operations/getsession.rb +49 -0
  26. data/lib/sdk/models/operations/getsessions.rb +34 -0
  27. data/lib/sdk/models/operations/getsigningkey.rb +49 -0
  28. data/lib/sdk/models/operations/getsigningkeys.rb +34 -0
  29. data/lib/sdk/models/operations/getstream.rb +49 -0
  30. data/lib/sdk/models/operations/getstreams.rb +48 -0
  31. data/lib/sdk/models/operations/gettask.rb +49 -0
  32. data/lib/sdk/models/operations/gettasks.rb +34 -0
  33. data/lib/sdk/models/operations/getusagemetrics.rb +72 -0
  34. data/lib/sdk/models/operations/getviewershipsmetrics.rb +107 -0
  35. data/lib/sdk/models/operations/getwebhook.rb +49 -0
  36. data/lib/sdk/models/operations/getwebhooks.rb +34 -0
  37. data/lib/sdk/models/operations/patch_asset_assetid_.rb +53 -0
  38. data/lib/sdk/models/operations/post_clip.rb +66 -0
  39. data/lib/sdk/models/operations/requestupload.rb +72 -0
  40. data/lib/sdk/models/operations/transcode.rb +35 -0
  41. data/lib/sdk/models/operations/updatemultistreamtarget.rb +49 -0
  42. data/lib/sdk/models/operations/updatesigningkey.rb +65 -0
  43. data/lib/sdk/models/operations/updatestream.rb +49 -0
  44. data/lib/sdk/models/operations/updatewebhook.rb +49 -0
  45. data/lib/sdk/models/operations/uploadassetviaurl.rb +66 -0
  46. data/lib/sdk/models/shared/asset.rb +312 -0
  47. data/lib/sdk/models/shared/asset_patch_payload.rb +38 -0
  48. data/lib/sdk/models/shared/attestation.rb +178 -0
  49. data/lib/sdk/models/shared/clip_payload.rb +37 -0
  50. data/lib/sdk/models/shared/encryption.rb +25 -0
  51. data/lib/sdk/models/shared/encryption_output.rb +21 -0
  52. data/lib/sdk/models/shared/error.rb +25 -0
  53. data/lib/sdk/models/shared/ffmpeg_profile.rb +71 -0
  54. data/lib/sdk/models/shared/ipfs_export_params.rb +41 -0
  55. data/lib/sdk/models/shared/ipfs_file_info.rb +31 -0
  56. data/lib/sdk/models/shared/multistream.rb +75 -0
  57. data/lib/sdk/models/shared/multistream_target.rb +36 -0
  58. data/lib/sdk/models/shared/multistream_target_input.rb +33 -0
  59. data/lib/sdk/models/shared/multistream_target_patch_payload.rb +33 -0
  60. data/lib/sdk/models/shared/new_asset_payload.rb +79 -0
  61. data/lib/sdk/models/shared/new_stream_payload.rb +44 -0
  62. data/lib/sdk/models/shared/nftmetadata.rb +24 -0
  63. data/lib/sdk/models/shared/nftmetadatatemplate.rb +23 -0
  64. data/lib/sdk/models/shared/playback_info.rb +115 -0
  65. data/lib/sdk/models/shared/playback_policy.rb +41 -0
  66. data/lib/sdk/models/shared/security.rb +25 -0
  67. data/lib/sdk/models/shared/session.rb +99 -0
  68. data/lib/sdk/models/shared/signing_key.rb +40 -0
  69. data/lib/sdk/models/shared/signing_key_response_payload.rb +43 -0
  70. data/lib/sdk/models/shared/storage.rb +28 -0
  71. data/lib/sdk/models/shared/storage_status.rb +70 -0
  72. data/lib/sdk/models/shared/stream.rb +142 -0
  73. data/lib/sdk/models/shared/stream_patch_payload.rb +41 -0
  74. data/lib/sdk/models/shared/task.rb +626 -0
  75. data/lib/sdk/models/shared/upload.rb +34 -0
  76. data/lib/sdk/models/shared/upload_output.rb +34 -0
  77. data/lib/sdk/models/shared/usage_metric.rb +38 -0
  78. data/lib/sdk/models/shared/viewership_metric.rb +97 -0
  79. data/lib/sdk/models/shared/webhook.rb +112 -0
  80. data/lib/sdk/multistream_target.rb +205 -0
  81. data/lib/sdk/playback.rb +63 -0
  82. data/lib/sdk/sdk.rb +89 -0
  83. data/lib/sdk/sdkconfiguration.rb +54 -0
  84. data/lib/sdk/session.rb +166 -0
  85. data/lib/sdk/stream.rb +290 -0
  86. data/lib/sdk/task.rb +87 -0
  87. data/lib/sdk/transcode.rb +59 -0
  88. data/lib/sdk/utils/metadata_fields.rb +154 -0
  89. data/lib/sdk/utils/utils.rb +774 -0
  90. data/lib/sdk/webhook.rb +192 -0
  91. metadata +260 -0
@@ -0,0 +1,626 @@
1
+ # Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ require 'sorbet-runtime'
7
+ require 'faraday'
8
+ require_relative '../shared/encryption'
9
+ require_relative '../shared/ipfs_export_params'
10
+ require_relative '../shared/ffmpeg_profile'
11
+ require_relative '../shared/upload'
12
+
13
+ module Livepeer
14
+ module Shared
15
+ # TaskType - Type of the task
16
+ class TaskType < T::Enum
17
+ enums do
18
+ UPLOAD = new('upload')
19
+ IMPORT = new('import')
20
+ EXPORT = new('export')
21
+ EXPORT_DATA = new('export-data')
22
+ TRANSCODE = new('transcode')
23
+ TRANSCODE_FILE = new('transcode-file')
24
+ CLIP = new('clip')
25
+ end
26
+ end
27
+
28
+
29
+ # Parameters for the upload task
30
+ class TaskUploadOutput < Livepeer::Utils::FieldAugmented
31
+ extend T::Sig
32
+
33
+
34
+ field :encryption, T.nilable(Shared::EncryptionOutput), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('encryption') } }
35
+ # ID of the original recorded session to avoid re-transcoding
36
+ # of the same content. Only used for import task.
37
+ #
38
+ field :recorded_session_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('recordedSessionId') } }
39
+ # URL of the asset to "upload"
40
+ field :url, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('url') } }
41
+
42
+
43
+ sig { params(encryption: T.nilable(Shared::EncryptionOutput), recorded_session_id: T.nilable(String), url: T.nilable(String)).void }
44
+ def initialize(encryption: nil, recorded_session_id: nil, url: nil)
45
+ @encryption = encryption
46
+ @recorded_session_id = recorded_session_id
47
+ @url = url
48
+ end
49
+ end
50
+
51
+ # File content to store into IPFS
52
+ class Content < Livepeer::Utils::FieldAugmented
53
+ extend T::Sig
54
+
55
+
56
+
57
+
58
+ def initialize; end
59
+ end
60
+
61
+ # Parameters for the export-data task
62
+ class ExportData < Livepeer::Utils::FieldAugmented
63
+ extend T::Sig
64
+
65
+ # File content to store into IPFS
66
+ field :content, Shared::Content, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('content') } }
67
+ # Optional ID of the content
68
+ field :id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('id') } }
69
+
70
+ field :ipfs, T.nilable(Shared::IpfsExportParams), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('ipfs') } }
71
+ # Optional type of content
72
+ field :type, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('type') } }
73
+
74
+
75
+ sig { params(content: Shared::Content, id: T.nilable(String), ipfs: T.nilable(Shared::IpfsExportParams), type: T.nilable(String)).void }
76
+ def initialize(content: nil, id: nil, ipfs: nil, type: nil)
77
+ @content = content
78
+ @id = id
79
+ @ipfs = ipfs
80
+ @type = type
81
+ end
82
+ end
83
+
84
+ # Parameters for the transcode task
85
+ class Transcode < Livepeer::Utils::FieldAugmented
86
+ extend T::Sig
87
+
88
+ # LMPS ffmpeg profile
89
+ field :profile, T.nilable(Shared::FfmpegProfile), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('profile') } }
90
+
91
+
92
+ sig { params(profile: T.nilable(Shared::FfmpegProfile)).void }
93
+ def initialize(profile: nil)
94
+ @profile = profile
95
+ end
96
+ end
97
+
98
+ # Input video file to transcode
99
+ class Input < Livepeer::Utils::FieldAugmented
100
+ extend T::Sig
101
+
102
+ # URL of a video to transcode, accepts object-store format
103
+ # "s3+https"
104
+ #
105
+ field :url, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('url') } }
106
+
107
+
108
+ sig { params(url: T.nilable(String)).void }
109
+ def initialize(url: nil)
110
+ @url = url
111
+ end
112
+ end
113
+
114
+ # Storage for the output files
115
+ class TaskStorage < Livepeer::Utils::FieldAugmented
116
+ extend T::Sig
117
+
118
+ # URL of the output storage, accepts object-store format
119
+ # "s3+https"
120
+ #
121
+ field :url, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('url') } }
122
+
123
+
124
+ sig { params(url: T.nilable(String)).void }
125
+ def initialize(url: nil)
126
+ @url = url
127
+ end
128
+ end
129
+
130
+ # HLS output format
131
+ class Hls < Livepeer::Utils::FieldAugmented
132
+ extend T::Sig
133
+
134
+ # Path for the HLS output
135
+ field :path, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('path') } }
136
+
137
+
138
+ sig { params(path: T.nilable(String)).void }
139
+ def initialize(path: nil)
140
+ @path = path
141
+ end
142
+ end
143
+
144
+ # MP4 output format
145
+ class Mp4 < Livepeer::Utils::FieldAugmented
146
+ extend T::Sig
147
+
148
+ # Path for the MP4 output
149
+ field :path, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('path') } }
150
+
151
+
152
+ sig { params(path: T.nilable(String)).void }
153
+ def initialize(path: nil)
154
+ @path = path
155
+ end
156
+ end
157
+
158
+ # Output formats
159
+ class Outputs < Livepeer::Utils::FieldAugmented
160
+ extend T::Sig
161
+
162
+ # HLS output format
163
+ field :hls, T.nilable(Shared::Hls), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('hls') } }
164
+ # MP4 output format
165
+ field :mp4, T.nilable(Shared::Mp4), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('mp4') } }
166
+
167
+
168
+ sig { params(hls: T.nilable(Shared::Hls), mp4: T.nilable(Shared::Mp4)).void }
169
+ def initialize(hls: nil, mp4: nil)
170
+ @hls = hls
171
+ @mp4 = mp4
172
+ end
173
+ end
174
+
175
+ # Parameters for the transcode-file task
176
+ class TranscodeFile < Livepeer::Utils::FieldAugmented
177
+ extend T::Sig
178
+
179
+
180
+ field :creator_id, T.nilable(Object), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('creatorId') } }
181
+ # Input video file to transcode
182
+ field :input, T.nilable(Shared::Input), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('input') } }
183
+ # Output formats
184
+ field :outputs, T.nilable(Shared::Outputs), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('outputs') } }
185
+
186
+ field :profiles, T.nilable(T::Array[Shared::FfmpegProfile]), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('profiles') } }
187
+ # Storage for the output files
188
+ field :storage, T.nilable(Shared::TaskStorage), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('storage') } }
189
+ # How many seconds the duration of each output segment should
190
+ # be
191
+ #
192
+ field :target_segment_size_secs, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('targetSegmentSizeSecs') } }
193
+
194
+
195
+ sig { params(creator_id: T.nilable(Object), input: T.nilable(Shared::Input), outputs: T.nilable(Shared::Outputs), profiles: T.nilable(T::Array[Shared::FfmpegProfile]), storage: T.nilable(Shared::TaskStorage), target_segment_size_secs: T.nilable(Float)).void }
196
+ def initialize(creator_id: nil, input: nil, outputs: nil, profiles: nil, storage: nil, target_segment_size_secs: nil)
197
+ @creator_id = creator_id
198
+ @input = input
199
+ @outputs = outputs
200
+ @profiles = profiles
201
+ @storage = storage
202
+ @target_segment_size_secs = target_segment_size_secs
203
+ end
204
+ end
205
+
206
+ # Parameters of the task
207
+ class TaskParams < Livepeer::Utils::FieldAugmented
208
+ extend T::Sig
209
+
210
+ # Parameters for the export task
211
+ field :export, T.nilable(Object), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('export') } }
212
+ # Parameters for the export-data task
213
+ field :export_data, T.nilable(Shared::ExportData), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('exportData') } }
214
+ # Parameters for the upload task
215
+ field :import, T.nilable(Shared::UploadOutput), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('import') } }
216
+ # Parameters for the transcode task
217
+ field :transcode, T.nilable(Shared::Transcode), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('transcode') } }
218
+ # Parameters for the transcode-file task
219
+ field :transcode_file, T.nilable(Shared::TranscodeFile), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('transcode-file') } }
220
+ # Parameters for the upload task
221
+ field :upload, T.nilable(Shared::TaskUploadOutput), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('upload') } }
222
+
223
+
224
+ sig { params(export: T.nilable(Object), export_data: T.nilable(Shared::ExportData), import: T.nilable(Shared::UploadOutput), transcode: T.nilable(Shared::Transcode), transcode_file: T.nilable(Shared::TranscodeFile), upload: T.nilable(Shared::TaskUploadOutput)).void }
225
+ def initialize(export: nil, export_data: nil, import: nil, transcode: nil, transcode_file: nil, upload: nil)
226
+ @export = export
227
+ @export_data = export_data
228
+ @import = import
229
+ @transcode = transcode
230
+ @transcode_file = transcode_file
231
+ @upload = upload
232
+ end
233
+ end
234
+
235
+ # Strategy to use for clipping the asset. If not specified, the default strategy that Catalyst is configured for will be used. This field only available for admin users, and is only used for E2E testing.
236
+ class ClipStrategy < Livepeer::Utils::FieldAugmented
237
+ extend T::Sig
238
+
239
+ # End time of the clip in milliseconds
240
+ field :end_time, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('endTime') } }
241
+ # Playback ID of the stream or asset to clip
242
+ field :playback_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('playbackId') } }
243
+ # Start time of the clip in milliseconds
244
+ field :start_time, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('startTime') } }
245
+
246
+
247
+ sig { params(end_time: T.nilable(Float), playback_id: T.nilable(String), start_time: T.nilable(Float)).void }
248
+ def initialize(end_time: nil, playback_id: nil, start_time: nil)
249
+ @end_time = end_time
250
+ @playback_id = playback_id
251
+ @start_time = start_time
252
+ end
253
+ end
254
+
255
+ # CatalystPipelineStrategy - Force to use a specific strategy in the Catalyst pipeline. If not specified, the default strategy that Catalyst is configured for will be used. This field only available for admin users, and is only used for E2E testing.
256
+ class CatalystPipelineStrategy < T::Enum
257
+ enums do
258
+ CATALYST = new('catalyst')
259
+ CATALYST_FFMPEG = new('catalyst_ffmpeg')
260
+ BACKGROUND_EXTERNAL = new('background_external')
261
+ BACKGROUND_MIST = new('background_mist')
262
+ FALLBACK_EXTERNAL = new('fallback_external')
263
+ EXTERNAL = new('external')
264
+ end
265
+ end
266
+
267
+
268
+
269
+ class Clip < Livepeer::Utils::FieldAugmented
270
+ extend T::Sig
271
+
272
+ # Force to use a specific strategy in the Catalyst pipeline. If not specified, the default strategy that Catalyst is configured for will be used. This field only available for admin users, and is only used for E2E testing.
273
+ field :catalyst_pipeline_strategy, T.nilable(Shared::CatalystPipelineStrategy), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('catalystPipelineStrategy'), 'decoder': Utils.enum_from_string(Shared::CatalystPipelineStrategy, true) } }
274
+ # Strategy to use for clipping the asset. If not specified, the default strategy that Catalyst is configured for will be used. This field only available for admin users, and is only used for E2E testing.
275
+ field :clip_strategy, T.nilable(Shared::ClipStrategy), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('clipStrategy') } }
276
+ # ID of the input asset or stream
277
+ field :input_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('inputId') } }
278
+ # ID of the session
279
+ field :session_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('sessionId') } }
280
+ # URL of the asset to "clip"
281
+ field :url, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('url') } }
282
+
283
+
284
+ sig { params(catalyst_pipeline_strategy: T.nilable(Shared::CatalystPipelineStrategy), clip_strategy: T.nilable(Shared::ClipStrategy), input_id: T.nilable(String), session_id: T.nilable(String), url: T.nilable(String)).void }
285
+ def initialize(catalyst_pipeline_strategy: nil, clip_strategy: nil, input_id: nil, session_id: nil, url: nil)
286
+ @catalyst_pipeline_strategy = catalyst_pipeline_strategy
287
+ @clip_strategy = clip_strategy
288
+ @input_id = input_id
289
+ @session_id = session_id
290
+ @url = url
291
+ end
292
+ end
293
+
294
+ # TaskPhase - Phase of the task
295
+ class TaskPhase < T::Enum
296
+ enums do
297
+ PENDING = new('pending')
298
+ WAITING = new('waiting')
299
+ RUNNING = new('running')
300
+ FAILED = new('failed')
301
+ COMPLETED = new('completed')
302
+ CANCELLED = new('cancelled')
303
+ end
304
+ end
305
+
306
+
307
+ # Status of the task
308
+ class TaskStatus < Livepeer::Utils::FieldAugmented
309
+ extend T::Sig
310
+
311
+ # Phase of the task
312
+ field :phase, Shared::TaskPhase, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('phase'), 'decoder': Utils.enum_from_string(Shared::TaskPhase, false) } }
313
+ # Timestamp (in milliseconds) at which task was updated
314
+ field :updated_at, Float, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('updatedAt') } }
315
+ # Error message if the task failed
316
+ field :error_message, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('errorMessage') } }
317
+ # Current progress of the task in a 0-1 ratio
318
+ field :progress, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('progress') } }
319
+ # Number of retries done on the task
320
+ field :retries, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('retries') } }
321
+
322
+
323
+ sig { params(phase: Shared::TaskPhase, updated_at: Float, error_message: T.nilable(String), progress: T.nilable(Float), retries: T.nilable(Float)).void }
324
+ def initialize(phase: nil, updated_at: nil, error_message: nil, progress: nil, retries: nil)
325
+ @phase = phase
326
+ @updated_at = updated_at
327
+ @error_message = error_message
328
+ @progress = progress
329
+ @retries = retries
330
+ end
331
+ end
332
+
333
+
334
+ class TaskIpfs < Livepeer::Utils::FieldAugmented
335
+ extend T::Sig
336
+
337
+ # IPFS CID of the exported video file
338
+ field :video_file_cid, String, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('videoFileCid') } }
339
+ # IPFS CID of the default metadata exported for the video
340
+ field :nft_metadata_cid, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('nftMetadataCid') } }
341
+ # URL to access metadata file via HTTP through an IPFS
342
+ # gateway
343
+ #
344
+ field :nft_metadata_gateway_url, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('nftMetadataGatewayUrl') } }
345
+ # URL for the metadata file with the IPFS protocol
346
+ field :nft_metadata_url, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('nftMetadataUrl') } }
347
+ # URL to access file via HTTP through an IPFS gateway
348
+ field :video_file_gateway_url, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('videoFileGatewayUrl') } }
349
+ # URL for the file with the IPFS protocol
350
+ field :video_file_url, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('videoFileUrl') } }
351
+
352
+
353
+ sig { params(video_file_cid: String, nft_metadata_cid: T.nilable(String), nft_metadata_gateway_url: T.nilable(String), nft_metadata_url: T.nilable(String), video_file_gateway_url: T.nilable(String), video_file_url: T.nilable(String)).void }
354
+ def initialize(video_file_cid: nil, nft_metadata_cid: nil, nft_metadata_gateway_url: nil, nft_metadata_url: nil, video_file_gateway_url: nil, video_file_url: nil)
355
+ @video_file_cid = video_file_cid
356
+ @nft_metadata_cid = nft_metadata_cid
357
+ @nft_metadata_gateway_url = nft_metadata_gateway_url
358
+ @nft_metadata_url = nft_metadata_url
359
+ @video_file_gateway_url = video_file_gateway_url
360
+ @video_file_url = video_file_url
361
+ end
362
+ end
363
+
364
+ # Output of the export task
365
+ class Export < Livepeer::Utils::FieldAugmented
366
+ extend T::Sig
367
+
368
+
369
+ field :ipfs, T.nilable(Shared::TaskIpfs), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('ipfs') } }
370
+
371
+
372
+ sig { params(ipfs: T.nilable(Shared::TaskIpfs)).void }
373
+ def initialize(ipfs: nil)
374
+ @ipfs = ipfs
375
+ end
376
+ end
377
+
378
+
379
+ class TaskSchemasIpfs < Livepeer::Utils::FieldAugmented
380
+ extend T::Sig
381
+
382
+ # IPFS CID of the exported data
383
+ field :cid, String, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('cid') } }
384
+
385
+
386
+ sig { params(cid: String).void }
387
+ def initialize(cid: nil)
388
+ @cid = cid
389
+ end
390
+ end
391
+
392
+ # Output of the export data task
393
+ class TaskExportData < Livepeer::Utils::FieldAugmented
394
+ extend T::Sig
395
+
396
+
397
+ field :ipfs, T.nilable(Shared::TaskSchemasIpfs), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('ipfs') } }
398
+
399
+
400
+ sig { params(ipfs: T.nilable(Shared::TaskSchemasIpfs)).void }
401
+ def initialize(ipfs: nil)
402
+ @ipfs = ipfs
403
+ end
404
+ end
405
+
406
+
407
+ class TaskTranscode < Livepeer::Utils::FieldAugmented
408
+ extend T::Sig
409
+
410
+
411
+ field :asset, T.nilable(T::Hash[Symbol, Object]), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('asset') } }
412
+
413
+
414
+ sig { params(asset: T.nilable(T::Hash[Symbol, Object])).void }
415
+ def initialize(asset: nil)
416
+ @asset = asset
417
+ end
418
+ end
419
+
420
+ # Output of the task
421
+ class Output < Livepeer::Utils::FieldAugmented
422
+ extend T::Sig
423
+
424
+ # Output of the export task
425
+ field :export, T.nilable(Shared::Export), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('export') } }
426
+ # Output of the export data task
427
+ field :export_data, T.nilable(Shared::TaskExportData), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('exportData') } }
428
+ # Output of the upload task
429
+ field :import, T.nilable(T::Hash[Symbol, Object]), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('import') } }
430
+
431
+ field :transcode, T.nilable(Shared::TaskTranscode), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('transcode') } }
432
+ # Output of the upload task
433
+ field :upload, T.nilable(T::Hash[Symbol, Object]), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('upload') } }
434
+
435
+
436
+ sig { params(export: T.nilable(Shared::Export), export_data: T.nilable(Shared::TaskExportData), import: T.nilable(T::Hash[Symbol, Object]), transcode: T.nilable(Shared::TaskTranscode), upload: T.nilable(T::Hash[Symbol, Object])).void }
437
+ def initialize(export: nil, export_data: nil, import: nil, transcode: nil, upload: nil)
438
+ @export = export
439
+ @export_data = export_data
440
+ @import = import
441
+ @transcode = transcode
442
+ @upload = upload
443
+ end
444
+ end
445
+
446
+
447
+ class Task < Livepeer::Utils::FieldAugmented
448
+ extend T::Sig
449
+
450
+
451
+ field :clip, T.nilable(Shared::Clip), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('clip') } }
452
+ # Timestamp (in milliseconds) at which task was created
453
+ field :created_at, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('createdAt') } }
454
+ # Task ID
455
+ field :id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('id') } }
456
+ # ID of the input asset
457
+ field :input_asset_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('inputAssetId') } }
458
+ # Output of the task
459
+ field :output, T.nilable(Shared::Output), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('output') } }
460
+ # ID of the output asset
461
+ field :output_asset_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('outputAssetId') } }
462
+ # Parameters of the task
463
+ field :params, T.nilable(Shared::TaskParams), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('params') } }
464
+ # Timestamp (in milliseconds) at which the task was scheduled for
465
+ # execution (e.g. after file upload finished).
466
+ #
467
+ field :scheduled_at, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('scheduledAt') } }
468
+ # Status of the task
469
+ field :status, T.nilable(Shared::TaskStatus), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('status') } }
470
+ # Type of the task
471
+ field :type, T.nilable(Shared::TaskType), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('type'), 'decoder': Utils.enum_from_string(Shared::TaskType, true) } }
472
+
473
+
474
+ sig { params(clip: T.nilable(Shared::Clip), created_at: T.nilable(Float), id: T.nilable(String), input_asset_id: T.nilable(String), output: T.nilable(Shared::Output), output_asset_id: T.nilable(String), params: T.nilable(Shared::TaskParams), scheduled_at: T.nilable(Float), status: T.nilable(Shared::TaskStatus), type: T.nilable(Shared::TaskType)).void }
475
+ def initialize(clip: nil, created_at: nil, id: nil, input_asset_id: nil, output: nil, output_asset_id: nil, params: nil, scheduled_at: nil, status: nil, type: nil)
476
+ @clip = clip
477
+ @created_at = created_at
478
+ @id = id
479
+ @input_asset_id = input_asset_id
480
+ @output = output
481
+ @output_asset_id = output_asset_id
482
+ @params = params
483
+ @scheduled_at = scheduled_at
484
+ @status = status
485
+ @type = type
486
+ end
487
+ end
488
+
489
+ # Parameters for the upload task
490
+ class TaskUpload < Livepeer::Utils::FieldAugmented
491
+ extend T::Sig
492
+
493
+
494
+ field :encryption, T.nilable(Shared::Encryption), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('encryption') } }
495
+ # ID of the original recorded session to avoid re-transcoding
496
+ # of the same content. Only used for import task.
497
+ #
498
+ field :recorded_session_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('recordedSessionId') } }
499
+ # URL of the asset to "upload"
500
+ field :url, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('url') } }
501
+
502
+
503
+ sig { params(encryption: T.nilable(Shared::Encryption), recorded_session_id: T.nilable(String), url: T.nilable(String)).void }
504
+ def initialize(encryption: nil, recorded_session_id: nil, url: nil)
505
+ @encryption = encryption
506
+ @recorded_session_id = recorded_session_id
507
+ @url = url
508
+ end
509
+ end
510
+
511
+ # Parameters of the task
512
+ class Params < Livepeer::Utils::FieldAugmented
513
+ extend T::Sig
514
+
515
+ # Parameters for the export task
516
+ field :export, T.nilable(Object), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('export') } }
517
+ # Parameters for the export-data task
518
+ field :export_data, T.nilable(Shared::ExportData), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('exportData') } }
519
+ # Parameters for the upload task
520
+ field :import, T.nilable(Shared::Upload), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('import') } }
521
+ # Parameters for the transcode task
522
+ field :transcode, T.nilable(Shared::Transcode), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('transcode') } }
523
+ # Parameters for the transcode-file task
524
+ field :transcode_file, T.nilable(Shared::TranscodeFile), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('transcode-file') } }
525
+ # Parameters for the upload task
526
+ field :upload, T.nilable(Shared::TaskUpload), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('upload') } }
527
+
528
+
529
+ sig { params(export: T.nilable(Object), export_data: T.nilable(Shared::ExportData), import: T.nilable(Shared::Upload), transcode: T.nilable(Shared::Transcode), transcode_file: T.nilable(Shared::TranscodeFile), upload: T.nilable(Shared::TaskUpload)).void }
530
+ def initialize(export: nil, export_data: nil, import: nil, transcode: nil, transcode_file: nil, upload: nil)
531
+ @export = export
532
+ @export_data = export_data
533
+ @import = import
534
+ @transcode = transcode
535
+ @transcode_file = transcode_file
536
+ @upload = upload
537
+ end
538
+ end
539
+
540
+
541
+ class TaskIpfsInput < Livepeer::Utils::FieldAugmented
542
+ extend T::Sig
543
+
544
+ # IPFS CID of the exported video file
545
+ field :video_file_cid, String, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('videoFileCid') } }
546
+ # IPFS CID of the default metadata exported for the video
547
+ field :nft_metadata_cid, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('nftMetadataCid') } }
548
+
549
+
550
+ sig { params(video_file_cid: String, nft_metadata_cid: T.nilable(String)).void }
551
+ def initialize(video_file_cid: nil, nft_metadata_cid: nil)
552
+ @video_file_cid = video_file_cid
553
+ @nft_metadata_cid = nft_metadata_cid
554
+ end
555
+ end
556
+
557
+ # Output of the export task
558
+ class TaskExport < Livepeer::Utils::FieldAugmented
559
+ extend T::Sig
560
+
561
+
562
+ field :ipfs, T.nilable(Shared::TaskIpfsInput), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('ipfs') } }
563
+
564
+
565
+ sig { params(ipfs: T.nilable(Shared::TaskIpfsInput)).void }
566
+ def initialize(ipfs: nil)
567
+ @ipfs = ipfs
568
+ end
569
+ end
570
+
571
+ # Output of the task
572
+ class TaskOutput < Livepeer::Utils::FieldAugmented
573
+ extend T::Sig
574
+
575
+ # Output of the export task
576
+ field :export, T.nilable(Shared::TaskExport), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('export') } }
577
+ # Output of the export data task
578
+ field :export_data, T.nilable(Shared::TaskExportData), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('exportData') } }
579
+ # Output of the upload task
580
+ field :import, T.nilable(T::Hash[Symbol, Object]), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('import') } }
581
+
582
+ field :transcode, T.nilable(Shared::TaskTranscode), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('transcode') } }
583
+ # Output of the upload task
584
+ field :upload, T.nilable(T::Hash[Symbol, Object]), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('upload') } }
585
+
586
+
587
+ sig { params(export: T.nilable(Shared::TaskExport), export_data: T.nilable(Shared::TaskExportData), import: T.nilable(T::Hash[Symbol, Object]), transcode: T.nilable(Shared::TaskTranscode), upload: T.nilable(T::Hash[Symbol, Object])).void }
588
+ def initialize(export: nil, export_data: nil, import: nil, transcode: nil, upload: nil)
589
+ @export = export
590
+ @export_data = export_data
591
+ @import = import
592
+ @transcode = transcode
593
+ @upload = upload
594
+ end
595
+ end
596
+
597
+
598
+ class TaskInput < Livepeer::Utils::FieldAugmented
599
+ extend T::Sig
600
+
601
+
602
+ field :clip, T.nilable(Shared::Clip), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('clip') } }
603
+ # ID of the input asset
604
+ field :input_asset_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('inputAssetId') } }
605
+ # Output of the task
606
+ field :output, T.nilable(Shared::TaskOutput), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('output') } }
607
+ # ID of the output asset
608
+ field :output_asset_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('outputAssetId') } }
609
+ # Parameters of the task
610
+ field :params, T.nilable(Shared::Params), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('params') } }
611
+ # Type of the task
612
+ field :type, T.nilable(Shared::TaskType), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('type'), 'decoder': Utils.enum_from_string(Shared::TaskType, true) } }
613
+
614
+
615
+ sig { params(clip: T.nilable(Shared::Clip), input_asset_id: T.nilable(String), output: T.nilable(Shared::TaskOutput), output_asset_id: T.nilable(String), params: T.nilable(Shared::Params), type: T.nilable(Shared::TaskType)).void }
616
+ def initialize(clip: nil, input_asset_id: nil, output: nil, output_asset_id: nil, params: nil, type: nil)
617
+ @clip = clip
618
+ @input_asset_id = input_asset_id
619
+ @output = output
620
+ @output_asset_id = output_asset_id
621
+ @params = params
622
+ @type = type
623
+ end
624
+ end
625
+ end
626
+ end
@@ -0,0 +1,34 @@
1
+ # Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+ require 'sorbet-runtime'
7
+ require 'faraday'
8
+ require_relative '../shared/encryption'
9
+
10
+ module Livepeer
11
+ module Shared
12
+ # Parameters for the upload task
13
+ class Upload < Livepeer::Utils::FieldAugmented
14
+ extend T::Sig
15
+
16
+
17
+ field :encryption, T.nilable(Shared::Encryption), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('encryption') } }
18
+ # ID of the original recorded session to avoid re-transcoding
19
+ # of the same content. Only used for import task.
20
+ #
21
+ field :recorded_session_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('recordedSessionId') } }
22
+ # URL of the asset to "upload"
23
+ field :url, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('url') } }
24
+
25
+
26
+ sig { params(encryption: T.nilable(Shared::Encryption), recorded_session_id: T.nilable(String), url: T.nilable(String)).void }
27
+ def initialize(encryption: nil, recorded_session_id: nil, url: nil)
28
+ @encryption = encryption
29
+ @recorded_session_id = recorded_session_id
30
+ @url = url
31
+ end
32
+ end
33
+ end
34
+ end