livepeer 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/lib/livepeer.rb +14 -12
  3. data/lib/sdk/asset.rb +81 -9
  4. data/lib/sdk/metrics.rb +12 -4
  5. data/lib/sdk/models/operations/addmultistreamtarget.rb +49 -0
  6. data/lib/sdk/models/operations/createsigningkey.rb +5 -5
  7. data/lib/sdk/models/operations/createstream.rb +4 -4
  8. data/lib/sdk/models/operations/deletewebhook.rb +1 -1
  9. data/lib/sdk/models/operations/get_session_id_clips.rb +4 -4
  10. data/lib/sdk/models/operations/get_stream_id_clips.rb +4 -4
  11. data/lib/sdk/models/operations/getassets.rb +4 -4
  12. data/lib/sdk/models/operations/getcreatormetrics.rb +4 -4
  13. data/lib/sdk/models/operations/getmultistreamtargets.rb +4 -4
  14. data/lib/sdk/models/operations/getpublictotalviewsmetrics.rb +5 -5
  15. data/lib/sdk/models/operations/getrecordedsessions.rb +4 -4
  16. data/lib/sdk/models/operations/getsessions.rb +4 -4
  17. data/lib/sdk/models/operations/getsigningkeys.rb +4 -4
  18. data/lib/sdk/models/operations/getstreams.rb +5 -5
  19. data/lib/sdk/models/operations/gettasks.rb +4 -4
  20. data/lib/sdk/models/operations/getviewershipsmetrics.rb +4 -4
  21. data/lib/sdk/models/operations/getwebhook.rb +1 -1
  22. data/lib/sdk/models/operations/getwebhooks.rb +4 -4
  23. data/lib/sdk/models/operations/post_clip.rb +5 -5
  24. data/lib/sdk/models/operations/removemultistreamtarget.rb +48 -0
  25. data/lib/sdk/models/operations/requestupload.rb +5 -5
  26. data/lib/sdk/models/operations/terminatestream.rb +45 -0
  27. data/lib/sdk/models/operations/{patch_asset_assetid_.rb → updateasset.rb} +2 -2
  28. data/lib/sdk/models/operations/updatewebhook.rb +1 -1
  29. data/lib/sdk/models/operations/uploadassetviaurl.rb +5 -5
  30. data/lib/sdk/models/shared/asset.rb +11 -17
  31. data/lib/sdk/models/shared/attestation.rb +5 -11
  32. data/lib/sdk/models/shared/encryption.rb +2 -6
  33. data/lib/sdk/models/shared/ffmpeg_profile.rb +6 -2
  34. data/lib/sdk/models/shared/ipfs_export_params.rb +5 -16
  35. data/lib/sdk/models/shared/multistream.rb +2 -50
  36. data/lib/sdk/models/shared/multistream_target.rb +3 -1
  37. data/lib/sdk/models/shared/new_asset_payload.rb +8 -3
  38. data/lib/sdk/models/shared/playback_info.rb +50 -4
  39. data/lib/sdk/models/shared/session.rb +3 -3
  40. data/lib/sdk/models/shared/stream.rb +5 -29
  41. data/lib/sdk/models/shared/stream_patch_payload.rb +5 -2
  42. data/lib/sdk/models/shared/target.rb +61 -0
  43. data/lib/sdk/models/shared/target_add_payload.rb +61 -0
  44. data/lib/sdk/models/shared/target_output.rb +35 -0
  45. data/lib/sdk/models/shared/task.rb +54 -231
  46. data/lib/sdk/models/shared/transcode_payload.rb +105 -0
  47. data/lib/sdk/models/shared/transcode_profile.rb +75 -0
  48. data/lib/sdk/multistream_target.rb +4 -1
  49. data/lib/sdk/sdk.rb +33 -3
  50. data/lib/sdk/sdkconfiguration.rb +3 -3
  51. data/lib/sdk/session.rb +40 -40
  52. data/lib/sdk/{access_control.rb → signing_key.rb} +15 -40
  53. data/lib/sdk/stream.rb +148 -7
  54. data/lib/sdk/task.rb +1 -1
  55. data/lib/sdk/transcode.rb +123 -1
  56. data/lib/sdk/webhook.rb +3 -1
  57. metadata +17 -15
  58. data/lib/sdk/models/shared/encryption_output.rb +0 -21
  59. data/lib/sdk/models/shared/nftmetadata.rb +0 -24
  60. data/lib/sdk/models/shared/nftmetadatatemplate.rb +0 -23
  61. data/lib/sdk/models/shared/signing_key_response_payload.rb +0 -43
  62. data/lib/sdk/models/shared/upload.rb +0 -34
  63. data/lib/sdk/models/shared/upload_output.rb +0 -34
