@fishjam-cloud/js-server-sdk 0.29.0-rc.2 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,44 +1,16 @@
1
1
  import { BinaryWriter, BinaryReader } from '@bufbuild/protobuf/wire';
2
- import { AxiosError } from 'axios';
3
2
 
4
3
  /**
5
- * Output audio options
6
- * @export
7
- * @interface AgentOutput
8
- */
9
- interface AgentOutput {
10
- /**
11
- *
12
- * @type {AudioFormat}
13
- * @memberof AgentOutput
14
- */
15
- 'audioFormat'?: AudioFormat;
16
- /**
17
- *
18
- * @type {AudioSampleRate}
19
- * @memberof AgentOutput
20
- */
21
- 'audioSampleRate'?: AudioSampleRate;
22
- }
23
- /**
24
- * The format of the output audio
25
- * @export
26
- * @enum {string}
27
- */
28
- declare const AudioFormat: {
29
- readonly Pcm16: "pcm16";
30
- };
31
- type AudioFormat = typeof AudioFormat[keyof typeof AudioFormat];
32
- /**
33
- * The sample rate of the output audio
34
- * @export
35
- * @enum {string}
4
+ * Fishjam API
5
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
6
+ *
7
+ * The version of the OpenAPI document: 0.30.0
8
+ * Contact: contact@fishjam.io
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
36
13
  */
37
- declare const AudioSampleRate: {
38
- readonly NUMBER_16000: 16000;
39
- readonly NUMBER_24000: 24000;
40
- };
41
- type AudioSampleRate = typeof AudioSampleRate[keyof typeof AudioSampleRate];
42
14
  /**
43
15
  * Connection details for a MoQ relay client
44
16
  * @export
@@ -50,14 +22,26 @@ interface MoqAccess {
50
22
  * @type {string}
51
23
  * @memberof MoqAccess
52
24
  */
53
- 'connection_url': string;
25
+ connection_url: string;
54
26
  /**
55
27
  * JWT authorizing the MoQ relay connection, also embedded in `connection_url`
56
28
  * @type {string}
57
29
  * @memberof MoqAccess
58
30
  */
59
- 'token': string;
31
+ token: string;
60
32
  }
33
+
34
+ /**
35
+ * Fishjam API
36
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
37
+ *
38
+ * The version of the OpenAPI document: 0.30.0
39
+ * Contact: contact@fishjam.io
40
+ *
41
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
42
+ * https://openapi-generator.tech
43
+ * Do not edit the class manually.
44
+ */
61
45
  /**
62
46
  * MoQ access configuration
63
47
  * @export
@@ -69,69 +53,292 @@ interface MoqAccessConfig {
69
53
  * @type {string}
70
54
  * @memberof MoqAccessConfig
71
55
  */
72
- 'publishPath'?: string | null;
56
+ publishPath?: string | null;
73
57
  /**
74
58
  * Path under the root the token grants subscribe access to
75
59
  * @type {string}
76
60
  * @memberof MoqAccessConfig
77
61
  */
78
- 'subscribePath'?: string | null;
62
+ subscribePath?: string | null;
79
63
  }
64
+
80
65
  /**
81
- * Describes peer status
66
+ * Fishjam API
67
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
68
+ *
69
+ * The version of the OpenAPI document: 0.30.0
70
+ * Contact: contact@fishjam.io
71
+ *
72
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
73
+ * https://openapi-generator.tech
74
+ * Do not edit the class manually.
75
+ */
76
+ /**
77
+ * The source for the recording
82
78
  * @export
83
- * @interface Peer
79
+ * @interface RecordingSource
84
80
  */
85
- interface Peer$1 {
81
+ interface RecordingSource {
86
82
  /**
87
- * Assigned peer id
83
+ * URL of the composition to record
88
84
  * @type {string}
89
- * @memberof Peer
85
+ * @memberof RecordingSource
90
86
  */
91
- 'id': string;
87
+ compositionURL: string;
92
88
  /**
93
- * Custom metadata set by the peer
94
- * @type {object}
95
- * @memberof Peer
89
+ * Id of the output being recorded
90
+ * @type {string}
91
+ * @memberof RecordingSource
92
+ */
93
+ outputId: string;
94
+ /**
95
+ * Scale factor for the recording relative to the source output (>0; may upscale or downscale). Defaults to 1.
96
+ * @type {number}
97
+ * @memberof RecordingSource
98
+ */
99
+ scaleRatio?: number;
100
+ }
101
+
102
+ /**
103
+ * Fishjam API
104
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
105
+ *
106
+ * The version of the OpenAPI document: 0.30.0
107
+ * Contact: contact@fishjam.io
108
+ *
109
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
110
+ * https://openapi-generator.tech
111
+ * Do not edit the class manually.
112
+ */
113
+
114
+ /**
115
+ * Recording configuration
116
+ * @export
117
+ * @interface RecordingConfig
118
+ */
119
+ interface RecordingConfig {
120
+ /**
121
+ * Free-form, user-supplied metadata used to organize and filter recordings
122
+ * @type {{ [key: string]: any; }}
123
+ * @memberof RecordingConfig
96
124
  */
97
- 'metadata': object | null;
125
+ metadata?: {
126
+ [key: string]: any;
127
+ } | null;
98
128
  /**
99
129
  *
100
- * @type {PeerStatus}
101
- * @memberof Peer
130
+ * @type {RecordingSource}
131
+ * @memberof RecordingConfig
132
+ */
133
+ source: RecordingSource;
134
+ }
135
+
136
+ /**
137
+ * Fishjam API
138
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
139
+ *
140
+ * The version of the OpenAPI document: 0.30.0
141
+ * Contact: contact@fishjam.io
142
+ *
143
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
144
+ * https://openapi-generator.tech
145
+ * Do not edit the class manually.
146
+ */
147
+ /**
148
+ * Lifecycle status of a recording
149
+ * @export
150
+ */
151
+ declare const RecordingStatus$1: {
152
+ readonly Active: "active";
153
+ readonly Finished: "finished";
154
+ readonly Available: "available";
155
+ readonly Failed: "failed";
156
+ };
157
+ type RecordingStatus$1 = typeof RecordingStatus$1[keyof typeof RecordingStatus$1];
158
+
159
+ /**
160
+ * Fishjam API
161
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
162
+ *
163
+ * The version of the OpenAPI document: 0.30.0
164
+ * Contact: contact@fishjam.io
165
+ *
166
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
167
+ * https://openapi-generator.tech
168
+ * Do not edit the class manually.
169
+ */
170
+ /**
171
+ * A single media file of a recording
172
+ * @export
173
+ * @interface RecordingFile
174
+ */
175
+ interface RecordingFile {
176
+ /**
177
+ * Public URL the file is served at
178
+ * @type {string}
179
+ * @memberof RecordingFile
180
+ */
181
+ url: string;
182
+ }
183
+
184
+ /**
185
+ * Fishjam API
186
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
187
+ *
188
+ * The version of the OpenAPI document: 0.30.0
189
+ * Contact: contact@fishjam.io
190
+ *
191
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
192
+ * https://openapi-generator.tech
193
+ * Do not edit the class manually.
194
+ */
195
+
196
+ /**
197
+ * A recording and its current lifecycle status
198
+ * @export
199
+ * @interface Recording
200
+ */
201
+ interface Recording$1 {
202
+ /**
203
+ * Media files of the recording, in playback order. Empty until the recording is `available`.
204
+ * @type {Array<RecordingFile>}
205
+ * @memberof Recording
206
+ */
207
+ files: Array<RecordingFile>;
208
+ /**
209
+ * Assigned recording id
210
+ * @type {string}
211
+ * @memberof Recording
212
+ */
213
+ id: string;
214
+ /**
215
+ * Free-form, user-supplied metadata used to organize and filter recordings
216
+ * @type {{ [key: string]: any; }}
217
+ * @memberof Recording
102
218
  */
103
- 'status': PeerStatus;
219
+ metadata?: {
220
+ [key: string]: any;
221
+ } | null;
104
222
  /**
105
223
  *
106
- * @type {SubscribeMode}
107
- * @memberof Peer
224
+ * @type {RecordingSource}
225
+ * @memberof Recording
108
226
  */
109
- 'subscribeMode': SubscribeMode;
227
+ source: RecordingSource;
110
228
  /**
111
229
  *
112
- * @type {Subscriptions}
113
- * @memberof Peer
230
+ * @type {RecordingStatus}
231
+ * @memberof Recording
114
232
  */
115
- 'subscriptions': Subscriptions;
233
+ status: RecordingStatus$1;
234
+ }
235
+
236
+ /**
237
+ * Fishjam API
238
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
239
+ *
240
+ * The version of the OpenAPI document: 0.30.0
241
+ * Contact: contact@fishjam.io
242
+ *
243
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
244
+ * https://openapi-generator.tech
245
+ * Do not edit the class manually.
246
+ */
247
+ /**
248
+ * The sample rate of the output audio
249
+ * @export
250
+ */
251
+ declare const AudioSampleRate: {
252
+ readonly NUMBER_16000: 16000;
253
+ readonly NUMBER_24000: 24000;
254
+ };
255
+ type AudioSampleRate = typeof AudioSampleRate[keyof typeof AudioSampleRate];
256
+
257
+ /**
258
+ * Fishjam API
259
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
260
+ *
261
+ * The version of the OpenAPI document: 0.30.0
262
+ * Contact: contact@fishjam.io
263
+ *
264
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
265
+ * https://openapi-generator.tech
266
+ * Do not edit the class manually.
267
+ */
268
+ /**
269
+ * The format of the output audio
270
+ * @export
271
+ */
272
+ declare const AudioFormat: {
273
+ readonly Pcm16: "pcm16";
274
+ };
275
+ type AudioFormat = typeof AudioFormat[keyof typeof AudioFormat];
276
+
277
+ /**
278
+ * Fishjam API
279
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
280
+ *
281
+ * The version of the OpenAPI document: 0.30.0
282
+ * Contact: contact@fishjam.io
283
+ *
284
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
285
+ * https://openapi-generator.tech
286
+ * Do not edit the class manually.
287
+ */
288
+
289
+ /**
290
+ * Output audio options
291
+ * @export
292
+ * @interface AgentOutput
293
+ */
294
+ interface AgentOutput {
116
295
  /**
117
- * List of all peer\'s tracks
118
- * @type {Array<Track>}
119
- * @memberof Peer
296
+ *
297
+ * @type {AudioFormat}
298
+ * @memberof AgentOutput
120
299
  */
121
- 'tracks': Array<Track$2>;
300
+ audioFormat?: AudioFormat;
122
301
  /**
123
302
  *
124
- * @type {PeerType}
125
- * @memberof Peer
303
+ * @type {AudioSampleRate}
304
+ * @memberof AgentOutput
126
305
  */
127
- 'type': PeerType$1;
306
+ audioSampleRate?: AudioSampleRate;
128
307
  }
308
+
129
309
  /**
130
- * @type PeerOptions
131
- * Peer-specific options
310
+ * Fishjam API
311
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
312
+ *
313
+ * The version of the OpenAPI document: 0.30.0
314
+ * Contact: contact@fishjam.io
315
+ *
316
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
317
+ * https://openapi-generator.tech
318
+ * Do not edit the class manually.
319
+ */
320
+ /**
321
+ * Configuration of peer's subscribing policy
132
322
  * @export
133
323
  */
134
- type PeerOptions = PeerOptionsAgent | PeerOptionsVapi | PeerOptionsWebRTC;
324
+ declare const SubscribeMode: {
325
+ readonly Auto: "auto";
326
+ readonly Manual: "manual";
327
+ };
328
+ type SubscribeMode = typeof SubscribeMode[keyof typeof SubscribeMode];
329
+
330
+ /**
331
+ * Fishjam API
332
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
333
+ *
334
+ * The version of the OpenAPI document: 0.30.0
335
+ * Contact: contact@fishjam.io
336
+ *
337
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
338
+ * https://openapi-generator.tech
339
+ * Do not edit the class manually.
340
+ */
341
+
135
342
  /**
136
343
  * Options specific to the Agent peer
137
344
  * @export
@@ -143,14 +350,27 @@ interface PeerOptionsAgent {
143
350
  * @type {AgentOutput}
144
351
  * @memberof PeerOptionsAgent
145
352
  */
146
- 'output'?: AgentOutput;
353
+ output?: AgentOutput;
147
354
  /**
148
355
  *
149
356
  * @type {SubscribeMode}
150
357
  * @memberof PeerOptionsAgent
151
358
  */
152
- 'subscribeMode'?: SubscribeMode;
359
+ subscribeMode?: SubscribeMode;
153
360
  }
361
+
362
+ /**
363
+ * Fishjam API
364
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
365
+ *
366
+ * The version of the OpenAPI document: 0.30.0
367
+ * Contact: contact@fishjam.io
368
+ *
369
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
370
+ * https://openapi-generator.tech
371
+ * Do not edit the class manually.
372
+ */
373
+
154
374
  /**
155
375
  * Options specific to the VAPI peer
156
376
  * @export
@@ -162,20 +382,33 @@ interface PeerOptionsVapi {
162
382
  * @type {string}
163
383
  * @memberof PeerOptionsVapi
164
384
  */
165
- 'apiKey': string;
385
+ apiKey: string;
166
386
  /**
167
387
  * VAPI call ID
168
388
  * @type {string}
169
389
  * @memberof PeerOptionsVapi
170
390
  */
171
- 'callId': string;
391
+ callId: string;
172
392
  /**
173
393
  *
174
394
  * @type {SubscribeMode}
175
395
  * @memberof PeerOptionsVapi
176
396
  */
177
- 'subscribeMode'?: SubscribeMode;
397
+ subscribeMode?: SubscribeMode;
178
398
  }
399
+
400
+ /**
401
+ * Fishjam API
402
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
403
+ *
404
+ * The version of the OpenAPI document: 0.30.0
405
+ * Contact: contact@fishjam.io
406
+ *
407
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
408
+ * https://openapi-generator.tech
409
+ * Do not edit the class manually.
410
+ */
411
+
179
412
  /**
180
413
  * Options specific to the WebRTC peer
181
414
  * @export
@@ -187,7 +420,7 @@ interface PeerOptionsWebRTC {
187
420
  * @type {{ [key: string]: any; }}
188
421
  * @memberof PeerOptionsWebRTC
189
422
  */
190
- 'metadata'?: {
423
+ metadata?: {
191
424
  [key: string]: any;
192
425
  };
193
426
  /**
@@ -195,22 +428,75 @@ interface PeerOptionsWebRTC {
195
428
  * @type {SubscribeMode}
196
429
  * @memberof PeerOptionsWebRTC
197
430
  */
198
- 'subscribeMode'?: SubscribeMode;
431
+ subscribeMode?: SubscribeMode;
432
+ }
433
+
434
+ /**
435
+ * Fishjam API
436
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
437
+ *
438
+ * The version of the OpenAPI document: 0.30.0
439
+ * Contact: contact@fishjam.io
440
+ *
441
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
442
+ * https://openapi-generator.tech
443
+ * Do not edit the class manually.
444
+ */
445
+ /**
446
+ * Describes peer's subscriptions in manual mode
447
+ * @export
448
+ * @interface Subscriptions
449
+ */
450
+ interface Subscriptions {
451
+ /**
452
+ * List of peer IDs this peer subscribes to
453
+ * @type {Array<string>}
454
+ * @memberof Subscriptions
455
+ */
456
+ peers: Array<string>;
457
+ /**
458
+ * List of track IDs this peer subscribes to
459
+ * @type {Array<string>}
460
+ * @memberof Subscriptions
461
+ */
462
+ tracks: Array<string>;
199
463
  }
464
+
465
+ /**
466
+ * Fishjam API
467
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
468
+ *
469
+ * The version of the OpenAPI document: 0.30.0
470
+ * Contact: contact@fishjam.io
471
+ *
472
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
473
+ * https://openapi-generator.tech
474
+ * Do not edit the class manually.
475
+ */
200
476
  /**
201
477
  * Informs about the peer status
202
478
  * @export
203
- * @enum {string}
204
479
  */
205
480
  declare const PeerStatus: {
206
481
  readonly Connected: "connected";
207
482
  readonly Disconnected: "disconnected";
208
483
  };
209
484
  type PeerStatus = typeof PeerStatus[keyof typeof PeerStatus];
485
+
486
+ /**
487
+ * Fishjam API
488
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
489
+ *
490
+ * The version of the OpenAPI document: 0.30.0
491
+ * Contact: contact@fishjam.io
492
+ *
493
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
494
+ * https://openapi-generator.tech
495
+ * Do not edit the class manually.
496
+ */
210
497
  /**
211
498
  * Peer type
212
499
  * @export
213
- * @enum {string}
214
500
  */