@@ -20,12 +20,14 @@ module Livepeer
20
20
  end
21
21
 
22
22
 
23
-
23
+ # Hrn - Human Readable Name
24
24
  class Hrn < T::Enum
25
25
  enums do
26
26
  HLS_TS_ = new('HLS (TS)')
27
27
  MP4 = new('MP4')
28
28
  WEB_RTC_H264_ = new('WebRTC (H264)')
29
+ THUMBNAIL_JPEG_ = new('Thumbnail (JPEG)')
30
+ THUMBNAILS = new('Thumbnails')
29
31
  end
30
32
  end
31
33
 
@@ -36,6 +38,8 @@ module Livepeer
36
38
  HTML5_APPLICATION_VND_APPLE_MPEGURL = new('html5/application/vnd.apple.mpegurl')
37
39
  HTML5_VIDEO_MP4 = new('html5/video/mp4')
38
40
  HTML5_VIDEO_H264 = new('html5/video/h264')
41
+ IMAGE_JPEG = new('image/jpeg')
42
+ TEXT_VTT = new('text/vtt')
39
43
  end
40
44
  end
41
45
 
@@ -44,7 +48,7 @@ module Livepeer
44
48
  class Source < Livepeer::Utils::FieldAugmented
45
49
  extend T::Sig
46
50
 
47
-
51
+ # Human Readable Name
48
52
  field :hrn, Shared::Hrn, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('hrn'), 'decoder': Utils.enum_from_string(Shared::Hrn, false) } }
49
53
 
50
54
  field :type, Shared::PlaybackInfoSchemasType, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('type'), 'decoder': Utils.enum_from_string(Shared::PlaybackInfoSchemasType, false) } }
@@ -73,6 +77,45 @@ module Livepeer
73
77
  end
74
78
 
75
79
 
80
+ class PlaybackInfoHrn < T::Enum
81
+ enums do
82
+ HLS_TS_ = new('HLS (TS)')
83
+ end
84
+ end
85
+
86
+
87
+
88
+ class PlaybackInfoSchemasMetaType < T::Enum
89
+ enums do
90
+ HTML5_APPLICATION_VND_APPLE_MPEGURL = new('html5/application/vnd.apple.mpegurl')
91
+ end
92
+ end
93
+
94
+
95
+
96
+ class DvrPlayback < Livepeer::Utils::FieldAugmented
97
+ extend T::Sig
98
+
99
+
100
+ field :error, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('error') } }
101
+
102
+ field :hrn, T.nilable(Shared::PlaybackInfoHrn), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('hrn'), 'decoder': Utils.enum_from_string(Shared::PlaybackInfoHrn, true) } }
103
+
104
+ field :type, T.nilable(Shared::PlaybackInfoSchemasMetaType), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('type'), 'decoder': Utils.enum_from_string(Shared::PlaybackInfoSchemasMetaType, true) } }
105
+
106
+ field :url, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('url') } }
107
+
108
+
109
+ sig { params(error: T.nilable(String), hrn: T.nilable(Shared::PlaybackInfoHrn), type: T.nilable(Shared::PlaybackInfoSchemasMetaType), url: T.nilable(String)).void }
110
+ def initialize(error: nil, hrn: nil, type: nil, url: nil)
111
+ @error = error
112
+ @hrn = hrn
113
+ @type = type
114
+ @url = url
115
+ end
116
+ end
117
+
118
+
76
119
  class Meta < Livepeer::Utils::FieldAugmented
77
120
  extend T::Sig
78
121
 