215
501
  declare const PeerType$1: {
216
502
  readonly Webrtc: "webrtc";
@@ -218,162 +504,2675 @@ declare const PeerType$1: {
218
504
  readonly Vapi: "vapi";
219
505
  };
220
506
  type PeerType$1 = typeof PeerType$1[keyof typeof PeerType$1];
507
+
221
508
  /**
222
- * Room configuration
509
+ * Fishjam API
510
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
511
+ *
512
+ * The version of the OpenAPI document: 0.30.0
513
+ * Contact: contact@fishjam.io
514
+ *
515
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
516
+ * https://openapi-generator.tech
517
+ * Do not edit the class manually.
518
+ */
519
+ /**
520
+ * Media type carried by the track
223
521
  * @export
224
- * @interface RoomConfig
225
522
  */
226
- interface RoomConfig {
523
+ declare const TrackType$2: {
524
+ readonly Audio: "audio";
525
+ readonly Video: "video";
526
+ };
527
+ type TrackType$2 = typeof TrackType$2[keyof typeof TrackType$2];
528
+
529
+ /**
530
+ * Fishjam API
531
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
532
+ *
533
+ * The version of the OpenAPI document: 0.30.0
534
+ * Contact: contact@fishjam.io
535
+ *
536
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
537
+ * https://openapi-generator.tech
538
+ * Do not edit the class manually.
539
+ */
540
+
541
+ /**
542
+ * Media track of a Peer
543
+ * @export
544
+ * @interface Track
545
+ */
546
+ interface Track$2 {
227
547
  /**
228
- * If true, webhook notifications for this room are coalesced into a single NotificationBatch per HTTP send instead of one request per notification. VAD notifications are unaffected.
229
- * @type {boolean}
230
- * @memberof RoomConfig
231
- */
232
- 'batchWebhookNotifications'?: boolean;
548
+ * Assigned track id
549
+ * @type {string}
550
+ * @memberof Track
551
+ */
552
+ id?: string;
553
+ /**
554
+ * Metadata attached to the track by the peer
555
+ * @type {object}
556
+ * @memberof Track
557
+ */
558
+ metadata?: object | null;
559
+ /**
560
+ *
561
+ * @type {TrackType}
562
+ * @memberof Track
563
+ */
564
+ type?: TrackType$2;
565
+ }
566
+
567
+ /**
568
+ * Fishjam API
569
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
570
+ *
571
+ * The version of the OpenAPI document: 0.30.0
572
+ * Contact: contact@fishjam.io
573
+ *
574
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
575
+ * https://openapi-generator.tech
576
+ * Do not edit the class manually.
577
+ */
578
+
579
+ /**
580
+ * Describes peer status
581
+ * @export
582
+ * @interface Peer
583
+ */
584
+ interface Peer$1 {
585
+ /**
586
+ * Assigned peer id
587
+ * @type {string}
588
+ * @memberof Peer
589
+ */
590
+ id: string;
591
+ /**
592
+ * Custom metadata set by the peer
593
+ * @type {object}
594
+ * @memberof Peer
595
+ */
596
+ metadata: object | null;
597
+ /**
598
+ *
599
+ * @type {PeerStatus}
600
+ * @memberof Peer
601
+ */
602
+ status: PeerStatus;
603
+ /**
604
+ *
605
+ * @type {SubscribeMode}
606
+ * @memberof Peer
607
+ */
608
+ subscribeMode: SubscribeMode;
609
+ /**
610
+ *
611
+ * @type {Subscriptions}
612
+ * @memberof Peer
613
+ */
614
+ subscriptions: Subscriptions;
615
+ /**
616
+ * List of all peer's tracks
617
+ * @type {Array<Track>}
618
+ * @memberof Peer
619
+ */
620
+ tracks: Array<Track$2>;
621
+ /**
622
+ *
623
+ * @type {PeerType}
624
+ * @memberof Peer
625
+ */
626
+ type: PeerType$1;
627
+ }
628
+
629
+ /**
630
+ * Fishjam API
631
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
632
+ *
633
+ * The version of the OpenAPI document: 0.30.0
634
+ * Contact: contact@fishjam.io
635
+ *
636
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
637
+ * https://openapi-generator.tech
638
+ * Do not edit the class manually.
639
+ */
640
+ /**
641
+ * The use-case of the room. If not provided, this defaults to conference.
642
+ * @export
643
+ */
644
+ declare const RoomType: {
645
+ readonly FullFeature: "full_feature";
646
+ readonly AudioOnly: "audio_only";
647
+ readonly Broadcaster: "broadcaster";
648
+ readonly Livestream: "livestream";
649
+ readonly Conference: "conference";
650
+ readonly AudioOnlyLivestream: "audio_only_livestream";
651
+ };
652
+ type RoomType = typeof RoomType[keyof typeof RoomType];
653
+
654
+ /**
655
+ * Fishjam API
656
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
657
+ *
658
+ * The version of the OpenAPI document: 0.30.0
659
+ * Contact: contact@fishjam.io
660
+ *
661
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
662
+ * https://openapi-generator.tech
663
+ * Do not edit the class manually.
664
+ */
665
+ /**
666
+ * Enforces video codec for each peer in the room
667
+ * @export
668
+ */
669
+ declare const VideoCodec: {
670
+ readonly H264: "h264";
671
+ readonly Vp8: "vp8";
672
+ };
673
+ type VideoCodec = typeof VideoCodec[keyof typeof VideoCodec];
674
+
675
+ /**
676
+ * Fishjam API
677
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
678
+ *
679
+ * The version of the OpenAPI document: 0.30.0
680
+ * Contact: contact@fishjam.io
681
+ *
682
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
683
+ * https://openapi-generator.tech
684
+ * Do not edit the class manually.
685
+ */
686
+
687
+ /**
688
+ * Room configuration
689
+ * @export
690
+ * @interface RoomConfig
691
+ */
692
+ interface RoomConfig {
693
+ /**
694
+ * If true, webhook notifications for this room are coalesced into a single NotificationBatch per HTTP send instead of one request per notification. VAD notifications are unaffected.
695
+ * @type {boolean}
696
+ * @memberof RoomConfig
697
+ */
698
+ batchWebhookNotifications?: boolean;
233
699
  /**
234
700
  * Maximum amount of peers allowed into the room
235
701
  * @type {number}
236
702
  * @memberof RoomConfig
237
703
  */
238
- 'maxPeers'?: number | null;
704
+ maxPeers?: number | null;
239
705
  /**
240
706
  * True if livestream viewers can omit specifying a token.
241
707
  * @type {boolean}
242
708
  * @memberof RoomConfig
243
709
  */
244
- 'public'?: boolean;
710
+ public?: boolean;
711
+ /**
712
+ *
713
+ * @type {RoomType}
714
+ * @memberof RoomConfig
715
+ */
716
+ roomType?: RoomType;
717
+ /**
718
+ *
719
+ * @type {VideoCodec}
720
+ * @memberof RoomConfig
721
+ */
722
+ videoCodec?: VideoCodec;
723
+ /**
724
+ * Deprecated: configure the webhook in the Dashboard instead. URL where Fishjam notifications will be sent; overrides the Dashboard-configured webhook URL
725
+ * @type {string}
726
+ * @memberof RoomConfig
727
+ * @deprecated
728
+ */
729
+ webhookUrl?: string | null;
730
+ }
731
+
732
+ /**
733
+ * Fishjam API
734
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
735
+ *
736
+ * The version of the OpenAPI document: 0.30.0
737
+ * Contact: contact@fishjam.io
738
+ *
739
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
740
+ * https://openapi-generator.tech
741
+ * Do not edit the class manually.
742
+ */
743
+ /**
744
+ * Streamer authorization token
745
+ * @export
746
+ * @interface StreamerToken
747
+ */
748
+ interface StreamerToken {
749
+ /**
750
+ * Token streamer should authorize with
751
+ * @type {string}
752
+ * @memberof StreamerToken
753
+ */
754
+ token: string;
755
+ }
756
+
757
+ /**
758
+ * Fishjam API
759
+ * API for managing Fishjam real-time media resources. ## Authentication ## Credentials (Fishjam ID, Fishjam Management Token) can be obtained at https://fishjam.io/app. All requests require HTTP Bearer authorization using the Fishjam Management Token. ## Fishjam SDKs ## For TypeScript and Python users, we provide SDKs that simplify using this API. We recommend using them instead of manually consuming the API in these languages. You can learn more about our SDKs in our [SDK Docs](http://fishjam.swmansion.com/docs/how-to/backend/server-setup)
760
+ *
761
+ * The version of the OpenAPI document: 0.30.0
762
+ * Contact: contact@fishjam.io
763
+ *
764
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
765
+ * https://openapi-generator.tech
766
+ * Do not edit the class manually.
767
+ */
768
+ /**
769
+ * Viewer authorization token
770
+ * @export
771
+ * @interface ViewerToken
772
+ */
773
+ interface ViewerToken {
774
+ /**
775
+ * Token viewer should authorize with
776
+ * @type {string}
777
+ * @memberof ViewerToken
778
+ */
779
+ token: string;
780
+ }
781
+
782
+ /**
783
+ * Composition API
784
+ * Real-time video compositing
785
+ *
786
+ * The version of the OpenAPI document: 0.1.0
787
+ *
788
+ *
789
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
790
+ * https://openapi-generator.tech
791
+ * Do not edit the class manually.
792
+ */
793
+ /**
794
+ *
795
+ * @export
796
+ * @interface CompositionCreatedResponse
797
+ */
798
+ interface CompositionCreatedResponse {
799
+ /**
800
+ *
801
+ * @type {string}
802
+ * @memberof CompositionCreatedResponse
803
+ */
804
+ compositionId: string;
805
+ /**
806
+ *
807
+ * @type {string}
808
+ * @memberof CompositionCreatedResponse
809
+ */
810
+ apiUrl: string;
811
+ }
812
+
813
+ /**
814
+ * Composition API
815
+ * Real-time video compositing
816
+ *
817
+ * The version of the OpenAPI document: 0.1.0
818
+ *
819
+ *
820
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
821
+ * https://openapi-generator.tech
822
+ * Do not edit the class manually.
823
+ */
824
+ /**
825
+ *
826
+ * @export
827
+ * @interface CreateCompositionRequest
828
+ */
829
+ interface CreateCompositionRequest {
830
+ /**
831
+ * If true, outputs will immediately start producing audio and video.
832
+ * If false, call `POST /api/composition/{composition_id}/start` to start the composition.
833
+ * @type {boolean}
834
+ * @memberof CreateCompositionRequest
835
+ */
836
+ autostart?: boolean;
837
+ /**
838
+ * If true (default), the composition will be cleaned up after 5 minutes when all **inputs**
839
+ * have zero bitrate, regardless of output bitrate. This prevents circular liveness when
840
+ * composition output is sent to a stream.
841
+ * If false, cleanup only triggers when both inputs and outputs have zero bitrate.
842
+ * @type {boolean}
843
+ * @memberof CreateCompositionRequest
844
+ */
845
+ cleanupWithoutInputs?: boolean;
846
+ }
847
+
848
+ /**
849
+ * Composition API
850
+ * Real-time video compositing
851
+ *
852
+ * The version of the OpenAPI document: 0.1.0
853
+ *
854
+ *
855
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
856
+ * https://openapi-generator.tech
857
+ * Do not edit the class manually.
858
+ */
859
+ /**
860
+ *
861
+ * @export
862
+ * @interface SendCompositionEventRequest
863
+ */
864
+ interface SendCompositionEventRequest {
865
+ /**
866
+ * Name of the event delivered to the composition's templates.
867
+ * @type {string}
868
+ * @memberof SendCompositionEventRequest
869
+ */
870
+ eventName: string;
871
+ /**
872
+ *
873
+ * @type {any}
874
+ * @memberof SendCompositionEventRequest
875
+ */
876
+ data?: any | null;
877
+ }
878
+
879
+ /**
880
+ * Composition API
881
+ * Real-time video compositing
882
+ *
883
+ * The version of the OpenAPI document: 0.1.0
884
+ *
885
+ *
886
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
887
+ * https://openapi-generator.tech
888
+ * Do not edit the class manually.
889
+ */
890
+ /**
891
+ * Input stream from an MP4 file.
892
+ * @export
893
+ * @interface Mp4Input
894
+ */
895
+ interface Mp4Input {
896
+ /**
897
+ * URL of the MP4 file.
898
+ * @type {string}
899
+ * @memberof Mp4Input
900
+ */
901
+ url: string;
902
+ /**
903
+ * (**default=`false`**) If input should be played in the loop. <span class="badge badge--primary">Added in v0.4.0</span>
904
+ * @type {boolean}
905
+ * @memberof Mp4Input
906
+ */
907
+ loop?: boolean | null;
908
+ /**
909
+ *
910
+ * @type {Mp4InputTypeEnum}
911
+ * @memberof Mp4Input
912
+ */
913
+ type: Mp4InputTypeEnum;
914
+ }
915
+ /**
916
+ * @export
917
+ */
918
+ declare const Mp4InputTypeEnum: {
919
+ readonly Mp4: "mp4";
920
+ };
921
+ type Mp4InputTypeEnum = (typeof Mp4InputTypeEnum)[keyof typeof Mp4InputTypeEnum];
922
+
923
+ /**
924
+ * Composition API
925
+ * Real-time video compositing
926
+ *
927
+ * The version of the OpenAPI document: 0.1.0
928
+ *
929
+ *
930
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
931
+ * https://openapi-generator.tech
932
+ * Do not edit the class manually.
933
+ */
934
+ /**
935
+ *
936
+ * @export
937
+ * @interface RtmpInput
938
+ */
939
+ interface RtmpInput {
940
+ /**
941
+ * The RTMP stream key.
942
+ * This is the path segment of the RTMP stream URL that Smelter listens on for incoming streams.
943
+ * Format: `rtmp://<ip_address>:<port>/<stream_key>`
944
+ * @type {string}
945
+ * @memberof RtmpInput
946
+ */
947
+ streamKey: string;
948
+ /**
949
+ *
950
+ * @type {RtmpInputTypeEnum}
951
+ * @memberof RtmpInput
952
+ */
953
+ type: RtmpInputTypeEnum;
954
+ }
955
+ /**
956
+ * @export
957
+ */
958
+ declare const RtmpInputTypeEnum: {
959
+ readonly RtmpServer: "rtmp_server";
960
+ };
961
+ type RtmpInputTypeEnum = (typeof RtmpInputTypeEnum)[keyof typeof RtmpInputTypeEnum];
962
+
963
+ /**
964
+ * Composition API
965
+ * Real-time video compositing
966
+ *
967
+ * The version of the OpenAPI document: 0.1.0
968
+ *
969
+ *
970
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
971
+ * https://openapi-generator.tech
972
+ * Do not edit the class manually.
973
+ */
974
+ /**
975
+ *
976
+ * @export
977
+ * @interface WhepInput
978
+ */
979
+ interface WhepInput {
980
+ /**
981
+ * WHEP server endpoint URL
982
+ * @type {string}
983
+ * @memberof WhepInput
984
+ */
985
+ endpointUrl: string;
986
+ /**
987
+ * Optional Bearer token for auth
988
+ * @type {string}
989
+ * @memberof WhepInput
990
+ */
991
+ bearerToken?: string | null;
992
+ /**
993
+ * If `true`, requests a h264-encoded video track.
994
+ * If not provided, it defaults to `true`
995
+ * @type {boolean}
996
+ * @memberof WhepInput
997
+ */
998
+ video?: boolean | null;
999
+ /**
1000
+ *
1001
+ * @type {WhepInputTypeEnum}
1002
+ * @memberof WhepInput
1003
+ */
1004
+ type: WhepInputTypeEnum;
1005
+ }
1006
+ /**
1007
+ * @export
1008
+ */
1009
+ declare const WhepInputTypeEnum: {
1010
+ readonly WhepClient: "whep_client";
1011
+ };
1012
+ type WhepInputTypeEnum = (typeof WhepInputTypeEnum)[keyof typeof WhepInputTypeEnum];
1013
+
1014
+ /**
1015
+ * Composition API
1016
+ * Real-time video compositing
1017
+ *
1018
+ * The version of the OpenAPI document: 0.1.0
1019
+ *
1020
+ *
1021
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1022
+ * https://openapi-generator.tech
1023
+ * Do not edit the class manually.
1024
+ */
1025
+ /**
1026
+ *
1027
+ * @export
1028
+ * @interface WhipInput
1029
+ */
1030
+ interface WhipInput {
1031
+ /**
1032
+ * Token used for authentication in WHIP protocol. If not provided, the random value
1033
+ * will be generated and returned in the response.
1034
+ * @type {string}
1035
+ * @memberof WhipInput
1036
+ */
1037
+ bearerToken?: string | null;
1038
+ /**
1039
+ * If `true`, accepts a h264-encoded video track.
1040
+ * If not provided, it defaults to `true`
1041
+ * @type {boolean}
1042
+ * @memberof WhipInput
1043
+ */
1044
+ video?: boolean | null;
1045
+ /**
1046
+ *
1047
+ * @type {WhipInputTypeEnum}
1048
+ * @memberof WhipInput
1049
+ */
1050
+ type: WhipInputTypeEnum;
1051
+ }
1052
+ /**
1053
+ * @export
1054
+ */
1055
+ declare const WhipInputTypeEnum: {
1056
+ readonly WhipServer: "whip_server";
1057
+ };
1058
+ type WhipInputTypeEnum = (typeof WhipInputTypeEnum)[keyof typeof WhipInputTypeEnum];
1059
+
1060
+ /**
1061
+ * Composition API
1062
+ * Real-time video compositing
1063
+ *
1064
+ * The version of the OpenAPI document: 0.1.0
1065
+ *
1066
+ *
1067
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1068
+ * https://openapi-generator.tech
1069
+ * Do not edit the class manually.
1070
+ */
1071
+
1072
+ /**
1073
+ * @type RegisterInput
1074
+ *
1075
+ * @export
1076
+ */
1077
+ type RegisterInput = Mp4Input | RtmpInput | WhepInput | WhipInput;
1078
+
1079
+ /**
1080
+ * Composition API
1081
+ * Real-time video compositing
1082
+ *
1083
+ * The version of the OpenAPI document: 0.1.0
1084
+ *
1085
+ *
1086
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1087
+ * https://openapi-generator.tech
1088
+ * Do not edit the class manually.
1089
+ */
1090
+ /**
1091
+ *
1092
+ * @export
1093
+ * @interface RegisterInputResponse
1094
+ */
1095
+ interface RegisterInputResponse {
1096
+ /**
1097
+ *
1098
+ * @type {string}
1099
+ * @memberof RegisterInputResponse
1100
+ */
1101
+ bearerToken?: string | null;
1102
+ /**
1103
+ *
1104
+ * @type {string}
1105
+ * @memberof RegisterInputResponse
1106
+ */
1107
+ endpointRoute?: string | null;
1108
+ /**
1109
+ *
1110
+ * @type {number}
1111
+ * @memberof RegisterInputResponse
1112
+ */
1113
+ videoDurationMs?: number | null;
1114
+ /**
1115
+ *
1116
+ * @type {number}
1117
+ * @memberof RegisterInputResponse
1118
+ */
1119
+ audioDurationMs?: number | null;
1120
+ /**
1121
+ *
1122
+ * @type {number}
1123
+ * @memberof RegisterInputResponse
1124
+ */
1125
+ port?: number | null;
1126
+ }
1127
+
1128
+ /**
1129
+ * Composition API
1130
+ * Real-time video compositing
1131
+ *
1132
+ * The version of the OpenAPI document: 0.1.0
1133
+ *
1134
+ *
1135
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1136
+ * https://openapi-generator.tech
1137
+ * Do not edit the class manually.
1138
+ */
1139
+ /**
1140
+ *
1141
+ * @export
1142
+ * @interface UnregisterInput
1143
+ */
1144
+ interface UnregisterInput {
1145
+ /**
1146
+ * Time in milliseconds when this request should be applied. Value `0` represents
1147
+ * time of the start request.
1148
+ * @type {number}
1149
+ * @memberof UnregisterInput
1150
+ */
1151
+ scheduleTimeMs?: number | null;
1152
+ }
1153
+
1154
+ /**
1155
+ * Composition API
1156
+ * Real-time video compositing
1157
+ *
1158
+ * The version of the OpenAPI document: 0.1.0
1159
+ *
1160
+ *
1161
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1162
+ * https://openapi-generator.tech
1163
+ * Do not edit the class manually.
1164
+ */
1165
+ /**
1166
+ *
1167
+ * @export
1168
+ * @interface Image
1169
+ */
1170
+ interface Image {
1171
+ /**
1172
+ * Id of a component.
1173
+ * @type {string}
1174
+ * @memberof Image
1175
+ */
1176
+ id?: string | null;
1177
+ /**
1178
+ * Id of an image. It identifies an image registered using a `register image` request.
1179
+ * @type {string}
1180
+ * @memberof Image
1181
+ */
1182
+ imageId: string;
1183
+ /**
1184
+ * Width of the image in pixels.
1185
+ * If `height` is not explicitly provided, the image will automatically adjust its height to maintain its original aspect ratio relative to the width.
1186
+ * @type {number}
1187
+ * @memberof Image
1188
+ */
1189
+ width?: number | null;
1190
+ /**
1191
+ * Height of the image in pixels.
1192
+ * If `width` is not explicitly provided, the image will automatically adjust its width to maintain its original aspect ratio relative to the height.
1193
+ * @type {number}
1194
+ * @memberof Image
1195
+ */
1196
+ height?: number | null;
1197
+ /**
1198
+ *
1199
+ * @type {ImageTypeEnum}
1200
+ * @memberof Image
1201
+ */
1202
+ type: ImageTypeEnum;
1203
+ }
1204
+ /**
1205
+ * @export
1206
+ */
1207
+ declare const ImageTypeEnum: {
1208
+ readonly Image: "image";
1209
+ };
1210
+ type ImageTypeEnum = (typeof ImageTypeEnum)[keyof typeof ImageTypeEnum];
1211
+
1212
+ /**
1213
+ * Composition API
1214
+ * Real-time video compositing
1215
+ *
1216
+ * The version of the OpenAPI document: 0.1.0
1217
+ *
1218
+ *
1219
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1220
+ * https://openapi-generator.tech
1221
+ * Do not edit the class manually.
1222
+ */
1223
+ /**
1224
+ *
1225
+ * @export
1226
+ * @interface InputStream
1227
+ */
1228
+ interface InputStream {
1229
+ /**
1230
+ * Id of a component.
1231
+ * @type {string}
1232
+ * @memberof InputStream
1233
+ */
1234
+ id?: string | null;
1235
+ /**
1236
+ * Id of an input. It identifies a stream registered using a `RegisterInputStream` request.
1237
+ * @type {string}
1238
+ * @memberof InputStream
1239
+ */
1240
+ inputId: string;
1241
+ /**
1242
+ *
1243
+ * @type {InputStreamTypeEnum}
1244
+ * @memberof InputStream
1245
+ */
1246
+ type: InputStreamTypeEnum;
1247
+ }
1248
+ /**
1249
+ * @export
1250
+ */
1251
+ declare const InputStreamTypeEnum: {
1252
+ readonly InputStream: "input_stream";
1253
+ };
1254
+ type InputStreamTypeEnum = (typeof InputStreamTypeEnum)[keyof typeof InputStreamTypeEnum];
1255
+
1256
+ /**
1257
+ * Composition API
1258
+ * Real-time video compositing
1259
+ *
1260
+ * The version of the OpenAPI document: 0.1.0
1261
+ *
1262
+ *
1263
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1264
+ * https://openapi-generator.tech
1265
+ * Do not edit the class manually.
1266
+ */
1267
+ /**
1268
+ *
1269
+ * @export
1270
+ */
1271
+ declare const RescaleMode: {
1272
+ readonly Fit: "fit";
1273
+ readonly Fill: "fill";
1274
+ };
1275
+ type RescaleMode = (typeof RescaleMode)[keyof typeof RescaleMode];
1276
+
1277
+ /**
1278
+ * Composition API
1279
+ * Real-time video compositing
1280
+ *
1281
+ * The version of the OpenAPI document: 0.1.0
1282
+ *
1283
+ *
1284
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1285
+ * https://openapi-generator.tech
1286
+ * Do not edit the class manually.
1287
+ */
1288
+ /**
1289
+ *
1290
+ * @export
1291
+ */
1292
+ declare const VerticalAlign: {
1293
+ readonly Top: "top";
1294
+ readonly Center: "center";
1295
+ readonly Bottom: "bottom";
1296
+ readonly Justified: "justified";
1297
+ };
1298
+ type VerticalAlign = (typeof VerticalAlign)[keyof typeof VerticalAlign];
1299
+
1300
+ /**
1301
+ * Composition API
1302
+ * Real-time video compositing
1303
+ *
1304
+ * The version of the OpenAPI document: 0.1.0
1305
+ *
1306
+ *
1307
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1308
+ * https://openapi-generator.tech
1309
+ * Do not edit the class manually.
1310
+ */
1311
+ /**
1312
+ *
1313
+ * @export
1314
+ * @interface BoxShadow
1315
+ */
1316
+ interface BoxShadow {
1317
+ /**
1318
+ *
1319
+ * @type {number}
1320
+ * @memberof BoxShadow
1321
+ */
1322
+ offsetX?: number | null;
1323
+ /**
1324
+ *
1325
+ * @type {number}
1326
+ * @memberof BoxShadow
1327
+ */
1328
+ offsetY?: number | null;
1329
+ /**
1330
+ *
1331
+ * @type {string}
1332
+ * @memberof BoxShadow
1333
+ */
1334
+ color?: string | null;
1335
+ /**
1336
+ *
1337
+ * @type {number}
1338
+ * @memberof BoxShadow
1339
+ */
1340
+ blurRadius?: number | null;
1341
+ }
1342
+
1343
+ /**
1344
+ * Composition API
1345
+ * Real-time video compositing
1346
+ *
1347
+ * The version of the OpenAPI document: 0.1.0
1348
+ *
1349
+ *
1350
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1351
+ * https://openapi-generator.tech
1352
+ * Do not edit the class manually.
1353
+ */
1354
+ /**
1355
+ *
1356
+ * @export
1357
+ */
1358
+ declare const HorizontalAlign: {
1359
+ readonly Left: "left";
1360
+ readonly Right: "right";
1361
+ readonly Justified: "justified";
1362
+ readonly Center: "center";
1363
+ };
1364
+ type HorizontalAlign = (typeof HorizontalAlign)[keyof typeof HorizontalAlign];
1365
+
1366
+ /**
1367
+ * Composition API
1368
+ * Real-time video compositing
1369
+ *
1370
+ * The version of the OpenAPI document: 0.1.0
1371
+ *
1372
+ *
1373
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1374
+ * https://openapi-generator.tech
1375
+ * Do not edit the class manually.
1376
+ */
1377
+ /**
1378
+ *
1379
+ * @export
1380
+ * @interface EasingFunctionBounce
1381
+ */
1382
+ interface EasingFunctionBounce {
1383
+ /**
1384
+ *
1385
+ * @type {EasingFunctionBounceFunctionNameEnum}
1386
+ * @memberof EasingFunctionBounce
1387
+ */
1388
+ functionName: EasingFunctionBounceFunctionNameEnum;
1389
+ }
1390
+ /**
1391
+ * @export
1392
+ */
1393
+ declare const EasingFunctionBounceFunctionNameEnum: {
1394
+ readonly Bounce: "bounce";
1395
+ };
1396
+ type EasingFunctionBounceFunctionNameEnum = (typeof EasingFunctionBounceFunctionNameEnum)[keyof typeof EasingFunctionBounceFunctionNameEnum];
1397
+
1398
+ /**
1399
+ * Composition API
1400
+ * Real-time video compositing
1401
+ *
1402
+ * The version of the OpenAPI document: 0.1.0
1403
+ *
1404
+ *
1405
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1406
+ * https://openapi-generator.tech
1407
+ * Do not edit the class manually.
1408
+ */
1409
+ /**
1410
+ *
1411
+ * @export
1412
+ * @interface EasingFunctionCubicBezier
1413
+ */
1414
+ interface EasingFunctionCubicBezier {
1415
+ /**
1416
+ *
1417
+ * @type {Array<number>}
1418
+ * @memberof EasingFunctionCubicBezier
1419
+ */
1420
+ points: Array<number>;
1421
+ /**
1422
+ *
1423
+ * @type {EasingFunctionCubicBezierFunctionNameEnum}
1424
+ * @memberof EasingFunctionCubicBezier
1425
+ */
1426
+ functionName: EasingFunctionCubicBezierFunctionNameEnum;
1427
+ }
1428
+ /**
1429
+ * @export
1430
+ */
1431
+ declare const EasingFunctionCubicBezierFunctionNameEnum: {
1432
+ readonly CubicBezier: "cubic_bezier";
1433
+ };
1434
+ type EasingFunctionCubicBezierFunctionNameEnum = (typeof EasingFunctionCubicBezierFunctionNameEnum)[keyof typeof EasingFunctionCubicBezierFunctionNameEnum];
1435
+
1436
+ /**
1437
+ * Composition API
1438
+ * Real-time video compositing
1439
+ *
1440
+ * The version of the OpenAPI document: 0.1.0
1441
+ *
1442
+ *
1443
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1444
+ * https://openapi-generator.tech
1445
+ * Do not edit the class manually.
1446
+ */
1447
+ /**
1448
+ *
1449
+ * @export
1450
+ * @interface EasingFunctionLinear
1451
+ */
1452
+ interface EasingFunctionLinear {
1453
+ /**
1454
+ *
1455
+ * @type {EasingFunctionLinearFunctionNameEnum}
1456
+ * @memberof EasingFunctionLinear
1457
+ */
1458
+ functionName: EasingFunctionLinearFunctionNameEnum;
1459
+ }
1460
+ /**
1461
+ * @export
1462
+ */
1463
+ declare const EasingFunctionLinearFunctionNameEnum: {
1464
+ readonly Linear: "linear";
1465
+ };
1466
+ type EasingFunctionLinearFunctionNameEnum = (typeof EasingFunctionLinearFunctionNameEnum)[keyof typeof EasingFunctionLinearFunctionNameEnum];
1467
+
1468
+ /**
1469
+ * Composition API
1470
+ * Real-time video compositing
1471
+ *
1472
+ * The version of the OpenAPI document: 0.1.0
1473
+ *
1474
+ *
1475
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1476
+ * https://openapi-generator.tech
1477
+ * Do not edit the class manually.
1478
+ */
1479
+
1480
+ /**
1481
+ * @type EasingFunction
1482
+ * Easing functions are used to interpolate between two values over time.
1483
+ *
1484
+ * Custom easing functions can be implemented with cubic Bézier.
1485
+ * The control points are defined with `points` field by providing four numerical values: `x1`, `y1`, `x2` and `y2`. The `x1` and `x2` values have to be in the range `[0; 1]`. The cubic Bézier result is clamped to the range `[0; 1]`.
1486
+ * You can find example control point configurations [here](https://easings.net/).
1487
+ * @export
1488
+ */
1489
+ type EasingFunction = EasingFunctionBounce | EasingFunctionCubicBezier | EasingFunctionLinear;
1490
+
1491
+ /**
1492
+ * Composition API
1493
+ * Real-time video compositing
1494
+ *
1495
+ * The version of the OpenAPI document: 0.1.0
1496
+ *
1497
+ *
1498
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1499
+ * https://openapi-generator.tech
1500
+ * Do not edit the class manually.
1501
+ */
1502
+
1503
+ /**
1504
+ *
1505
+ * @export
1506
+ * @interface Transition
1507
+ */
1508
+ interface Transition {
1509
+ /**
1510
+ * Duration of a transition in milliseconds.
1511
+ * @type {number}
1512
+ * @memberof Transition
1513
+ */
1514
+ durationMs: number;
1515
+ /**
1516
+ * (**default=`"linear"`**) Easing function to be used for the transition.
1517
+ * @type {EasingFunction}
1518
+ * @memberof Transition
1519
+ */
1520
+ easingFunction?: EasingFunction | null;
1521
+ /**
1522
+ * (**default=`false`**) On scene update, if there is already a transition in progress,
1523
+ * it will be interrupted and the new transition will start from the current state.
1524
+ * @type {boolean}
1525
+ * @memberof Transition
1526
+ */
1527
+ shouldInterrupt?: boolean | null;
1528
+ }
1529
+
1530
+ /**
1531
+ * Composition API
1532
+ * Real-time video compositing
1533
+ *
1534
+ * The version of the OpenAPI document: 0.1.0
1535
+ *
1536
+ *
1537
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1538
+ * https://openapi-generator.tech
1539
+ * Do not edit the class manually.
1540
+ */
1541
+
1542
+ /**
1543
+ *
1544
+ * @export
1545
+ * @interface Rescaler
1546
+ */
1547
+ interface Rescaler {
1548
+ /**
1549
+ * Id of a component.
1550
+ * @type {string}
1551
+ * @memberof Rescaler
1552
+ */
1553
+ id?: string | null;
1554
+ /**
1555
+ * List of component's children.
1556
+ * @type {Component}
1557
+ * @memberof Rescaler
1558
+ */
1559
+ child: Component;
1560
+ /**
1561
+ * (**default=`"fit"`**) Resize mode:
1562
+ * @type {RescaleMode}
1563
+ * @memberof Rescaler
1564
+ */
1565
+ mode?: RescaleMode | null;
1566
+ /**
1567
+ * (**default=`"center"`**) Horizontal alignment.
1568
+ * @type {HorizontalAlign}
1569
+ * @memberof Rescaler
1570
+ */
1571
+ horizontalAlign?: HorizontalAlign | null;
1572
+ /**
1573
+ * (**default=`"center"`**) Vertical alignment.
1574
+ * @type {VerticalAlign}
1575
+ * @memberof Rescaler
1576
+ */
1577
+ verticalAlign?: VerticalAlign | null;
1578
+ /**
1579
+ * Width of a component in pixels (without a border). Exact behavior might be different
1580
+ * based on the parent component:
1581
+ * - If the parent component is a layout, check sections "Absolute positioning" and "Static
1582
+ * positioning" of that component.
1583
+ * - If the parent component is not a layout, then this field is required.
1584
+ * @type {number}
1585
+ * @memberof Rescaler
1586
+ */
1587
+ width?: number | null;
1588
+ /**
1589
+ * Height of a component in pixels (without a border). Exact behavior might be different
1590
+ * based on the parent component:
1591
+ * - If the parent component is a layout, check sections "Absolute positioning" and "Static
1592
+ * positioning" of that component.
1593
+ * - If the parent component is not a layout, then this field is required.
1594
+ * @type {number}
1595
+ * @memberof Rescaler
1596
+ */
1597
+ height?: number | null;
1598
+ /**
1599
+ * Distance in pixels between this component's top edge and its parent's top edge (including a border).
1600
+ * If this field is defined, then the component will ignore a layout defined by its parent.
1601
+ * @type {number}
1602
+ * @memberof Rescaler
1603
+ */
1604
+ top?: number | null;
1605
+ /**
1606
+ * Distance in pixels between this component's left edge and its parent's left edge (including a border).
1607
+ * If this field is defined, this element will be absolutely positioned, instead of being
1608
+ * laid out by its parent.
1609
+ * @type {number}
1610
+ * @memberof Rescaler
1611
+ */
1612
+ left?: number | null;
1613
+ /**
1614
+ * Distance in pixels between the bottom edge of this component and the bottom edge of its
1615
+ * parent (including a border). If this field is defined, this element will be absolutely
1616
+ * positioned, instead of being laid out by its parent.
1617
+ * @type {number}
1618
+ * @memberof Rescaler
1619
+ */
1620
+ bottom?: number | null;
1621
+ /**
1622
+ * Distance in pixels between this component's right edge and its parent's right edge.
1623
+ * If this field is defined, this element will be absolutely positioned, instead of being
1624
+ * laid out by its parent.
1625
+ * @type {number}
1626
+ * @memberof Rescaler
1627
+ */
1628
+ right?: number | null;
1629
+ /**
1630
+ * Rotation of a component in degrees. If this field is defined, this element will be
1631
+ * absolutely positioned, instead of being laid out by its parent.
1632
+ * @type {number}
1633
+ * @memberof Rescaler
1634
+ */
1635
+ rotation?: number | null;
1636
+ /**
1637
+ * Defines how this component will behave during a scene update. This will only have an
1638
+ * effect if the previous scene already contained a `Rescaler` component with the same id.
1639
+ * @type {Transition}
1640
+ * @memberof Rescaler
1641
+ */
1642
+ transition?: Transition | null;
1643
+ /**
1644
+ * (**default=`0.0`**) Radius of a rounded corner.
1645
+ * @type {number}
1646
+ * @memberof Rescaler
1647
+ */
1648
+ borderRadius?: number | null;
1649
+ /**
1650
+ * (**default=`0.0`**) Border width.
1651
+ * @type {number}
1652
+ * @memberof Rescaler
1653
+ */
1654
+ borderWidth?: number | null;
1655
+ /**
1656
+ * (**default=`"#00000000"`**) Border color in a `"#RRGGBBAA"` format.
1657
+ * @type {string}
1658
+ * @memberof Rescaler
1659
+ */
1660
+ borderColor?: string | null;
1661
+ /**
1662
+ * List of box shadows.
1663
+ * @type {Array<BoxShadow>}
1664
+ * @memberof Rescaler
1665
+ */
1666
+ boxShadow?: Array<BoxShadow> | null;
1667
+ /**
1668
+ *
1669
+ * @type {RescalerTypeEnum}
1670
+ * @memberof Rescaler
1671
+ */
1672
+ type: RescalerTypeEnum;
1673
+ }
1674
+ /**
1675
+ * @export
1676
+ */
1677
+ declare const RescalerTypeEnum: {
1678
+ readonly Rescaler: "rescaler";
1679
+ };
1680
+ type RescalerTypeEnum = (typeof RescalerTypeEnum)[keyof typeof RescalerTypeEnum];
1681
+
1682
+ /**
1683
+ * Composition API
1684
+ * Real-time video compositing
1685
+ *
1686
+ * The version of the OpenAPI document: 0.1.0
1687
+ *
1688
+ *
1689
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1690
+ * https://openapi-generator.tech
1691
+ * Do not edit the class manually.
1692
+ */
1693
+ /**
1694
+ *
1695
+ * @export
1696
+ */
1697
+ declare const TextStyle: {
1698
+ readonly Normal: "normal";
1699
+ readonly Italic: "italic";
1700
+ readonly Oblique: "oblique";
1701
+ };
1702
+ type TextStyle = (typeof TextStyle)[keyof typeof TextStyle];
1703
+
1704
+ /**
1705
+ * Composition API
1706
+ * Real-time video compositing
1707
+ *
1708
+ * The version of the OpenAPI document: 0.1.0
1709
+ *
1710
+ *
1711
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1712
+ * https://openapi-generator.tech
1713
+ * Do not edit the class manually.
1714
+ */
1715
+ /**
1716
+ * Font weight, based on the [OpenType specification](https://learn.microsoft.com/en-gb/typography/opentype/spec/os2#usweightclass).
1717
+ * @export
1718
+ */
1719
+ declare const TextWeight: {
1720
+ readonly Thin: "thin";
1721
+ readonly ExtraLight: "extra_light";
1722
+ readonly Light: "light";
1723
+ readonly Normal: "normal";
1724
+ readonly Medium: "medium";
1725
+ readonly SemiBold: "semi_bold";
1726
+ readonly Bold: "bold";
1727
+ readonly ExtraBold: "extra_bold";
1728
+ readonly Black: "black";
1729
+ };
1730
+ type TextWeight = (typeof TextWeight)[keyof typeof TextWeight];
1731
+
1732
+ /**
1733
+ * Composition API
1734
+ * Real-time video compositing
1735
+ *
1736
+ * The version of the OpenAPI document: 0.1.0
1737
+ *
1738
+ *
1739
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1740
+ * https://openapi-generator.tech
1741
+ * Do not edit the class manually.
1742
+ */
1743
+ /**
1744
+ *
1745
+ * @export
1746
+ */
1747
+ declare const TextWrapMode: {
1748
+ readonly None: "none";
1749
+ readonly Glyph: "glyph";
1750
+ readonly Word: "word";
1751
+ };
1752
+ type TextWrapMode = (typeof TextWrapMode)[keyof typeof TextWrapMode];
1753
+
1754
+ /**
1755
+ * Composition API
1756
+ * Real-time video compositing
1757
+ *
1758
+ * The version of the OpenAPI document: 0.1.0
1759
+ *
1760
+ *
1761
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1762
+ * https://openapi-generator.tech
1763
+ * Do not edit the class manually.
1764
+ */
1765
+
1766
+ /**
1767
+ *
1768
+ * @export
1769
+ * @interface Text
1770
+ */
1771
+ interface Text {
1772
+ /**
1773
+ * Id of a component.
1774
+ * @type {string}
1775
+ * @memberof Text
1776
+ */
1777
+ id?: string | null;
1778
+ /**
1779
+ * Text that will be rendered.
1780
+ * @type {string}
1781
+ * @memberof Text
1782
+ */
1783
+ text: string;
1784
+ /**
1785
+ * Width of a texture that text will be rendered on. If not provided, the resulting texture
1786
+ * will be sized based on the defined text but limited to `max_width` value.
1787
+ * @type {number}
1788
+ * @memberof Text
1789
+ */
1790
+ width?: number | null;
1791
+ /**
1792
+ * Height of a texture that text will be rendered on. If not provided, the resulting texture
1793
+ * will be sized based on the defined text but limited to `max_height` value.
1794
+ * It's an error to provide `height` if `width` is not defined.
1795
+ * @type {number}
1796
+ * @memberof Text
1797
+ */
1798
+ height?: number | null;
1799
+ /**
1800
+ * (**default=`7682`**) Maximal `width`. Limits the width of the texture that the text will be rendered on.
1801
+ * Value is ignored if `width` is defined.
1802
+ * @type {number}
1803
+ * @memberof Text
1804
+ */
1805
+ maxWidth?: number | null;
1806
+ /**
1807
+ * (**default=`4320`**) Maximal `height`. Limits the height of the texture that the text will be rendered on.
1808
+ * Value is ignored if height is defined.
1809
+ * @type {number}
1810
+ * @memberof Text
1811
+ */
1812
+ maxHeight?: number | null;
1813
+ /**
1814
+ * Font size in pixels.
1815
+ * @type {number}
1816
+ * @memberof Text
1817
+ */
1818
+ fontSize: number;
1819
+ /**
1820
+ * Distance between lines in pixels. Defaults to the value of the `font_size` property.
1821
+ * @type {number}
1822
+ * @memberof Text
1823
+ */
1824
+ lineHeight?: number | null;
1825
+ /**
1826
+ * (**default=`"#FFFFFFFF"`**) Font color in `#RRGGBBAA` format.
1827
+ * @type {string}
1828
+ * @memberof Text
1829
+ */
1830
+ color?: string | null;
1831
+ /**
1832
+ * (**default=`"#00000000"`**) Background color in `#RRGGBBAA` format.
1833
+ * @type {string}
1834
+ * @memberof Text
1835
+ */
1836
+ backgroundColor?: string | null;
1837
+ /**
1838
+ * (**default=`"Verdana"`**) Font family. Provide [family-name](https://www.w3.org/TR/2018/REC-css-fonts-3-20180920/#family-name-value)
1839
+ * for a specific font. "generic-family" values like e.g. "sans-serif" will not work.
1840
+ * @type {string}
1841
+ * @memberof Text
1842
+ */
1843
+ fontFamily?: string | null;
1844
+ /**
1845
+ * (**default=`"normal"`**) Font style. The selected font needs to support the specified style.
1846
+ * @type {TextStyle}
1847
+ * @memberof Text
1848
+ */
1849
+ style?: TextStyle | null;
1850
+ /**
1851
+ * (**default=`"left"`**) Text align.
1852
+ * @type {HorizontalAlign}
1853
+ * @memberof Text
1854
+ */
1855
+ align?: HorizontalAlign | null;
1856
+ /**
1857
+ * (**default=`"none"`**) Text wrapping options.
1858
+ * @type {TextWrapMode}
1859
+ * @memberof Text
1860
+ */
1861
+ wrap?: TextWrapMode | null;
1862
+ /**
1863
+ * (**default=`"normal"`**) Font weight. The selected font needs to support the specified weight.
1864
+ * @type {TextWeight}
1865
+ * @memberof Text
1866
+ */
1867
+ weight?: TextWeight | null;
1868
+ /**
1869
+ *
1870
+ * @type {TextTypeEnum}
1871
+ * @memberof Text
1872
+ */
1873
+ type: TextTypeEnum;
1874
+ }
1875
+ /**
1876
+ * @export
1877
+ */
1878
+ declare const TextTypeEnum: {
1879
+ readonly Text: "text";
1880
+ };
1881
+ type TextTypeEnum = (typeof TextTypeEnum)[keyof typeof TextTypeEnum];
1882
+
1883
+ /**
1884
+ * Composition API
1885
+ * Real-time video compositing
1886
+ *
1887
+ * The version of the OpenAPI document: 0.1.0
1888
+ *
1889
+ *
1890
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1891
+ * https://openapi-generator.tech
1892
+ * Do not edit the class manually.
1893
+ */
1894
+
1895
+ /**
1896
+ *
1897
+ * @export
1898
+ * @interface Tiles
1899
+ */
1900
+ interface Tiles {
1901
+ /**
1902
+ * Id of a component.
1903
+ * @type {string}
1904
+ * @memberof Tiles
1905
+ */
1906
+ id?: string | null;
1907
+ /**
1908
+ * List of component's children.
1909
+ * @type {Array<Component>}
1910
+ * @memberof Tiles
1911
+ */
1912
+ children?: Array<Component> | null;
1913
+ /**
1914
+ * Width of a component in pixels. Exact behavior might be different based on the parent
1915
+ * component:
1916
+ * - If the parent component is a layout, check sections "Absolute positioning" and "Static
1917
+ * positioning" of that component.
1918
+ * - If the parent component is not a layout, then this field is required.
1919
+ * @type {number}
1920
+ * @memberof Tiles
1921
+ */
1922
+ width?: number | null;
1923
+ /**
1924
+ * Height of a component in pixels. Exact behavior might be different based on the parent
1925
+ * component:
1926
+ * - If the parent component is a layout, check sections "Absolute positioning" and "Static
1927
+ * positioning" of that component.
1928
+ * - If the parent component is not a layout, then this field is required.
1929
+ * @type {number}
1930
+ * @memberof Tiles
1931
+ */
1932
+ height?: number | null;
1933
+ /**
1934
+ * (**default=`"#00000000"`**) Background color in a `"#RRGGBBAA"` format.
1935
+ * @type {string}
1936
+ * @memberof Tiles
1937
+ */
1938
+ backgroundColor?: string | null;
1939
+ /**
1940
+ * (**default=`"16:9"`**) Aspect ratio of a tile in `"W:H"` format, where W and H are integers.
1941
+ * @type {string}
1942
+ * @memberof Tiles
1943
+ */
1944
+ tileAspectRatio?: string | null;
1945
+ /**
1946
+ * (**default=`0`**) Margin of each tile in pixels.
1947
+ * @type {number}
1948
+ * @memberof Tiles
1949
+ */
1950
+ margin?: number | null;
1951
+ /**
1952
+ * (**default=`0`**) Padding on each tile in pixels.
1953
+ * @type {number}
1954
+ * @memberof Tiles
1955
+ */
1956
+ padding?: number | null;
1957
+ /**
1958
+ * (**default=`"center"`**) Horizontal alignment of tiles.
1959
+ * @type {HorizontalAlign}
1960
+ * @memberof Tiles
1961
+ */
1962
+ horizontalAlign?: HorizontalAlign | null;
1963
+ /**
1964
+ * (**default=`"center"`**) Vertical alignment of tiles.
1965
+ * @type {VerticalAlign}
1966
+ * @memberof Tiles
1967
+ */
1968
+ verticalAlign?: VerticalAlign | null;
1969
+ /**
1970
+ * Defines how this component will behave during a scene update. This will only have an
1971
+ * effect if the previous scene already contained a `Tiles` component with the same id.
1972
+ * @type {Transition}
1973
+ * @memberof Tiles
1974
+ */
1975
+ transition?: Transition | null;
1976
+ /**
1977
+ *
1978
+ * @type {TilesTypeEnum}
1979
+ * @memberof Tiles
1980
+ */
1981
+ type: TilesTypeEnum;
1982
+ }
1983
+ /**
1984
+ * @export
1985
+ */
1986
+ declare const TilesTypeEnum: {
1987
+ readonly Tiles: "tiles";
1988
+ };
1989
+ type TilesTypeEnum = (typeof TilesTypeEnum)[keyof typeof TilesTypeEnum];
1990
+
1991
+ /**
1992
+ * Composition API
1993
+ * Real-time video compositing
1994
+ *
1995
+ * The version of the OpenAPI document: 0.1.0
1996
+ *
1997
+ *
1998
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
1999
+ * https://openapi-generator.tech
2000
+ * Do not edit the class manually.
2001
+ */
2002
+ /**
2003
+ *
2004
+ * @export
2005
+ */
2006
+ declare const ViewDirection: {
2007
+ readonly Row: "row";
2008
+ readonly Column: "column";
2009
+ };
2010
+ type ViewDirection = (typeof ViewDirection)[keyof typeof ViewDirection];
2011
+
2012
+ /**
2013
+ * Composition API
2014
+ * Real-time video compositing
2015
+ *
2016
+ * The version of the OpenAPI document: 0.1.0
2017
+ *
2018
+ *
2019
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2020
+ * https://openapi-generator.tech
2021
+ * Do not edit the class manually.
2022
+ */
2023
+ /**
2024
+ *
2025
+ * @export
2026
+ */
2027
+ declare const Overflow: {
2028
+ readonly Visible: "visible";
2029
+ readonly Hidden: "hidden";
2030
+ readonly Fit: "fit";
2031
+ };
2032
+ type Overflow = (typeof Overflow)[keyof typeof Overflow];
2033
+
2034
+ /**
2035
+ * Composition API
2036
+ * Real-time video compositing
2037
+ *
2038
+ * The version of the OpenAPI document: 0.1.0
2039
+ *
2040
+ *
2041
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2042
+ * https://openapi-generator.tech
2043
+ * Do not edit the class manually.
2044
+ */
2045
+
2046
+ /**
2047
+ *
2048
+ * @export
2049
+ * @interface View
2050
+ */
2051
+ interface View {
2052
+ /**
2053
+ * Id of a component.
2054
+ * @type {string}
2055
+ * @memberof View
2056
+ */
2057
+ id?: string | null;
2058
+ /**
2059
+ * List of component's children.
2060
+ * @type {Array<Component>}
2061
+ * @memberof View
2062
+ */
2063
+ children?: Array<Component> | null;
2064
+ /**
2065
+ * Width of a component in pixels (without a border). Exact behavior might be different
2066
+ * based on the parent component:
2067
+ * - If the parent component is a layout, check sections "Absolute positioning" and "Static
2068
+ * positioning" of that component.
2069
+ * - If the parent component is not a layout, then this field is required.
2070
+ * @type {number}
2071
+ * @memberof View
2072
+ */
2073
+ width?: number | null;
2074
+ /**
2075
+ * Height of a component in pixels (without a border). Exact behavior might be different
2076
+ * based on the parent component:
2077
+ * - If the parent component is a layout, check sections "Absolute positioning" and "Static
2078
+ * positioning" of that component.
2079
+ * - If the parent component is not a layout, then this field is required.
2080
+ * @type {number}
2081
+ * @memberof View
2082
+ */
2083
+ height?: number | null;
2084
+ /**
2085
+ * Direction defines how static children are positioned inside a View component.
2086
+ * @type {ViewDirection}
2087
+ * @memberof View
2088
+ */
2089
+ direction?: ViewDirection | null;
2090
+ /**
2091
+ * Distance in pixels between this component's top edge and its parent's top edge (including a border).
2092
+ * If this field is defined, then the component will ignore a layout defined by its parent.
2093
+ * @type {number}
2094
+ * @memberof View
2095
+ */
2096
+ top?: number | null;
2097
+ /**
2098
+ * Distance in pixels between this component's left edge and its parent's left edge (including a border).
2099
+ * If this field is defined, this element will be absolutely positioned, instead of being
2100
+ * laid out by its parent.
2101
+ * @type {number}
2102
+ * @memberof View
2103
+ */
2104
+ left?: number | null;
2105
+ /**
2106
+ * Distance in pixels between the bottom edge of this component and the bottom edge of its
2107
+ * parent (including a border). If this field is defined, this element will be absolutely
2108
+ * positioned, instead of being laid out by its parent.
2109
+ * @type {number}
2110
+ * @memberof View
2111
+ */
2112
+ bottom?: number | null;
2113
+ /**
2114
+ * Distance in pixels between this component's right edge and its parent's right edge.
2115
+ * If this field is defined, this element will be absolutely positioned, instead of being
2116
+ * laid out by its parent.
2117
+ * @type {number}
2118
+ * @memberof View
2119
+ */
2120
+ right?: number | null;
2121
+ /**
2122
+ * Rotation of a component in degrees. If this field is defined, this element will be
2123
+ * absolutely positioned, instead of being laid out by its parent.
2124
+ * @type {number}
2125
+ * @memberof View
2126
+ */
2127
+ rotation?: number | null;
2128
+ /**
2129
+ * Defines how this component will behave during a scene update. This will only have an
2130
+ * effect if the previous scene already contained a `View` component with the same id.
2131
+ * @type {Transition}
2132
+ * @memberof View
2133
+ */
2134
+ transition?: Transition | null;
2135
+ /**
2136
+ * (**default=`"hidden"`**) Controls what happens to content that is too big to fit into an area.
2137
+ * @type {Overflow}
2138
+ * @memberof View
2139
+ */
2140
+ overflow?: Overflow | null;
2141
+ /**
2142
+ * (**default=`"#00000000"`**) Background color in a `"#RRGGBBAA"` format.
2143
+ * @type {string}
2144
+ * @memberof View
2145
+ */
2146
+ backgroundColor?: string | null;
2147
+ /**
2148
+ * (**default=`0.0`**) Radius of a rounded corner.
2149
+ * @type {number}
2150
+ * @memberof View
2151
+ */
2152
+ borderRadius?: number | null;
2153
+ /**
2154
+ * (**default=`0.0`**) Border width.
2155
+ * @type {number}
2156
+ * @memberof View
2157
+ */
2158
+ borderWidth?: number | null;
2159
+ /**
2160
+ * (**default=`"#00000000"`**) Border color in a `"#RRGGBBAA"` format.
2161
+ * @type {string}
2162
+ * @memberof View
2163
+ */
2164
+ borderColor?: string | null;
2165
+ /**
2166
+ * List of box shadows.
2167
+ * @type {Array<BoxShadow>}
2168
+ * @memberof View
2169
+ */
2170
+ boxShadow?: Array<BoxShadow> | null;
2171
+ /**
2172
+ * (**default=`0.0`**) Padding for all sides of the component.
2173
+ * @type {number}
2174
+ * @memberof View
2175
+ */
2176
+ padding?: number | null;
2177
+ /**
2178
+ * (**default=`0.0`**) Padding for the top and bottom of the component.
2179
+ * @type {number}
2180
+ * @memberof View
2181
+ */
2182
+ paddingVertical?: number | null;
2183
+ /**
2184
+ * (**default=`0.0`**) Padding for the left and right of the component.
2185
+ * @type {number}
2186
+ * @memberof View
2187
+ */
2188
+ paddingHorizontal?: number | null;
2189
+ /**
2190
+ * (**default=`0.0`**) Padding on top side in pixels.
2191
+ * @type {number}
2192
+ * @memberof View
2193
+ */
2194
+ paddingTop?: number | null;
2195
+ /**
2196
+ * (**default=`0.0`**) Padding on right side in pixels.
2197
+ * @type {number}
2198
+ * @memberof View
2199
+ */
2200
+ paddingRight?: number | null;
2201
+ /**
2202
+ * (**default=`0.0`**) Padding on bottom side in pixels.
2203
+ * @type {number}
2204
+ * @memberof View
2205
+ */
2206
+ paddingBottom?: number | null;
2207
+ /**
2208
+ * (**default=`0.0`**) Padding on left side in pixels.
2209
+ * @type {number}
2210
+ * @memberof View
2211
+ */
2212
+ paddingLeft?: number | null;
2213
+ /**
2214
+ *
2215
+ * @type {ViewTypeEnum}
2216
+ * @memberof View
2217
+ */
2218
+ type: ViewTypeEnum;
2219
+ }
2220
+ /**
2221
+ * @export
2222
+ */
2223
+ declare const ViewTypeEnum: {
2224
+ readonly View: "view";
2225
+ };
2226
+ type ViewTypeEnum = (typeof ViewTypeEnum)[keyof typeof ViewTypeEnum];
2227
+
2228
+ /**
2229
+ * Composition API
2230
+ * Real-time video compositing
2231
+ *
2232
+ * The version of the OpenAPI document: 0.1.0
2233
+ *
2234
+ *
2235
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2236
+ * https://openapi-generator.tech
2237
+ * Do not edit the class manually.
2238
+ */
2239
+
2240
+ /**
2241
+ * @type Component
2242
+ *
2243
+ * @export
2244
+ */
2245
+ type Component = Image | InputStream | Rescaler | Text | Tiles | View;
2246
+
2247
+ /**
2248
+ * Composition API
2249
+ * Real-time video compositing
2250
+ *
2251
+ * The version of the OpenAPI document: 0.1.0
2252
+ *
2253
+ *
2254
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2255
+ * https://openapi-generator.tech
2256
+ * Do not edit the class manually.
2257
+ */
2258
+
2259
+ /**
2260
+ *
2261
+ * @export
2262
+ * @interface VideoScene
2263
+ */
2264
+ interface VideoScene {
2265
+ /**
2266
+ *
2267
+ * @type {Component}
2268
+ * @memberof VideoScene
2269
+ */
2270
+ root: Component;
2271
+ }
2272
+
2273
+ /**
2274
+ * Composition API
2275
+ * Real-time video compositing
2276
+ *
2277
+ * The version of the OpenAPI document: 0.1.0
2278
+ *
2279
+ *
2280
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2281
+ * https://openapi-generator.tech
2282
+ * Do not edit the class manually.
2283
+ */
2284
+ /**
2285
+ * This type defines when end of an input stream should trigger end of the output stream. Only one of those fields can be set at the time.
2286
+ * Unless specified otherwise the input stream is considered finished/ended when:
2287
+ * - TCP connection was dropped/closed.
2288
+ * - RTCP Goodbye packet (`BYE`) was received.
2289
+ * - Mp4 track has ended.
2290
+ * - Input was unregistered already (or never registered).
2291
+ * @export
2292
+ * @interface OutputEndCondition
2293
+ */
2294
+ interface OutputEndCondition {
2295
+ /**
2296
+ * Terminate output stream if any of the input streams from the list are finished.
2297
+ * @type {Array<string>}
2298
+ * @memberof OutputEndCondition
2299
+ */
2300
+ anyOf?: Array<string> | null;
2301
+ /**
2302
+ * Terminate output stream if all the input streams from the list are finished.
2303
+ * @type {Array<string>}
2304
+ * @memberof OutputEndCondition
2305
+ */
2306
+ allOf?: Array<string> | null;
2307
+ /**
2308
+ * Terminate output stream if any of the input streams ends. This includes streams added after the output was registered. In particular, output stream will **not be** terminated if no inputs were ever connected.
2309
+ * @type {boolean}
2310
+ * @memberof OutputEndCondition
2311
+ */
2312
+ anyInput?: boolean | null;
2313
+ /**
2314
+ * Terminate output stream if all the input streams finish. In particular, output stream will **be** terminated if no inputs were ever connected.
2315
+ * @type {boolean}
2316
+ * @memberof OutputEndCondition
2317
+ */
2318
+ allInputs?: boolean | null;
2319
+ }
2320
+
2321
+ /**
2322
+ * Composition API
2323
+ * Real-time video compositing
2324
+ *
2325
+ * The version of the OpenAPI document: 0.1.0
2326
+ *
2327
+ *
2328
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2329
+ * https://openapi-generator.tech
2330
+ * Do not edit the class manually.
2331
+ */
2332
+ /**
2333
+ *
2334
+ * @export
2335
+ * @interface Resolution
2336
+ */
2337
+ interface Resolution {
2338
+ /**
2339
+ * Width in pixels.
2340
+ * @type {number}
2341
+ * @memberof Resolution
2342
+ */
2343
+ width: number;
2344
+ /**
2345
+ * Height in pixels.
2346
+ * @type {number}
2347
+ * @memberof Resolution
2348
+ */
2349
+ height: number;
2350
+ }
2351
+
2352
+ /**
2353
+ * Composition API
2354
+ * Real-time video compositing
2355
+ *
2356
+ * The version of the OpenAPI document: 0.1.0
2357
+ *
2358
+ *
2359
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2360
+ * https://openapi-generator.tech
2361
+ * Do not edit the class manually.
2362
+ */
2363
+
2364
+ /**
2365
+ *
2366
+ * @export
2367
+ * @interface OutputRtmpClientVideoOptions
2368
+ */
2369
+ interface OutputRtmpClientVideoOptions {
2370
+ /**
2371
+ * Output resolution in pixels.
2372
+ * @type {Resolution}
2373
+ * @memberof OutputRtmpClientVideoOptions
2374
+ */
2375
+ resolution: Resolution;
2376
+ /**
2377
+ * Condition for termination of the output stream based on the input streams states. If output includes both audio and video streams, then EOS needs to be sent for every type.
2378
+ * @type {OutputEndCondition}
2379
+ * @memberof OutputRtmpClientVideoOptions
2380
+ */
2381
+ sendEosWhen?: OutputEndCondition | null;
2382
+ /**
2383
+ * Root of a component tree/scene that should be rendered for the output. Use `update_output` request to update this value after registration. Learn more.
2384
+ * @type {VideoScene}
2385
+ * @memberof OutputRtmpClientVideoOptions
2386
+ */
2387
+ initial: VideoScene;
2388
+ }
2389
+
2390
+ /**
2391
+ * Composition API
2392
+ * Real-time video compositing
2393
+ *
2394
+ * The version of the OpenAPI document: 0.1.0
2395
+ *
2396
+ *
2397
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2398
+ * https://openapi-generator.tech
2399
+ * Do not edit the class manually.
2400
+ */
2401
+ /**
2402
+ *
2403
+ * @export
2404
+ */
2405
+ declare const AudioChannels: {
2406
+ readonly Mono: "mono";
2407
+ readonly Stereo: "stereo";
2408
+ };
2409
+ type AudioChannels = (typeof AudioChannels)[keyof typeof AudioChannels];
2410
+
2411
+ /**
2412
+ * Composition API
2413
+ * Real-time video compositing
2414
+ *
2415
+ * The version of the OpenAPI document: 0.1.0
2416
+ *
2417
+ *
2418
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2419
+ * https://openapi-generator.tech
2420
+ * Do not edit the class manually.
2421
+ */
2422
+ /**
2423
+ *
2424
+ * @export
2425
+ */
2426
+ declare const AudioMixingStrategy: {
2427
+ readonly SumClip: "sum_clip";
2428
+ readonly SumScale: "sum_scale";
2429
+ };
2430
+ type AudioMixingStrategy = (typeof AudioMixingStrategy)[keyof typeof AudioMixingStrategy];
2431
+
2432
+ /**
2433
+ * Composition API
2434
+ * Real-time video compositing
2435
+ *
2436
+ * The version of the OpenAPI document: 0.1.0
2437
+ *
2438
+ *
2439
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2440
+ * https://openapi-generator.tech
2441
+ * Do not edit the class manually.
2442
+ */
2443
+ /**
2444
+ *
2445
+ * @export
2446
+ * @interface AudioSceneInput
2447
+ */
2448
+ interface AudioSceneInput {
2449
+ /**
2450
+ *
2451
+ * @type {string}
2452
+ * @memberof AudioSceneInput
2453
+ */
2454
+ inputId: string;
2455
+ /**
2456
+ * (**default=`1.0`**) float in `[0, 2]` range representing input volume
2457
+ * @type {number}
2458
+ * @memberof AudioSceneInput
2459
+ */
2460
+ volume?: number | null;
2461
+ }
2462
+
2463
+ /**
2464
+ * Composition API
2465
+ * Real-time video compositing
2466
+ *
2467
+ * The version of the OpenAPI document: 0.1.0
2468
+ *
2469
+ *
2470
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2471
+ * https://openapi-generator.tech
2472
+ * Do not edit the class manually.
2473
+ */
2474
+
2475
+ /**
2476
+ *
2477
+ * @export
2478
+ * @interface AudioScene
2479
+ */
2480
+ interface AudioScene {
2481
+ /**
2482
+ *
2483
+ * @type {Array<AudioSceneInput>}
2484
+ * @memberof AudioScene
2485
+ */
2486
+ inputs: Array<AudioSceneInput>;
2487
+ }
2488
+
2489
+ /**
2490
+ * Composition API
2491
+ * Real-time video compositing
2492
+ *
2493
+ * The version of the OpenAPI document: 0.1.0
2494
+ *
2495
+ *
2496
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2497
+ * https://openapi-generator.tech
2498
+ * Do not edit the class manually.
2499
+ */
2500
+
2501
+ /**
2502
+ *
2503
+ * @export
2504
+ * @interface OutputRtmpClientAudioOptions
2505
+ */
2506
+ interface OutputRtmpClientAudioOptions {
2507
+ /**
2508
+ * (**default="sum_clip"**) Specifies how audio should be mixed.
2509
+ * @type {AudioMixingStrategy}
2510
+ * @memberof OutputRtmpClientAudioOptions
2511
+ */
2512
+ mixingStrategy?: AudioMixingStrategy | null;
2513
+ /**
2514
+ * Condition for termination of the output stream based on the input streams states. If output includes both audio and video streams, then EOS needs to be sent for every type.
2515
+ * @type {OutputEndCondition}
2516
+ * @memberof OutputRtmpClientAudioOptions
2517
+ */
2518
+ sendEosWhen?: OutputEndCondition | null;
2519
+ /**
2520
+ * Channels configuration.
2521
+ * @type {AudioChannels}
2522
+ * @memberof OutputRtmpClientAudioOptions
2523
+ */
2524
+ channels?: AudioChannels | null;
2525
+ /**
2526
+ * Initial audio mixer configuration for output.
2527
+ * @type {AudioScene}
2528
+ * @memberof OutputRtmpClientAudioOptions
2529
+ */
2530
+ initial: AudioScene;
2531
+ }
2532
+
2533
+ /**
2534
+ * Composition API
2535
+ * Real-time video compositing
2536
+ *
2537
+ * The version of the OpenAPI document: 0.1.0
2538
+ *
2539
+ *
2540
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2541
+ * https://openapi-generator.tech
2542
+ * Do not edit the class manually.
2543
+ */
2544
+
2545
+ /**
2546
+ *
2547
+ * @export
2548
+ * @interface RtmpOutput
2549
+ */
2550
+ interface RtmpOutput {
2551
+ /**
2552
+ * RTMP endpoint url.
2553
+ * @type {string}
2554
+ * @memberof RtmpOutput
2555
+ */
2556
+ url: string;
2557
+ /**
2558
+ * Video stream configuration.
2559
+ * @type {OutputRtmpClientVideoOptions}
2560
+ * @memberof RtmpOutput
2561
+ */
2562
+ video?: OutputRtmpClientVideoOptions | null;
2563
+ /**
2564
+ * Audio stream configuration.
2565
+ * @type {OutputRtmpClientAudioOptions}
2566
+ * @memberof RtmpOutput
2567
+ */
2568
+ audio?: OutputRtmpClientAudioOptions | null;
2569
+ /**
2570
+ *
2571
+ * @type {RtmpOutputTypeEnum}
2572
+ * @memberof RtmpOutput
2573
+ */
2574
+ type: RtmpOutputTypeEnum;
2575
+ }
2576
+ /**
2577
+ * @export
2578
+ */
2579
+ declare const RtmpOutputTypeEnum: {
2580
+ readonly RtmpClient: "rtmp_client";
2581
+ };
2582
+ type RtmpOutputTypeEnum = (typeof RtmpOutputTypeEnum)[keyof typeof RtmpOutputTypeEnum];
2583
+
2584
+ /**
2585
+ * Composition API
2586
+ * Real-time video compositing
2587
+ *
2588
+ * The version of the OpenAPI document: 0.1.0
2589
+ *
2590
+ *
2591
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2592
+ * https://openapi-generator.tech
2593
+ * Do not edit the class manually.
2594
+ */
2595
+
2596
+ /**
2597
+ *
2598
+ * @export
2599
+ * @interface OutputWhipVideoOptions
2600
+ */
2601
+ interface OutputWhipVideoOptions {
2602
+ /**
2603
+ * Output resolution in pixels.
2604
+ * @type {Resolution}
2605
+ * @memberof OutputWhipVideoOptions
2606
+ */
2607
+ resolution: Resolution;
2608
+ /**
2609
+ * Defines when output stream should end if some of the input streams are finished. If output includes both audio and video streams, then EOS needs to be sent on both.
2610
+ * @type {OutputEndCondition}
2611
+ * @memberof OutputWhipVideoOptions
2612
+ */
2613
+ sendEosWhen?: OutputEndCondition | null;
2614
+ /**
2615
+ * Root of a component tree/scene that should be rendered for the output.
2616
+ * @type {VideoScene}
2617
+ * @memberof OutputWhipVideoOptions
2618
+ */
2619
+ initial: VideoScene;
2620
+ }
2621
+
2622
+ /**
2623
+ * Composition API
2624
+ * Real-time video compositing
2625
+ *
2626
+ * The version of the OpenAPI document: 0.1.0
2627
+ *
2628
+ *
2629
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2630
+ * https://openapi-generator.tech
2631
+ * Do not edit the class manually.
2632
+ */
2633
+ /**
2634
+ *
2635
+ * @export
2636
+ * @interface WhipAudioEncoderOptionsAny
2637
+ */
2638
+ interface WhipAudioEncoderOptionsAny {
2639
+ /**
2640
+ *
2641
+ * @type {WhipAudioEncoderOptionsAnyTypeEnum}
2642
+ * @memberof WhipAudioEncoderOptionsAny
2643
+ */
2644
+ type: WhipAudioEncoderOptionsAnyTypeEnum;
2645
+ }
2646
+ /**
2647
+ * @export
2648
+ */
2649
+ declare const WhipAudioEncoderOptionsAnyTypeEnum: {
2650
+ readonly Any: "any";
2651
+ };
2652
+ type WhipAudioEncoderOptionsAnyTypeEnum = (typeof WhipAudioEncoderOptionsAnyTypeEnum)[keyof typeof WhipAudioEncoderOptionsAnyTypeEnum];
2653
+
2654
+ /**
2655
+ * Composition API
2656
+ * Real-time video compositing
2657
+ *
2658
+ * The version of the OpenAPI document: 0.1.0
2659
+ *
2660
+ *
2661
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2662
+ * https://openapi-generator.tech
2663
+ * Do not edit the class manually.
2664
+ */
2665
+ /**
2666
+ *
2667
+ * @export
2668
+ */
2669
+ declare const OpusEncoderPreset: {
2670
+ readonly Quality: "quality";
2671
+ readonly Voip: "voip";
2672
+ readonly LowestLatency: "lowest_latency";
2673
+ };
2674
+ type OpusEncoderPreset = (typeof OpusEncoderPreset)[keyof typeof OpusEncoderPreset];
2675
+
2676
+ /**
2677
+ * Composition API
2678
+ * Real-time video compositing
2679
+ *
2680
+ * The version of the OpenAPI document: 0.1.0
2681
+ *
2682
+ *
2683
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2684
+ * https://openapi-generator.tech
2685
+ * Do not edit the class manually.
2686
+ */
2687
+
2688
+ /**
2689
+ *
2690
+ * @export
2691
+ * @interface WhipAudioEncoderOptionsOpus
2692
+ */
2693
+ interface WhipAudioEncoderOptionsOpus {
2694
+ /**
2695
+ * (**default="voip"**) Specifies preset for audio output encoder.
2696
+ * @type {OpusEncoderPreset}
2697
+ * @memberof WhipAudioEncoderOptionsOpus
2698
+ */
2699
+ preset?: OpusEncoderPreset | null;
2700
+ /**
2701
+ * (**default=`48000`**) Sample rate. Allowed values: [8000, 16000, 24000, 48000].
2702
+ * @type {number}
2703
+ * @memberof WhipAudioEncoderOptionsOpus
2704
+ */
2705
+ sampleRate?: number | null;
2706
+ /**
2707
+ * (**default=`false`**) Specifies if forward error correction (FEC) should be used.
2708
+ * @type {boolean}
2709
+ * @memberof WhipAudioEncoderOptionsOpus
2710
+ */
2711
+ forwardErrorCorrection?: boolean | null;
2712
+ /**
2713
+ *
2714
+ * @type {WhipAudioEncoderOptionsOpusTypeEnum}
2715
+ * @memberof WhipAudioEncoderOptionsOpus
2716
+ */
2717
+ type: WhipAudioEncoderOptionsOpusTypeEnum;
2718
+ }
2719
+ /**
2720
+ * @export
2721
+ */
2722
+ declare const WhipAudioEncoderOptionsOpusTypeEnum: {
2723
+ readonly Opus: "opus";
2724
+ };
2725
+ type WhipAudioEncoderOptionsOpusTypeEnum = (typeof WhipAudioEncoderOptionsOpusTypeEnum)[keyof typeof WhipAudioEncoderOptionsOpusTypeEnum];
2726
+
2727
+ /**
2728
+ * Composition API
2729
+ * Real-time video compositing
2730
+ *
2731
+ * The version of the OpenAPI document: 0.1.0
2732
+ *
2733
+ *
2734
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2735
+ * https://openapi-generator.tech
2736
+ * Do not edit the class manually.
2737
+ */
2738
+
2739
+ /**
2740
+ * @type WhipAudioEncoderOptions
2741
+ *
2742
+ * @export
2743
+ */
2744
+ type WhipAudioEncoderOptions = WhipAudioEncoderOptionsAny | WhipAudioEncoderOptionsOpus;
2745
+
2746
+ /**
2747
+ * Composition API
2748
+ * Real-time video compositing
2749
+ *
2750
+ * The version of the OpenAPI document: 0.1.0
2751
+ *
2752
+ *
2753
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2754
+ * https://openapi-generator.tech
2755
+ * Do not edit the class manually.
2756
+ */
2757
+
2758
+ /**
2759
+ *
2760
+ * @export
2761
+ * @interface OutputWhipAudioOptions
2762
+ */
2763
+ interface OutputWhipAudioOptions {
2764
+ /**
2765
+ * (**default="sum_clip"**) Specifies how audio should be mixed.
2766
+ * @type {AudioMixingStrategy}
2767
+ * @memberof OutputWhipAudioOptions
2768
+ */
2769
+ mixingStrategy?: AudioMixingStrategy | null;
2770
+ /**
2771
+ * Condition for termination of output stream based on the input streams states.
2772
+ * @type {OutputEndCondition}
2773
+ * @memberof OutputWhipAudioOptions
2774
+ */
2775
+ sendEosWhen?: OutputEndCondition | null;
2776
+ /**
2777
+ * Specifies channels configuration.
2778
+ * @type {AudioChannels}
2779
+ * @memberof OutputWhipAudioOptions
2780
+ */
2781
+ channels?: AudioChannels | null;
2782
+ /**
2783
+ * Codec preferences list.
2784
+ * @type {Array<WhipAudioEncoderOptions>}
2785
+ * @memberof OutputWhipAudioOptions
2786
+ */
2787
+ encoderPreferences?: Array<WhipAudioEncoderOptions> | null;
2788
+ /**
2789
+ * Initial audio mixer configuration for output.
2790
+ * @type {AudioScene}
2791
+ * @memberof OutputWhipAudioOptions
2792
+ */
2793
+ initial: AudioScene;
2794
+ }
2795
+
2796
+ /**
2797
+ * Composition API
2798
+ * Real-time video compositing
2799
+ *
2800
+ * The version of the OpenAPI document: 0.1.0
2801
+ *
2802
+ *
2803
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2804
+ * https://openapi-generator.tech
2805
+ * Do not edit the class manually.
2806
+ */
2807
+
2808
+ /**
2809
+ *
2810
+ * @export
2811
+ * @interface WhipOutput
2812
+ */
2813
+ interface WhipOutput {
2814
+ /**
2815
+ * WHIP server endpoint
2816
+ * @type {string}
2817
+ * @memberof WhipOutput
2818
+ */
2819
+ endpointUrl: string;
2820
+ /**
2821
+ *
2822
+ * @type {string}
2823
+ * @memberof WhipOutput
2824
+ */
2825
+ bearerToken?: string | null;
2826
+ /**
2827
+ * Video track configuration.
2828
+ * @type {OutputWhipVideoOptions}
2829
+ * @memberof WhipOutput
2830
+ */
2831
+ video?: OutputWhipVideoOptions | null;
2832
+ /**
2833
+ * Audio track configuration.
2834
+ * @type {OutputWhipAudioOptions}
2835
+ * @memberof WhipOutput
2836
+ */
2837
+ audio?: OutputWhipAudioOptions | null;
2838
+ /**
2839
+ *
2840
+ * @type {WhipOutputTypeEnum}
2841
+ * @memberof WhipOutput
2842
+ */
2843
+ type: WhipOutputTypeEnum;
2844
+ }
2845
+ /**
2846
+ * @export
2847
+ */
2848
+ declare const WhipOutputTypeEnum: {
2849
+ readonly WhipClient: "whip_client";
2850
+ };
2851
+ type WhipOutputTypeEnum = (typeof WhipOutputTypeEnum)[keyof typeof WhipOutputTypeEnum];
2852
+
2853
+ /**
2854
+ * Composition API
2855
+ * Real-time video compositing
2856
+ *
2857
+ * The version of the OpenAPI document: 0.1.0
2858
+ *
2859
+ *
2860
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2861
+ * https://openapi-generator.tech
2862
+ * Do not edit the class manually.
2863
+ */
2864
+
2865
+ /**
2866
+ * @type RegisterOutput
2867
+ *
2868
+ * @export
2869
+ */
2870
+ type RegisterOutput = RtmpOutput | WhipOutput;
2871
+
2872
+ /**
2873
+ * Composition API
2874
+ * Real-time video compositing
2875
+ *
2876
+ * The version of the OpenAPI document: 0.1.0
2877
+ *
2878
+ *
2879
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2880
+ * https://openapi-generator.tech
2881
+ * Do not edit the class manually.
2882
+ */
2883
+ /**
2884
+ *
2885
+ * @export
2886
+ * @interface UnregisterOutput
2887
+ */
2888
+ interface UnregisterOutput {
2889
+ /**
2890
+ * Time in milliseconds when this request should be applied. Value `0` represents
2891
+ * time of the start request.
2892
+ * @type {number}
2893
+ * @memberof UnregisterOutput
2894
+ */
2895
+ scheduleTimeMs?: number | null;
2896
+ }
2897
+
2898
+ /**
2899
+ * Composition API
2900
+ * Real-time video compositing
2901
+ *
2902
+ * The version of the OpenAPI document: 0.1.0
2903
+ *
2904
+ *
2905
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2906
+ * https://openapi-generator.tech
2907
+ * Do not edit the class manually.
2908
+ */
2909
+
2910
+ /**
2911
+ *
2912
+ * @export
2913
+ * @interface UpdateOutputRequest
2914
+ */
2915
+ interface UpdateOutputRequest {
2916
+ /**
2917
+ *
2918
+ * @type {VideoScene}
2919
+ * @memberof UpdateOutputRequest
2920
+ */
2921
+ video?: VideoScene | null;
2922
+ /**
2923
+ *
2924
+ * @type {AudioScene}
2925
+ * @memberof UpdateOutputRequest
2926
+ */
2927
+ audio?: AudioScene | null;
2928
+ /**
2929
+ *
2930
+ * @type {number}
2931
+ * @memberof UpdateOutputRequest
2932
+ */
2933
+ scheduleTimeMs?: number | null;
2934
+ }
2935
+
2936
+ /**
2937
+ * Composition API
2938
+ * Real-time video compositing
2939
+ *
2940
+ * The version of the OpenAPI document: 0.1.0
2941
+ *
2942
+ *
2943
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2944
+ * https://openapi-generator.tech
2945
+ * Do not edit the class manually.
2946
+ */
2947
+ /**
2948
+ *
2949
+ * @export
2950
+ * @interface ImageSpecAuto
2951
+ */
2952
+ interface ImageSpecAuto {
2953
+ /**
2954
+ *
2955
+ * @type {string}
2956
+ * @memberof ImageSpecAuto
2957
+ */
2958
+ url: string;
2959
+ /**
2960
+ *
2961
+ * @type {ImageSpecAutoAssetTypeEnum}
2962
+ * @memberof ImageSpecAuto
2963
+ */
2964
+ assetType: ImageSpecAutoAssetTypeEnum;
2965
+ }
2966
+ /**
2967
+ * @export
2968
+ */
2969
+ declare const ImageSpecAutoAssetTypeEnum: {
2970
+ readonly Auto: "auto";
2971
+ };
2972
+ type ImageSpecAutoAssetTypeEnum = (typeof ImageSpecAutoAssetTypeEnum)[keyof typeof ImageSpecAutoAssetTypeEnum];
2973
+
2974
+ /**
2975
+ * Composition API
2976
+ * Real-time video compositing
2977
+ *
2978
+ * The version of the OpenAPI document: 0.1.0
2979
+ *
2980
+ *
2981
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
2982
+ * https://openapi-generator.tech
2983
+ * Do not edit the class manually.
2984
+ */
2985
+ /**
2986
+ *
2987
+ * @export
2988
+ * @interface ImageSpecGif
2989
+ */
2990
+ interface ImageSpecGif {
245
2991
  /**
246
2992
  *
247
- * @type {RoomType}
248
- * @memberof RoomConfig
2993
+ * @type {string}
2994
+ * @memberof ImageSpecGif
249
2995
  */
250
- 'roomType'?: RoomType;
2996
+ url: string;
251
2997
  /**
252
2998
  *
253
- * @type {VideoCodec}
254
- * @memberof RoomConfig
255
- */
256
- 'videoCodec'?: VideoCodec;
257
- /**
258
- * URL where Fishjam notifications will be sent
259
- * @type {string}
260
- * @memberof RoomConfig
2999
+ * @type {ImageSpecGifAssetTypeEnum}
3000
+ * @memberof ImageSpecGif
261
3001
  */
262
- 'webhookUrl'?: string | null;
3002
+ assetType: ImageSpecGifAssetTypeEnum;
263
3003
  }
264
3004
  /**
265
- * The use-case of the room. If not provided, this defaults to conference.
266
3005
  * @export
267
- * @enum {string}
268
3006
  */
269
- declare const RoomType: {
270
- readonly FullFeature: "full_feature";
271
- readonly AudioOnly: "audio_only";
272
- readonly Broadcaster: "broadcaster";
273
- readonly Livestream: "livestream";
274
- readonly Conference: "conference";
275
- readonly AudioOnlyLivestream: "audio_only_livestream";
3007
+ declare const ImageSpecGifAssetTypeEnum: {
3008
+ readonly Gif: "gif";
276
3009
  };
277
- type RoomType = typeof RoomType[keyof typeof RoomType];
3010
+ type ImageSpecGifAssetTypeEnum = (typeof ImageSpecGifAssetTypeEnum)[keyof typeof ImageSpecGifAssetTypeEnum];
3011
+
278
3012
  /**
279
- * Streamer authorization token
3013
+ * Composition API
3014
+ * Real-time video compositing
3015
+ *
3016
+ * The version of the OpenAPI document: 0.1.0
3017
+ *
3018
+ *
3019
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
3020
+ * https://openapi-generator.tech
3021
+ * Do not edit the class manually.
3022
+ */
3023
+ /**
3024
+ *
280
3025
  * @export
281
- * @interface StreamerToken
3026
+ * @interface ImageSpecJpeg
282
3027
  */
283
- interface StreamerToken {
3028
+ interface ImageSpecJpeg {
284
3029
  /**
285
- * Token streamer should authorize with
3030
+ *
286
3031
  * @type {string}
287
- * @memberof StreamerToken
3032
+ * @memberof ImageSpecJpeg
3033
+ */
3034
+ url: string;
3035
+ /**
3036
+ *
3037
+ * @type {ImageSpecJpegAssetTypeEnum}
3038
+ * @memberof ImageSpecJpeg
288
3039
  */
289
- 'token': string;
3040
+ assetType: ImageSpecJpegAssetTypeEnum;
290
3041
  }
291
3042
  /**
292
- * Configuration of peer\'s subscribing policy
293
3043
  * @export
294
- * @enum {string}
295
3044
  */
296
- declare const SubscribeMode: {
297
- readonly Auto: "auto";
298
- readonly Manual: "manual";
3045
+ declare const ImageSpecJpegAssetTypeEnum: {
3046
+ readonly Jpeg: "jpeg";
299
3047
  };
300
- type SubscribeMode = typeof SubscribeMode[keyof typeof SubscribeMode];
3048
+ type ImageSpecJpegAssetTypeEnum = (typeof ImageSpecJpegAssetTypeEnum)[keyof typeof ImageSpecJpegAssetTypeEnum];
3049
+
3050
+ /**
3051
+ * Composition API
3052
+ * Real-time video compositing
3053
+ *
3054
+ * The version of the OpenAPI document: 0.1.0
3055
+ *
3056
+ *
3057
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
3058
+ * https://openapi-generator.tech
3059
+ * Do not edit the class manually.
3060
+ */
301
3061
  /**
302
- * Describes peer\'s subscriptions in manual mode
3062
+ *
303
3063
  * @export
304
- * @interface Subscriptions
3064
+ * @interface ImageSpecPng
305
3065
  */
306
- interface Subscriptions {
3066
+ interface ImageSpecPng {
307
3067
  /**
308
- * List of peer IDs this peer subscribes to
309
- * @type {Array<string>}
310
- * @memberof Subscriptions
3068
+ *
3069
+ * @type {string}
3070
+ * @memberof ImageSpecPng
311
3071
  */
312
- 'peers': Array<string>;
3072
+ url: string;
313
3073
  /**
314
- * List of track IDs this peer subscribes to
315
- * @type {Array<string>}
316
- * @memberof Subscriptions
3074
+ *
3075
+ * @type {ImageSpecPngAssetTypeEnum}
3076
+ * @memberof ImageSpecPng
317
3077
  */
318
- 'tracks': Array<string>;
3078
+ assetType: ImageSpecPngAssetTypeEnum;
319
3079
  }
320
3080
  /**
321
- * Media track of a Peer
322
3081
  * @export
323
- * @interface Track
324
3082
  */
325
- interface Track$2 {
3083
+ declare const ImageSpecPngAssetTypeEnum: {
3084
+ readonly Png: "png";
3085
+ };
3086
+ type ImageSpecPngAssetTypeEnum = (typeof ImageSpecPngAssetTypeEnum)[keyof typeof ImageSpecPngAssetTypeEnum];
3087
+
3088
+ /**
3089
+ * Composition API
3090
+ * Real-time video compositing
3091
+ *
3092
+ * The version of the OpenAPI document: 0.1.0
3093
+ *
3094
+ *
3095
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
3096
+ * https://openapi-generator.tech
3097
+ * Do not edit the class manually.
3098
+ */
3099
+
3100
+ /**
3101
+ *
3102
+ * @export
3103
+ * @interface ImageSpecSvg
3104
+ */
3105
+ interface ImageSpecSvg {
326
3106
  /**
327
- * Assigned track id
3107
+ *
328
3108
  * @type {string}
329
- * @memberof Track
3109
+ * @memberof ImageSpecSvg
330
3110
  */
331
- 'id'?: string;
3111
+ url: string;
332
3112
  /**
333
- * Metadata attached to the track by the peer
334
- * @type {object}
335
- * @memberof Track
3113
+ *
3114
+ * @type {Resolution}
3115
+ * @memberof ImageSpecSvg
336
3116
  */
337
- 'metadata'?: object | null;
3117
+ resolution?: Resolution | null;
338
3118
  /**
339
3119
  *
340
- * @type {TrackType}
341
- * @memberof Track
3120
+ * @type {ImageSpecSvgAssetTypeEnum}
3121
+ * @memberof ImageSpecSvg
342
3122
  */
343
- 'type'?: TrackType$2;
3123
+ assetType: ImageSpecSvgAssetTypeEnum;
344
3124
  }
345
3125
  /**
346
- * Media type carried by the track
347
3126
  * @export
348
- * @enum {string}
349
3127
  */
350
- declare const TrackType$2: {
351
- readonly Audio: "audio";
352
- readonly Video: "video";
3128
+ declare const ImageSpecSvgAssetTypeEnum: {
3129
+ readonly Svg: "svg";
353
3130
  };
354
- type TrackType$2 = typeof TrackType$2[keyof typeof TrackType$2];
3131
+ type ImageSpecSvgAssetTypeEnum = (typeof ImageSpecSvgAssetTypeEnum)[keyof typeof ImageSpecSvgAssetTypeEnum];
3132
+
355
3133
  /**
356
- * Enforces video codec for each peer in the room
3134
+ * Composition API
3135
+ * Real-time video compositing
3136
+ *
3137
+ * The version of the OpenAPI document: 0.1.0
3138
+ *
3139
+ *
3140
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
3141
+ * https://openapi-generator.tech
3142
+ * Do not edit the class manually.
3143
+ */
3144
+
3145
+ /**
3146
+ * @type ImageSpec
3147
+ *
357
3148
  * @export
358
- * @enum {string}
359
3149
  */
360
- declare const VideoCodec: {
361
- readonly H264: "h264";
362
- readonly Vp8: "vp8";
363
- };
364
- type VideoCodec = typeof VideoCodec[keyof typeof VideoCodec];
3150
+ type ImageSpec = ImageSpecAuto | ImageSpecGif | ImageSpecJpeg | ImageSpecPng | ImageSpecSvg;
3151
+
365
3152
  /**
366
- * Viewer authorization token
3153
+ * Composition API
3154
+ * Real-time video compositing
3155
+ *
3156
+ * The version of the OpenAPI document: 0.1.0
3157
+ *
3158
+ *
3159
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
3160
+ * https://openapi-generator.tech
3161
+ * Do not edit the class manually.
3162
+ */
3163
+ /**
3164
+ *
367
3165
  * @export
368
- * @interface ViewerToken
3166
+ * @interface UnregisterRenderer
369
3167
  */
370
- interface ViewerToken {
3168
+ interface UnregisterRenderer {
371
3169
  /**
372
- * Token viewer should authorize with
373
- * @type {string}
374
- * @memberof ViewerToken
3170
+ * Time in milliseconds when this request should be applied. Value `0` represents
3171
+ * time of the start request.
3172
+ * @type {number}
3173
+ * @memberof UnregisterRenderer
375
3174
  */
376
- 'token': string;
3175
+ scheduleTimeMs?: number | null;
377
3176
  }
378
3177
 
379
3178
  /** Defines types of tracks being published by peers and component */
@@ -428,6 +3227,14 @@ declare enum ServerMessage_VadNotification_Status {
428
3227
  STATUS_SPEECH = 2,
429
3228
  UNRECOGNIZED = -1
430
3229
  }
3230
+ declare enum ServerMessage_RecordingStatusChanged_Status {
3231
+ STATUS_UNSPECIFIED = 0,
3232
+ STATUS_ACTIVE = 1,
3233
+ STATUS_FINISHED = 2,
3234
+ STATUS_AVAILABLE = 3,
3235
+ STATUS_FAILED = 4,
3236
+ UNRECOGNIZED = -1
3237
+ }
431
3238
  /** Defines any type of message passed between FJ and server peer */
432
3239
  interface ServerMessage {
433
3240
  authenticated?: ServerMessage_Authenticated | undefined;
@@ -455,6 +3262,7 @@ interface ServerMessage {
455
3262
  viewerDisconnected?: ServerMessage_ViewerDisconnected | undefined;
456
3263
  streamerConnected?: ServerMessage_StreamerConnected | undefined;
457
3264
  streamerDisconnected?: ServerMessage_StreamerDisconnected | undefined;
3265
+ recordingStatusChanged?: ServerMessage_RecordingStatusChanged | undefined;
458
3266
  /** Batch */
459
3267
  notificationBatch?: ServerMessage_NotificationBatch | undefined;
460
3268
  /** @deprecated */
@@ -670,6 +3478,13 @@ interface ServerMessage_StreamerDisconnected {
670
3478
  streamerId: string;
671
3479
  }
672
3480
  declare const ServerMessage_StreamerDisconnected: MessageFns$1<ServerMessage_StreamerDisconnected>;
3481
+ interface ServerMessage_RecordingStatusChanged {
3482
+ recordingId: string;
3483
+ status: ServerMessage_RecordingStatusChanged_Status;
3484
+ /** JSON-encoded, as set on recording creation */
3485
+ metadata: string;
3486
+ }
3487
+ declare const ServerMessage_RecordingStatusChanged: MessageFns$1<ServerMessage_RecordingStatusChanged>;
673
3488
  /**
674
3489
  * Carries multiple notifications in a single wire frame.
675
3490
  *
@@ -844,13 +3659,87 @@ type TrackType = TrackType$2 | 'unspecified';
844
3659
  * Voice activity status of a track.
845
3660
  */
846
3661
  type VadStatus = 'speech' | 'silence';
3662
+ /**
3663
+ * ID of a recording.
3664
+ * Recording can be started with {@link FishjamClient.createRecording}.
3665
+ */
3666
+ type RecordingId = Brand<string, 'RecordingId'>;
3667
+ /**
3668
+ * Lifecycle status of a recording, as returned by the REST API and emitted by {@link FishjamWSNotifier}.
3669
+ */
3670
+ type RecordingStatus = 'active' | 'finished' | 'available' | 'failed';
3671
+ /**
3672
+ * A recording and its current lifecycle status.
3673
+ */
3674
+ type Recording = Override<Recording$1, {
3675
+ id: RecordingId;
3676
+ status: RecordingStatus;
3677
+ }>;
3678
+ /**
3679
+ * ID of a composition.
3680
+ * Composition can be created with {@link CompositionClient.createComposition}.
3681
+ */
3682
+ type CompositionId = Brand<string, 'CompositionId'>;
3683
+ /**
3684
+ * ID of an input registered on a composition with {@link CompositionClient.registerInput}.
3685
+ */
3686
+ type InputId = Brand<string, 'InputId'>;
3687
+ /**
3688
+ * ID of an output registered on a composition with {@link CompositionClient.registerOutput}.
3689
+ */
3690
+ type OutputId = Brand<string, 'OutputId'>;
3691
+ /**
3692
+ * ID of a renderer, such as an image registered with {@link CompositionClient.registerImage}.
3693
+ */
3694
+ type RendererId = Brand<string, 'RendererId'>;
3695
+ type Composition = Override<CompositionCreatedResponse, {
3696
+ compositionId: CompositionId;
3697
+ }>;
3698
+ /**
3699
+ * Where to publish a WHIP input registered with {@link CompositionClient.registerWhipInput}.
3700
+ * Hand these to a WHIP publisher, such as `useLivestreamStreamer` in the React client SDK.
3701
+ */
3702
+ type WhipInputTarget = {
3703
+ url: string;
3704
+ bearerToken: string;
3705
+ };
3706
+ /**
3707
+ * How much media an MP4 input registered with {@link CompositionClient.registerMp4Input} holds.
3708
+ */
3709
+ type Mp4InputDurations = {
3710
+ videoDurationMs?: number;
3711
+ audioDurationMs?: number;
3712
+ };
847
3713
  type Room = {
848
3714
  id: RoomId;
849
3715
  peers: Peer[];
850
3716
  config: RoomConfig;
851
3717
  };
3718
+ type CompositionConfig = {
3719
+ /**
3720
+ * Management token is a secret token authorizing to perform actions on your account.
3721
+ * It is the same token {@link FishjamClient} is configured with.
3722
+ * Never share this token with anyone.
3723
+ * Visit https://fishjam.io/app/ to get your Management Token.
3724
+ */
3725
+ managementToken: string;
3726
+ /**
3727
+ * Address of the Composition API. Only needs setting when running against a
3728
+ * deployment other than production.
3729
+ */
3730
+ compositionUrl?: string;
3731
+ };
852
3732
  type FishjamConfig = {
3733
+ /**
3734
+ * Fishjam ID is a unique identifier for your account and environment.
3735
+ * Visit https://fishjam.io/app/ to get your Fishjam ID.
3736
+ */
853
3737
  fishjamId: string;
3738
+ /**
3739
+ * Management token is a secret token authorizing to perform actions on your account.
3740
+ * Never share this token with anyone.
3741
+ * Visit https://fishjam.io/app/ to get your Management Token.
3742
+ */
854
3743
  managementToken: string;
855
3744
  };
856
3745
  type ErrorEventHandler = (msg: Event) => void;
@@ -868,7 +3757,7 @@ type Track = {
868
3757
  type: TrackType;
869
3758
  metadata: string;
870
3759
  };
871
- declare const expectedEventsList$1: readonly ["roomCreated", "roomDeleted", "roomCrashed", "peerAdded", "peerDeleted", "peerConnected", "peerDisconnected", "peerMetadataUpdated", "peerCrashed", "streamerConnected", "streamerDisconnected", "viewerConnected", "viewerDisconnected", "trackAdded", "trackRemoved", "trackMetadataUpdated", "trackForwarding", "trackForwardingRemoved", "vadNotification", "channelAdded", "channelRemoved"];
3760
+ declare const expectedEventsList$1: readonly ["roomCreated", "roomDeleted", "roomCrashed", "peerAdded", "peerDeleted", "peerConnected", "peerDisconnected", "peerMetadataUpdated", "peerCrashed", "streamerConnected", "streamerDisconnected", "viewerConnected", "viewerDisconnected", "trackAdded", "trackRemoved", "trackMetadataUpdated", "trackForwarding", "trackForwardingRemoved", "vadNotification", "channelAdded", "channelRemoved", "recordingStatusChanged"];
872
3761
  type ExpectedEvents = (typeof expectedEventsList$1)[number];
873
3762
  /**
874
3763
  * `ServerMessage` oneof members that are intentionally NOT emitted to users.
@@ -880,7 +3769,9 @@ type IgnoredEvents = (typeof ignoredEventsList)[number];
880
3769
  /**
881
3770
  * Field-level overrides applied to every notification payload: branded ID types
882
3771
  * and the user-facing enums replace their raw protobuf counterparts. {@link Override}
883
- * only swaps keys that exist on the source type, so a single map covers all variants.
3772
+ * only swaps keys that exist on the source type, so a single map covers all variants
3773
+ * except `recordingStatusChanged`, whose `status` has its own meaning
3774
+ * (see {@link RecordingOverrides}).
884
3775
  *
885
3776
  * @inline
886
3777
  */
@@ -893,8 +3784,19 @@ type NotificationOverrides = {
893
3784
  videoTrack: Track | undefined;
894
3785
  status: VadStatus;
895
3786
  };
3787
+ /**
3788
+ * Overrides for {@link Notifications.recordingStatusChanged}, kept separate from
3789
+ * {@link NotificationOverrides} because its `status` field is a {@link RecordingStatus},
3790
+ * not a {@link VadStatus}.
3791
+ *
3792
+ * @inline
3793
+ */
3794
+ type RecordingOverrides = {
3795
+ recordingId: RecordingId;
3796
+ status: RecordingStatus;
3797
+ };
896
3798
  /** @inline */
897
- type Notification<K extends keyof ServerMessage> = Override<NonNullable<ServerMessage[K]>, NotificationOverrides>;
3799
+ type Notification<K extends keyof ServerMessage, TOverrides = NotificationOverrides> = Override<NonNullable<ServerMessage[K]>, TOverrides>;
898
3800
  /**
899
3801
  * @inline
900
3802
  */
@@ -920,6 +3822,7 @@ type Notifications = {
920
3822
  vadNotification: Notification<'vadNotification'>;
921
3823
  channelAdded: Notification<'channelAdded'>;
922
3824
  channelRemoved: Notification<'channelRemoved'>;
3825
+ recordingStatusChanged: Notification<'recordingStatusChanged', RecordingOverrides>;
923
3826
  };
924
3827
  type RoomCreated = Notifications['roomCreated'];
925
3828
  type RoomDeleted = Notifications['roomDeleted'];
@@ -942,6 +3845,7 @@ type TrackForwardingRemoved = Notifications['trackForwardingRemoved'];
942
3845
  type VadNotification = Notifications['vadNotification'];
943
3846
  type ChannelAdded = Notifications['channelAdded'];
944
3847
  type ChannelRemoved = Notifications['channelRemoved'];
3848
+ type RecordingStatusChanged = Notifications['recordingStatusChanged'];
945
3849
  type NotificationEvents = {
946
3850
  [K in ExpectedEvents]: (message: Notifications[K]) => void;
947
3851
  };
@@ -1001,6 +3905,32 @@ declare class FishjamWSNotifier extends FishjamWSNotifier_base {
1001
3905
  * @category Notifications
1002
3906
  */
1003
3907
  declare const decodeServerNotifications: (data: Uint8Array | ArrayBuffer) => ServerNotification[];
3908
+ /**
3909
+ * Verify the signature of a raw Fishjam webhook request.
3910
+ *
3911
+ * Fishjam signs each webhook delivery with the room's signing secret and sends
3912
+ * the result in the `x-fishjam-signature-256` header as
3913
+ * `sha256=<lowercase hex HMAC-SHA256 of the raw body>`. Pass the raw,
3914
+ * not-yet-decoded request body, the header value, and your secret; the comparison
3915
+ * is constant-time (signatures of the wrong length are rejected early, which
3916
+ * leaks only the expected signature length — public knowledge for SHA-256).
3917
+ * Verify before calling {@link decodeServerNotifications}.
3918
+ *
3919
+ * @example
3920
+ * ```ts
3921
+ * import { verifyWebhookSignature, decodeServerNotifications } from '@fishjam-cloud/js-server-sdk';
3922
+ *
3923
+ * declare const body: Uint8Array;
3924
+ * declare const signatureHeader: string;
3925
+ * // ---cut---
3926
+ * if (!verifyWebhookSignature(body, signatureHeader, process.env.WEBHOOK_SECRET!)) {
3927
+ * throw new Error('Invalid webhook signature');
3928
+ * }
3929
+ * const notifications = decodeServerNotifications(body);
3930
+ * ```
3931
+ * @category Notifications
3932
+ */
3933
+ declare const verifyWebhookSignature: (body: Uint8Array | ArrayBuffer, signature: string, secret: string) => boolean;
1004
3934
 
1005
3935
  declare const expectedEventsList: readonly ["trackData"];
1006
3936
  /**
@@ -1032,9 +3962,10 @@ declare const FishjamAgent_base: new () => TypedEventEmitter<AgentEvents>;
1032
3962
  declare class FishjamAgent extends FishjamAgent_base {
1033
3963
  private readonly client;
1034
3964
  private resolveConnectionPromise;
3965
+ private rejectConnectionPromise;
1035
3966
  private readonly connectionPromise;
1036
3967
  private readonly pendingImageCaptures;
1037
- constructor(config: FishjamConfig, agentToken: string, callbacks?: AgentCallbacks);
3968
+ constructor(config: FishjamConfig, agentToken: string, callbacks?: AgentCallbacks, peerWebsocketUrl?: string);
1038
3969
  /**
1039
3970
  * Await Agent connection to Fishjam.
1040
3971
  */
@@ -1073,6 +4004,7 @@ declare class FishjamAgent extends FishjamAgent_base {
1073
4004
  private rejectPendingCaptures;
1074
4005
  private dispatchNotification;
1075
4006
  private setupConnection;
4007
+ private settleConnection;
1076
4008
  private isExpectedEvent;
1077
4009
  }
1078
4010
 
@@ -1087,6 +4019,8 @@ declare class FishjamClient {
1087
4019
  private readonly viewerApi;
1088
4020
  private readonly streamerApi;
1089
4021
  private readonly credentialsApi;
4022
+ private readonly recordingsApi;
4023
+ private readonly trackForwardingsApi;
1090
4024
  private readonly fishjamConfig;
1091
4025
  private deprecationWarningShown;
1092
4026
  /**
@@ -1185,6 +4119,18 @@ declare class FishjamClient {
1185
4119
  * @returns refreshed peer token
1186
4120
  */
1187
4121
  refreshPeerToken(roomId: RoomId, peerId: PeerId): Promise<string>;
4122
+ /**
4123
+ * Forwards every track published in the room into a composition, which composes them into
4124
+ * its outputs. Pass the composition's address, as returned by
4125
+ * {@link CompositionClient.compositionUrl}.
4126
+ */
4127
+ forwardRoomTracks(roomId: RoomId, compositionUrl: string): Promise<void>;
4128
+ /**
4129
+ * Where to publish a livestream, paired with a token from
4130
+ * {@link FishjamClient.createLivestreamStreamerToken}. A composition reaches viewers by
4131
+ * sending a WHIP output here.
4132
+ */
4133
+ livestreamWhipUrl(): string;
1188
4134
  /**
1189
4135
  * Creates a livestream viewer token for the given room.
1190
4136
  * @returns a livestream viewer token
@@ -1200,16 +4146,172 @@ declare class FishjamClient {
1200
4146
  * @returns connection details containing the relay URL with the JWT embedded as a `?jwt=` query parameter, and the token itself
1201
4147
  */
1202
4148
  createMoqAccess(config?: MoqAccessConfig): Promise<MoqAccess>;
4149
+ /**
4150
+ * Create a new recording. Capturing starts synchronously, so the returned recording is `active`.
4151
+ */
4152
+ createRecording(config: RecordingConfig): Promise<Recording>;
4153
+ /**
4154
+ * Get details about a given recording.
4155
+ */
4156
+ getRecording(recordingId: RecordingId): Promise<Recording>;
4157
+ /**
4158
+ * Get a list of all recordings, optionally filtered by metadata.
4159
+ * Returns recordings whose metadata contains all the given key-value pairs.
4160
+ */
4161
+ getAllRecordings(metadata?: Record<string, unknown>): Promise<Recording[]>;
4162
+ /**
4163
+ * Stop an active recording. Finalization is asynchronous: the recording stays `active` until
4164
+ * the capture is finalized, then becomes `finished`. Stopping a recording that is no longer active is a no-op.
4165
+ */
4166
+ stopRecording(recordingId: RecordingId): Promise<Recording>;
4167
+ /**
4168
+ * Delete a recording. Its stored media is removed asynchronously.
4169
+ * A recording that is still `active` cannot be deleted — stop it first or wait for it to finish.
4170
+ */
4171
+ deleteRecording(recordingId: RecordingId): Promise<void>;
4172
+ }
4173
+
4174
+ /**
4175
+ * Client class that allows to manage compositions, the real-time video compositing sessions
4176
+ * of a Fishjam App. It requires the management token that can be retrieved from the Fishjam
4177
+ * Dashboard, the same one used by {@link FishjamClient}.
4178
+ *
4179
+ * Example usage:
4180
+ * ```
4181
+ * const compositionClient = new CompositionClient({
4182
+ * managementToken: fastify.config.FISHJAM_MANAGEMENT_TOKEN,
4183
+ * });
4184
+ * ```
4185
+ * @category Client
4186
+ */
4187
+ declare class CompositionClient {
4188
+ private readonly compositionsApi;
4189
+ private readonly eventsApi;
4190
+ private readonly inputsApi;
4191
+ private readonly mediaTransportApi;
4192
+ private readonly outputsApi;
4193
+ private readonly renderersApi;
4194
+ private readonly baseUrl;
4195
+ constructor(config: CompositionConfig);
4196
+ /**
4197
+ * Create a new composition. Inputs registered on it are composed into the scenes its outputs render.
4198
+ */
4199
+ createComposition(config?: CreateCompositionRequest): Promise<Composition>;
4200
+ /**
4201
+ * The address of a composition, as other services refer to it. Fishjam needs it to forward a
4202
+ * room's tracks with {@link FishjamClient.forwardRoomTracks}.
4203
+ */
4204
+ compositionUrl(compositionId: CompositionId): string;
4205
+ /**
4206
+ * Start a composition created with `autostart` disabled. Its outputs begin producing audio and video.
4207
+ */
4208
+ startComposition(compositionId: CompositionId): Promise<void>;
4209
+ /**
4210
+ * Reset a composition, tearing down its scene while keeping the composition itself alive.
4211
+ */
4212
+ resetComposition(compositionId: CompositionId): Promise<void>;
4213
+ /**
4214
+ * Delete an existing composition. Its inputs and outputs are torn down with it.
4215
+ */
4216
+ deleteComposition(compositionId: CompositionId): Promise<void>;
4217
+ /**
4218
+ * Register a media source on a composition. Prefer the variant methods, such as
4219
+ * {@link CompositionClient.registerWhipInput}, which return what that input type produces.
4220
+ */
4221
+ registerInput(compositionId: CompositionId, inputId: InputId, input: RegisterInput): Promise<RegisterInputResponse>;
4222
+ /**
4223
+ * Register an input that a WHIP publisher pushes media into.
4224
+ * @returns the address and token to publish with, see {@link WhipInputTarget}
4225
+ */
4226
+ registerWhipInput(compositionId: CompositionId, inputId: InputId, options?: Omit<WhipInput, 'type'>): Promise<WhipInputTarget>;
4227
+ /**
4228
+ * Where WHIP publishing is served, for servers that do not report the route themselves.
4229
+ */
4230
+ private whipPath;
4231
+ /**
4232
+ * Register an input that pulls media from a WHEP endpoint.
4233
+ */
4234
+ registerWhepInput(compositionId: CompositionId, inputId: InputId, options: Omit<WhepInput, 'type'>): Promise<void>;
4235
+ /**
4236
+ * Register an input that plays an MP4 file.
4237
+ * @returns how much media the file holds, see {@link Mp4InputDurations}
4238
+ */
4239
+ registerMp4Input(compositionId: CompositionId, inputId: InputId, options: Omit<Mp4Input, 'type'>): Promise<Mp4InputDurations>;
4240
+ /**
4241
+ * Register an input that an RTMP publisher pushes media into. The stream key identifies the
4242
+ * input; the address to publish to belongs to the composition, not to this call.
4243
+ */
4244
+ registerRtmpInput(compositionId: CompositionId, inputId: InputId, options: Omit<RtmpInput, 'type'>): Promise<void>;
4245
+ /**
4246
+ * Unregister an input. Scenes referencing it stop receiving its media.
4247
+ */
4248
+ unregisterInput(compositionId: CompositionId, inputId: InputId, options?: UnregisterInput): Promise<void>;
4249
+ /**
4250
+ * Register an output, the destination the composed result is sent to, carrying the scene to render.
4251
+ */
4252
+ registerOutput(compositionId: CompositionId, outputId: OutputId, output: RegisterOutput): Promise<void>;
4253
+ /**
4254
+ * Register an output rendering a template bundle, as built by `@fishjam-cloud/composition-cli`.
4255
+ * The bundle is either a `Blob` or a path to read it from; never pass a path taken from
4256
+ * untrusted input, since its contents are uploaded.
4257
+ */
4258
+ registerTemplateOutput(compositionId: CompositionId, outputId: OutputId, config: RegisterOutput, template: Blob | string): Promise<void>;
4259
+ /**
4260
+ * Register an output sending the composed result to a WHIP endpoint.
4261
+ */
4262
+ registerWhipOutput(compositionId: CompositionId, outputId: OutputId, options: Omit<WhipOutput, 'type'>): Promise<void>;
4263
+ /**
4264
+ * Register an output sending the composed result to an RTMP endpoint.
4265
+ */
4266
+ registerRtmpOutput(compositionId: CompositionId, outputId: OutputId, options: Omit<RtmpOutput, 'type'>): Promise<void>;
4267
+ /**
4268
+ * Unregister an output. It stops producing audio and video.
4269
+ */
4270
+ unregisterOutput(compositionId: CompositionId, outputId: OutputId, options?: UnregisterOutput): Promise<void>;
4271
+ /**
4272
+ * Replace the scene an output renders.
4273
+ */
4274
+ updateOutput(compositionId: CompositionId, outputId: OutputId, update: UpdateOutputRequest): Promise<void>;
4275
+ /**
4276
+ * Ask an output to emit a keyframe, so a viewer joining mid-stream renders a full picture sooner.
4277
+ */
4278
+ requestKeyframe(compositionId: CompositionId, outputId: OutputId): Promise<void>;
4279
+ /**
4280
+ * Register an image that scenes can reference by its renderer ID.
4281
+ */
4282
+ registerImage(compositionId: CompositionId, imageId: RendererId, image: ImageSpec): Promise<void>;
4283
+ /**
4284
+ * Register a font that scenes can render text with. The font is either a `Blob` or a path
4285
+ * to read it from; never pass a path taken from untrusted input, since its contents are uploaded.
4286
+ */
4287
+ registerFont(compositionId: CompositionId, font: Blob | string): Promise<void>;
4288
+ /**
4289
+ * Unregister a previously registered image.
4290
+ */
4291
+ unregisterImage(compositionId: CompositionId, imageId: RendererId, options?: UnregisterRenderer): Promise<void>;
4292
+ /**
4293
+ * Deliver an event to the templates rendered by the composition's outputs.
4294
+ */
4295
+ sendEvent(compositionId: CompositionId, event: SendCompositionEventRequest): Promise<void>;
1203
4296
  }
1204
4297
 
1205
4298
  declare class MissingFishjamIdException extends Error {
1206
4299
  constructor();
1207
4300
  }
4301
+ declare class StaleSdkException extends Error {
4302
+ /** Raw wire value received from the server. */
4303
+ status: number;
4304
+ constructor(status: number);
4305
+ }
4306
+ interface FishjamExceptionInfo {
4307
+ message: string;
4308
+ statusCode?: number;
4309
+ details?: string;
4310
+ }
1208
4311
  declare class FishjamBaseException extends Error {
1209
4312
  statusCode: number;
1210
- axiosCode?: string;
1211
4313
  details?: string;
1212
- constructor(error: AxiosError<Record<string, string>>);
4314
+ constructor(info: FishjamExceptionInfo);
1213
4315
  }
1214
4316
  declare class BadRequestException extends FishjamBaseException {
1215
4317
  }
@@ -1225,6 +4327,16 @@ declare class InvalidFishjamCredentialsException extends FishjamBaseException {
1225
4327
  }
1226
4328
  declare class PeerNotFoundException extends FishjamBaseException {
1227
4329
  }
4330
+ declare class RecordingNotFoundException extends FishjamBaseException {
4331
+ }
4332
+ declare class CompositionNotFoundException extends FishjamBaseException {
4333
+ }
4334
+ declare class InputNotFoundException extends FishjamBaseException {
4335
+ }
4336
+ declare class OutputNotFoundException extends FishjamBaseException {
4337
+ }
4338
+ declare class RendererNotFoundException extends FishjamBaseException {
4339
+ }
1228
4340
  declare class ServiceUnavailableException extends FishjamBaseException {
1229
4341
  }
1230
4342
  declare class QuotaExceededException extends FishjamBaseException {
@@ -1232,4 +4344,12 @@ declare class QuotaExceededException extends FishjamBaseException {
1232
4344
  declare class UnknownException extends FishjamBaseException {
1233
4345
  }
1234
4346
 
1235
- export { type AgentCallbacks, type AgentEvents, type AgentTrack, type AudioCodecParameters, BadRequestException, type Brand, type ChannelAdded, type ChannelRemoved, type CloseEventHandler, type ErrorEventHandler, type ExpectedAgentEvents, type ExpectedEvents, FishjamAgent, FishjamBaseException, FishjamClient, type FishjamConfig, FishjamNotFoundException, FishjamWSNotifier, ForbiddenException, type IgnoredEvents, type IncomingTrackData, type IncomingTrackImage, InvalidFishjamCredentialsException, MissingFishjamIdException, type MoqAccess, type MoqAccessConfig, type NotificationEvents, type OutgoingTrackData, type Override, type Peer, type PeerAdded, type PeerConnected, type PeerCrashed, type PeerDeleted, type PeerDisconnected, type PeerId, type PeerMetadataUpdated, PeerNotFoundException, type PeerOptions, type PeerOptionsAgent, type PeerOptionsVapi, type PeerOptionsWebRTC, PeerStatus, type PeerType, QuotaExceededException, type Room, type RoomConfig, type RoomCrashed, type RoomCreated, type RoomDeleted, type RoomId, RoomNotFoundException, RoomType, ServerMessage, type ServerNotification, ServiceUnavailableException, type StreamerConnected, type StreamerDisconnected, type StreamerToken, type Track, type TrackAdded, type TrackForwarding, type TrackForwardingRemoved, type TrackId, type TrackMetadataUpdated, type TrackRemoved, type TrackType, UnauthorizedException, UnknownException, type VadNotification, type VadStatus, VideoCodec, type ViewerConnected, type ViewerDisconnected, type ViewerToken, decodeServerNotifications };
4347
+ /**
4348
+ * Server-side Node.js SDK for creating and managing Fishjam rooms, peers, agents, and receiving real-time server notifications.
4349
+ *
4350
+ * @packageDocumentation
4351
+ */
4352
+
4353
+ type PeerOptions = PeerOptionsWebRTC | PeerOptionsAgent | PeerOptionsVapi;
4354
+
4355
+ export { type AgentCallbacks, type AgentEvents, type AgentOutput, type AgentTrack, AudioChannels, type AudioCodecParameters, AudioFormat, AudioMixingStrategy, AudioSampleRate, type AudioScene, type AudioSceneInput, BadRequestException, type BoxShadow, type Brand, type ChannelAdded, type ChannelRemoved, type CloseEventHandler, type Component, type Composition, CompositionClient, type CompositionConfig, type CompositionId, CompositionNotFoundException, type CreateCompositionRequest, type EasingFunction, type EasingFunctionBounce, type EasingFunctionCubicBezier, type EasingFunctionLinear, type ErrorEventHandler, type ExpectedAgentEvents, type ExpectedEvents, FishjamAgent, FishjamBaseException, FishjamClient, type FishjamConfig, type FishjamExceptionInfo, FishjamNotFoundException, FishjamWSNotifier, ForbiddenException, HorizontalAlign, type IgnoredEvents, type Image, type ImageSpec, type ImageSpecAuto, type ImageSpecGif, type ImageSpecJpeg, type ImageSpecPng, type ImageSpecSvg, type IncomingTrackData, type IncomingTrackImage, type InputId, InputNotFoundException, type InputStream, InvalidFishjamCredentialsException, MissingFishjamIdException, type MoqAccess, type MoqAccessConfig, type Mp4Input, type Mp4InputDurations, type NotificationEvents, OpusEncoderPreset, type OutgoingTrackData, type OutputEndCondition, type OutputId, OutputNotFoundException, type OutputRtmpClientAudioOptions, type OutputRtmpClientVideoOptions, type OutputWhipAudioOptions, type OutputWhipVideoOptions, Overflow, type Override, type Peer, type PeerAdded, type PeerConnected, type PeerCrashed, type PeerDeleted, type PeerDisconnected, type PeerId, type PeerMetadataUpdated, PeerNotFoundException, type PeerOptions, type PeerOptionsAgent, type PeerOptionsVapi, type PeerOptionsWebRTC, PeerStatus, type PeerType, QuotaExceededException, type Recording, type RecordingConfig, type RecordingId, RecordingNotFoundException, type RecordingSource, type RecordingStatus, type RecordingStatusChanged, type RegisterInput, type RegisterInputResponse, type RegisterOutput, type RendererId, RendererNotFoundException, RescaleMode, type Rescaler, type Resolution, type Room, type RoomConfig, type RoomCrashed, type RoomCreated, type RoomDeleted, type RoomId, RoomNotFoundException, RoomType, type RtmpInput, type RtmpOutput, type SendCompositionEventRequest, ServerMessage, type ServerNotification, ServiceUnavailableException, StaleSdkException, type StreamerConnected, type StreamerDisconnected, type StreamerToken, SubscribeMode, type Text, TextStyle, TextWeight, TextWrapMode, type Tiles, type Track, type TrackAdded, type TrackForwarding, type TrackForwardingRemoved, type TrackId, type TrackMetadataUpdated, type TrackRemoved, type TrackType, type Transition, UnauthorizedException, UnknownException, type UnregisterInput, type UnregisterOutput, type UnregisterRenderer, type UpdateOutputRequest, type VadNotification, type VadStatus, VerticalAlign, VideoCodec, type VideoScene, type View, ViewDirection, type ViewerConnected, type ViewerDisconnected, type ViewerToken, type WhepInput, type WhipAudioEncoderOptions, type WhipAudioEncoderOptionsAny, type WhipAudioEncoderOptionsOpus, type WhipInput, type WhipInputTarget, type WhipOutput, decodeServerNotifications, verifyWebhookSignature };