@@ -81,15 +124,18 @@ module Livepeer
81
124
 
82
125
  field :attestation, T.nilable(Shared::Attestation), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('attestation') } }
83
126
 
127
+ field :dvr_playback, T.nilable(T::Array[Shared::DvrPlayback]), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('dvrPlayback') } }
128
+
84
129
  field :live, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('live') } }
85
130
  # Whether the playback policy for a asset or stream is public or signed
86
131
  field :playback_policy, T.nilable(Shared::PlaybackPolicy), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('playbackPolicy') } }
87
132
 
88
133
 
89
- sig { params(source: T::Array[Shared::Source], attestation: T.nilable(Shared::Attestation), live: T.nilable(Float), playback_policy: T.nilable(Shared::PlaybackPolicy)).void }
90
- def initialize(source: nil, attestation: nil, live: nil, playback_policy: nil)
134
+ sig { params(source: T::Array[Shared::Source], attestation: T.nilable(Shared::Attestation), dvr_playback: T.nilable(T::Array[Shared::DvrPlayback]), live: T.nilable(Float), playback_policy: T.nilable(Shared::PlaybackPolicy)).void }
135
+ def initialize(source: nil, attestation: nil, dvr_playback: nil, live: nil, playback_policy: nil)
91
136
  @source = source
92
137
  @attestation = attestation
138
+ @dvr_playback = dvr_playback
93
139
  @live = live
94
140
  @playback_policy = playback_policy
95
141
  end
@@ -24,7 +24,7 @@ module Livepeer
24
24
 
25
25
 
26
26
  field :name, String, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('name') } }
27
- # Timestamp (in milliseconds) at which the stream object was created
27
+ # Timestamp (in milliseconds) at which stream object was created
28
28
  field :created_at, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('createdAt') } }
29
29
 
30
30
  field :id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('id') } }
@@ -42,9 +42,9 @@ module Livepeer
42
42
  field :mp4_url, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('mp4Url') } }
43
43
  # Rate at which transcodedBytes increases (bytes/second)
44
44
  field :outgoing_rate, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('outgoingRate') } }
45
- # Points to the parent stream object
45
+ # Points to parent stream object
46
46
  field :parent_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('parentId') } }
47
- # Used to form the playback URL
47
+ # Used to form playback URL
48
48
  field :playback_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('playbackId') } }
49
49
 
50
50
  field :profiles, T.nilable(T::Array[Shared::FfmpegProfile]), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('profiles') } }
@@ -10,40 +10,16 @@ require_relative '../shared/playback_policy'
10
10
  module Livepeer
11
11
  module Shared
12
12
 
13
- class StreamTargets < Livepeer::Utils::FieldAugmented
14
- extend T::Sig
15
-
16
- # Name of the transcoding profile that should be sent. Use
17
- # "source" for pushing the source stream data
18
- #
19
- field :profile, String, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('profile') } }
20
- # ID of the multistream target object where to push this stream
21
- field :id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('id') } }
22
- # If true, the stream audio will be muted, and only silent
23
- # video will be pushed to the target.
24
- #
25
- field :video_only, T.nilable(T::Boolean), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('videoOnly') } }
26
-
27
-
28
- sig { params(profile: String, id: T.nilable(String), video_only: T.nilable(T::Boolean)).void }
29
- def initialize(profile: nil, id: nil, video_only: nil)
30
- @profile = profile
31
- @id = id
32
- @video_only = video_only
33
- end
34
- end
35
-
36
-
37
13
  class StreamMultistream < Livepeer::Utils::FieldAugmented
38
14
  extend T::Sig
39
15
 
40
16
  # References to targets where this stream will be simultaneously
41
17
  # streamed to
42
18
  #
43
- field :targets, T.nilable(T::Array[Shared::StreamTargets]), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('targets') } }
19
+ field :targets, T.nilable(T::Array[Shared::TargetOutput]), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('targets') } }
44
20
 
45
21
 
46
- sig { params(targets: T.nilable(T::Array[Shared::StreamTargets])).void }
22
+ sig { params(targets: T.nilable(T::Array[Shared::TargetOutput])).void }
47
23
  def initialize(targets: nil)
48
24
  @targets = targets
49
25
  end
@@ -55,7 +31,7 @@ module Livepeer
55
31
 
56
32
 
57
33
  field :name, String, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('name') } }
58
- # Timestamp (in milliseconds) at which the stream object was created
34
+ # Timestamp (in milliseconds) at which stream object was created
59
35
  field :created_at, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('createdAt') } }
60
36
  # Name of the token used to create this object
61
37
  field :created_by_token_name, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('createdByTokenName') } }
@@ -79,7 +55,7 @@ module Livepeer
79
55
  field :multistream, T.nilable(Shared::StreamMultistream), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('multistream') } }
80
56
  # Rate at which transcodedBytes increases (bytes/second)
81
57
  field :outgoing_rate, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('outgoingRate') } }
82
- # Points to the parent stream object
58
+ # Points to parent stream object
83
59
  field :parent_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('parentId') } }
84
60
  # Used to form playback URL
85
61
  field :playback_id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('playbackId') } }
@@ -97,7 +73,7 @@ module Livepeer
97
73
  field :source_segments, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('sourceSegments') } }
98
74
  # Duration of all the source segments, sec
99
75
  field :source_segments_duration, T.nilable(Float), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('sourceSegmentsDuration') } }
100
- # Used to form the RTMP ingest URL
76
+ # Used to form RTMP ingest URL
101
77
  field :stream_key, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('streamKey') } }
102
78
  # If currently suspended
103
79
  field :suspended, T.nilable(T::Boolean), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('suspended') } }
@@ -20,6 +20,8 @@ module Livepeer
20
20
  field :multistream, T.nilable(Shared::Multistream), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('multistream') } }
21
21
  # Whether the playback policy for a asset or stream is public or signed
22
22
  field :playback_policy, T.nilable(Shared::PlaybackPolicy), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('playbackPolicy') } }
23
+
24
+ field :profiles, T.nilable(T::Array[Shared::FfmpegProfile]), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('profiles') } }
23
25
  # Should this stream be recorded? Uses default settings. For more
24
26
  # customization, create and configure an object store.
25
27
  #
@@ -28,11 +30,12 @@ module Livepeer
28
30
  field :suspended, T.nilable(T::Boolean), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('suspended') } }
29
31
 
30
32
 
31
- sig { params(creator_id: T.nilable(Object), multistream: T.nilable(Shared::Multistream), playback_policy: T.nilable(Shared::PlaybackPolicy), record: T.nilable(T::Boolean), suspended: T.nilable(T::Boolean)).void }
32
- def initialize(creator_id: nil, multistream: nil, playback_policy: nil, record: nil, suspended: nil)
33
+ sig { params(creator_id: T.nilable(Object), multistream: T.nilable(Shared::Multistream), playback_policy: T.nilable(Shared::PlaybackPolicy), profiles: T.nilable(T::Array[Shared::FfmpegProfile]), record: T.nilable(T::Boolean), suspended: T.nilable(T::Boolean)).void }
34
+ def initialize(creator_id: nil, multistream: nil, playback_policy: nil, profiles: nil, record: nil, suspended: nil)
33
35
  @creator_id = creator_id
34
36
  @multistream = multistream
35
37
  @playback_policy = playback_policy
38
+ @profiles = profiles
36
39
  @record = record
37
40
  @suspended = suspended
38
41
  end
@@ -0,0 +1,61 @@
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
+
9
+ module Livepeer
10
+ module Shared
11
+ # Inline multistream target object. Will automatically
12
+ # create the target resource to be used by the created
13
+ # stream.
14
+ #
15
+ class Spec < Livepeer::Utils::FieldAugmented
16
+ extend T::Sig
17
+
18
+ # Livepeer-compatible multistream target URL (RTMP(S) or SRT)
19
+ field :url, String, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('url') } }
20
+
21
+ field :name, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('name') } }
22
+
23
+
24
+ sig { params(url: String, name: T.nilable(String)).void }
25
+ def initialize(url: nil, name: nil)
26
+ @url = url
27
+ @name = name
28
+ end
29
+ end
30
+
31
+
32
+ class Target < Livepeer::Utils::FieldAugmented
33
+ extend T::Sig
34
+
35
+ # Name of transcoding profile that should be sent. Use
36
+ # "source" for pushing source stream data
37
+ #
38
+ field :profile, String, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('profile') } }
39
+ # ID of multistream target object where to push this stream
40
+ field :id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('id') } }
41
+ # Inline multistream target object. Will automatically
42
+ # create the target resource to be used by the created
43
+ # stream.
44
+ #
45
+ field :spec, T.nilable(Shared::Spec), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('spec') } }
46
+ # If true, the stream audio will be muted and only silent
47
+ # video will be pushed to the target.
48
+ #
49
+ field :video_only, T.nilable(T::Boolean), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('videoOnly') } }
50
+
51
+
52
+ sig { params(profile: String, id: T.nilable(String), spec: T.nilable(Shared::Spec), video_only: T.nilable(T::Boolean)).void }
53
+ def initialize(profile: nil, id: nil, spec: nil, video_only: nil)
54
+ @profile = profile
55
+ @id = id
56
+ @spec = spec
57
+ @video_only = video_only
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,61 @@
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
+
9
+ module Livepeer
10
+ module Shared
11
+ # Inline multistream target object. Will automatically
12
+ # create the target resource to be used by the created
13
+ # stream.
14
+ #
15
+ class TargetAddPayloadSpec < Livepeer::Utils::FieldAugmented
16
+ extend T::Sig
17
+
18
+ # Livepeer-compatible multistream target URL (RTMP(S) or SRT)
19
+ field :url, String, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('url') } }
20
+
21
+ field :name, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('name') } }
22
+
23
+
24
+ sig { params(url: String, name: T.nilable(String)).void }
25
+ def initialize(url: nil, name: nil)
26
+ @url = url
27
+ @name = name
28
+ end
29
+ end
30
+
31
+
32
+ class TargetAddPayload < Livepeer::Utils::FieldAugmented
33
+ extend T::Sig
34
+
35
+ # Name of transcoding profile that should be sent. Use
36
+ # "source" for pushing source stream data
37
+ #
38
+ field :profile, String, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('profile') } }
39
+ # ID of multistream target object where to push this stream
40
+ field :id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('id') } }
41
+ # Inline multistream target object. Will automatically
42
+ # create the target resource to be used by the created
43
+ # stream.
44
+ #
45
+ field :spec, T.nilable(Shared::TargetAddPayloadSpec), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('spec') } }
46
+ # If true, the stream audio will be muted and only silent
47
+ # video will be pushed to the target.
48
+ #
49
+ field :video_only, T.nilable(T::Boolean), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('videoOnly') } }
50
+
51
+
52
+ sig { params(profile: String, id: T.nilable(String), spec: T.nilable(Shared::TargetAddPayloadSpec), video_only: T.nilable(T::Boolean)).void }
53
+ def initialize(profile: nil, id: nil, spec: nil, video_only: nil)
54
+ @profile = profile
55
+ @id = id
56
+ @spec = spec
57
+ @video_only = video_only
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,35 @@
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
+
9
+ module Livepeer
10
+ module Shared
11
+
12
+ class TargetOutput < Livepeer::Utils::FieldAugmented
13
+ extend T::Sig
14
+
15
+ # Name of transcoding profile that should be sent. Use
16
+ # "source" for pushing source stream data
17
+ #
18
+ field :profile, String, { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('profile') } }
19
+ # ID of multistream target object where to push this stream
20
+ field :id, T.nilable(String), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('id') } }
21
+ # If true, the stream audio will be muted and only silent
22
+ # video will be pushed to the target.
23
+ #
24
+ field :video_only, T.nilable(T::Boolean), { 'format_json': { 'letter_case': OpenApiSDK::Utils.field_name('videoOnly') } }
25
+
26
+
27
+ sig { params(profile: String, id: T.nilable(String), video_only: T.nilable(T::Boolean)).void }
28
+ def initialize(profile: nil, id: nil, video_only: nil)
29
+ @profile = profile
30
+ @id = id
31
+ @video_only = video_only
32
+ end
33
+ end
34
+ end
35
+ end