@shotstack/schemas 1.9.6 → 1.9.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/api.bundled.json +1492 -3430
  2. package/dist/json-schema/asset.json +1 -853
  3. package/dist/json-schema/clip.json +1 -853
  4. package/dist/json-schema/destinations.json +28 -12
  5. package/dist/json-schema/edit.json +31 -867
  6. package/dist/json-schema/output.json +28 -12
  7. package/dist/json-schema/schemas.json +38 -967
  8. package/dist/json-schema/svg-asset.json +6 -857
  9. package/dist/json-schema/timeline.json +2 -854
  10. package/dist/json-schema/track.json +2 -854
  11. package/dist/schema.d.ts +914 -2451
  12. package/dist/zod/zod.gen.cjs +97 -1285
  13. package/dist/zod/zod.gen.d.ts +613 -12248
  14. package/dist/zod/zod.gen.js +91 -1277
  15. package/dist/zod/zod.gen.ts +27 -992
  16. package/package.json +1 -1
  17. package/dist/json-schema/svg-arrow-shape.json +0 -49
  18. package/dist/json-schema/svg-circle-shape.json +0 -28
  19. package/dist/json-schema/svg-cross-shape.json +0 -42
  20. package/dist/json-schema/svg-ellipse-shape.json +0 -35
  21. package/dist/json-schema/svg-fill.json +0 -169
  22. package/dist/json-schema/svg-gradient-stop.json +0 -25
  23. package/dist/json-schema/svg-heart-shape.json +0 -28
  24. package/dist/json-schema/svg-line-shape.json +0 -35
  25. package/dist/json-schema/svg-linear-gradient-fill.json +0 -80
  26. package/dist/json-schema/svg-path-shape.json +0 -26
  27. package/dist/json-schema/svg-polygon-shape.json +0 -35
  28. package/dist/json-schema/svg-radial-gradient-fill.json +0 -66
  29. package/dist/json-schema/svg-rectangle-shape.json +0 -49
  30. package/dist/json-schema/svg-ring-shape.json +0 -35
  31. package/dist/json-schema/svg-shadow.json +0 -79
  32. package/dist/json-schema/svg-shape.json +0 -404
  33. package/dist/json-schema/svg-solid-fill.json +0 -40
  34. package/dist/json-schema/svg-star-shape.json +0 -42
  35. package/dist/json-schema/svg-stroke.json +0 -115
  36. package/dist/json-schema/svg-transform.json +0 -93
package/dist/schema.d.ts CHANGED
@@ -371,55 +371,6 @@ export interface paths {
371
371
  patch?: never;
372
372
  trace?: never;
373
373
  };
374
- "/path_alias_createassets": {
375
- parameters: {
376
- query?: never;
377
- header?: never;
378
- path?: never;
379
- cookie?: never;
380
- };
381
- get?: never;
382
- put?: never;
383
- /**
384
- * Generate Asset
385
- * @description Generate an asset using a Shotstack or third party provider. Chose the provider, type of asset and provide prompts,
386
- * inputs and options to generate the asset. Once generated the asset can be used with the [Edit](#tocs_edit) API or
387
- * downloaded.
388
- *
389
- * **Base URL:** <a href="#">https://api.shotstack.io/create/{version}</a>
390
- */
391
- post: operations["postGenerateAsset"];
392
- delete?: never;
393
- options?: never;
394
- head?: never;
395
- patch?: never;
396
- trace?: never;
397
- };
398
- "/path_alias_createassets/{id}": {
399
- parameters: {
400
- query?: never;
401
- header?: never;
402
- path: {
403
- /** @description The id of the source file in [KSUID](https://github.com/segmentio/ksuid#what-is-a-ksuid) format. */
404
- id: string;
405
- };
406
- cookie?: never;
407
- };
408
- /**
409
- * Get Generated Asset
410
- * @description Get the generated assets status, url and details by ID.
411
- *
412
- * **Base URL:** <a href="#">https://api.shotstack.io/create/{version}</a>
413
- */
414
- get: operations["getGeneratedAsset"];
415
- put?: never;
416
- post?: never;
417
- delete?: never;
418
- options?: never;
419
- head?: never;
420
- patch?: never;
421
- trace?: never;
422
- };
423
374
  }
424
375
  export type webhooks = Record<string, never>;
425
376
  export interface components {
@@ -1382,621 +1333,383 @@ export interface components {
1382
1333
  offset?: components["schemas"]["Offset"];
1383
1334
  };
1384
1335
  /**
1385
- * @description The SvgAsset is used to add scalable vector graphics (SVG) shapes to a video.
1386
- * It provides two mutually exclusive ways to define shapes:
1336
+ * @description The SvgAsset is used to add scalable vector graphics (SVG) to a video using raw SVG markup.
1387
1337
  *
1388
- * **Option 1: Import SVG markup using `src`**
1389
1338
  * ```json
1390
1339
  * {
1391
1340
  * "type": "svg",
1392
1341
  * "src": "<svg width=\"100\" height=\"100\"><circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"#FF0000\"/></svg>"
1393
1342
  * }
1394
1343
  * ```
1395
- * When using `src`, no other properties are allowed. The fill, stroke, and dimensions
1396
- * are automatically extracted from the SVG markup.
1397
- *
1398
- * **Option 2: Define shapes programmatically using `shape`**
1399
- * ```json
1400
- * {
1401
- * "type": "svg",
1402
- * "shape": { "type": "circle", "radius": 50 },
1403
- * "fill": { "type": "solid", "color": "#FF0000" }
1404
- * }
1405
- * ```
1406
- * When using `shape`, you can customize fill, stroke, shadow, transform, and other properties.
1407
- * The `src` property is not allowed in this mode.
1408
1344
  *
1409
- * **Important:** You must provide either `src` OR `shape`, but not both.
1410
- * These two modes are mutually exclusive.
1345
+ * **Supported elements:** `<path>`, `<rect>`, `<circle>`, `<ellipse>`,
1346
+ * `<line>`, `<polygon>`, `<polyline>`
1411
1347
  *
1412
- * **Available Shapes (Option 2 only):**
1413
- * - `rectangle` - Rectangles with optional rounded corners
1414
- * - `circle` - Perfect circles
1415
- * - `ellipse` - Ellipses/ovals with separate x and y radii
1416
- * - `line` - Straight lines with configurable thickness
1417
- * - `polygon` - Regular polygons (triangle, pentagon, hexagon, etc.)
1418
- * - `star` - Multi-pointed stars
1419
- * - `arrow` - Directional arrows
1420
- * - `heart` - Heart shapes
1421
- * - `cross` - Plus/cross shapes
1422
- * - `ring` - Donut/ring shapes
1423
- * - `path` - Custom shapes using SVG path data
1348
+ * **Automatically extracted from SVG markup:**
1349
+ * - Path data (converted to a single combined path)
1350
+ * - Fill color (from `fill` attribute or `style`)
1351
+ * - Stroke color and width (from attributes or `style`)
1352
+ * - Dimensions (from `width`/`height` or `viewBox`)
1353
+ * - Opacity (from `opacity` attribute)
1424
1354
  *
1425
1355
  * See [W3C SVG 2 Specification](https://www.w3.org/TR/SVG2/) for path data syntax.
1426
1356
  * @example {
1427
1357
  * "type": "svg",
1428
- * "shape": {
1429
- * "type": "star",
1430
- * "points": 5,
1431
- * "outerRadius": 100,
1432
- * "innerRadius": 50
1433
- * },
1434
- * "fill": {
1435
- * "type": "linear",
1436
- * "angle": 45,
1437
- * "stops": [
1438
- * {
1439
- * "offset": 0,
1440
- * "color": "#FFD700"
1441
- * },
1442
- * {
1443
- * "offset": 1,
1444
- * "color": "#FF6B6B"
1445
- * }
1446
- * ],
1447
- * "opacity": 1
1448
- * },
1449
- * "stroke": {
1450
- * "color": "#2C3E50",
1451
- * "width": 3,
1452
- * "opacity": 1,
1453
- * "lineCap": "round",
1454
- * "lineJoin": "round"
1455
- * },
1456
- * "transform": {
1457
- * "x": 200,
1458
- * "y": 150,
1459
- * "rotation": 0,
1460
- * "scale": 1
1461
- * },
1462
- * "opacity": 1
1358
+ * "src": "<svg width=\"200\" height=\"200\"><rect x=\"10\" y=\"10\" width=\"180\" height=\"180\" rx=\"20\" fill=\"#3498db\" stroke=\"#2C3E50\" stroke-width=\"3\"/></svg>"
1463
1359
  * }
1464
1360
  */
1465
1361
  SvgAsset: {
1466
1362
  /**
1467
- * @description The asset type - set to `svg` for SVG shapes. (enum property replaced by openapi-typescript)
1363
+ * @description The asset type - set to `svg` for SVG assets. (enum property replaced by openapi-typescript)
1468
1364
  * @enum {string}
1469
1365
  */
1470
1366
  type: "svg";
1471
1367
  /**
1472
- * @description Raw SVG markup string to import. When provided, the shape is extracted
1473
- * automatically from the SVG content.
1474
- *
1475
- * **Supported elements:** `<path>`, `<rect>`, `<circle>`, `<ellipse>`,
1476
- * `<line>`, `<polygon>`, `<polyline>`
1477
- *
1478
- * **Automatically extracted:**
1479
- * - Path data (converted to a single combined path)
1480
- * - Fill color (from `fill` attribute or `style`)
1481
- * - Stroke color and width (from attributes or `style`)
1482
- * - Dimensions (from `width`/`height` or `viewBox`)
1483
- * - Opacity (from `opacity` attribute)
1484
- *
1485
- * **Important:** When using `src`, no other properties (shape, fill, stroke, etc.)
1486
- * are allowed. All styling must be defined within the SVG markup itself.
1368
+ * @description Raw SVG markup string. The shape, fill, stroke, dimensions and opacity
1369
+ * are automatically extracted from the SVG content.
1487
1370
  * @example <svg width="100" height="100"><circle cx="50" cy="50" r="40" fill="#3498db"/></svg>
1488
1371
  */
1489
- src?: string;
1372
+ src: string;
1373
+ };
1374
+ /** @description In and out transitions for a clip - i.e. fade in and fade out */
1375
+ Transition: {
1490
1376
  /**
1491
- * @description The shape definition using primitives. The `type` property within determines
1492
- * the shape kind and its specific properties.
1493
- *
1494
- * **Important:** When using `shape`, the `src` property is not allowed.
1377
+ * @description The transition in. Available transitions are:
1378
+ * <ul>
1379
+ * <li>`fade` - fade in</li>
1380
+ * <li>`reveal` - reveal from left to right</li>
1381
+ * <li>`wipeLeft` - fade across screen to the left</li>
1382
+ * <li>`wipeRight` - fade across screen to the right</li>
1383
+ * <li>`slideLeft` - move slightly left and fade in</li>
1384
+ * <li>`slideRight` - move slightly right and fade in</li>
1385
+ * <li>`slideUp` - move slightly up and fade in</li>
1386
+ * <li>`slideDown` - move slightly down and fade in</li>
1387
+ * <li>`carouselLeft` - slide in from right to left</li>
1388
+ * <li>`carouselRight` - slide in from left to right</li>
1389
+ * <li>`carouselUp` - slide in from bottom to top</li>
1390
+ * <li>`carouselDown` - slide in from top to bottom</li>
1391
+ * <li>`shuffleTopRight` - rotate in from top right</li>
1392
+ * <li>`shuffleRightTop` - rotate in from right top</li>
1393
+ * <li>`shuffleRightBottom` - rotate in from right bottom</li>
1394
+ * <li>`shuffleBottomRight` - rotate in from bottom right</li>
1395
+ * <li>`shuffleBottomLeft` - rotate in from bottom left</li>
1396
+ * <li>`shuffleLeftBottom` - rotate in from left bottom</li>
1397
+ * <li>`shuffleLeftTop` - rotate in from left top</li>
1398
+ * <li>`shuffleTopLeft` - rotate in from top left</li>
1399
+ * <li>`zoom` - fast zoom in</li>
1400
+ * </ul>
1401
+ * The transition speed can also be controlled by appending `Fast` or `Slow` to the transition, e.g. `fadeFast` or `CarouselLeftSlow`.
1402
+ * @enum {string}
1495
1403
  */
1496
- shape?: components["schemas"]["SvgShape"];
1404
+ in?: "none" | "fade" | "fadeSlow" | "fadeFast" | "reveal" | "revealSlow" | "revealFast" | "wipeLeft" | "wipeLeftSlow" | "wipeLeftFast" | "wipeRight" | "wipeRightSlow" | "wipeRightFast" | "slideLeft" | "slideLeftSlow" | "slideLeftFast" | "slideRight" | "slideRightSlow" | "slideRightFast" | "slideUp" | "slideUpSlow" | "slideUpFast" | "slideDown" | "slideDownSlow" | "slideDownFast" | "carouselLeft" | "carouselLeftSlow" | "carouselLeftFast" | "carouselRight" | "carouselRightSlow" | "carouselRightFast" | "carouselUp" | "carouselUpSlow" | "carouselUpFast" | "carouselDown" | "carouselDownSlow" | "carouselDownFast" | "shuffleTopRight" | "shuffleTopRightSlow" | "shuffleTopRightFast" | "shuffleRightTop" | "shuffleRightTopSlow" | "shuffleRightTopFast" | "shuffleRightBottom" | "shuffleRightBottomSlow" | "shuffleRightBottomFast" | "shuffleBottomRight" | "shuffleBottomRightSlow" | "shuffleBottomRightFast" | "shuffleBottomLeft" | "shuffleBottomLeftSlow" | "shuffleBottomLeftFast" | "shuffleLeftBottom" | "shuffleLeftBottomSlow" | "shuffleLeftBottomFast" | "shuffleLeftTop" | "shuffleLeftTopSlow" | "shuffleLeftTopFast" | "shuffleTopLeft" | "shuffleTopLeftSlow" | "shuffleTopLeftFast" | "zoom";
1497
1405
  /**
1498
- * @description Fill properties for the shape interior.
1499
- * Can be a solid color or a gradient (linear/radial).
1500
- * If omitted, the shape will have no fill (transparent interior).
1501
- *
1502
- * **Note:** Only allowed when using `shape`, not with `src`.
1406
+ * @description The transition out. Available transitions are:
1407
+ * <ul>
1408
+ * <li>`fade` - fade out</li>
1409
+ * <li>`reveal` - reveal from right to left</li>
1410
+ * <li>`wipeLeft` - fade across screen to the left</li>
1411
+ * <li>`wipeRight` - fade across screen to the right</li>
1412
+ * <li>`slideLeft` - move slightly left and fade out</li>
1413
+ * <li>`slideRight` - move slightly right and fade out</li>
1414
+ * <li>`slideUp` - move slightly up and fade out</li>
1415
+ * <li>`slideDown` - move slightly down and fade out</li>
1416
+ * <li>`carouselLeft` - slide out from right to left</li>
1417
+ * <li>`carouselRight` - slide out from left to right</li>
1418
+ * <li>`carouselUp` - slide out from bottom to top</li>
1419
+ * <li>`carouselDown` - slide out from top to bottom</li>
1420
+ * <li>`shuffleTopRight` - rotate out from top right</li>
1421
+ * <li>`shuffleRightTop` - rotate out from right top</li>
1422
+ * <li>`shuffleRightBottom` - rotate out from right bottom</li>
1423
+ * <li>`shuffleBottomRight` - rotate out from bottom right</li>
1424
+ * <li>`shuffleBottomLeft` - rotate out from bottom left</li>
1425
+ * <li>`shuffleLeftBottom` - rotate out from left bottom</li>
1426
+ * <li>`shuffleLeftTop` - rotate out from left top</li>
1427
+ * <li>`shuffleTopLeft` - rotate out from top left</li>
1428
+ * <li>`zoom` - fast zoom out</li>
1429
+ * </ul>
1430
+ * The transition speed can also be controlled by appending `Fast` or `Slow` to the transition, e.g. `fadeFast` or `CarouselLeftSlow`.
1431
+ * @enum {string}
1503
1432
  */
1504
- fill?: components["schemas"]["SvgFill"];
1433
+ out?: "none" | "fade" | "fadeSlow" | "fadeFast" | "reveal" | "revealSlow" | "revealFast" | "wipeLeft" | "wipeLeftSlow" | "wipeLeftFast" | "wipeRight" | "wipeRightSlow" | "wipeRightFast" | "slideLeft" | "slideLeftSlow" | "slideLeftFast" | "slideRight" | "slideRightSlow" | "slideRightFast" | "slideUp" | "slideUpSlow" | "slideUpFast" | "slideDown" | "slideDownSlow" | "slideDownFast" | "carouselLeft" | "carouselLeftSlow" | "carouselLeftFast" | "carouselRight" | "carouselRightSlow" | "carouselRightFast" | "carouselUp" | "carouselUpSlow" | "carouselUpFast" | "carouselDown" | "carouselDownSlow" | "carouselDownFast" | "shuffleTopRight" | "shuffleTopRightSlow" | "shuffleTopRightFast" | "shuffleRightTop" | "shuffleRightTopSlow" | "shuffleRightTopFast" | "shuffleRightBottom" | "shuffleRightBottomSlow" | "shuffleRightBottomFast" | "shuffleBottomRight" | "shuffleBottomRightSlow" | "shuffleBottomRightFast" | "shuffleBottomLeft" | "shuffleBottomLeftSlow" | "shuffleBottomLeftFast" | "shuffleLeftBottom" | "shuffleLeftBottomSlow" | "shuffleLeftBottomFast" | "shuffleLeftTop" | "shuffleLeftTopSlow" | "shuffleLeftTopFast" | "shuffleTopLeft" | "shuffleTopLeftSlow" | "shuffleTopLeftFast" | "zoom";
1434
+ };
1435
+ /** @description Offsets the position of an asset horizontally or vertically by a relative distance. */
1436
+ Offset: {
1437
+ /** @description Offset an asset on the horizontal axis (left or right). Use a number or an array of [Tween](./#tocs_tween) objects to create a custom animation. */
1438
+ x?: number | components["schemas"]["Tween"][];
1439
+ /** @description Offset an asset on the vertical axis (up or down). Use a number or an array of [Tween](./#tocs_tween) objects to create a custom animation. */
1440
+ y?: number | components["schemas"]["Tween"][];
1441
+ };
1442
+ /** @description Crop the sides of an asset by a relative amount. The size of the crop is specified using a scale between 0 and 1, relative to the screen width - i.e a left crop of 0.5 will crop half of the asset from the left, a top crop of 0.25 will crop the top by quarter of the asset. */
1443
+ Crop: {
1505
1444
  /**
1506
- * @description Stroke (outline) properties for the shape.
1507
- * If omitted, the shape will have no stroke (no outline).
1508
- *
1509
- * **Note:** Only allowed when using `shape`, not with `src`.
1445
+ * Format: float
1446
+ * @description Crop from the top of the asset
1447
+ * @example 0.15
1510
1448
  */
1511
- stroke?: components["schemas"]["SvgStroke"];
1449
+ top?: number;
1512
1450
  /**
1513
- * @description Drop shadow properties for the shape.
1514
- * Creates a shadow effect behind the shape.
1515
- *
1516
- * **Note:** Only allowed when using `shape`, not with `src`.
1451
+ * Format: float
1452
+ * @description Crop from the bottom of the asset
1453
+ * @example 0.15
1517
1454
  */
1518
- shadow?: components["schemas"]["SvgShadow"];
1455
+ bottom?: number;
1519
1456
  /**
1520
- * @description Transform properties for positioning, rotating, and scaling the shape.
1521
- * The transform is applied relative to the transformation origin.
1522
- *
1523
- * **Note:** Only allowed when using `shape`, not with `src`.
1457
+ * Format: float
1458
+ * @description Crop from the left of the asset
1524
1459
  */
1525
- transform?: components["schemas"]["SvgTransform"];
1460
+ left?: number;
1526
1461
  /**
1527
- * @description The overall opacity of the entire shape (including fill, stroke, and shadow).
1528
- * `1` is fully opaque, `0` is fully transparent.
1529
- * This is applied on top of individual fill/stroke/shadow opacity values.
1530
- *
1531
- * **Note:** Only allowed when using `shape`, not with `src`.
1532
- * @default 1
1533
- * @example 1
1462
+ * Format: float
1463
+ * @description Crop from the left of the asset
1534
1464
  */
1535
- opacity?: number;
1465
+ right?: number;
1466
+ };
1467
+ /** @description Apply one or more transformations to a clip. Transformations alter the visual properties of a clip and can be combined to create new shapes and effects. */
1468
+ Transformation: {
1469
+ rotate?: components["schemas"]["RotateTransformation"];
1470
+ skew?: components["schemas"]["SkewTransformation"];
1471
+ flip?: components["schemas"]["FlipTransformation"];
1472
+ };
1473
+ /** @description Rotate a clip by the specified angle in degrees. Rotation origin is set based on the clips `position`. */
1474
+ RotateTransformation: {
1475
+ /** @description Rotate a clip by the specified angle in degrees. Use a number or an array of [Tween](./#tocs_tween) objects to create a custom animation. */
1476
+ angle?: number | components["schemas"]["Tween"][];
1477
+ };
1478
+ /** @description Skew a clip so its edges are sheared at an angle. Use values between -100 and 100. Values over 3 or under -3 will skew the clip almost flat. */
1479
+ SkewTransformation: {
1480
+ /** @description Skew the clip along it's x axis. */
1481
+ x?: number | components["schemas"]["Tween"][];
1482
+ /** @description Skew the clip along it's y axis. */
1483
+ y?: number | components["schemas"]["Tween"][];
1484
+ };
1485
+ /** @description Flip a clip vertically or horizontally. Acts as a mirror effect of the clip along the selected plane. */
1486
+ FlipTransformation: {
1536
1487
  /**
1537
- * @description The width of the bounding box in pixels.
1538
- * If specified, the shape may be scaled to fit within this width.
1539
- * If omitted, the shape uses its natural dimensions.
1540
- *
1541
- * **Note:** Only allowed when using `shape`, not with `src`.
1542
- * @example 400
1488
+ * @description Flip a clip horizontally.
1489
+ * @example true
1543
1490
  */
1544
- width?: number;
1491
+ horizontal?: boolean;
1545
1492
  /**
1546
- * @description The height of the bounding box in pixels.
1547
- * If specified, the shape may be scaled to fit within this height.
1548
- * If omitted, the shape uses its natural dimensions.
1549
- *
1550
- * **Note:** Only allowed when using `shape`, not with `src`.
1551
- * @example 300
1493
+ * @description Flip a clip vertically.
1494
+ * @example true
1552
1495
  */
1553
- height?: number;
1496
+ vertical?: boolean;
1554
1497
  };
1555
- /**
1556
- * @description The shape definition for an SVG asset. Each shape type has its own specific
1557
- * properties. The `type` field determines which shape is rendered.
1558
- */
1559
- SvgShape: components["schemas"]["SvgRectangleShape"] | components["schemas"]["SvgCircleShape"] | components["schemas"]["SvgEllipseShape"] | components["schemas"]["SvgLineShape"] | components["schemas"]["SvgPolygonShape"] | components["schemas"]["SvgStarShape"] | components["schemas"]["SvgArrowShape"] | components["schemas"]["SvgHeartShape"] | components["schemas"]["SvgCrossShape"] | components["schemas"]["SvgRingShape"] | components["schemas"]["SvgPathShape"];
1560
- /**
1561
- * @description A rectangle shape with optional rounded corners.
1562
- * The rectangle is defined by its width and height dimensions.
1563
- */
1564
- SvgRectangleShape: {
1498
+ /** @description Font properties for text. */
1499
+ TextFont: {
1565
1500
  /**
1566
- * @description The shape type - set to `rectangle`. (enum property replaced by openapi-typescript)
1567
- * @enum {string}
1501
+ * @description The font family name. This must be Family name embedded in the font, i.e. "Open Sans".
1502
+ * @example Open Sans
1568
1503
  */
1569
- type: "rectangle";
1504
+ family?: string;
1570
1505
  /**
1571
- * @description The width of the rectangle in pixels.
1572
- * @example 200
1506
+ * @description The text color using hexadecimal color notation.
1507
+ * @example #ffffff
1573
1508
  */
1574
- width: number;
1509
+ color?: string;
1575
1510
  /**
1576
- * @description The height of the rectangle in pixels.
1577
- * @example 100
1511
+ * @description The opacity of the text where 1 is opaque and 0 is transparent.
1512
+ * @example 0.8
1578
1513
  */
1579
- height: number;
1514
+ opacity?: number;
1580
1515
  /**
1581
- * @description The corner radius for rounded corners in pixels.
1582
- * Set to `0` for sharp corners. The radius is automatically clamped
1583
- * to half of the smallest dimension.
1584
- * @default 0
1585
- * @example 10
1516
+ * @description The size of the font in pixels (px).
1517
+ * @example 24
1586
1518
  */
1587
- cornerRadius?: number;
1588
- };
1589
- /**
1590
- * @description A perfect circle shape defined by its radius.
1591
- * The circle is centered at the shape's position.
1592
- */
1593
- SvgCircleShape: {
1519
+ size?: number;
1594
1520
  /**
1595
- * @description The shape type - set to `circle`. (enum property replaced by openapi-typescript)
1596
- * @enum {string}
1521
+ * @description The weight of the font. 100 is lightest, 900 is heaviest (boldest).
1522
+ * @example 400
1597
1523
  */
1598
- type: "circle";
1524
+ weight?: number;
1599
1525
  /**
1600
- * @description The radius of the circle in pixels.
1601
- * @example 50
1526
+ * @description The line height of the font as a ratio of the font size.
1527
+ * @example 0.85
1602
1528
  */
1603
- radius: number;
1529
+ lineHeight?: number;
1604
1530
  };
1605
- /**
1606
- * @description An ellipse (oval) shape with separate horizontal and vertical radii.
1607
- * The ellipse is centered at the shape's position.
1608
- */
1609
- SvgEllipseShape: {
1610
- /**
1611
- * @description The shape type - set to `ellipse`. (enum property replaced by openapi-typescript)
1612
- * @enum {string}
1613
- */
1614
- type: "ellipse";
1615
- /**
1616
- * @description The horizontal radius (semi-major axis) in pixels.
1617
- * @example 80
1618
- */
1619
- radiusX: number;
1531
+ /** @description Displays a background box behind the text. */
1532
+ TextBackground: {
1620
1533
  /**
1621
- * @description The vertical radius (semi-minor axis) in pixels.
1622
- * @example 50
1534
+ * @description The background color using hexadecimal color notation.
1535
+ * @example #000000
1623
1536
  */
1624
- radiusY: number;
1625
- };
1626
- /**
1627
- * @description A straight line shape with a specified length and thickness.
1628
- * The line is drawn horizontally by default and can be rotated using transform.
1629
- */
1630
- SvgLineShape: {
1537
+ color?: string;
1631
1538
  /**
1632
- * @description The shape type - set to `line`. (enum property replaced by openapi-typescript)
1633
- * @enum {string}
1539
+ * @description The opacity of the background where 1 is opaque and 0 is transparent.
1540
+ * @example 0.8
1634
1541
  */
1635
- type: "line";
1542
+ opacity?: number;
1636
1543
  /**
1637
- * @description The length of the line in pixels.
1638
- * @example 100
1544
+ * @description Padding inside the background box in pixels.
1545
+ * @example 10
1639
1546
  */
1640
- length: number;
1547
+ padding?: number;
1641
1548
  /**
1642
- * @description The thickness of the line in pixels.
1643
- * @example 4
1549
+ * @description The border radius of the background box in pixels for rounded corners.
1550
+ * @example 5
1644
1551
  */
1645
- thickness: number;
1552
+ borderRadius?: number;
1646
1553
  };
1647
- /**
1648
- * @description A regular polygon shape with a specified number of sides.
1649
- * Examples: triangle (3), square (4), pentagon (5), hexagon (6), etc.
1650
- * The polygon is inscribed in a circle of the given radius.
1651
- */
1652
- SvgPolygonShape: {
1554
+ /** @description Horizontal and vertical alignment properties for text. */
1555
+ TextAlignment: {
1653
1556
  /**
1654
- * @description The shape type - set to `polygon`. (enum property replaced by openapi-typescript)
1557
+ * @description The horizontal alignment of the text. Value must be one of: <ul>
1558
+ * <li>`left`</li>
1559
+ * <li>`center`</li>
1560
+ * <li>`right`</li>
1561
+ * </ul>
1562
+ * @example center
1655
1563
  * @enum {string}
1656
1564
  */
1657
- type: "polygon";
1658
- /**
1659
- * @description The number of sides of the polygon.
1660
- * Minimum 3 (triangle), maximum 100 for practical use.
1661
- * @example 6
1662
- */
1663
- sides: number;
1565
+ horizontal?: "left" | "center" | "right";
1664
1566
  /**
1665
- * @description The radius of the circumscribed circle in pixels.
1666
- * This determines the size of the polygon.
1667
- * @example 50
1567
+ * @description The vertical alignment of the text. Value must be one of: <ul>
1568
+ * <li>`top`</li>
1569
+ * <li>`center`</li>
1570
+ * <li>`bottom`</li>
1571
+ * </ul>
1572
+ * @example center
1573
+ * @enum {string}
1668
1574
  */
1669
- radius: number;
1575
+ vertical?: "top" | "center" | "bottom";
1670
1576
  };
1671
- /**
1672
- * @description A star shape with a specified number of points.
1673
- * The star is defined by outer and inner radii, creating the characteristic
1674
- * pointed appearance.
1675
- */
1676
- SvgStarShape: {
1577
+ /** @description Font properties for rich text. */
1578
+ RichTextFont: {
1677
1579
  /**
1678
- * @description The shape type - set to `star`. (enum property replaced by openapi-typescript)
1679
- * @enum {string}
1680
- */
1681
- type: "star";
1682
- /**
1683
- * @description The number of points on the star.
1684
- * Minimum 3 for a triangle-like star, typically 5 for a classic star.
1685
- * @example 5
1686
- */
1687
- points: number;
1688
- /**
1689
- * @description The outer radius in pixels - the distance from center to the tips of the points.
1690
- * @example 50
1691
- */
1692
- outerRadius: number;
1693
- /**
1694
- * @description The inner radius in pixels - the distance from center to the inner vertices.
1695
- * Should be smaller than outerRadius for a star effect.
1696
- * @example 25
1697
- */
1698
- innerRadius: number;
1699
- };
1700
- /**
1701
- * @description An arrow shape pointing to the right by default.
1702
- * Use transform rotation to change direction.
1703
- */
1704
- SvgArrowShape: {
1705
- /**
1706
- * @description The shape type - set to `arrow`. (enum property replaced by openapi-typescript)
1707
- * @enum {string}
1708
- */
1709
- type: "arrow";
1710
- /**
1711
- * @description The total length of the arrow from tail to tip in pixels.
1712
- * @example 100
1713
- */
1714
- length: number;
1715
- /**
1716
- * @description The width of the arrow head (the widest part) in pixels.
1717
- * @example 40
1718
- */
1719
- headWidth: number;
1720
- /**
1721
- * @description The length of the arrow head portion in pixels.
1722
- * @example 30
1723
- */
1724
- headLength: number;
1725
- /**
1726
- * @description The width of the arrow shaft (body) in pixels.
1727
- * @example 20
1728
- */
1729
- shaftWidth: number;
1730
- };
1731
- /**
1732
- * @description A heart shape commonly used for love/like icons.
1733
- * The heart is defined by a single size parameter.
1734
- */
1735
- SvgHeartShape: {
1736
- /**
1737
- * @description The shape type - set to `heart`. (enum property replaced by openapi-typescript)
1738
- * @enum {string}
1580
+ * @description The font family name. This must be the Family name embedded in the font, i.e. "Open Sans".
1581
+ * @default Open Sans
1582
+ * @example Open Sans
1739
1583
  */
1740
- type: "heart";
1584
+ family?: string;
1741
1585
  /**
1742
- * @description The size of the heart in pixels.
1743
- * This determines both the width and height proportionally.
1744
- * @example 100
1586
+ * @description The size of the font in pixels (px). Must be between 1 and 500.
1587
+ * @default 24
1588
+ * @example 48
1745
1589
  */
1746
- size: number;
1747
- };
1748
- /**
1749
- * @description A cross or plus shape with equal or different arm lengths.
1750
- * Can be styled as a plus sign (+) or a cross (x with rotation).
1751
- */
1752
- SvgCrossShape: {
1590
+ size?: number;
1753
1591
  /**
1754
- * @description The shape type - set to `cross`. (enum property replaced by openapi-typescript)
1755
- * @enum {string}
1592
+ * @description The weight of the font. Can be a number (100-900) or a string ('normal', 'bold', etc.). 100 is lightest, 900 is heaviest (boldest).
1593
+ * @default 400
1756
1594
  */
1757
- type: "cross";
1595
+ weight?: unknown;
1758
1596
  /**
1759
- * @description The total width of the cross in pixels.
1760
- * @example 100
1597
+ * @description The text color using hexadecimal color notation.
1598
+ * @default #000000
1599
+ * @example #ff0000
1761
1600
  */
1762
- width: number;
1601
+ color?: string;
1763
1602
  /**
1764
- * @description The total height of the cross in pixels.
1765
- * @example 100
1603
+ * @description The opacity of the text where 1 is opaque and 0 is transparent.
1604
+ * @default 1
1605
+ * @example 0.9
1766
1606
  */
1767
- height: number;
1607
+ opacity?: number;
1768
1608
  /**
1769
- * @description The thickness of the cross arms in pixels.
1770
- * @example 20
1609
+ * @description The background color behind the text using hexadecimal color notation.
1610
+ * @example #000000
1771
1611
  */
1772
- thickness: number;
1612
+ background?: string;
1613
+ /** @description Text stroke (outline) properties. */
1614
+ stroke?: components["schemas"]["RichTextStroke"];
1773
1615
  };
1774
- /**
1775
- * @description A ring (donut/annulus) shape - a circle with a circular hole in the center.
1776
- * The ring is defined by outer and inner radii.
1777
- */
1778
- SvgRingShape: {
1616
+ /** @description Text style properties including spacing, line height, and transformations. */
1617
+ RichTextStyle: {
1779
1618
  /**
1780
- * @description The shape type - set to `ring`. (enum property replaced by openapi-typescript)
1781
- * @enum {string}
1619
+ * @description Additional spacing between letters in pixels. Can be negative for tighter spacing.
1620
+ * @default 0
1621
+ * @example 2
1782
1622
  */
1783
- type: "ring";
1623
+ letterSpacing?: number;
1784
1624
  /**
1785
- * @description The outer radius of the ring in pixels.
1786
- * @example 50
1625
+ * @description Additional spacing between words in pixels. A value of 0 uses the font's natural space width.
1626
+ * @default 0
1627
+ * @example 10
1787
1628
  */
1788
- outerRadius: number;
1629
+ wordSpacing?: number;
1789
1630
  /**
1790
- * @description The inner radius (hole) of the ring in pixels.
1791
- * Must be smaller than outerRadius.
1792
- * @example 30
1631
+ * @description The line height as a multiplier of the font size. Must be between 0 and 10.
1632
+ * @default 1.2
1633
+ * @example 1.5
1793
1634
  */
1794
- innerRadius: number;
1795
- };
1796
- /**
1797
- * @description A custom shape defined by SVG path data.
1798
- * Supports all standard SVG path commands for creating complex shapes.
1799
- *
1800
- * **Path Commands:**
1801
- * - `M x y` / `m dx dy` - Move to (absolute/relative)
1802
- * - `L x y` / `l dx dy` - Line to
1803
- * - `H x` / `h dx` - Horizontal line to
1804
- * - `V y` / `v dy` - Vertical line to
1805
- * - `C x1 y1 x2 y2 x y` / `c` - Cubic Bezier curve
1806
- * - `S x2 y2 x y` / `s` - Smooth cubic Bezier
1807
- * - `Q x1 y1 x y` / `q` - Quadratic Bezier curve
1808
- * - `T x y` / `t` - Smooth quadratic Bezier
1809
- * - `A rx ry angle large-arc sweep x y` / `a` - Elliptical arc
1810
- * - `Z` / `z` - Close path
1811
- */
1812
- SvgPathShape: {
1635
+ lineHeight?: number;
1813
1636
  /**
1814
- * @description The shape type - set to `path`. (enum property replaced by openapi-typescript)
1637
+ * @description Text transformation to apply.
1638
+ * @default none
1639
+ * @example uppercase
1815
1640
  * @enum {string}
1816
1641
  */
1817
- type: "path";
1818
- /**
1819
- * @description The SVG path data string defining the shape.
1820
- * Uses standard SVG path commands (M, L, C, Q, A, Z, etc.).
1821
- * Example: `M 0 0 L 100 0 L 100 100 L 0 100 Z` draws a square.
1822
- * @example M 0 0 L 100 0 L 50 86.6 Z
1823
- */
1824
- d: string;
1825
- };
1826
- /**
1827
- * @description Fill properties for SVG shapes. Supports solid colors and gradients.
1828
- * The fill defines how the interior of a shape is painted.
1829
- */
1830
- SvgFill: components["schemas"]["SvgSolidFill"] | components["schemas"]["SvgLinearGradientFill"] | components["schemas"]["SvgRadialGradientFill"];
1831
- /** @description A solid color fill for SVG shapes. */
1832
- SvgSolidFill: {
1642
+ textTransform?: "none" | "uppercase" | "lowercase" | "capitalize";
1833
1643
  /**
1834
- * @description The fill type - set to `solid` for a single color fill. (enum property replaced by openapi-typescript)
1644
+ * @description Text decoration to apply.
1645
+ * @default none
1646
+ * @example underline
1835
1647
  * @enum {string}
1836
1648
  */
1837
- type: "solid";
1838
- /**
1839
- * @description The fill color using hexadecimal color notation (e.g., `#FF0000` for red).
1840
- * Must be a 6-digit hex color code prefixed with `#`.
1841
- * @default #000000
1842
- * @example #3498db
1843
- */
1844
- color: string;
1845
- /**
1846
- * @description The opacity of the fill where `1` is fully opaque and `0` is fully transparent.
1847
- * Values between 0 and 1 create semi-transparent fills.
1848
- * @default 1
1849
- * @example 0.8
1850
- */
1851
- opacity?: number;
1649
+ textDecoration?: "none" | "underline" | "line-through";
1650
+ /** @description Gradient fill for text instead of solid color. */
1651
+ gradient?: components["schemas"]["RichTextGradient"];
1852
1652
  };
1853
- /**
1854
- * @description A linear gradient fill that transitions colors along a straight line.
1855
- * The gradient direction is controlled by the `angle` property.
1856
- */
1857
- SvgLinearGradientFill: {
1653
+ /** @description Gradient properties for text fill. */
1654
+ RichTextGradient: {
1858
1655
  /**
1859
- * @description The fill type - set to `linear` for a linear gradient fill. (enum property replaced by openapi-typescript)
1656
+ * @description The type of gradient.
1657
+ * @default linear
1658
+ * @example linear
1860
1659
  * @enum {string}
1861
1660
  */
1862
- type: "linear";
1661
+ type?: "linear" | "radial";
1863
1662
  /**
1864
- * @description The angle of the gradient in degrees. `0` is horizontal (left to right),
1865
- * `90` is vertical (bottom to top), `180` is right to left, etc.
1663
+ * @description The angle of the gradient in degrees (for linear gradients). Must be between 0 and 360.
1866
1664
  * @default 0
1867
1665
  * @example 45
1868
1666
  */
1869
1667
  angle?: number;
1870
- /**
1871
- * @description Array of color stops that define the gradient colors and their positions.
1872
- * Must have at least 2 stops. Offsets should increase from 0 to 1.
1873
- */
1874
- stops: components["schemas"]["SvgGradientStop"][];
1875
- /**
1876
- * @description The overall opacity of the gradient where `1` is fully opaque and `0` is fully transparent.
1877
- * @default 1
1878
- * @example 1
1879
- */
1880
- opacity?: number;
1881
- };
1882
- /**
1883
- * @description A radial gradient fill that transitions colors radiating outward from a center point.
1884
- * The gradient creates a circular or elliptical color transition.
1885
- */
1886
- SvgRadialGradientFill: {
1887
- /**
1888
- * @description The fill type - set to `radial` for a radial gradient fill. (enum property replaced by openapi-typescript)
1889
- * @enum {string}
1890
- */
1891
- type: "radial";
1892
- /**
1893
- * @description Array of color stops that define the gradient colors and their positions.
1894
- * Must have at least 2 stops. Offset `0` is the center, `1` is the outer edge.
1895
- */
1896
- stops: components["schemas"]["SvgGradientStop"][];
1897
- /**
1898
- * @description The overall opacity of the gradient where `1` is fully opaque and `0` is fully transparent.
1899
- * @default 1
1900
- * @example 1
1901
- */
1902
- opacity?: number;
1668
+ /** @description Gradient color stops. Must have at least 2 stops. */
1669
+ stops: {
1670
+ /**
1671
+ * @description Position of the color stop between 0 (start) and 1 (end).
1672
+ * @example 0.5
1673
+ */
1674
+ offset: number;
1675
+ /**
1676
+ * @description Color at this stop using hexadecimal color notation.
1677
+ * @example #ff0000
1678
+ */
1679
+ color: string;
1680
+ }[];
1903
1681
  };
1904
- /**
1905
- * @description A color stop in a gradient. Each stop defines a color at a specific position
1906
- * along the gradient vector. Gradients require at least 2 stops.
1907
- */
1908
- SvgGradientStop: {
1909
- /**
1910
- * @description Position of the color stop along the gradient vector.
1911
- * `0` represents the start and `1` represents the end of the gradient.
1912
- * @example 0.5
1913
- */
1914
- offset: number;
1682
+ /** @description Text stroke (outline) properties. */
1683
+ RichTextStroke: {
1915
1684
  /**
1916
- * @description The color at this stop using hexadecimal color notation.
1917
- * @example #e74c3c
1685
+ * @description The width of the stroke in pixels. Must be 0 or greater.
1686
+ * @default 0
1687
+ * @example 2
1918
1688
  */
1919
- color: string;
1920
- };
1921
- /**
1922
- * @description Stroke (outline) properties for SVG shapes. The stroke defines how the outline
1923
- * of a shape is painted, including its color, width, and line style.
1924
- */
1925
- SvgStroke: {
1689
+ width?: number;
1926
1690
  /**
1927
1691
  * @description The stroke color using hexadecimal color notation.
1928
1692
  * @default #000000
1929
- * @example #2c3e50
1693
+ * @example #000000
1930
1694
  */
1931
1695
  color?: string;
1932
1696
  /**
1933
- * @description The width of the stroke in pixels. Must be greater than 0.
1934
- * Larger values create thicker outlines.
1935
- * @default 1
1936
- * @example 2
1937
- */
1938
- width?: number;
1939
- /**
1940
- * @description The opacity of the stroke where `1` is opaque and `0` is transparent.
1697
+ * @description The opacity of the stroke where 1 is opaque and 0 is transparent.
1941
1698
  * @default 1
1942
- * @example 1
1699
+ * @example 0.8
1943
1700
  */
1944
1701
  opacity?: number;
1945
- /**
1946
- * @description The shape at the end of open paths (lines, polylines, unclosed paths).
1947
- * <ul>
1948
- * <li>`butt` - flat edge perpendicular to the line (default)</li>
1949
- * <li>`round` - semicircular cap extending beyond the endpoint</li>
1950
- * <li>`square` - rectangular cap extending beyond the endpoint</li>
1951
- * </ul>
1952
- * @default butt
1953
- * @example round
1954
- * @enum {string}
1955
- */
1956
- lineCap?: "butt" | "round" | "square";
1957
- /**
1958
- * @description The shape at the corners where two lines meet.
1959
- * <ul>
1960
- * <li>`miter` - sharp corner (default)</li>
1961
- * <li>`round` - rounded corner</li>
1962
- * <li>`bevel` - flattened corner</li>
1963
- * </ul>
1964
- * @default miter
1965
- * @example round
1966
- * @enum {string}
1967
- */
1968
- lineJoin?: "miter" | "round" | "bevel";
1969
- /**
1970
- * @description Pattern of dashes and gaps for the stroke. An array of numbers where
1971
- * odd indices are dash lengths and even indices are gap lengths.
1972
- * For example, `[10, 5]` creates 10px dashes with 5px gaps.
1973
- * `[10, 5, 2, 5]` creates alternating 10px and 2px dashes with 5px gaps.
1974
- * @example [
1975
- * 10,
1976
- * 5
1977
- * ]
1978
- */
1979
- dashArray?: number[];
1980
- /**
1981
- * @description Offset for the dash pattern. Positive values shift the pattern
1982
- * forward along the path, negative values shift it backward.
1983
- * @default 0
1984
- * @example 5
1985
- */
1986
- dashOffset?: number;
1987
1702
  };
1988
- /** @description Drop shadow properties for SVG shapes. Creates a shadow effect behind the shape. */
1989
- SvgShadow: {
1703
+ /** @description Text shadow properties. */
1704
+ RichTextShadow: {
1990
1705
  /**
1991
- * @description Horizontal offset of the shadow in pixels.
1992
- * Positive values move the shadow to the right, negative to the left.
1706
+ * @description Horizontal offset of the shadow in pixels. Positive values move right, negative left.
1993
1707
  * @default 0
1994
1708
  * @example 4
1995
1709
  */
1996
1710
  offsetX?: number;
1997
1711
  /**
1998
- * @description Vertical offset of the shadow in pixels.
1999
- * Positive values move the shadow down, negative values move it up.
1712
+ * @description Vertical offset of the shadow in pixels. Positive values move down, negative up.
2000
1713
  * @default 0
2001
1714
  * @example 4
2002
1715
  */
@@ -2014,183 +1727,89 @@ export interface components {
2014
1727
  */
2015
1728
  color?: string;
2016
1729
  /**
2017
- * @description The opacity of the shadow where `1` is opaque and `0` is transparent.
1730
+ * @description The opacity of the shadow where 1 is opaque and 0 is transparent.
2018
1731
  * @default 0.5
2019
- * @example 0.3
1732
+ * @example 0.7
2020
1733
  */
2021
1734
  opacity?: number;
2022
1735
  };
2023
- /** @description Transformation properties for positioning, rotating, and scaling SVG shapes. */
2024
- SvgTransform: {
1736
+ /** @description Background styling properties for the text bounding box. */
1737
+ RichTextBackground: {
2025
1738
  /**
2026
- * @description The x-coordinate position of the shape in pixels.
2027
- * Relative to the top-left corner of the viewport.
2028
- * @default 0
2029
- * @example 100
1739
+ * @description The background color using hexadecimal color notation.
1740
+ * @example #000000
2030
1741
  */
2031
- x?: number;
1742
+ color?: string;
2032
1743
  /**
2033
- * @description The y-coordinate position of the shape in pixels.
2034
- * Relative to the top-left corner of the viewport.
2035
- * @default 0
2036
- * @example 100
1744
+ * @description The opacity of the background where 1 is opaque and 0 is transparent.
1745
+ * @default 1
1746
+ * @example 0.5
2037
1747
  */
2038
- y?: number;
1748
+ opacity?: number;
2039
1749
  /**
2040
- * @description Rotation angle in degrees. Positive values rotate clockwise,
2041
- * negative values rotate counter-clockwise. Range: -360 to 360.
1750
+ * @description The border radius of the background box in pixels. Must be 0 or greater.
2042
1751
  * @default 0
2043
- * @example 45
1752
+ * @example 10
2044
1753
  */
2045
- rotation?: number;
1754
+ borderRadius?: number;
1755
+ };
1756
+ /** @description Text alignment properties (horizontal and vertical). */
1757
+ RichTextAlignment: {
2046
1758
  /**
2047
- * @description Scale factor for the shape. `1` is original size, `2` is double size,
2048
- * `0.5` is half size. Must be greater than 0.
2049
- * @default 1
2050
- * @example 1.5
1759
+ * @description The horizontal alignment of the text.
1760
+ * @default center
1761
+ * @example center
1762
+ * @enum {string}
2051
1763
  */
2052
- scale?: number;
1764
+ horizontal?: "left" | "center" | "right";
2053
1765
  /**
2054
- * @description The x-coordinate of the transformation origin as a value from 0 to 1.
2055
- * `0` is the left edge, `0.5` is the center, `1` is the right edge.
2056
- * @default 0.5
2057
- * @example 0.5
1766
+ * @description The vertical alignment of the text within the bounding box.
1767
+ * @default middle
1768
+ * @example middle
1769
+ * @enum {string}
2058
1770
  */
2059
- originX?: number;
1771
+ vertical?: "top" | "middle" | "bottom";
1772
+ };
1773
+ /** @description Animation properties for text entrance effects. */
1774
+ RichTextAnimation: {
2060
1775
  /**
2061
- * @description The y-coordinate of the transformation origin as a value from 0 to 1.
2062
- * `0` is the top edge, `0.5` is the center, `1` is the bottom edge.
2063
- * @default 0.5
2064
- * @example 0.5
1776
+ * @description The animation preset to apply. Available presets: <ul>
1777
+ * <li>`fadeIn` - fadeIn in animation</li>
1778
+ * <li>`slideIn` - slide in from a direction</li>
1779
+ * <li>`typewriter` - typewriter effect</li>
1780
+ * <li>`ascend` - ascend from a direction</li>
1781
+ * <li>`shift` - shift in from a direction</li>
1782
+ * <li>`movingLetters` - letters move in from a direction</li>
1783
+ * </ul>
1784
+ * @example shift
1785
+ * @enum {string}
2065
1786
  */
2066
- originY?: number;
2067
- };
2068
- /** @description In and out transitions for a clip - i.e. fade in and fade out */
2069
- Transition: {
1787
+ preset: "fadeIn" | "slideIn" | "typewriter" | "ascend" | "shift" | "movingLetters";
2070
1788
  /**
2071
- * @description The transition in. Available transitions are:
2072
- * <ul>
2073
- * <li>`fade` - fade in</li>
2074
- * <li>`reveal` - reveal from left to right</li>
2075
- * <li>`wipeLeft` - fade across screen to the left</li>
2076
- * <li>`wipeRight` - fade across screen to the right</li>
2077
- * <li>`slideLeft` - move slightly left and fade in</li>
2078
- * <li>`slideRight` - move slightly right and fade in</li>
2079
- * <li>`slideUp` - move slightly up and fade in</li>
2080
- * <li>`slideDown` - move slightly down and fade in</li>
2081
- * <li>`carouselLeft` - slide in from right to left</li>
2082
- * <li>`carouselRight` - slide in from left to right</li>
2083
- * <li>`carouselUp` - slide in from bottom to top</li>
2084
- * <li>`carouselDown` - slide in from top to bottom</li>
2085
- * <li>`shuffleTopRight` - rotate in from top right</li>
2086
- * <li>`shuffleRightTop` - rotate in from right top</li>
2087
- * <li>`shuffleRightBottom` - rotate in from right bottom</li>
2088
- * <li>`shuffleBottomRight` - rotate in from bottom right</li>
2089
- * <li>`shuffleBottomLeft` - rotate in from bottom left</li>
2090
- * <li>`shuffleLeftBottom` - rotate in from left bottom</li>
2091
- * <li>`shuffleLeftTop` - rotate in from left top</li>
2092
- * <li>`shuffleTopLeft` - rotate in from top left</li>
2093
- * <li>`zoom` - fast zoom in</li>
2094
- * </ul>
2095
- * The transition speed can also be controlled by appending `Fast` or `Slow` to the transition, e.g. `fadeFast` or `CarouselLeftSlow`.
2096
- * @enum {string}
1789
+ * @description Override animation duration in seconds. Must be between 0.1 and 30 seconds.
1790
+ * @example 2
2097
1791
  */
2098
- in?: "none" | "fade" | "fadeSlow" | "fadeFast" | "reveal" | "revealSlow" | "revealFast" | "wipeLeft" | "wipeLeftSlow" | "wipeLeftFast" | "wipeRight" | "wipeRightSlow" | "wipeRightFast" | "slideLeft" | "slideLeftSlow" | "slideLeftFast" | "slideRight" | "slideRightSlow" | "slideRightFast" | "slideUp" | "slideUpSlow" | "slideUpFast" | "slideDown" | "slideDownSlow" | "slideDownFast" | "carouselLeft" | "carouselLeftSlow" | "carouselLeftFast" | "carouselRight" | "carouselRightSlow" | "carouselRightFast" | "carouselUp" | "carouselUpSlow" | "carouselUpFast" | "carouselDown" | "carouselDownSlow" | "carouselDownFast" | "shuffleTopRight" | "shuffleTopRightSlow" | "shuffleTopRightFast" | "shuffleRightTop" | "shuffleRightTopSlow" | "shuffleRightTopFast" | "shuffleRightBottom" | "shuffleRightBottomSlow" | "shuffleRightBottomFast" | "shuffleBottomRight" | "shuffleBottomRightSlow" | "shuffleBottomRightFast" | "shuffleBottomLeft" | "shuffleBottomLeftSlow" | "shuffleBottomLeftFast" | "shuffleLeftBottom" | "shuffleLeftBottomSlow" | "shuffleLeftBottomFast" | "shuffleLeftTop" | "shuffleLeftTopSlow" | "shuffleLeftTopFast" | "shuffleTopLeft" | "shuffleTopLeftSlow" | "shuffleTopLeftFast" | "zoom";
1792
+ duration?: number;
2099
1793
  /**
2100
- * @description The transition out. Available transitions are:
2101
- * <ul>
2102
- * <li>`fade` - fade out</li>
2103
- * <li>`reveal` - reveal from right to left</li>
2104
- * <li>`wipeLeft` - fade across screen to the left</li>
2105
- * <li>`wipeRight` - fade across screen to the right</li>
2106
- * <li>`slideLeft` - move slightly left and fade out</li>
2107
- * <li>`slideRight` - move slightly right and fade out</li>
2108
- * <li>`slideUp` - move slightly up and fade out</li>
2109
- * <li>`slideDown` - move slightly down and fade out</li>
2110
- * <li>`carouselLeft` - slide out from right to left</li>
2111
- * <li>`carouselRight` - slide out from left to right</li>
2112
- * <li>`carouselUp` - slide out from bottom to top</li>
2113
- * <li>`carouselDown` - slide out from top to bottom</li>
2114
- * <li>`shuffleTopRight` - rotate out from top right</li>
2115
- * <li>`shuffleRightTop` - rotate out from right top</li>
2116
- * <li>`shuffleRightBottom` - rotate out from right bottom</li>
2117
- * <li>`shuffleBottomRight` - rotate out from bottom right</li>
2118
- * <li>`shuffleBottomLeft` - rotate out from bottom left</li>
2119
- * <li>`shuffleLeftBottom` - rotate out from left bottom</li>
2120
- * <li>`shuffleLeftTop` - rotate out from left top</li>
2121
- * <li>`shuffleTopLeft` - rotate out from top left</li>
2122
- * <li>`zoom` - fast zoom out</li>
2123
- * </ul>
2124
- * The transition speed can also be controlled by appending `Fast` or `Slow` to the transition, e.g. `fadeFast` or `CarouselLeftSlow`.
1794
+ * @description Animation style - animate by character or by word. Only applicable for typewriter and shift animations.
1795
+ * @example character
2125
1796
  * @enum {string}
2126
1797
  */
2127
- out?: "none" | "fade" | "fadeSlow" | "fadeFast" | "reveal" | "revealSlow" | "revealFast" | "wipeLeft" | "wipeLeftSlow" | "wipeLeftFast" | "wipeRight" | "wipeRightSlow" | "wipeRightFast" | "slideLeft" | "slideLeftSlow" | "slideLeftFast" | "slideRight" | "slideRightSlow" | "slideRightFast" | "slideUp" | "slideUpSlow" | "slideUpFast" | "slideDown" | "slideDownSlow" | "slideDownFast" | "carouselLeft" | "carouselLeftSlow" | "carouselLeftFast" | "carouselRight" | "carouselRightSlow" | "carouselRightFast" | "carouselUp" | "carouselUpSlow" | "carouselUpFast" | "carouselDown" | "carouselDownSlow" | "carouselDownFast" | "shuffleTopRight" | "shuffleTopRightSlow" | "shuffleTopRightFast" | "shuffleRightTop" | "shuffleRightTopSlow" | "shuffleRightTopFast" | "shuffleRightBottom" | "shuffleRightBottomSlow" | "shuffleRightBottomFast" | "shuffleBottomRight" | "shuffleBottomRightSlow" | "shuffleBottomRightFast" | "shuffleBottomLeft" | "shuffleBottomLeftSlow" | "shuffleBottomLeftFast" | "shuffleLeftBottom" | "shuffleLeftBottomSlow" | "shuffleLeftBottomFast" | "shuffleLeftTop" | "shuffleLeftTopSlow" | "shuffleLeftTopFast" | "shuffleTopLeft" | "shuffleTopLeftSlow" | "shuffleTopLeftFast" | "zoom";
2128
- };
2129
- /** @description Offsets the position of an asset horizontally or vertically by a relative distance. */
2130
- Offset: {
2131
- /** @description Offset an asset on the horizontal axis (left or right). Use a number or an array of [Tween](./#tocs_tween) objects to create a custom animation. */
2132
- x?: number | components["schemas"]["Tween"][];
2133
- /** @description Offset an asset on the vertical axis (up or down). Use a number or an array of [Tween](./#tocs_tween) objects to create a custom animation. */
2134
- y?: number | components["schemas"]["Tween"][];
2135
- };
2136
- /** @description Crop the sides of an asset by a relative amount. The size of the crop is specified using a scale between 0 and 1, relative to the screen width - i.e a left crop of 0.5 will crop half of the asset from the left, a top crop of 0.25 will crop the top by quarter of the asset. */
2137
- Crop: {
2138
- /**
2139
- * Format: float
2140
- * @description Crop from the top of the asset
2141
- * @example 0.15
2142
- */
2143
- top?: number;
2144
- /**
2145
- * Format: float
2146
- * @description Crop from the bottom of the asset
2147
- * @example 0.15
2148
- */
2149
- bottom?: number;
2150
- /**
2151
- * Format: float
2152
- * @description Crop from the left of the asset
2153
- */
2154
- left?: number;
2155
- /**
2156
- * Format: float
2157
- * @description Crop from the left of the asset
2158
- */
2159
- right?: number;
2160
- };
2161
- /** @description Apply one or more transformations to a clip. Transformations alter the visual properties of a clip and can be combined to create new shapes and effects. */
2162
- Transformation: {
2163
- rotate?: components["schemas"]["RotateTransformation"];
2164
- skew?: components["schemas"]["SkewTransformation"];
2165
- flip?: components["schemas"]["FlipTransformation"];
2166
- };
2167
- /** @description Rotate a clip by the specified angle in degrees. Rotation origin is set based on the clips `position`. */
2168
- RotateTransformation: {
2169
- /** @description Rotate a clip by the specified angle in degrees. Use a number or an array of [Tween](./#tocs_tween) objects to create a custom animation. */
2170
- angle?: number | components["schemas"]["Tween"][];
2171
- };
2172
- /** @description Skew a clip so its edges are sheared at an angle. Use values between -100 and 100. Values over 3 or under -3 will skew the clip almost flat. */
2173
- SkewTransformation: {
2174
- /** @description Skew the clip along it's x axis. */
2175
- x?: number | components["schemas"]["Tween"][];
2176
- /** @description Skew the clip along it's y axis. */
2177
- y?: number | components["schemas"]["Tween"][];
2178
- };
2179
- /** @description Flip a clip vertically or horizontally. Acts as a mirror effect of the clip along the selected plane. */
2180
- FlipTransformation: {
2181
- /**
2182
- * @description Flip a clip horizontally.
2183
- * @example true
2184
- */
2185
- horizontal?: boolean;
1798
+ style?: "character" | "word";
2186
1799
  /**
2187
- * @description Flip a clip vertically.
2188
- * @example true
1800
+ * @description Direction for directional animations. Required for slideIn, ascend, shift, and movingLetters presets. <ul>
1801
+ * <li>`ascend` - supports: up, down</li>
1802
+ * <li>`shift` - supports: left, right, up, down</li>
1803
+ * <li>`slideIn` - supports: left, right, up, down</li>
1804
+ * <li>`movingLetters` - supports: left, right, up, down</li>
1805
+ * </ul>
1806
+ * @example up
1807
+ * @enum {string}
2189
1808
  */
2190
- vertical?: boolean;
1809
+ direction?: "left" | "right" | "up" | "down";
2191
1810
  };
2192
- /** @description Font properties for text. */
2193
- TextFont: {
1811
+ /** @description Font properties for captions text. */
1812
+ CaptionFont: {
2194
1813
  /**
2195
1814
  * @description The font family name. This must be Family name embedded in the font, i.e. "Open Sans".
2196
1815
  * @example Open Sans
@@ -2211,1817 +1830,806 @@ export interface components {
2211
1830
  * @example 24
2212
1831
  */
2213
1832
  size?: number;
2214
- /**
2215
- * @description The weight of the font. 100 is lightest, 900 is heaviest (boldest).
2216
- * @example 400
2217
- */
2218
- weight?: number;
2219
1833
  /**
2220
1834
  * @description The line height of the font as a ratio of the font size.
2221
1835
  * @example 0.85
2222
1836
  */
2223
1837
  lineHeight?: number;
1838
+ /**
1839
+ * @description The stroke color of the font using hexadecimal color notation.
1840
+ * @example #ff6600
1841
+ */
1842
+ stroke?: string;
1843
+ /**
1844
+ * @description The width of the stroke in pixels.
1845
+ * @example 0.8
1846
+ */
1847
+ strokeWidth?: number;
2224
1848
  };
2225
- /** @description Displays a background box behind the text. */
2226
- TextBackground: {
1849
+ /** @description Displays a background box behind the caption text. */
1850
+ CaptionBackground: {
2227
1851
  /**
2228
1852
  * @description The background color using hexadecimal color notation.
2229
1853
  * @example #000000
2230
1854
  */
2231
1855
  color?: string;
2232
1856
  /**
2233
- * @description The opacity of the background where 1 is opaque and 0 is transparent.
2234
- * @example 0.8
1857
+ * @description The opacity of the background color.
1858
+ * @example 0.4
2235
1859
  */
2236
1860
  opacity?: number;
2237
1861
  /**
2238
- * @description Padding inside the background box in pixels.
2239
- * @example 10
1862
+ * @description The padding inside the background box in pixels.
1863
+ * @example 30
2240
1864
  */
2241
1865
  padding?: number;
2242
1866
  /**
2243
- * @description The border radius of the background box in pixels for rounded corners.
2244
- * @example 5
1867
+ * @description The border radius of the background box in pixels.
1868
+ * @example 18
2245
1869
  */
2246
1870
  borderRadius?: number;
2247
1871
  };
2248
- /** @description Horizontal and vertical alignment properties for text. */
2249
- TextAlignment: {
1872
+ /** @description The margin properties for captions. Margins are used to position the caption text and background on the screen. */
1873
+ CaptionMargin: {
2250
1874
  /**
2251
- * @description The horizontal alignment of the text. Value must be one of: <ul>
2252
- * <li>`left`</li>
2253
- * <li>`center`</li>
2254
- * <li>`right`</li>
2255
- * </ul>
2256
- * @example center
2257
- * @enum {string}
1875
+ * @description The margin above the text. Pushes captions down the screen.
1876
+ * @example 0.25
2258
1877
  */
2259
- horizontal?: "left" | "center" | "right";
1878
+ top?: number;
2260
1879
  /**
2261
- * @description The vertical alignment of the text. Value must be one of: <ul>
2262
- * <li>`top`</li>
2263
- * <li>`center`</li>
2264
- * <li>`bottom`</li>
2265
- * </ul>
2266
- * @example center
2267
- * @enum {string}
1880
+ * @description The margin to the left of the text. Pushes captions to the right.
1881
+ * @example 0.05
2268
1882
  */
2269
- vertical?: "top" | "center" | "bottom";
2270
- };
2271
- /** @description Font properties for rich text. */
2272
- RichTextFont: {
1883
+ left?: number;
2273
1884
  /**
2274
- * @description The font family name. This must be the Family name embedded in the font, i.e. "Open Sans".
2275
- * @default Open Sans
2276
- * @example Open Sans
1885
+ * @description The margin to the right of the text. Pushes captions to the left.
1886
+ * @example 0.45
2277
1887
  */
2278
- family?: string;
1888
+ right?: number;
1889
+ };
1890
+ /** @description Chroma key is a technique that replaces a specific color in a video with a different background image or video, enabling seamless integration of diverse environments. Commonly used for green screen and blue screen effects. */
1891
+ ChromaKey: {
2279
1892
  /**
2280
- * @description The size of the font in pixels (px). Must be between 1 and 500.
2281
- * @default 24
2282
- * @example 48
1893
+ * @description The chroma key color as a hex value. Use green (#00b140) for green screens or blue (#0000FF) for blue screens. Any valid hex color can be used as the key color.
1894
+ * @example #00b140
2283
1895
  */
2284
- size?: number;
1896
+ color: string;
2285
1897
  /**
2286
- * @description The weight of the font. Can be a number (100-900) or a string ('normal', 'bold', etc.). 100 is lightest, 900 is heaviest (boldest).
2287
- * @default 400
1898
+ * @description Pixels within this distance from the key color are eliminated by setting their alpha values to zero.
1899
+ * @example 150
2288
1900
  */
2289
- weight?: unknown;
1901
+ threshold?: number;
2290
1902
  /**
2291
- * @description The text color using hexadecimal color notation.
2292
- * @default #000000
2293
- * @example #ff0000
1903
+ * @description Pixels within the halo distance from the threshold boundary are given an increasing alpha value based on their distance from the threshold.
1904
+ * @example 100
2294
1905
  */
2295
- color?: string;
1906
+ halo?: number;
1907
+ };
1908
+ /**
1909
+ * @description Use a Tween to [animate properties over time](/docs/guide/architecting-an-application/animations/). The following properties are currently supported and can be animated:
1910
+ * <ul>
1911
+ * <li>Opacity - animate the transparency of a clip.</li>
1912
+ * <li>Offset - animate the x and y position of a clip.</li>
1913
+ * <li>Rotation - animate the rotation of a clip.</li>
1914
+ * <li>Skew - animate the horizontal and vertical shearing effect.</li>
1915
+ * <li>Volume - animate the audio volume of a clip.</li>
1916
+ * </ul>
1917
+ */
1918
+ Tween: {
2296
1919
  /**
2297
- * @description The opacity of the text where 1 is opaque and 0 is transparent.
2298
- * @default 1
2299
- * @example 0.9
1920
+ * @description The initial property value at the start of the animation.
1921
+ * @example 0
2300
1922
  */
2301
- opacity?: number;
1923
+ from?: unknown;
2302
1924
  /**
2303
- * @description The background color behind the text using hexadecimal color notation.
2304
- * @example #000000
1925
+ * @description The final property value at the end of the animation.
1926
+ * @example 1
2305
1927
  */
2306
- background?: string;
2307
- /** @description Text stroke (outline) properties. */
2308
- stroke?: components["schemas"]["RichTextStroke"];
2309
- };
2310
- /** @description Text style properties including spacing, line height, and transformations. */
2311
- RichTextStyle: {
1928
+ to?: unknown;
2312
1929
  /**
2313
- * @description Additional spacing between letters in pixels. Can be negative for tighter spacing.
2314
- * @default 0
2315
- * @example 2
1930
+ * @description The time in seconds when the animation starts, relative to the clip, not the timeline.
1931
+ * @example 0
2316
1932
  */
2317
- letterSpacing?: number;
1933
+ start?: number;
2318
1934
  /**
2319
- * @description Additional spacing between words in pixels. A value of 0 uses the font's natural space width.
2320
- * @default 0
2321
- * @example 10
2322
- */
2323
- wordSpacing?: number;
2324
- /**
2325
- * @description The line height as a multiplier of the font size. Must be between 0 and 10.
2326
- * @default 1.2
2327
- * @example 1.5
1935
+ * @description The duration of the animation in seconds.
1936
+ * @example 3
2328
1937
  */
2329
- lineHeight?: number;
1938
+ length?: number;
2330
1939
  /**
2331
- * @description Text transformation to apply.
2332
- * @default none
2333
- * @example uppercase
1940
+ * @description The interpolation method to use for the animation. Available options are: <ul>
1941
+ * <li>`linear` - a linear interpolation between the start and end values.</li>
1942
+ * <li>`bezier` - a bezier curve interpolation between the start and end values.</li>
1943
+ * <li>`constant` - an interpolation where the property instantly jumps from the start to the end value, without any gradual transition.</li>
1944
+ * </ul>
1945
+ * @example bezier
2334
1946
  * @enum {string}
2335
1947
  */
2336
- textTransform?: "none" | "uppercase" | "lowercase" | "capitalize";
1948
+ interpolation?: "linear" | "bezier" | "constant";
2337
1949
  /**
2338
- * @description Text decoration to apply.
2339
- * @default none
2340
- * @example underline
1950
+ * @description The easing function to use for the animation. Easing controls the rate of change of the animated value, allowing for more natural motion by speeding up or slowing down the animation at different points. Only applicable if interpolation is set to `bezier`.
2341
1951
  * @enum {string}
2342
1952
  */
2343
- textDecoration?: "none" | "underline" | "line-through";
2344
- /** @description Gradient fill for text instead of solid color. */
2345
- gradient?: components["schemas"]["RichTextGradient"];
1953
+ easing?: "ease" | "easeIn" | "easeOut" | "easeInOut" | "easeInQuad" | "easeInCubic" | "easeInQuart" | "easeInQuint" | "easeInSine" | "easeInExpo" | "easeInCirc" | "easeInBack" | "easeOutQuad" | "easeOutCubic" | "easeOutQuart" | "easeOutQuint" | "easeOutSine" | "easeOutExpo" | "easeOutCirc" | "easeOutBack" | "easeInOutQuad" | "easeInOutCubic" | "easeInOutQuart" | "easeInOutQuint" | "easeInOutSine" | "easeInOutExpo" | "easeInOutCirc" | "easeInOutBack";
2346
1954
  };
2347
- /** @description Gradient properties for text fill. */
2348
- RichTextGradient: {
1955
+ /** @description A merge field consists of a key; `find`, and a value; `replace`. Merge fields can be used to replace placeholders within the JSON edit to create re-usable templates. Placeholders should be a string with double brace delimiters, i.e. `"{{NAME}}"`. A placeholder can be used for any value within the JSON edit. */
1956
+ MergeField: {
2349
1957
  /**
2350
- * @description The type of gradient.
2351
- * @default linear
2352
- * @example linear
2353
- * @enum {string}
1958
+ * @description The string to find <u>without</u> delimiters.
1959
+ * @example NAME
2354
1960
  */
2355
- type?: "linear" | "radial";
1961
+ find: string;
2356
1962
  /**
2357
- * @description The angle of the gradient in degrees (for linear gradients). Must be between 0 and 360.
2358
- * @default 0
2359
- * @example 45
1963
+ * @description The replacement value. The replacement can be any valid JSON type - string, boolean, number, etc...
1964
+ * @example Jane
2360
1965
  */
2361
- angle?: number;
2362
- /** @description Gradient color stops. Must have at least 2 stops. */
2363
- stops: {
2364
- /**
2365
- * @description Position of the color stop between 0 (start) and 1 (end).
2366
- * @example 0.5
2367
- */
2368
- offset: number;
2369
- /**
2370
- * @description Color at this stop using hexadecimal color notation.
2371
- * @example #ff0000
2372
- */
2373
- color: string;
2374
- }[];
1966
+ replace: unknown;
2375
1967
  };
2376
- /** @description Text stroke (outline) properties. */
2377
- RichTextStroke: {
1968
+ /** @description The output format, render range and type of media to generate. */
1969
+ Output: {
2378
1970
  /**
2379
- * @description The width of the stroke in pixels. Must be 0 or greater.
2380
- * @default 0
2381
- * @example 2
1971
+ * @description The output format and type of media file to generate. <ul>
1972
+ * <li>`mp4` - mp4 video file</li>
1973
+ * <li>`gif` - animated gif</li>
1974
+ * <li>`jpg` - jpg image file</li>
1975
+ * <li>`png` - png image file</li>
1976
+ * <li>`bmp` - bmp image file</li>
1977
+ * <li>`mp3` - mp3 audio file (audio only)</li>
1978
+ * </ul>
1979
+ * @example mp4
1980
+ * @enum {string}
2382
1981
  */
2383
- width?: number;
1982
+ format: "mp4" | "gif" | "mp3" | "jpg" | "png" | "bmp";
2384
1983
  /**
2385
- * @description The stroke color using hexadecimal color notation.
2386
- * @default #000000
2387
- * @example #000000
1984
+ * @description The preset output resolution of the video or image. For custom sizes use the `size` property. <ul>
1985
+ * <li>`preview` - 512px x 288px @ 15fps</li>
1986
+ * <li>`mobile` - 640px x 360px @ 25fps</li>
1987
+ * <li>`sd` - 1024px x 576px @ 25fps</li>
1988
+ * <li>`hd` - 1280px x 720px @ 25fps</li>
1989
+ * <li>`1080` - 1920px x 1080px @ 25fps</li>
1990
+ * <li>`4k` - 3840px x 2160px @ 25fps</li>
1991
+ * </ul>
1992
+ * @example hd
1993
+ * @enum {string}
2388
1994
  */
2389
- color?: string;
1995
+ resolution?: "preview" | "mobile" | "sd" | "hd" | "1080" | "4k";
2390
1996
  /**
2391
- * @description The opacity of the stroke where 1 is opaque and 0 is transparent.
2392
- * @default 1
2393
- * @example 0.8
1997
+ * @description The aspect ratio (shape) of the video or image. Useful for social media output formats. Options are: <ul>
1998
+ * <li>`16:9` (default) - regular landscape/horizontal aspect ratio</li>
1999
+ * <li>`9:16` - vertical/portrait aspect ratio</li>
2000
+ * <li>`1:1` - square aspect ratio</li>
2001
+ * <li>`4:5` - short vertical/portrait aspect ratio</li>
2002
+ * <li>`4:3` - legacy TV aspect ratio</li>
2003
+ * </ul>
2004
+ * @example 16:9
2005
+ * @enum {string}
2394
2006
  */
2395
- opacity?: number;
2396
- };
2397
- /** @description Text shadow properties. */
2398
- RichTextShadow: {
2007
+ aspectRatio?: "16:9" | "9:16" | "1:1" | "4:5" | "4:3";
2008
+ size?: components["schemas"]["Size"];
2399
2009
  /**
2400
- * @description Horizontal offset of the shadow in pixels. Positive values move right, negative left.
2401
- * @default 0
2402
- * @example 4
2010
+ * @description Override the default frames per second. Useful for when the source footage is recorded at 30fps, i.e. on mobile devices. Lower frame rates can be used to add cinematic quality (24fps) or to create smaller file size/faster render times or animated gifs (12 or 15fps). Default is 25fps. <ul>
2011
+ * <li>`12` - 12fps</li>
2012
+ * <li>`15` - 15fps</li>
2013
+ * <li>`24` - 24fps</li>
2014
+ * <li>`23.976` - 23.976fps</li>
2015
+ * <li>`25` (default) - 25fps</li>
2016
+ * <li>`29.97` - 29.97fps</li>
2017
+ * <li>`30` - 30fps</li>
2018
+ * <li>`48` - 48fps</li>
2019
+ * <li>`50` - 50fps</li>
2020
+ * <li>`59.94` - 59.94fps</li>
2021
+ * <li>`60` - 60fps</li>
2022
+ * </ul>
2023
+ * @example 25
2024
+ * @enum {number}
2403
2025
  */
2404
- offsetX?: number;
2026
+ fps?: 12 | 15 | 23.976 | 24 | 25 | 29.97 | 30 | 48 | 50 | 59.94 | 60;
2405
2027
  /**
2406
- * @description Vertical offset of the shadow in pixels. Positive values move down, negative up.
2407
- * @default 0
2408
- * @example 4
2028
+ * @description Override the resolution and scale the video or image to render at a different size. When using scaleTo the asset should be edited at the resolution dimensions, i.e. use font sizes that look best at HD, then use scaleTo to output the file at SD and the text will be scaled to the correct size. This is useful if you want to create multiple asset sizes. <ul>
2029
+ * <li>`preview` - 512px x 288px @ 15fps</li>
2030
+ * <li>`mobile` - 640px x 360px @ 25fps</li>
2031
+ * <li>`sd` - 1024px x 576px @25fps</li>
2032
+ * <li>`hd` - 1280px x 720px @25fps</li>
2033
+ * <li>`1080` - 1920px x 1080px @25fps</li>
2034
+ * </ul>
2035
+ * @enum {string}
2409
2036
  */
2410
- offsetY?: number;
2037
+ scaleTo?: "preview" | "mobile" | "sd" | "hd" | "1080" | "4k";
2411
2038
  /**
2412
- * @description The blur radius of the shadow in pixels. Must be 0 or greater.
2413
- * @default 0
2414
- * @example 8
2039
+ * @description Adjust the output quality of the video, image or audio. Adjusting quality affects render speed, download speeds and storage requirements due to file size. The default `medium` provides the most optimized choice for all three factors. <ul>
2040
+ * <li>`verylow` - reduced quality, smallest file size</li>
2041
+ * <li>`low` - slightly reduced quality, smaller file size</li>
2042
+ * <li>`medium` (default) - optimized quality, render speeds and file size</li>
2043
+ * <li>`high` - slightly increased quality, larger file size</li>
2044
+ * <li>`veryhigh` - highest quality, largest file size</li>
2045
+ * </ul>
2046
+ * @example medium
2047
+ * @enum {string}
2415
2048
  */
2416
- blur?: number;
2049
+ quality?: "verylow" | "low" | "medium" | "high" | "veryhigh";
2417
2050
  /**
2418
- * @description The shadow color using hexadecimal color notation.
2419
- * @default #000000
2420
- * @example #000000
2051
+ * @description Loop settings for gif files. Set to `true` to loop, `false` to play only once.
2052
+ * @example true
2421
2053
  */
2422
- color?: string;
2054
+ repeat?: boolean;
2423
2055
  /**
2424
- * @description The opacity of the shadow where 1 is opaque and 0 is transparent.
2425
- * @default 0.5
2426
- * @example 0.7
2056
+ * @description Mute the audio track of the output video. Set to `true` to mute, `false` to un-mute.
2057
+ * @example false
2427
2058
  */
2428
- opacity?: number;
2059
+ mute?: boolean;
2060
+ range?: components["schemas"]["Range"];
2061
+ /** @description Generate a poster image from a specific point on the timeline. */
2062
+ poster?: components["schemas"]["Poster"];
2063
+ /** @description Generate a thumbnail image from a specific point on the timeline. */
2064
+ thumbnail?: components["schemas"]["Thumbnail"];
2065
+ /** @description Specify the storage locations and hosting services to send rendered videos to. */
2066
+ destinations?: components["schemas"]["Destinations"][];
2429
2067
  };
2430
- /** @description Background styling properties for the text bounding box. */
2431
- RichTextBackground: {
2432
- /**
2433
- * @description The background color using hexadecimal color notation.
2434
- * @example #000000
2435
- */
2436
- color?: string;
2068
+ /** @description Set a custom size for a video or image in pixels. When using a custom size omit the `resolution` and `aspectRatio`. Custom sizes must be divisible by 2 based on the encoder specifications. */
2069
+ Size: {
2437
2070
  /**
2438
- * @description The opacity of the background where 1 is opaque and 0 is transparent.
2439
- * @default 1
2440
- * @example 0.5
2071
+ * @description Set a custom width for the video or image file in pixels. Value must be divisible by 2. Maximum video width is 1920px, maximum image width is 4096px.
2072
+ * @example 1200
2441
2073
  */
2442
- opacity?: number;
2074
+ width?: number;
2443
2075
  /**
2444
- * @description The border radius of the background box in pixels. Must be 0 or greater.
2445
- * @default 0
2446
- * @example 10
2076
+ * @description Set a custom height for the video or image file in pixels. Value must be divisible by 2. Maximum video height is 1920px, maximum image height is 4096px.
2077
+ * @example 800
2447
2078
  */
2448
- borderRadius?: number;
2079
+ height?: number;
2449
2080
  };
2450
- /** @description Text alignment properties (horizontal and vertical). */
2451
- RichTextAlignment: {
2081
+ /** @description Specify a time range to render, i.e. to render only a portion of a video or audio file. Omit this setting to export the entire video. Range can also be used to render a frame at a specific time point - setting a range and output format as `jpg` will output a single frame image at the range `start` point. */
2082
+ Range: {
2452
2083
  /**
2453
- * @description The horizontal alignment of the text.
2454
- * @default center
2455
- * @example center
2456
- * @enum {string}
2084
+ * Format: float
2085
+ * @description The point on the timeline, in seconds, to start the render from - i.e. start at second 3.
2086
+ * @example 3
2457
2087
  */
2458
- horizontal?: "left" | "center" | "right";
2088
+ start?: number;
2459
2089
  /**
2460
- * @description The vertical alignment of the text within the bounding box.
2461
- * @default middle
2462
- * @example middle
2463
- * @enum {string}
2090
+ * Format: float
2091
+ * @description The length of the portion of the video or audio to render - i.e. render 6 seconds of the video.
2092
+ * @example 6
2464
2093
  */
2465
- vertical?: "top" | "middle" | "bottom";
2094
+ length?: number;
2466
2095
  };
2467
- /** @description Animation properties for text entrance effects. */
2468
- RichTextAnimation: {
2096
+ /** @description Generate a poster image for the video at a specific point from the timeline. The poster image size will match the size of the output video. */
2097
+ Poster: {
2469
2098
  /**
2470
- * @description The animation preset to apply. Available presets: <ul>
2471
- * <li>`fadeIn` - fadeIn in animation</li>
2472
- * <li>`slideIn` - slide in from a direction</li>
2473
- * <li>`typewriter` - typewriter effect</li>
2474
- * <li>`ascend` - ascend from a direction</li>
2475
- * <li>`shift` - shift in from a direction</li>
2476
- * <li>`movingLetters` - letters move in from a direction</li>
2477
- * </ul>
2478
- * @example shift
2479
- * @enum {string}
2099
+ * @description The point on the timeline in seconds to capture a single frame to use as the poster image.
2100
+ * @example 1
2480
2101
  */
2481
- preset: "fadeIn" | "slideIn" | "typewriter" | "ascend" | "shift" | "movingLetters";
2102
+ capture: number;
2103
+ };
2104
+ /** @description Generate a thumbnail image for the video or image at a specific point from the timeline. */
2105
+ Thumbnail: {
2482
2106
  /**
2483
- * @description Override animation duration in seconds. Must be between 0.1 and 30 seconds.
2484
- * @example 2
2107
+ * @description The point on the timeline in seconds to capture a single frame to use as the thumbnail image.
2108
+ * @example 1
2485
2109
  */
2486
- duration?: number;
2110
+ capture: number;
2487
2111
  /**
2488
- * @description Animation style - animate by character or by word. Only applicable for typewriter and shift animations.
2489
- * @example character
2490
- * @enum {string}
2491
- */
2492
- style?: "character" | "word";
2493
- /**
2494
- * @description Direction for directional animations. Required for slideIn, ascend, shift, and movingLetters presets. <ul>
2495
- * <li>`ascend` - supports: up, down</li>
2496
- * <li>`shift` - supports: left, right, up, down</li>
2497
- * <li>`slideIn` - supports: left, right, up, down</li>
2498
- * <li>`movingLetters` - supports: left, right, up, down</li>
2499
- * </ul>
2500
- * @example up
2501
- * @enum {string}
2502
- */
2503
- direction?: "left" | "right" | "up" | "down";
2504
- };
2505
- /** @description Font properties for captions text. */
2506
- CaptionFont: {
2507
- /**
2508
- * @description The font family name. This must be Family name embedded in the font, i.e. "Open Sans".
2509
- * @example Open Sans
2510
- */
2511
- family?: string;
2512
- /**
2513
- * @description The text color using hexadecimal color notation.
2514
- * @example #ffffff
2515
- */
2516
- color?: string;
2517
- /**
2518
- * @description The opacity of the text where 1 is opaque and 0 is transparent.
2519
- * @example 0.8
2520
- */
2521
- opacity?: number;
2522
- /**
2523
- * @description The size of the font in pixels (px).
2524
- * @example 24
2525
- */
2526
- size?: number;
2527
- /**
2528
- * @description The line height of the font as a ratio of the font size.
2529
- * @example 0.85
2530
- */
2531
- lineHeight?: number;
2532
- /**
2533
- * @description The stroke color of the font using hexadecimal color notation.
2534
- * @example #ff6600
2535
- */
2536
- stroke?: string;
2537
- /**
2538
- * @description The width of the stroke in pixels.
2539
- * @example 0.8
2540
- */
2541
- strokeWidth?: number;
2542
- };
2543
- /** @description Displays a background box behind the caption text. */
2544
- CaptionBackground: {
2545
- /**
2546
- * @description The background color using hexadecimal color notation.
2547
- * @example #000000
2548
- */
2549
- color?: string;
2550
- /**
2551
- * @description The opacity of the background color.
2552
- * @example 0.4
2553
- */
2554
- opacity?: number;
2555
- /**
2556
- * @description The padding inside the background box in pixels.
2557
- * @example 30
2558
- */
2559
- padding?: number;
2560
- /**
2561
- * @description The border radius of the background box in pixels.
2562
- * @example 18
2563
- */
2564
- borderRadius?: number;
2565
- };
2566
- /** @description The margin properties for captions. Margins are used to position the caption text and background on the screen. */
2567
- CaptionMargin: {
2568
- /**
2569
- * @description The margin above the text. Pushes captions down the screen.
2570
- * @example 0.25
2571
- */
2572
- top?: number;
2573
- /**
2574
- * @description The margin to the left of the text. Pushes captions to the right.
2575
- * @example 0.05
2576
- */
2577
- left?: number;
2578
- /**
2579
- * @description The margin to the right of the text. Pushes captions to the left.
2580
- * @example 0.45
2581
- */
2582
- right?: number;
2583
- };
2584
- /** @description Chroma key is a technique that replaces a specific color in a video with a different background image or video, enabling seamless integration of diverse environments. Commonly used for green screen and blue screen effects. */
2585
- ChromaKey: {
2586
- /**
2587
- * @description The chroma key color as a hex value. Use green (#00b140) for green screens or blue (#0000FF) for blue screens. Any valid hex color can be used as the key color.
2588
- * @example #00b140
2589
- */
2590
- color: string;
2591
- /**
2592
- * @description Pixels within this distance from the key color are eliminated by setting their alpha values to zero.
2593
- * @example 150
2594
- */
2595
- threshold?: number;
2596
- /**
2597
- * @description Pixels within the halo distance from the threshold boundary are given an increasing alpha value based on their distance from the threshold.
2598
- * @example 100
2599
- */
2600
- halo?: number;
2601
- };
2602
- /**
2603
- * @description Use a Tween to [animate properties over time](/docs/guide/architecting-an-application/animations/). The following properties are currently supported and can be animated:
2604
- * <ul>
2605
- * <li>Opacity - animate the transparency of a clip.</li>
2606
- * <li>Offset - animate the x and y position of a clip.</li>
2607
- * <li>Rotation - animate the rotation of a clip.</li>
2608
- * <li>Skew - animate the horizontal and vertical shearing effect.</li>
2609
- * <li>Volume - animate the audio volume of a clip.</li>
2610
- * </ul>
2611
- */
2612
- Tween: {
2613
- /**
2614
- * @description The initial property value at the start of the animation.
2615
- * @example 0
2616
- */
2617
- from?: unknown;
2618
- /**
2619
- * @description The final property value at the end of the animation.
2620
- * @example 1
2621
- */
2622
- to?: unknown;
2623
- /**
2624
- * @description The time in seconds when the animation starts, relative to the clip, not the timeline.
2625
- * @example 0
2626
- */
2627
- start?: number;
2628
- /**
2629
- * @description The duration of the animation in seconds.
2630
- * @example 3
2631
- */
2632
- length?: number;
2633
- /**
2634
- * @description The interpolation method to use for the animation. Available options are: <ul>
2635
- * <li>`linear` - a linear interpolation between the start and end values.</li>
2636
- * <li>`bezier` - a bezier curve interpolation between the start and end values.</li>
2637
- * <li>`constant` - an interpolation where the property instantly jumps from the start to the end value, without any gradual transition.</li>
2638
- * </ul>
2639
- * @example bezier
2640
- * @enum {string}
2641
- */
2642
- interpolation?: "linear" | "bezier" | "constant";
2643
- /**
2644
- * @description The easing function to use for the animation. Easing controls the rate of change of the animated value, allowing for more natural motion by speeding up or slowing down the animation at different points. Only applicable if interpolation is set to `bezier`.
2645
- * @enum {string}
2646
- */
2647
- easing?: "ease" | "easeIn" | "easeOut" | "easeInOut" | "easeInQuad" | "easeInCubic" | "easeInQuart" | "easeInQuint" | "easeInSine" | "easeInExpo" | "easeInCirc" | "easeInBack" | "easeOutQuad" | "easeOutCubic" | "easeOutQuart" | "easeOutQuint" | "easeOutSine" | "easeOutExpo" | "easeOutCirc" | "easeOutBack" | "easeInOutQuad" | "easeInOutCubic" | "easeInOutQuart" | "easeInOutQuint" | "easeInOutSine" | "easeInOutExpo" | "easeInOutCirc" | "easeInOutBack";
2648
- };
2649
- /** @description A merge field consists of a key; `find`, and a value; `replace`. Merge fields can be used to replace placeholders within the JSON edit to create re-usable templates. Placeholders should be a string with double brace delimiters, i.e. `"{{NAME}}"`. A placeholder can be used for any value within the JSON edit. */
2650
- MergeField: {
2651
- /**
2652
- * @description The string to find <u>without</u> delimiters.
2653
- * @example NAME
2654
- */
2655
- find: string;
2656
- /**
2657
- * @description The replacement value. The replacement can be any valid JSON type - string, boolean, number, etc...
2658
- * @example Jane
2659
- */
2660
- replace: unknown;
2661
- };
2662
- /** @description The output format, render range and type of media to generate. */
2663
- Output: {
2664
- /**
2665
- * @description The output format and type of media file to generate. <ul>
2666
- * <li>`mp4` - mp4 video file</li>
2667
- * <li>`gif` - animated gif</li>
2668
- * <li>`jpg` - jpg image file</li>
2669
- * <li>`png` - png image file</li>
2670
- * <li>`bmp` - bmp image file</li>
2671
- * <li>`mp3` - mp3 audio file (audio only)</li>
2672
- * </ul>
2673
- * @example mp4
2674
- * @enum {string}
2675
- */
2676
- format: "mp4" | "gif" | "mp3" | "jpg" | "png" | "bmp";
2677
- /**
2678
- * @description The preset output resolution of the video or image. For custom sizes use the `size` property. <ul>
2679
- * <li>`preview` - 512px x 288px @ 15fps</li>
2680
- * <li>`mobile` - 640px x 360px @ 25fps</li>
2681
- * <li>`sd` - 1024px x 576px @ 25fps</li>
2682
- * <li>`hd` - 1280px x 720px @ 25fps</li>
2683
- * <li>`1080` - 1920px x 1080px @ 25fps</li>
2684
- * <li>`4k` - 3840px x 2160px @ 25fps</li>
2685
- * </ul>
2686
- * @example hd
2687
- * @enum {string}
2688
- */
2689
- resolution?: "preview" | "mobile" | "sd" | "hd" | "1080" | "4k";
2690
- /**
2691
- * @description The aspect ratio (shape) of the video or image. Useful for social media output formats. Options are: <ul>
2692
- * <li>`16:9` (default) - regular landscape/horizontal aspect ratio</li>
2693
- * <li>`9:16` - vertical/portrait aspect ratio</li>
2694
- * <li>`1:1` - square aspect ratio</li>
2695
- * <li>`4:5` - short vertical/portrait aspect ratio</li>
2696
- * <li>`4:3` - legacy TV aspect ratio</li>
2697
- * </ul>
2698
- * @example 16:9
2699
- * @enum {string}
2700
- */
2701
- aspectRatio?: "16:9" | "9:16" | "1:1" | "4:5" | "4:3";
2702
- size?: components["schemas"]["Size"];
2703
- /**
2704
- * @description Override the default frames per second. Useful for when the source footage is recorded at 30fps, i.e. on mobile devices. Lower frame rates can be used to add cinematic quality (24fps) or to create smaller file size/faster render times or animated gifs (12 or 15fps). Default is 25fps. <ul>
2705
- * <li>`12` - 12fps</li>
2706
- * <li>`15` - 15fps</li>
2707
- * <li>`24` - 24fps</li>
2708
- * <li>`23.976` - 23.976fps</li>
2709
- * <li>`25` (default) - 25fps</li>
2710
- * <li>`29.97` - 29.97fps</li>
2711
- * <li>`30` - 30fps</li>
2712
- * <li>`48` - 48fps</li>
2713
- * <li>`50` - 50fps</li>
2714
- * <li>`59.94` - 59.94fps</li>
2715
- * <li>`60` - 60fps</li>
2716
- * </ul>
2717
- * @example 25
2718
- * @enum {number}
2719
- */
2720
- fps?: 12 | 15 | 23.976 | 24 | 25 | 29.97 | 30 | 48 | 50 | 59.94 | 60;
2721
- /**
2722
- * @description Override the resolution and scale the video or image to render at a different size. When using scaleTo the asset should be edited at the resolution dimensions, i.e. use font sizes that look best at HD, then use scaleTo to output the file at SD and the text will be scaled to the correct size. This is useful if you want to create multiple asset sizes. <ul>
2723
- * <li>`preview` - 512px x 288px @ 15fps</li>
2724
- * <li>`mobile` - 640px x 360px @ 25fps</li>
2725
- * <li>`sd` - 1024px x 576px @25fps</li>
2726
- * <li>`hd` - 1280px x 720px @25fps</li>
2727
- * <li>`1080` - 1920px x 1080px @25fps</li>
2728
- * </ul>
2729
- * @enum {string}
2730
- */
2731
- scaleTo?: "preview" | "mobile" | "sd" | "hd" | "1080" | "4k";
2732
- /**
2733
- * @description Adjust the output quality of the video, image or audio. Adjusting quality affects render speed, download speeds and storage requirements due to file size. The default `medium` provides the most optimized choice for all three factors. <ul>
2734
- * <li>`verylow` - reduced quality, smallest file size</li>
2735
- * <li>`low` - slightly reduced quality, smaller file size</li>
2736
- * <li>`medium` (default) - optimized quality, render speeds and file size</li>
2737
- * <li>`high` - slightly increased quality, larger file size</li>
2738
- * <li>`veryhigh` - highest quality, largest file size</li>
2739
- * </ul>
2740
- * @example medium
2741
- * @enum {string}
2742
- */
2743
- quality?: "verylow" | "low" | "medium" | "high" | "veryhigh";
2744
- /**
2745
- * @description Loop settings for gif files. Set to `true` to loop, `false` to play only once.
2746
- * @example true
2747
- */
2748
- repeat?: boolean;
2749
- /**
2750
- * @description Mute the audio track of the output video. Set to `true` to mute, `false` to un-mute.
2751
- * @example false
2752
- */
2753
- mute?: boolean;
2754
- range?: components["schemas"]["Range"];
2755
- /** @description Generate a poster image from a specific point on the timeline. */
2756
- poster?: components["schemas"]["Poster"];
2757
- /** @description Generate a thumbnail image from a specific point on the timeline. */
2758
- thumbnail?: components["schemas"]["Thumbnail"];
2759
- /** @description Specify the storage locations and hosting services to send rendered videos to. */
2760
- destinations?: components["schemas"]["Destinations"][];
2761
- };
2762
- /** @description Set a custom size for a video or image in pixels. When using a custom size omit the `resolution` and `aspectRatio`. Custom sizes must be divisible by 2 based on the encoder specifications. */
2763
- Size: {
2764
- /**
2765
- * @description Set a custom width for the video or image file in pixels. Value must be divisible by 2. Maximum video width is 1920px, maximum image width is 4096px.
2766
- * @example 1200
2767
- */
2768
- width?: number;
2769
- /**
2770
- * @description Set a custom height for the video or image file in pixels. Value must be divisible by 2. Maximum video height is 1920px, maximum image height is 4096px.
2771
- * @example 800
2772
- */
2773
- height?: number;
2774
- };
2775
- /** @description Specify a time range to render, i.e. to render only a portion of a video or audio file. Omit this setting to export the entire video. Range can also be used to render a frame at a specific time point - setting a range and output format as `jpg` will output a single frame image at the range `start` point. */
2776
- Range: {
2777
- /**
2778
- * Format: float
2779
- * @description The point on the timeline, in seconds, to start the render from - i.e. start at second 3.
2780
- * @example 3
2781
- */
2782
- start?: number;
2783
- /**
2784
- * Format: float
2785
- * @description The length of the portion of the video or audio to render - i.e. render 6 seconds of the video.
2786
- * @example 6
2787
- */
2788
- length?: number;
2789
- };
2790
- /** @description Generate a poster image for the video at a specific point from the timeline. The poster image size will match the size of the output video. */
2791
- Poster: {
2792
- /**
2793
- * @description The point on the timeline in seconds to capture a single frame to use as the poster image.
2794
- * @example 1
2795
- */
2796
- capture: number;
2797
- };
2798
- /** @description Generate a thumbnail image for the video or image at a specific point from the timeline. */
2799
- Thumbnail: {
2800
- /**
2801
- * @description The point on the timeline in seconds to capture a single frame to use as the thumbnail image.
2802
- * @example 1
2803
- */
2804
- capture: number;
2805
- /**
2806
- * @description Scale the thumbnail size to a fraction of the viewport size - i.e. setting the scale to 0.5 will scale the thumbnail to half the size of the viewport.
2807
- * @example 0.3
2808
- */
2809
- scale: number;
2810
- };
2811
- /**
2812
- * @description A destination is a location where assets can be sent to for serving or hosting. Videos, images and audio files that are rendered by the [Edit API](#shotstack-edit) and [source](#tocs_source) and [rendition](#tocs_rendition) files generated by the [Ingest API](#shotstack-ingest) can be sent to destinations. You can also fetch a file from any public URL and [transfer](#transfer-asset) it to a destination. A file can be sent to one or more destinations including 3rd party destinations.
2813
- *
2814
- * By default all ingested and generated assets are automatically sent to the [Shotstack hosting destination](https://shotstack.io/docs/guide/serving-assets/hosting/). You can [opt-out](https://shotstack.io/docs/guide/serving-assets/self-host/) from by setting the Shotstack destination **exclude** property to **true**.
2815
- */
2816
- Destinations: components["schemas"]["ShotstackDestination"] | components["schemas"]["MuxDestination"] | components["schemas"]["S3Destination"] | components["schemas"]["GoogleCloudStorageDestination"] | components["schemas"]["GoogleDriveDestination"] | components["schemas"]["VimeoDestination"] | {
2817
- /**
2818
- * @description The destination to send video to - set to `tiktok` for TikTok.
2819
- * @default tiktok
2820
- * @example tiktok
2821
- */
2822
- provider: string;
2823
- /** @description Additional TikTok configuration options. */
2824
- options?: {
2825
- /** @description A title for the video that will be displayed on TikTok. */
2826
- title?: string;
2827
- /**
2828
- * @description The privacy level for the video. Options are: <ul>
2829
- * <li>`public` - video is visible to everyone</li>
2830
- * <li>`friends` - video is visible to friends only</li>
2831
- * <li>`private` - video is only visible to you</li>
2832
- * </ul>
2833
- * @default private
2834
- * @enum {string}
2835
- */
2836
- privacyLevel?: "public" | "friends" | "private";
2837
- /**
2838
- * @description Disable the Duet feature for this video.
2839
- * @default false
2840
- */
2841
- disableDuet?: boolean;
2842
- /**
2843
- * @description Disable the Stitch feature for this video.
2844
- * @default false
2845
- */
2846
- disableStitch?: boolean;
2847
- /**
2848
- * @description Disable comments on this video.
2849
- * @default false
2850
- */
2851
- disableComment?: boolean;
2852
- };
2853
- } | {
2854
- /**
2855
- * @description The destination to send assets to - set to `akamai-netstorage` for Akamai NetStorage.
2856
- * @default akamai-netstorage
2857
- * @example akamai-netstorage
2858
- */
2859
- provider: string;
2860
- /** @description Additional Akamai NetStorage configuration options. */
2861
- options?: {
2862
- /**
2863
- * @description The Akamai NetStorage hostname, i.e. `example-nsu.akamaihd.net`.
2864
- * @example example-nsu.akamaihd.net
2865
- */
2866
- host: string;
2867
- /**
2868
- * @description The Content Provider code (CP code) for the NetStorage upload directory.
2869
- * @example 123456
2870
- */
2871
- cpCode: string;
2872
- /**
2873
- * @description A remote directory path/prefix for the file being sent, i.e. `videos` or `customerId/videos`.
2874
- * @example videos
2875
- */
2876
- path?: string | null;
2877
- /**
2878
- * @description Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.
2879
- * @example my-file
2880
- */
2881
- filename?: string | null;
2882
- };
2883
- } | {
2884
- /**
2885
- * @description The destination to send assets to - set to `azure-blob-storage` for Azure Blob Storage.
2886
- * @default azure-blob-storage
2887
- * @example azure-blob-storage
2888
- */
2889
- provider: string;
2890
- /** @description Additional Azure Blob Storage configuration options. */
2891
- options?: {
2892
- /**
2893
- * @description The Azure Storage account name.
2894
- * @example mystorageaccount
2895
- */
2896
- accountName: string;
2897
- /**
2898
- * @description The Blob container name. The container must exist in the Azure Storage account before files can be sent.
2899
- * @example my-container
2900
- */
2901
- container: string;
2902
- /**
2903
- * @description A virtual directory prefix for the blob being sent, i.e. `videos` or `customerId/videos`.
2904
- * @example videos
2905
- */
2906
- prefix?: string | null;
2907
- /**
2908
- * @description Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.
2909
- * @example my-file
2910
- */
2911
- filename?: string | null;
2912
- };
2913
- };
2914
- /** @description Send videos and assets to the [Shotstack hosting and CDN](https://shotstack.io/docs/guide/serving-assets/destinations/shotstack/) service. This destination is enabled by default. */
2915
- ShotstackDestination: {
2916
- /**
2917
- * @description The destination to send assets to - set to `shotstack` for Shotstack hosting and CDN.
2918
- * @default shotstack
2919
- * @example shotstack
2920
- */
2921
- provider: string;
2922
- /**
2923
- * @description Set to `true` to [opt-out](https://shotstack.io/docs/guide/serving-assets/self-host/) from the Shotstack hosting and CDN service. All files must be downloaded within 24 hours of rendering.
2924
- * @example false
2925
- */
2926
- exclude?: boolean;
2927
- };
2928
- /** @description Send videos to the [Mux](https://shotstack.io/docs/guide/serving-assets/destinations/mux/) video hosting and streaming service. Mux credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/mux), not in the request. */
2929
- MuxDestination: {
2930
- /**
2931
- * @description The destination to send video to - set to `mux` for Mux.
2932
- * @default mux
2933
- * @example mux
2934
- */
2935
- provider: string;
2936
- /** @description Additional Mux configuration and features. */
2937
- options?: components["schemas"]["MuxDestinationOptions"];
2938
- };
2939
- /** @description Pass additional options to control how Mux processes video. Currently supports playback_policy and passthrough options. */
2940
- MuxDestinationOptions: {
2941
- /** @description Sets the Mux `playback_policy` option. Value is an array of strings - use `public`, `signed`, or both. */
2942
- playbackPolicy?: ("public" | "signed")[];
2943
- /** @description Sets the Mux `passthrough` option. Max 255 characters. */
2944
- passthrough?: string;
2945
- };
2946
- /** @description Send videos and assets to an [Amazon S3](https://shotstack.io/docs/guide/serving-assets/destinations/s3/) bucket. Send files to any region with your own prefix and filename. AWS credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/s3), not in the request. */
2947
- S3Destination: {
2948
- /**
2949
- * @description The destination to send assets to - set to `s3` for S3.
2950
- * @default s3
2951
- * @example s3
2952
- */
2953
- provider: string;
2954
- /** @description Additional S3 configuration options. */
2955
- options?: components["schemas"]["S3DestinationOptions"];
2956
- };
2957
- /** @description Pass additional options to control how files are stored in S3. */
2958
- S3DestinationOptions: {
2959
- /**
2960
- * @description Choose the region to send the file to. Must be a valid [AWS region](https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_region) string like `us-east-1` or `ap-southeast-2`.
2961
- * @example us-east-1
2962
- */
2963
- region: string;
2964
- /**
2965
- * @description The bucket name to send files to. The bucket must exist in the AWS account before files can be sent.
2966
- * @example my-bucket
2967
- */
2968
- bucket: string;
2969
- /**
2970
- * @description A prefix for the file being sent. This is typically a folder name, i.e. `videos` or `customerId/videos`.
2971
- * @example my-renders
2972
- */
2973
- prefix?: string;
2974
- /**
2975
- * @description Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.
2976
- * @example my-file
2977
- */
2978
- filename?: string;
2979
- /**
2980
- * @description Sets the S3 Access Control List (acl) permissions. Default is `private`. Must use a valid S3 [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl).
2981
- * @example public-read
2982
- */
2983
- acl?: string;
2984
- };
2985
- /** @description Send videos and assets to a [Google Cloud Storage](https://cloud.google.com/storage) bucket. Send files with your own prefix and filename. Google Cloud credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/google-cloud-storage), not in the request. */
2986
- GoogleCloudStorageDestination: {
2987
- /**
2988
- * @description The destination to send assets to - set to `google-cloud-storage` for Google Cloud Storage.
2989
- * @default google-cloud-storage
2990
- * @example google-cloud-storage
2991
- */
2992
- provider: string;
2993
- /** @description Additional Google Cloud Storage configuration options. */
2994
- options?: components["schemas"]["GoogleCloudStorageDestinationOptions"];
2995
- };
2996
- /** @description Pass additional options to control how files are stored in Google Cloud Storage. */
2997
- GoogleCloudStorageDestinationOptions: {
2998
- /**
2999
- * @description The bucket name to send files to. The bucket must exist in the Google Cloud Storage account before files can be sent.
3000
- * @example my-bucket
3001
- */
3002
- bucket: string;
3003
- /**
3004
- * @description A prefix for the file being sent. This is typically a folder name, i.e. `videos` or `customerId/videos`.
3005
- * @example my-renders
3006
- */
3007
- prefix?: string;
3008
- /**
3009
- * @description Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.
3010
- * @example my-file
3011
- */
3012
- filename?: string;
3013
- };
3014
- /** @description Send rendered videos and assets to the [Google Drive](https://shotstack.io/docs/guide/serving-assets/destinations/google-drive/) cloud storage service. Google Drive uses OAuth and you must authenticate and link your Google account via [dashboard](https://dashboard.shotstack.io/integrations/google-drive), not in the request. */
3015
- GoogleDriveDestination: {
3016
- /**
3017
- * @description The destination to send assets to - set to `google-drive` for Google Drive.
3018
- * @default google-drive
3019
- * @example google-drive
3020
- */
3021
- provider: string;
3022
- /** @description Additional Google Drive configuration and features. */
3023
- options: components["schemas"]["GoogleDriveDestinationOptions"];
3024
- };
3025
- /** @description Pass the folder ID and options to configure how assets are stored in Google Drive. */
3026
- GoogleDriveDestinationOptions: {
3027
- /**
3028
- * @description The Google Drive folder ID where asset will be stored. The folder ID is required and can be retrieved from the URL when logged in to Google Drive, e.g. <a href="#">https://drive.google.com/drive/u/0/folders/1r-eTY6OLO8tzQRKwMyq-fIrQ_7AJEI6A</a>.
3029
- * @example 1r-eTY6OLO8tzQRKwMyq-fIrQ_7AJEI6A
3030
- */
3031
- folderId: string;
3032
- /**
3033
- * @description Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.
3034
- * @example my-file
3035
- */
3036
- filename?: string;
3037
- };
3038
- /** @description Send videos to [Vimeo](https://shotstack.io/docs/guide/serving-assets/destinations/vimeo/) video hosting and streaming service. Vimeo credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/vimeo), not in the request. */
3039
- VimeoDestination: {
3040
- /**
3041
- * @description The destination to send video to - set to `vimeo` for Vimeo.
3042
- * @default vimeo
3043
- * @example vimeo
3044
- */
3045
- provider: string;
3046
- /** @description Additional Vimeo configuration and features. */
3047
- options?: components["schemas"]["VimeoDestinationOptions"];
3048
- };
3049
- /** @description Pass additional options to control how Vimeo publishes video, including name, description and privacy settings. */
3050
- VimeoDestinationOptions: {
3051
- /** @description A name or title for the video that will be displayed on the Vimeo website. */
3052
- name?: string;
3053
- /** @description A description of the video that will be displayed on the Vimeo website. */
3054
- description?: string;
3055
- /** @description Options to control the visibility of videos and privacy features. */
3056
- privacy?: components["schemas"]["VimeoDestinationPrivacyOptions"];
3057
- /**
3058
- * @description The Vimeo folder URI to upload the video to. The folder must already exist in your Vimeo account.
3059
- * @example /users/12345678/projects/87654321
3060
- */
3061
- folderUri?: string;
3062
- };
3063
- /** @description Options to control the visibility of videos and privacy features. */
3064
- VimeoDestinationPrivacyOptions: {
3065
- /**
3066
- * @description Set who can view the videos. Available options are: <ul>
3067
- * <li>`anybody` - Anyone can view the video.</li>
3068
- * <li>`nobody` - Only the video owner can view the video.</li>
3069
- * <li>`contacts` - Only contacts can view the video.</li>
3070
- * <li>`password` - A password is required to view the video.</li>
3071
- * <li>`unlisted` - The video is not listed on Vimeo.</li>
3072
- * </ul>
3073
- * @enum {string}
3074
- */
3075
- view?: "anybody" | "nobody" | "contacts" | "password" | "unlisted";
3076
- /**
3077
- * @description Set who can embed the video. Available options are: <ul>
3078
- * <li>`public` - Anyone can embed the video.</li>
3079
- * <li>`private` - Only the video owner can embed the video.</li>
3080
- * <li>`whitelist` - Only whitelisted domains can embed the video.</li>
3081
- * </ul>
3082
- * @enum {string}
3083
- */
3084
- embed?: "public" | "private" | "whitelist";
3085
- /**
3086
- * @description Set who can comment on the video. Available options are: <ul>
3087
- * <li>`anybody` - Anyone can comment on the video.</li>
3088
- * <li>`nobody` - Only the video owner can comment on the video.</li>
3089
- * <li>`contacts` - Only contacts can comment on the video.</li>
3090
- * </ul>
3091
- * @enum {string}
3092
- */
3093
- comments?: "anybody" | "nobody" | "contacts";
3094
- /** @description Set whether the video can be downloaded. */
3095
- download?: boolean;
3096
- /** @description Set whether other users can add the video to their collections. */
3097
- add?: boolean;
3098
- };
3099
- /** @description A template is a saved [Edit](#tocs_edit) than can be loaded and re-used. */
3100
- Template: {
3101
- /**
3102
- * @description The template name
3103
- * @example My template
3104
- */
3105
- name: string;
3106
- template?: components["schemas"]["Edit"];
3107
- };
3108
- /** @description Configure the id and optional merge fields to render a template by id. */
3109
- TemplateRender: {
3110
- /**
3111
- * @description The id of the template to render in UUID format.
3112
- * @example f5493c17-d01f-445c-bb49-535fae65f219
3113
- */
3114
- id: string;
3115
- /** @description An array of key/value pairs that provides an easy way to create templates with placeholders. The placeholders can be used to find and replace keys with values. For example you can search for the placeholder `{{NAME}}` and replace it with the value `Jane`. */
3116
- merge?: components["schemas"]["MergeField"][];
3117
- };
3118
- /**
3119
- * @description The details of the file to be ingested and any transformations to be applied. Once the source file has been ingested, new renditions can be created from it. The renditions are specified in the **outputs** property.
3120
- * A rendition is a new version, generated from the source. This can be used to create new sizes and aspect ratios tht serve different purposes within an application.
3121
- */
3122
- Source: {
3123
- /**
3124
- * @description The URL of the file to be ingested. The URL must be publicly accessible or include credentials.
3125
- * @example https://github.com/shotstack/test-media/raw/main/captioning/scott-ko.mp4
3126
- */
3127
- url?: string;
3128
- outputs?: components["schemas"]["Outputs"];
3129
- destinations?: components["schemas"]["Destinations"];
3130
- /**
3131
- * @description An optional webhook callback URL used to receive status notifications when sources are uploaded and renditions processed.
3132
- * @example https://my-server.com/callback.php
3133
- */
3134
- callback?: string;
3135
- };
3136
- /** @description The output renditions and transformations that should be generated from the source file. */
3137
- Outputs: {
3138
- /** @description The output renditions and transformations that should be generated from the source file. */
3139
- renditions?: components["schemas"]["Rendition"][];
3140
- /** @description The transcription settings for the output file. */
3141
- transcription?: components["schemas"]["Transcription"];
3142
- };
3143
- /** @description A rendition is a new output file that is generated from the source. The rendition can be encoded to a different format and have transformations applied to it such as resizing, cropping, etc... */
3144
- Rendition: {
3145
- /**
3146
- * @description The output format to encode the file to. You can only encode a file to the same type, i.e. a video to a video or an image to an image. You can't encode a video as an image. The following formats are available: <ul>
3147
- * <li>`mp4` - mp4 video file (video only)</li>
3148
- * <li>`webm` - webm video file (video only)</li>
3149
- * <li>`mov` - mov video file (video only)</li>
3150
- * <li>`avi` - avi video file (video only)</li>
3151
- * <li>`mkv` - mkv video file (video only)</li>
3152
- * <li>`ogv` - ogv video file (video only)</li>
3153
- * <li>`wmv` - wmv video file (video only)</li>
3154
- * <li>`avif` - avif video file (video only)</li>
3155
- * <li>`gif` - animated gif file (video only)</li>
3156
- * <li>`jpg` - jpg image file (image only)</li>
3157
- * <li>`png` - png image file (image only)</li>
3158
- * <li>`webp` - webp image file (image only)</li>
3159
- * <li>`tif` - tif image file (image only)</li>
3160
- * <li>`mp3` - mp3 audio file (audio only)</li>
3161
- * <li>`wav` - wav audio file (audio only)</li>
3162
- * </ul>
3163
- * @example mp4
3164
- * @enum {string}
3165
- */
3166
- format?: "mp4" | "webm" | "mov" | "avi" | "mkv" | "ogv" | "wmv" | "avif" | "gif" | "mp3" | "wav" | "jpg" | "png" | "webp" | "tif";
3167
- size?: components["schemas"]["Size"];
3168
- /**
3169
- * @description Set how the rendition should be scaled and cropped when using a size with an aspect ratio that is different from the source. Fit applies to both videos and images. <ul>
3170
- * <li>`crop` <b>(default)</b> - scale the rendition to fill the output area while maintaining the aspect ratio. The rendition will be cropped if it exceeds the bounds of the output.</li>
3171
- * <li>`cover` - stretch the rendition to fill the output without maintaining the aspect ratio.</li>
3172
- * <li>`contain` - fit the entire rendition within the output while maintaining the original aspect ratio.</li>
3173
- * </ul>
3174
- * @example crop
3175
- * @enum {string}
3176
- */
3177
- fit?: "cover" | "contain" | "crop";
3178
- /**
3179
- * @description The preset output resolution of the video or image. This is a convenience property that sets the width and height based on industry standard resolutions. The following resolutions are available: <ul>
3180
- * <li>`preview` - 512px x 288px</li>
3181
- * <li>`mobile` - 640px x 360px</li>
3182
- * <li>`sd` - 1024px x 576px</li>
3183
- * <li>`hd` - 1280px x 720px</li>
3184
- * <li>`fhd` - 1920px x 1080px</li>
3185
- * </ul>
3186
- * @example hd
3187
- * @enum {unknown}
3188
- */
3189
- resolution?: "preview" | "mobile" | "sd" | "hd" | "fhd";
3190
- /**
3191
- * @description Adjust the visual quality of the video or image. The higher the value, the sharper the image quality but the larger file size and slower the encoding process. When specifying quality, the goal is to balance file size vs visual quality.
3192
- * Quality is a value between 1 and 100 where 1 is fully compressed with low image quality and 100 is close to lossless with high image quality and large file size. Sane values are between 50 and 75. Omitting the quality parameter will result in an asset optimised for encoding speed, file size and visual quality.
3193
- * @example 70
3194
- */
3195
- quality?: number;
3196
- /**
3197
- * @description Change the frame rate of a video asset. <ul>
3198
- * <li>`12` - 12fps</li>
3199
- * <li>`15` - 15fps</li>
3200
- * <li>`24` - 24fps</li>
3201
- * <li>`23.976` - 23.976fps</li>
3202
- * <li>`25` (default) - 25fps</li>
3203
- * <li>`29.97` - 29.97fps</li>
3204
- * <li>`30` - 30fps</li>
3205
- * <li>`48` - 48fps</li>
3206
- * <li>`50` - 50fps</li>
3207
- * <li>`59.94` - 59.94fps</li>
3208
- * <li>`60` - 60fps</li>
3209
- * </ul>
3210
- * @example 25
3211
- * @enum {number}
3212
- */
3213
- fps?: 12 | 15 | 23.976 | 24 | 25 | 29.97 | 30 | 48 | 50 | 59.94 | 60;
3214
- speed?: components["schemas"]["Speed"];
3215
- /**
3216
- * @description The keyframe interval is useful to optimize playback, seeking and smoother scrubbing in browsers. The value sets the number of frames between a keyframe. The lower the number, the larger the file. Try a value between 10 and 25 for smooth scrubbing.
3217
- * @example 10
3218
- */
3219
- keyframeInterval?: number;
3220
- /**
3221
- * @description Attempt to fix audio and video sync issues. This can occur when recording devices, such as smartphones and
3222
- * web cams use compression techniques like [Variable Frame Rate](https://en.wikipedia.org/wiki/Variable_frame_rate)
3223
- * (VFR) which can cause audio and video to go out of sync. This option will attempt to fix the sync issues.
3224
- * @example true
3225
- */
3226
- fixOffset?: boolean;
3227
- /**
3228
- * @description Automatically reset the rotation of the video based on the orientation metadata in the video file. This is useful for videos recorded on smartphones that have orientation metadata that may not work correctly with certain video editing software, including the Shotstack Edit API.
3229
- * @example true
3230
- */
3231
- fixRotation?: boolean;
3232
- /** @description Apply media processing enhancements to the rendition using a third party provider. Currently only Dolby.io audio enhancement is available. */
3233
- enhance?: components["schemas"]["Enhancements"];
3234
- /**
3235
- * @description A custom name for the generated rendition file. The file extension will be automatically added based on the format of the rendition. If no filename is provided, the rendition ID will be used.
3236
- * @example my-video
3237
- */
3238
- filename?: string;
3239
- };
3240
- /** @description Generate a transcription of the audio in the video. The transcription can be output as a file in SRT or VTT format. */
3241
- Transcription: {
3242
- /**
3243
- * @description The output format of the transcription file. The following formats are available: <ul>
3244
- * <li>`srt` - SRT captions format</li>
3245
- * <li>`vtt` - VTT captions format</li>
3246
- * </ul>
3247
- * @example vtt
3248
- * @enum {string}
3249
- */
3250
- format?: "srt" | "vtt";
3251
- };
3252
- /** @description Set the playback speed of a video or audio file. Allows you to preserve the pitch of the audio so that it is sped up without sounding too high pitched or too low. */
3253
- Speed: {
3254
- /**
3255
- * Format: float
3256
- * @description Adjust the playback speed of the video clip between 0 (paused) and 10 (10x normal speed) where 1 is normal speed (defaults to 1). Set values less than 1 to slow down the playback speed, i.e. set speed to 0.5 to play back at half speed. Set values greater than 1 to speed up the playback speed, i.e. set speed to 2 to play back at double speed.
3257
- * @example 1.5
3258
- */
3259
- speed?: number;
3260
- /**
3261
- * @description Set whether to adjust the audio pitch or not. Set to false to make the audio sound higher or lower pitched. By default the pitch is preserved.
3262
- * @example false
2112
+ * @description Scale the thumbnail size to a fraction of the viewport size - i.e. setting the scale to 0.5 will scale the thumbnail to half the size of the viewport.
2113
+ * @example 0.3
3263
2114
  */
3264
- preservePitch?: boolean;
3265
- };
3266
- /** @description Enhancements that can be applied to a rendition. Currently only supports the Dolby audio enhancement. */
3267
- Enhancements: {
3268
- /** @description An audio enhancement that can be applied to the audio content of the rendition. */
3269
- audio?: components["schemas"]["AudioEnhancement"];
2115
+ scale: number;
3270
2116
  };
3271
2117
  /**
3272
- * @description An audio enhancement that can be applied to the audio content of a rendition.
3273
- * The following providers are available: <ul>
3274
- * <li><a href="#tocs_dolbyenhancement">DolbyEnhancement</a></li>
3275
- * </ul>
2118
+ * @description A destination is a location where assets can be sent to for serving or hosting. Videos, images and audio files that are rendered by the [Edit API](#shotstack-edit) and [source](#tocs_source) and [rendition](#tocs_rendition) files generated by the [Ingest API](#shotstack-ingest) can be sent to destinations. You can also fetch a file from any public URL and [transfer](#transfer-asset) it to a destination. A file can be sent to one or more destinations including 3rd party destinations.
2119
+ *
2120
+ * By default all ingested and generated assets are automatically sent to the [Shotstack hosting destination](https://shotstack.io/docs/guide/serving-assets/hosting/). You can [opt-out](https://shotstack.io/docs/guide/serving-assets/self-host/) from by setting the Shotstack destination **exclude** property to **true**.
3276
2121
  */
3277
- AudioEnhancement: components["schemas"]["DolbyEnhancement"];
3278
- /** @description Dolby.io audio enhancement provider. Credentials are required and must be added via the [dashboard](https://dashboard.shotstack.io/integrations/dolby), not in the request. */
3279
- DolbyEnhancement: {
2122
+ Destinations: components["schemas"]["ShotstackDestination"] | components["schemas"]["MuxDestination"] | components["schemas"]["S3Destination"] | components["schemas"]["GoogleCloudStorageDestination"] | components["schemas"]["GoogleDriveDestination"] | components["schemas"]["VimeoDestination"] | {
3280
2123
  /**
3281
- * @description The enhancement provider to use - set to `dolby` for Dolby.
3282
- * @default dolby
3283
- * @example dolby
2124
+ * @description The destination to send video to - set to `tiktok` for TikTok.
2125
+ * @default tiktok
2126
+ * @example tiktok
3284
2127
  */
3285
2128
  provider: string;
3286
- /** @description Additional Dolby configuration and features. */
3287
- options: components["schemas"]["DolbyEnhancementOptions"];
3288
- /**
3289
- * @description discriminator enum property added by openapi-typescript
3290
- * @enum {string}
3291
- */
3292
- enhancement: "DolbyEnhancement";
3293
- };
3294
- /** @description Options for the Dolby.io audio enhancement provider. */
3295
- DolbyEnhancementOptions: {
3296
- /**
3297
- * @description The preset to use for the audio enhancement. The following presets are available: <ul>
3298
- * <li>`conference` - Conference</li>
3299
- * <li>`interview` - Interview</li>
3300
- * <li>`lecture` - Lecture</li>
3301
- * <li>`meeting` - Meeting</li>
3302
- * <li>`mobile_phone` - Mobile Phone</li>
3303
- * <li>`music` - Music</li>
3304
- * <li>`podcast` - Podcast</li>
3305
- * <li>`studio` - Studio</li>
3306
- * <li>`voice_over` - Voice Over</li>
3307
- * </ul>
3308
- * @example studio
3309
- * @enum {string}
3310
- */
3311
- preset: "conference" | "interview" | "lecture" | "meeting" | "mobile_phone" | "music" | "podcast" | "studio" | "voice_over";
3312
- };
3313
- /** @description The asset URL to fetch and transfer to a destination. */
3314
- Transfer: {
3315
- /**
3316
- * @description The file URL to fetch and transfer.
3317
- * @example https://s3-ap-northeast-1.amazonaws.com/my-bucket/video.mp4
3318
- */
3319
- url: string;
3320
- /**
3321
- * @description An identifier for the asset which must be provided by the client. The identifier does not need to be unique.
3322
- * @example 018e8937-5015-75ee-aab6-03f214981133
3323
- */
3324
- id: string;
3325
- /** @description Specify the storage locations and hosting services to send the file to. */
3326
- destinations: components["schemas"]["Destinations"][];
3327
- };
3328
- /** @description A generated asset is a media asset created by the Create API. You can use native or third party providers to generate video, audio and image files using Generative AI services like text-to-speech and text-to-avatar. */
3329
- GeneratedAsset: components["schemas"]["ShotstackGeneratedAsset"] | components["schemas"]["DIDGeneratedAsset"] | components["schemas"]["ElevenLabsGeneratedAsset"] | components["schemas"]["HeyGenGeneratedAsset"] | components["schemas"]["OpenAiGeneratedAsset"] | components["schemas"]["StabilityAiGeneratedAsset"];
3330
- /** @description Generate assets using the native Shotstack provider. Shotstack provides a text-to-speech and a text-to-image service. The Shotstack provider works natively with your existing API key, no additional credentials are required. */
3331
- ShotstackGeneratedAsset: {
3332
- /**
3333
- * @description The name of the provider - set to `shotstack` for Shotstack. (enum property replaced by openapi-typescript)
3334
- * @enum {string}
3335
- */
3336
- provider: "ShotstackGeneratedAsset";
3337
- /** @description Options and configuration for the native Shotstack services. */
3338
- options: components["schemas"]["ShotstackGeneratedAssetOptions"];
3339
- };
3340
- /** @description Generate assets using the native Shotstack provider AI services. */
3341
- ShotstackGeneratedAssetOptions: components["schemas"]["ShotstackTextToSpeechOptions"] | components["schemas"]["ShotstackTextToImageOptions"] | components["schemas"]["ShotstackTextGeneratorOptions"] | components["schemas"]["ShotstackImageToVideoOptions"];
3342
- /** @description Options for the Shotstack text-to-speech service. Set the text to be converted to speech and choose a voice to set the speaking style. The output will be generated as an MP3 audio file available at the URL returned in the response. */
3343
- ShotstackTextToSpeechOptions: {
3344
- /**
3345
- * @description The type of asset to generate - set to `text-to-speech` for text-to-speech.
3346
- * @default text-to-speech
3347
- * @enum {string}
3348
- */
3349
- type: "text-to-speech";
2129
+ /** @description Additional TikTok configuration options. */
2130
+ options?: {
2131
+ /** @description A title for the video that will be displayed on TikTok. */
2132
+ title?: string;
2133
+ /**
2134
+ * @description The privacy level for the video. Options are: <ul>
2135
+ * <li>`public` - video is visible to everyone</li>
2136
+ * <li>`friends` - video is visible to friends only</li>
2137
+ * <li>`private` - video is only visible to you</li>
2138
+ * </ul>
2139
+ * @default private
2140
+ * @enum {string}
2141
+ */
2142
+ privacyLevel?: "public" | "friends" | "private";
2143
+ /**
2144
+ * @description Disable the Duet feature for this video.
2145
+ * @default false
2146
+ */
2147
+ disableDuet?: boolean;
2148
+ /**
2149
+ * @description Disable the Stitch feature for this video.
2150
+ * @default false
2151
+ */
2152
+ disableStitch?: boolean;
2153
+ /**
2154
+ * @description Disable comments on this video.
2155
+ * @default false
2156
+ */
2157
+ disableComment?: boolean;
2158
+ };
2159
+ } | {
3350
2160
  /**
3351
- * @description The text to convert to speech.
3352
- * @example This is a text to speech example generated by Shotstack
2161
+ * @description The destination to send assets to - set to `akamai-netstorage` for Akamai NetStorage.
2162
+ * @default akamai-netstorage
2163
+ * @example akamai-netstorage
3353
2164
  */
3354
- text: string;
2165
+ provider: string;
2166
+ /** @description Additional Akamai NetStorage configuration options. */
2167
+ options?: {
2168
+ /**
2169
+ * @description The Akamai NetStorage hostname, i.e. `example-nsu.akamaihd.net`.
2170
+ * @example example-nsu.akamaihd.net
2171
+ */
2172
+ host: string;
2173
+ /**
2174
+ * @description The Content Provider code (CP code) for the NetStorage upload directory.
2175
+ * @example 123456
2176
+ */
2177
+ cpCode: string;
2178
+ /**
2179
+ * @description A remote directory path/prefix for the file being sent, i.e. `videos` or `customerId/videos`.
2180
+ * @example videos
2181
+ */
2182
+ path?: string | null;
2183
+ /**
2184
+ * @description Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.
2185
+ * @example my-file
2186
+ */
2187
+ filename?: string | null;
2188
+ };
2189
+ } | {
3355
2190
  /**
3356
- * @description The voice to use for the text-to-speech conversion. You must pair the correct voice with the correct language. For each language there is a language code that must be set in the `language` property. The voice must be available for the language code or the conversion will fail. i.e. To use the voice `Zeina` for Arabic you must set the `language` to `arb`.
3357
- * Select a voice from the list of available voices, the language code is in brackets: <ul>
3358
- * <li>Arabic - Gulf (ar-AE)</li>
3359
- * <ul>
3360
- * <li>`Hala`</li>
3361
- * </ul>
3362
- * <li>Dutch - Belgian (nl-BE)</li>
3363
- * <ul>
3364
- * <li>`Lisa`</li>
3365
- * </ul>
3366
- * <li>Catalan (ca-ES)</li>
3367
- * <ul>
3368
- * <li>`Arlet`</li>
3369
- * </ul>
3370
- * <li>Chinese - Cantonese (yue-CN)</li>
3371
- * <ul>
3372
- * <li>`Hiujin`</li>
3373
- * </ul>
3374
- * <li>Chinese - Mandarin (cmn-CN)</li>
3375
- * <ul>
3376
- * <li>`Zhiyu`</li>
3377
- * </ul>
3378
- * <li>Danish (da-DK)</li>
3379
- * <ul>
3380
- * <li>`Sofie`</li>
3381
- * </ul>
3382
- * <li>Dutch (nl-NL)</li>
3383
- * <ul>
3384
- * <li>`Laura`</li>
3385
- * </ul>
3386
- * <li>English - Australian (en-AU)</li>
3387
- * <ul>
3388
- * <li>`Olivia`</li>
3389
- * </ul>
3390
- * <li>English - British (en-GB)</li>
3391
- * <ul>
3392
- * <li>`Amy`</li>
3393
- * <li>`Emma`</li>
3394
- * <li>`Brian`</li>
3395
- * <li>`Arthur`</li>
3396
- * </ul>
3397
- * <li>English - Indian (en-IN)</li>
3398
- * <ul>
3399
- * <li>`Kajal`</li>
3400
- * </ul>
3401
- * <li>English - Ireland (en-IE)</li>
3402
- * <ul>
3403
- * <li>`Niamh`</li>
3404
- * </ul>
3405
- * <li>English - New Zealand (en-NZ)</li>
3406
- * <ul>
3407
- * <li>`Aria`</li>
3408
- * </ul>
3409
- * <li>English - South African (en-ZA)</li>
3410
- * <ul>
3411
- * <li>`Ayanda`</li>
3412
- * </ul>
3413
- * <li>English - US (en-US)</li>
3414
- * <ul>
3415
- * <li>`Ivy`</li>
3416
- * <li>`Joanna`</li>
3417
- * <li>`Kendra`</li>
3418
- * <li>`Kimberly`</li>
3419
- * <li>`Salli`</li>
3420
- * <li>`Joey`</li>
3421
- * <li>`Justin`</li>
3422
- * <li>`Kevin`</li>
3423
- * <li>`Matthew`</li>
3424
- * <li>`Ruth`</li>
3425
- * <li>`Stephen`</li>
3426
- * </ul>
3427
- * <li>Finnish (fi-FI)</li>
3428
- * <ul>
3429
- * <li>`Suvi`</li>
3430
- * </ul>
3431
- * <li>French (fr-FR)</li>
3432
- * <ul>
3433
- * <li>`Léa`</li>
3434
- * <li>`Rémi`</li>
3435
- * </ul>
3436
- * <li>French - Canadian (fr-CA)</li>
3437
- * <ul>
3438
- * <li>`Gabrielle`</li>
3439
- * <li>`Liam`</li>
3440
- * </ul>
3441
- * <li>German (de-DE)</li>
3442
- * <ul>
3443
- * <li>`Vicki`</li>
3444
- * <li>`Daniel`</li>
3445
- * </ul>
3446
- * <li>German - Austrian (de-AT)</li>
3447
- * <ul>
3448
- * <li>`Hannah`</li>
3449
- * </ul>
3450
- * <li>Hindi (hi-IN)</li>
3451
- * <ul>
3452
- * <li>`Kajal`</li>
3453
- * </ul>
3454
- * <li>Italian (it-IT)</li>
3455
- * <ul>
3456
- * <li>`Bianca`</li>
3457
- * <li>`Adriano`</li>
3458
- * </ul>
3459
- * <li>Japanese (ja-JP)</li>
3460
- * <ul>
3461
- * <li>`Takumi`</li>
3462
- * <li>`Kazuha`</li>
3463
- * <li>`Tomoko`</li>
3464
- * </ul>
3465
- * <li>Korean (ko-KR)</li>
3466
- * <ul>
3467
- * <li>`Seoyeon`</li>
3468
- * </ul>
3469
- * <li>Norwegian (nb-NO)</li>
3470
- * <ul>
3471
- * <li>`Ida`</li>
3472
- * </ul>
3473
- * <li>Polish (pl-PL)</li>
3474
- * <ul>
3475
- * <li>`Ola`</li>
3476
- * </ul>
3477
- * <li>Portuguese - Brazilian (pt-BR)</li>
3478
- * <ul>
3479
- * <li>`Camila`</li>
3480
- * <li>`Vitória` or `Vitoria`</li>
3481
- * <li>`Thiago`</li>
3482
- * </ul>
3483
- * <li>Portuguese - European (pt-PT)</li>
3484
- * <ul>
3485
- * <li>`Inês` or `Ines`</li>
3486
- * </ul>
3487
- * <li>Spanish (es-ES)</li>
3488
- * <ul>
3489
- * <li>`Lucia`</li>
3490
- * <li>`Sergio`</li>
3491
- * </ul>
3492
- * <li>Spanish - Mexican (es-MX)</li>
3493
- * <ul>
3494
- * <li>`Mia`</li>
3495
- * <li>`Andrés`</li>
3496
- * </ul>
3497
- * <li>Spanish - US (es-US)</li>
3498
- * <ul>
3499
- * <li>`Lupe`</li>
3500
- * <li>`Pedro`</li>
3501
- * </ul>
3502
- * <li>Swedish (sv-SE)</li>
3503
- * <ul>
3504
- * <li>`Elin`</li>
3505
- * </ul>
3506
- * </ul>
3507
- * @example Matthew
3508
- * @enum {string}
2191
+ * @description The destination to send assets to - set to `azure-blob-storage` for Azure Blob Storage.
2192
+ * @default azure-blob-storage
2193
+ * @example azure-blob-storage
3509
2194
  */
3510
- voice: "Hala" | "Lisa" | "Arlet" | "Hiujin" | "Zhiyu" | "Sofie" | "Laura" | "Olivia" | "Amy" | "Emma" | "Brian" | "Arthur" | "Kajal" | "Niamh" | "Aria" | "Ayanda" | "Ivy" | "Joanna" | "Kendra" | "Kimberly" | "Salli" | "Joey" | "Justin" | "Kevin" | "Matthew" | "Ruth" | "Stephen" | "Suvi" | "Léa" | "Rémi" | "Gabrielle" | "Liam" | "Vicki" | "Daniel" | "Hannah" | "Kajal" | "Bianca" | "Adriano" | "Takumi" | "Kazuha" | "Tomoko" | "Seoyeon" | "Ida" | "Ola" | "Camila" | "Vitória" | "Vitoria" | "Thiago" | "Inês" | "Ines" | "Lucia" | "Sergio" | "Mia" | "Andrés" | "Lupe" | "Pedro" | "Elin";
3511
- /**
3512
- * @description The language code for the text-to-speech conversion. You must pair the correct language with the correct voice (see voice parameter above).
3513
- * Select a language from the list of available languages: <ul>
3514
- * <li>`cmn-CN`</li>
3515
- * <li>`da-DK`</li>
3516
- * <li>`de-DE`</li>
3517
- * <li>`en-AU`</li>
3518
- * <li>`en-GB`</li>
3519
- * <li>`en-IN`</li>
3520
- * <li>`en-US`</li>
3521
- * <li>`es-ES`</li>
3522
- * <li>`es-MX`</li>
3523
- * <li>`es-US`</li>
3524
- * <li>`fr-CA`</li>
3525
- * <li>`fr-FR`</li>
3526
- * <li>`it-IT`</li>
3527
- * <li>`ja-JP`</li>
3528
- * <li>`hi-IN`</li>
3529
- * <li>`ko-KR`</li>
3530
- * <li>`nb-NO`</li>
3531
- * <li>`nl-NL`</li>
3532
- * <li>`pl-PL`</li>
3533
- * <li>`pt-BR`</li>
3534
- * <li>`pt-PT`</li>
3535
- * <li>`sv-SE`</li>
3536
- * <li>`en-NZ`</li>
3537
- * <li>`en-ZA`</li>
3538
- * <li>`ca-ES`</li>
3539
- * <li>`de-AT`</li>
3540
- * <li>`yue-CN`</li>
3541
- * <li>`ar-AE`</li>
3542
- * <li>`fi-FI`</li>
3543
- * </ul>
3544
- * @default en-US
3545
- * @enum {string}
2195
+ provider: string;
2196
+ /** @description Additional Azure Blob Storage configuration options. */
2197
+ options?: {
2198
+ /**
2199
+ * @description The Azure Storage account name.
2200
+ * @example mystorageaccount
2201
+ */
2202
+ accountName: string;
2203
+ /**
2204
+ * @description The Blob container name. The container must exist in the Azure Storage account before files can be sent.
2205
+ * @example my-container
2206
+ */
2207
+ container: string;
2208
+ /**
2209
+ * @description A virtual directory prefix for the blob being sent, i.e. `videos` or `customerId/videos`.
2210
+ * @example videos
2211
+ */
2212
+ prefix?: string | null;
2213
+ /**
2214
+ * @description Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.
2215
+ * @example my-file
2216
+ */
2217
+ filename?: string | null;
2218
+ };
2219
+ };
2220
+ /** @description Send videos and assets to the [Shotstack hosting and CDN](https://shotstack.io/docs/guide/serving-assets/destinations/shotstack/) service. This destination is enabled by default. */
2221
+ ShotstackDestination: {
2222
+ /**
2223
+ * @description The destination to send assets to - set to `shotstack` for Shotstack hosting and CDN.
2224
+ * @default shotstack
2225
+ * @example shotstack
3546
2226
  */
3547
- language?: "cmn-CN" | "da-DK" | "de-DE" | "en-AU" | "en-GB" | "en-IN" | "en-US" | "es-ES" | "es-MX" | "es-US" | "fr-CA" | "fr-FR" | "it-IT" | "ja-JP" | "hi-IN" | "ko-KR" | "nb-NO" | "nl-NL" | "pl-PL" | "pt-BR" | "pt-PT" | "sv-SE" | "en-NZ" | "en-ZA" | "ca-ES" | "de-AT" | "yue-CN" | "ar-AE" | "fi-FI";
2227
+ provider: string;
3548
2228
  /**
3549
- * @description Set the voice to newscaster mode.<br /><br /> *Only Matthew and Joanna for US English (en-US), Lupe for US Spanish (es-US), and Amy for British English (en-GB) are available in the newscaster voice.
3550
- * @default false
2229
+ * @description Set to `true` to [opt-out](https://shotstack.io/docs/guide/serving-assets/self-host/) from the Shotstack hosting and CDN service. All files must be downloaded within 24 hours of rendering.
2230
+ * @example false
3551
2231
  */
3552
- newscaster?: boolean;
2232
+ exclude?: boolean;
3553
2233
  };
3554
- /** @description Options for the Shotstack text-to-image service. Set a text prompt to generate an image from. The output will be generated as a PNG file available at the URL returned in the response. */
3555
- ShotstackTextToImageOptions: {
2234
+ /** @description Send videos to the [Mux](https://shotstack.io/docs/guide/serving-assets/destinations/mux/) video hosting and streaming service. Mux credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/mux), not in the request. */
2235
+ MuxDestination: {
3556
2236
  /**
3557
- * @description The type of asset to generate - set to `text-to-image` for text-to-image.
3558
- * @default text-to-image
3559
- * @enum {string}
2237
+ * @description The destination to send video to - set to `mux` for Mux.
2238
+ * @default mux
2239
+ * @example mux
3560
2240
  */
3561
- type: "text-to-image";
2241
+ provider: string;
2242
+ /** @description Additional Mux configuration and features. */
2243
+ options?: components["schemas"]["MuxDestinationOptions"];
2244
+ };
2245
+ /** @description Pass additional options to control how Mux processes video. Currently supports playback_policy and passthrough options. */
2246
+ MuxDestinationOptions: {
2247
+ /** @description Sets the Mux `playback_policy` option. Value is an array of strings - use `public`, `signed`, or both. */
2248
+ playbackPolicy?: ("public" | "signed")[];
2249
+ /** @description Sets the Mux `passthrough` option. Max 255 characters. */
2250
+ passthrough?: string;
2251
+ };
2252
+ /** @description Send videos and assets to an [Amazon S3](https://shotstack.io/docs/guide/serving-assets/destinations/s3/) bucket. Send files to any region with your own prefix and filename. AWS credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/s3), not in the request. */
2253
+ S3Destination: {
3562
2254
  /**
3563
- * @description The text prompt to generate an image from.
3564
- * @example A detailed photograph of Mars, showcasing its orange-red surface
2255
+ * @description The destination to send assets to - set to `s3` for S3.
2256
+ * @default s3
2257
+ * @example s3
3565
2258
  */
3566
- prompt: string;
2259
+ provider: string;
2260
+ /** @description Additional S3 configuration options. */
2261
+ options?: components["schemas"]["S3DestinationOptions"];
2262
+ };
2263
+ /** @description Pass additional options to control how files are stored in S3. */
2264
+ S3DestinationOptions: {
3567
2265
  /**
3568
- * @description The width of the image in pixels.
3569
- * @example 512
2266
+ * @description Choose the region to send the file to. Must be a valid [AWS region](https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_region) string like `us-east-1` or `ap-southeast-2`.
2267
+ * @example us-east-1
3570
2268
  */
3571
- width: number;
2269
+ region: string;
3572
2270
  /**
3573
- * @description The height of the image in pixels.
3574
- * @example 512
2271
+ * @description The bucket name to send files to. The bucket must exist in the AWS account before files can be sent.
2272
+ * @example my-bucket
3575
2273
  */
3576
- height: number;
3577
- };
3578
- /** @description Options for the Shotstack image-to-video service. Set the URL of an image to convert in to a video. The output will be generated as an MP4 file available at the URL returned in the response. */
3579
- ShotstackImageToVideoOptions: {
2274
+ bucket: string;
3580
2275
  /**
3581
- * @description The type of asset to generate - set to `image-to-video` for image-to-video.
3582
- * @default image-to-video
3583
- * @enum {string}
2276
+ * @description A prefix for the file being sent. This is typically a folder name, i.e. `videos` or `customerId/videos`.
2277
+ * @example my-renders
3584
2278
  */
3585
- type: "image-to-video";
2279
+ prefix?: string;
3586
2280
  /**
3587
- * @description The URL of the image to convert to video. The URL must be publicly accessible or include credentials. The image dimensions must exactly match one of the following: 1024px x 576px, 576px x 1024px or 768px x 768px.
3588
- * @example https://s3-ap-northeast-1.amazonaws.com/my-bucket/image.jpg
2281
+ * @description Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.
2282
+ * @example my-file
3589
2283
  */
3590
- imageUrl: string;
2284
+ filename?: string;
3591
2285
  /**
3592
- * @description The guidance scale determines how closely the generated video will match the image. Lower numbers allow for more creative freedom. A number between 0 and 10.
3593
- * @default 1.8
3594
- * @example 1.8
2286
+ * @description Sets the S3 Access Control List (acl) permissions. Default is `private`. Must use a valid S3 [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl).
2287
+ * @example public-read
3595
2288
  */
3596
- guidanceScale?: number;
2289
+ acl?: string;
2290
+ };
2291
+ /** @description Send videos and assets to a [Google Cloud Storage](https://cloud.google.com/storage) bucket. Send files with your own prefix and filename. Google Cloud credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/google-cloud-storage), not in the request. */
2292
+ GoogleCloudStorageDestination: {
3597
2293
  /**
3598
- * @description The amount of motion in the video. A number between 1 and 255.
3599
- * @default 127
3600
- * @example 127
2294
+ * @description The destination to send assets to - set to `google-cloud-storage` for Google Cloud Storage.
2295
+ * @default google-cloud-storage
2296
+ * @example google-cloud-storage
3601
2297
  */
3602
- motion?: number;
2298
+ provider: string;
2299
+ /** @description Additional Google Cloud Storage configuration options. */
2300
+ options?: components["schemas"]["GoogleCloudStorageDestinationOptions"];
3603
2301
  };
3604
- /** @description Options for the Shotstack text-generator service. Set a text prompt that will be used to generate a new body of text. The output will be generated as a text (txt) file available at the URL returned in the response. */
3605
- ShotstackTextGeneratorOptions: {
2302
+ /** @description Pass additional options to control how files are stored in Google Cloud Storage. */
2303
+ GoogleCloudStorageDestinationOptions: {
3606
2304
  /**
3607
- * @description The type of asset to generate - set to `text-generator` for text generation.
3608
- * @default text-generator
3609
- * @enum {string}
2305
+ * @description The bucket name to send files to. The bucket must exist in the Google Cloud Storage account before files can be sent.
2306
+ * @example my-bucket
3610
2307
  */
3611
- type: "text-generator";
2308
+ bucket: string;
3612
2309
  /**
3613
- * @description The text prompt to generate text from.
3614
- * @example Generate a short script for a 15 second video describing the benefits of the Shotstack API
2310
+ * @description A prefix for the file being sent. This is typically a folder name, i.e. `videos` or `customerId/videos`.
2311
+ * @example my-renders
3615
2312
  */
3616
- prompt: string;
3617
- };
3618
- /** @description Generate assets using D-ID. D-ID provide a text-to-avatar service. The D-ID provider works on a bring-your-own-key basis, credentials are required and must be added via the [dashboard](https://dashboard.shotstack.io/integrations/d-id), not in the request. */
3619
- DIDGeneratedAsset: {
2313
+ prefix?: string;
3620
2314
  /**
3621
- * @description The name of the provider - set to `d-id` for D-ID. (enum property replaced by openapi-typescript)
3622
- * @enum {string}
2315
+ * @description Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.
2316
+ * @example my-file
3623
2317
  */
3624
- provider: "DIDGeneratedAsset";
3625
- /** @description Options and configuration for the D-ID text-to-avatar service. */
3626
- options: components["schemas"]["DIDGeneratedAssetOptions"];
2318
+ filename?: string;
3627
2319
  };
3628
- /**
3629
- * @description Generate assets using the third party D-ID provider AI services.
3630
- *
3631
- * The following AI generation services are available: <ul>
3632
- * <li><a href="#tocs_didtexttoavataroptions">DidTextToAvatarOptions</a></li>
3633
- * </ul>
3634
- */
3635
- DIDGeneratedAssetOptions: components["schemas"]["DIDTextToAvatarOptions"];
3636
- /** @description Options for the D-ID text-to-avatar service. Set the text to be converted to an avatar and configure the avatar and background. The output will be generated as an MP4 video file. */
3637
- DIDTextToAvatarOptions: {
2320
+ /** @description Send rendered videos and assets to the [Google Drive](https://shotstack.io/docs/guide/serving-assets/destinations/google-drive/) cloud storage service. Google Drive uses OAuth and you must authenticate and link your Google account via [dashboard](https://dashboard.shotstack.io/integrations/google-drive), not in the request. */
2321
+ GoogleDriveDestination: {
3638
2322
  /**
3639
- * @description The type of asset to generate - set to `text-to-avatar` for text-to-avatar.
3640
- * @enum {string}
2323
+ * @description The destination to send assets to - set to `google-drive` for Google Drive.
2324
+ * @default google-drive
2325
+ * @example google-drive
3641
2326
  */
3642
- type: "text-to-avatar";
2327
+ provider: string;
2328
+ /** @description Additional Google Drive configuration and features. */
2329
+ options: components["schemas"]["GoogleDriveDestinationOptions"];
2330
+ };
2331
+ /** @description Pass the folder ID and options to configure how assets are stored in Google Drive. */
2332
+ GoogleDriveDestinationOptions: {
3643
2333
  /**
3644
- * @description The text or script that the avatar will narrate.
3645
- * @example I am an avatar generated by D-ID using a text prompt
2334
+ * @description The Google Drive folder ID where asset will be stored. The folder ID is required and can be retrieved from the URL when logged in to Google Drive, e.g. <a href="#">https://drive.google.com/drive/u/0/folders/1r-eTY6OLO8tzQRKwMyq-fIrQ_7AJEI6A</a>.
2335
+ * @example 1r-eTY6OLO8tzQRKwMyq-fIrQ_7AJEI6A
3646
2336
  */
3647
- text: string;
2337
+ folderId: string;
3648
2338
  /**
3649
- * @description The avatar character to generate. Select from the list of available avatars: <ul>
3650
- * <li>`jack`</li>
3651
- * <li>`lana`</li>
3652
- * <li>`lily`</li>
3653
- * <li>`matt`</li>
3654
- * <li>`rian`</li>
3655
- * </ul>
3656
- * @enum {string}
2339
+ * @description Use your own filename instead of the default filenames generated by Shotstack. Note: omit the file extension as this will be appended depending on the output format. Also `-poster.jpg` and `-thumb.jpg` will be appended for poster and thumbnail images.
2340
+ * @example my-file
3657
2341
  */
3658
- avatar: "jack" | "lana" | "lily" | "matt" | "rian";
2342
+ filename?: string;
2343
+ };
2344
+ /** @description Send videos to [Vimeo](https://shotstack.io/docs/guide/serving-assets/destinations/vimeo/) video hosting and streaming service. Vimeo credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/vimeo), not in the request. */
2345
+ VimeoDestination: {
3659
2346
  /**
3660
- * @description The background color of the video.
3661
- * @example #ffffff
2347
+ * @description The destination to send video to - set to `vimeo` for Vimeo.
2348
+ * @default vimeo
2349
+ * @example vimeo
3662
2350
  */
3663
- background?: string;
2351
+ provider: string;
2352
+ /** @description Additional Vimeo configuration and features. */
2353
+ options?: components["schemas"]["VimeoDestinationOptions"];
3664
2354
  };
3665
- /** @description Generate assets using ElevenLabs. ElevenLabs provide a text-to-speech service. The ElevenLabs provider works on a bring-your-own-key basis, credentials are required and must be added via the [dashboard](https://dashboard.shotstack.io/integrations/elevenlabs), not in the request. */
3666
- ElevenLabsGeneratedAsset: {
2355
+ /** @description Pass additional options to control how Vimeo publishes video, including name, description and privacy settings. */
2356
+ VimeoDestinationOptions: {
2357
+ /** @description A name or title for the video that will be displayed on the Vimeo website. */
2358
+ name?: string;
2359
+ /** @description A description of the video that will be displayed on the Vimeo website. */
2360
+ description?: string;
2361
+ /** @description Options to control the visibility of videos and privacy features. */
2362
+ privacy?: components["schemas"]["VimeoDestinationPrivacyOptions"];
3667
2363
  /**
3668
- * @description The name of the provider - set to `elevenlabs` for ElevenLabs. (enum property replaced by openapi-typescript)
3669
- * @enum {string}
2364
+ * @description The Vimeo folder URI to upload the video to. The folder must already exist in your Vimeo account.
2365
+ * @example /users/12345678/projects/87654321
3670
2366
  */
3671
- provider: "ElevenLabsGeneratedAsset";
3672
- /** @description Options and configuration for the ElevenLabs text-to-speech service. */
3673
- options: components["schemas"]["ElevenLabsGeneratedAssetOptions"];
2367
+ folderUri?: string;
3674
2368
  };
3675
- /**
3676
- * @description Generate assets using the third party ElevenLabs provider AI services.
3677
- *
3678
- * The following AI generation services are available: <ul>
3679
- * <li><a href="#tocs_elevenlabstexttospeechoptions">ElevenLabsTextToSpeechOptions</a></li>
3680
- * </ul>
3681
- */
3682
- ElevenLabsGeneratedAssetOptions: components["schemas"]["ElevenLabsTextToSpeechOptions"];
3683
- /** @description Options for the ElevenLabs text-to-speech service. Set the text to be converted to speech and choose a voice to set the speaking style. The output will be generated as an MP3 audio file available at the URL returned in the response. */
3684
- ElevenLabsTextToSpeechOptions: {
2369
+ /** @description Options to control the visibility of videos and privacy features. */
2370
+ VimeoDestinationPrivacyOptions: {
3685
2371
  /**
3686
- * @description The type of asset to generate - set to `text-to-speech` for text-to-speech.
2372
+ * @description Set who can view the videos. Available options are: <ul>
2373
+ * <li>`anybody` - Anyone can view the video.</li>
2374
+ * <li>`nobody` - Only the video owner can view the video.</li>
2375
+ * <li>`contacts` - Only contacts can view the video.</li>
2376
+ * <li>`password` - A password is required to view the video.</li>
2377
+ * <li>`unlisted` - The video is not listed on Vimeo.</li>
2378
+ * </ul>
3687
2379
  * @enum {string}
3688
2380
  */
3689
- type: "text-to-speech";
2381
+ view?: "anybody" | "nobody" | "contacts" | "password" | "unlisted";
3690
2382
  /**
3691
- * @description The text to convert to speech.
3692
- * @example This is a text to speech example generated by ElevenLabs
2383
+ * @description Set who can embed the video. Available options are: <ul>
2384
+ * <li>`public` - Anyone can embed the video.</li>
2385
+ * <li>`private` - Only the video owner can embed the video.</li>
2386
+ * <li>`whitelist` - Only whitelisted domains can embed the video.</li>
2387
+ * </ul>
2388
+ * @enum {string}
3693
2389
  */
3694
- text: string;
2390
+ embed?: "public" | "private" | "whitelist";
3695
2391
  /**
3696
- * @description The voice to use for the text-to-speech conversion. Select a voice from the list of available voices: <ul>
3697
- * <li>`Adam`</li>
3698
- * <li>`Antoni`</li>
3699
- * <li>`Arnold`</li>
3700
- * <li>`Bella`</li>
3701
- * <li>`Domi`</li>
3702
- * <li>`Elli`</li>
3703
- * <li>`Josh`</li>
3704
- * <li>`Rachel`</li>
3705
- * <li>`Sam`</li>
2392
+ * @description Set who can comment on the video. Available options are: <ul>
2393
+ * <li>`anybody` - Anyone can comment on the video.</li>
2394
+ * <li>`nobody` - Only the video owner can comment on the video.</li>
2395
+ * <li>`contacts` - Only contacts can comment on the video.</li>
3706
2396
  * </ul>
3707
2397
  * @enum {string}
3708
2398
  */
3709
- voice: "Adam" | "Antoni" | "Arnold" | "Bella" | "Domi" | "Elli" | "Josh" | "Rachel" | "Sam";
2399
+ comments?: "anybody" | "nobody" | "contacts";
2400
+ /** @description Set whether the video can be downloaded. */
2401
+ download?: boolean;
2402
+ /** @description Set whether other users can add the video to their collections. */
2403
+ add?: boolean;
3710
2404
  };
3711
- /** @description Generate assets using HeyGen. HeyGen provide a text-to-avatar service. The HeyGen provider works on a bring-your-own-key basis, credentials are required and must be added via the [dashboard](https://dashboard.shotstack.io/integrations/heygen), not in the request. */
3712
- HeyGenGeneratedAsset: {
2405
+ /** @description A template is a saved [Edit](#tocs_edit) than can be loaded and re-used. */
2406
+ Template: {
3713
2407
  /**
3714
- * @description The name of the provider - set to `heygen` for HeyGen. (enum property replaced by openapi-typescript)
3715
- * @enum {string}
2408
+ * @description The template name
2409
+ * @example My template
2410
+ */
2411
+ name: string;
2412
+ template?: components["schemas"]["Edit"];
2413
+ };
2414
+ /** @description Configure the id and optional merge fields to render a template by id. */
2415
+ TemplateRender: {
2416
+ /**
2417
+ * @description The id of the template to render in UUID format.
2418
+ * @example f5493c17-d01f-445c-bb49-535fae65f219
3716
2419
  */
3717
- provider: "HeyGenGeneratedAsset";
3718
- /** @description Options and configuration for the HeyGen text-to-avatar service. */
3719
- options: components["schemas"]["HeyGenGeneratedAssetOptions"];
2420
+ id: string;
2421
+ /** @description An array of key/value pairs that provides an easy way to create templates with placeholders. The placeholders can be used to find and replace keys with values. For example you can search for the placeholder `{{NAME}}` and replace it with the value `Jane`. */
2422
+ merge?: components["schemas"]["MergeField"][];
3720
2423
  };
3721
2424
  /**
3722
- * @description Generate assets using the third party HeyGen provider AI services.
3723
- *
3724
- * The following AI generation services are available: <ul>
3725
- * <li><a href="#tocs_heygentexttoavataroptions">HeyGenTextToAvatarOptions</a></li>
3726
- * </ul>
2425
+ * @description The details of the file to be ingested and any transformations to be applied. Once the source file has been ingested, new renditions can be created from it. The renditions are specified in the **outputs** property.
2426
+ * A rendition is a new version, generated from the source. This can be used to create new sizes and aspect ratios tht serve different purposes within an application.
3727
2427
  */
3728
- HeyGenGeneratedAssetOptions: components["schemas"]["HeyGenTextToAvatarOptions"];
3729
- /** @description Options for the HeyGen text-to-avatar service. Set the text to be converted to an avatar and configure the avatars voice, speaking style, appearance and background. The output will be generated as an MP4 video file available at the URL returned in the response. */
3730
- HeyGenTextToAvatarOptions: {
2428
+ Source: {
3731
2429
  /**
3732
- * @description The type of asset to generate - set to `text-to-avatar` for text-to-avatar.
3733
- * @enum {string}
2430
+ * @description The URL of the file to be ingested. The URL must be publicly accessible or include credentials.
2431
+ * @example https://github.com/shotstack/test-media/raw/main/captioning/scott-ko.mp4
3734
2432
  */
3735
- type: "text-to-avatar";
2433
+ url?: string;
2434
+ outputs?: components["schemas"]["Outputs"];
2435
+ destinations?: components["schemas"]["Destinations"];
3736
2436
  /**
3737
- * @description The text or script that the avatar will narrate.
3738
- * @example I am an avatar generated by HeyGen using a text prompt
2437
+ * @description An optional webhook callback URL used to receive status notifications when sources are uploaded and renditions processed.
2438
+ * @example https://my-server.com/callback.php
3739
2439
  */
3740
- text: string;
2440
+ callback?: string;
2441
+ };
2442
+ /** @description The output renditions and transformations that should be generated from the source file. */
2443
+ Outputs: {
2444
+ /** @description The output renditions and transformations that should be generated from the source file. */
2445
+ renditions?: components["schemas"]["Rendition"][];
2446
+ /** @description The transcription settings for the output file. */
2447
+ transcription?: components["schemas"]["Transcription"];
2448
+ };
2449
+ /** @description A rendition is a new output file that is generated from the source. The rendition can be encoded to a different format and have transformations applied to it such as resizing, cropping, etc... */
2450
+ Rendition: {
3741
2451
  /**
3742
- * @description The avatar character to generate. Select from the list of available avatars: <ul>
3743
- * <li>`Angela`</li>
3744
- * <li>`Bill`</li>
3745
- * <li>`Daisy`</li>
3746
- * <li>`Derek`</li>
3747
- * <li>`Eva`</li>
3748
- * <li>`Jake`</li>
3749
- * <li>`Jeff`</li>
3750
- * <li>`Jerome`</li>
3751
- * <li>`Joon`</li>
3752
- * <li>`Kayla`</li>
3753
- * <li>`Kent`</li>
3754
- * <li>`Luna`</li>
3755
- * <li>`Mark`</li>
3756
- * <li>`Matthew`</li>
3757
- * <li>`Monica`</li>
3758
- * <li>`Peter`</li>
3759
- * <li>`Selina`</li>
3760
- * <li>`Tanya`</li>
3761
- * <li>`Thomas`</li>
3762
- * <li>`Tina`</li>
3763
- * <li>`Tyler`</li>
3764
- * <li>`Vanessa`</li>
3765
- * <li>`Vera`</li>
3766
- * <li>`Wilson`</li>
3767
- * <li>`Zoey`</li>
2452
+ * @description The output format to encode the file to. You can only encode a file to the same type, i.e. a video to a video or an image to an image. You can't encode a video as an image. The following formats are available: <ul>
2453
+ * <li>`mp4` - mp4 video file (video only)</li>
2454
+ * <li>`webm` - webm video file (video only)</li>
2455
+ * <li>`mov` - mov video file (video only)</li>
2456
+ * <li>`avi` - avi video file (video only)</li>
2457
+ * <li>`mkv` - mkv video file (video only)</li>
2458
+ * <li>`ogv` - ogv video file (video only)</li>
2459
+ * <li>`wmv` - wmv video file (video only)</li>
2460
+ * <li>`avif` - avif video file (video only)</li>
2461
+ * <li>`gif` - animated gif file (video only)</li>
2462
+ * <li>`jpg` - jpg image file (image only)</li>
2463
+ * <li>`png` - png image file (image only)</li>
2464
+ * <li>`webp` - webp image file (image only)</li>
2465
+ * <li>`tif` - tif image file (image only)</li>
2466
+ * <li>`mp3` - mp3 audio file (audio only)</li>
2467
+ * <li>`wav` - wav audio file (audio only)</li>
3768
2468
  * </ul>
2469
+ * @example mp4
3769
2470
  * @enum {string}
3770
2471
  */
3771
- avatar: "Angela" | "Bill" | "Daisy" | "Derek" | "Eva" | "Jake" | "Jeff" | "Jerome" | "Joon" | "Kayla" | "Kent" | "Luna" | "Mark" | "Matthew" | "Monica" | "Peter" | "Selina" | "Tanya" | "Thomas" | "Tina" | "Tyler" | "Vanessa" | "Vera" | "Wilson" | "Zoey";
3772
- /**
3773
- * @description The avatars voice and speaking style. Select from the list of available voices: <ul>
3774
- * <li>`Abb- - Natural`</li>
3775
- * <li>`Adam - Natural`</li>
3776
- * <li>`Aiston - Friendly`</li>
3777
- * <li>`Alice - Newscaster`</li>
3778
- * <li>`Alison - Cheerful`</li>
3779
- * <li>`Amber - Friendly`</li>
3780
- * <li>`Amy - Warm`</li>
3781
- * <li>`Ana - Cheerful`</li>
3782
- * <li>`Antoni - Friendly`</li>
3783
- * <li>`Aria - Newscaster`</li>
3784
- * <li>`Arnold - Cheerful`</li>
3785
- * <li>`Arthur - Natural`</li>
3786
- * <li>`Bella - Friendly`</li>
3787
- * <li>`Belle - Natural`</li>
3788
- * <li>`Brandon - Warm`</li>
3789
- * <li>`Brian - Natural`</li>
3790
- * <li>`Bruce - Natural`</li>
3791
- * <li>`Cerise - Cheerful`</li>
3792
- * <li>`Christopher - Calm`</li>
3793
- * <li>`Clara - Professional`</li>
3794
- * <li>`Connor - Natural`</li>
3795
- * <li>`Dahlia - Friendly`</li>
3796
- * <li>`Davis - Professional`</li>
3797
- * <li>`Dean - Natural`</li>
3798
- * <li>`Delbert - Cheerful`</li>
3799
- * <li>`Edward - Friendly`</li>
3800
- * <li>`Elaine - Calm`</li>
3801
- * <li>`Emily - Natural`</li>
3802
- * <li>`Emma - Newscaster`</li>
3803
- * <li>`Eric - Newscaster`</li>
3804
- * <li>`Grace - Natural`</li>
3805
- * <li>`Hailey - Calm`</li>
3806
- * <li>`Indira - Cheerful`</li>
3807
- * <li>`Isabella - Cheerful`</li>
3808
- * <li>`Jacob - Natural`</li>
3809
- * <li>`Jahmai - Friendly`</li>
3810
- * <li>`Jane - Serious`</li>
3811
- * <li>`Jason - Serious`</li>
3812
- * <li>`Jelle - Friendly`</li>
3813
- * <li>`Jen - Natural`</li>
3814
- * <li>`Jenny - Professional`</li>
3815
- * <li>`Jodi - Cheerful`</li>
3816
- * <li>`Joey - Calm`</li>
3817
- * <li>`Johan - Friendly`</li>
3818
- * <li>`Josie - Cheerful`</li>
3819
- * <li>`Keanan - Natural`</li>
3820
- * <li>`Keith - Cheerful`</li>
3821
- * <li>`Kellie - Friendly`</li>
3822
- * <li>`Lauren - Friendly`</li>
3823
- * <li>`Leah - Natural`</li>
3824
- * <li>`Liam - Professional`</li>
3825
- * <li>`Libby - Natural`</li>
3826
- * <li>`Lily - Professional`</li>
3827
- * <li>`Lucas - Natural`</li>
3828
- * <li>`Luke - Professional`</li>
3829
- * <li>`Luna - Natural`</li>
3830
- * <li>`Marieke - Natural`</li>
3831
- * <li>`Matthew - Professional`</li>
3832
- * <li>`Michelle - Natural`</li>
3833
- * <li>`Mitchell - Natural`</li>
3834
- * <li>`Molly - Newscaster`</li>
3835
- * <li>`Monica - Calm`</li>
3836
- * <li>`Natasha - Professional`</li>
3837
- * <li>`Neerja - Newscaster`</li>
3838
- * <li>`Noah - Serious`</li>
3839
- * <li>`Oliver - Newscaster`</li>
3840
- * <li>`Olivia - Calm`</li>
3841
- * <li>`Paul - Natural`</li>
3842
- * <li>`Prabhat - Natural`</li>
3843
- * <li>`Raveena - Natural`</li>
3844
- * <li>`Rudi - Friendly`</li>
3845
- * <li>`Ryan - Professional`</li>
3846
- * <li>`Sam - Natural`</li>
3847
- * <li>`Sara - Cheerful`</li>
3848
- * <li>`Sherry - Friendly`</li>
3849
- * <li>`Sonia - Warm`</li>
3850
- * <li>`Thomas - Natural`</li>
3851
- * <li>`Todd - Professional`</li>
3852
- * <li>`Tony - Professional`</li>
3853
- * <li>`Tracy - Cheerful`</li>
3854
- * <li>`Wayne - Natural`</li>
3855
- * <li>`Wilder - Natural`</li>
3856
- * <li>`Wille - Natural`</li>
3857
- * <li>`William - Friendly`</li>
2472
+ format?: "mp4" | "webm" | "mov" | "avi" | "mkv" | "ogv" | "wmv" | "avif" | "gif" | "mp3" | "wav" | "jpg" | "png" | "webp" | "tif";
2473
+ size?: components["schemas"]["Size"];
2474
+ /**
2475
+ * @description Set how the rendition should be scaled and cropped when using a size with an aspect ratio that is different from the source. Fit applies to both videos and images. <ul>
2476
+ * <li>`crop` <b>(default)</b> - scale the rendition to fill the output area while maintaining the aspect ratio. The rendition will be cropped if it exceeds the bounds of the output.</li>
2477
+ * <li>`cover` - stretch the rendition to fill the output without maintaining the aspect ratio.</li>
2478
+ * <li>`contain` - fit the entire rendition within the output while maintaining the original aspect ratio.</li>
3858
2479
  * </ul>
2480
+ * @example crop
3859
2481
  * @enum {string}
3860
2482
  */
3861
- voice: "Abbi - Natural" | "Adam - Natural" | "Aiston - Friendly" | "Alice - Newscaster" | "Alison - Cheerful" | "Amber - Friendly" | "Amy - Warm" | "Ana - Cheerful" | "Antoni - Friendly" | "Aria - Newscaster" | "Arnold - Cheerful" | "Arthur - Natural" | "Bella - Friendly" | "Belle - Natural" | "Brandon - Warm" | "Brian - Natural" | "Bruce - Natural" | "Cerise - Cheerful" | "Christopher - Calm" | "Clara - Professional" | "Connor - Natural" | "Dahlia - Friendly" | "Davis - Professional" | "Dean - Natural" | "Delbert - Cheerful" | "Edward - Friendly" | "Elaine - Calm" | "Emily - Natural" | "Emma - Newscaster" | "Eric - Newscaster" | "Grace - Natural" | "Hailey - Calm" | "Indira - Cheerful" | "Isabella - Cheerful" | "Jacob - Natural" | "Jahmai - Friendly" | "Jane - Serious" | "Jason - Serious" | "Jelle - Friendly" | "Jen - Natural" | "Jenny - Professional" | "Jodi - Cheerful" | "Joey - Calm" | "Johan - Friendly" | "Josie - Cheerful" | "Keanan - Natural" | "Keith - Cheerful" | "Kellie - Friendly" | "Lauren - Friendly" | "Leah - Natural" | "Liam - Professional" | "Libby - Natural" | "Lily - Professional" | "Lucas - Natural" | "Luke - Professional" | "Luna - Natural" | "Marieke - Natural" | "Matthew - Professional" | "Michelle - Natural" | "Mitchell - Natural" | "Molly - Newscaster" | "Monica - Calm" | "Natasha - Professional" | "Neerja - Newscaster" | "Noah - Serious" | "Oliver - Newscaster" | "Olivia - Calm" | "Paul - Natural" | "Prabhat - Natural" | "Raveena - Natural" | "Rudi - Friendly" | "Ryan - Professional" | "Sam - Natural" | "Sara - Cheerful" | "Sherry - Friendly" | "Sonia - Warm" | "Thomas - Natural" | "Todd - Professional" | "Tony - Professional" | "Tracy - Cheerful" | "Wayne - Natural" | "Wilder - Natural" | "Wille - Natural" | "William - Friendly";
2483
+ fit?: "cover" | "contain" | "crop";
3862
2484
  /**
3863
- * @description The display style of the avatar, a rectangle `normal` or circular `circle` background. Defaults to `normal`.
3864
- * @enum {string}
2485
+ * @description The preset output resolution of the video or image. This is a convenience property that sets the width and height based on industry standard resolutions. The following resolutions are available: <ul>
2486
+ * <li>`preview` - 512px x 288px</li>
2487
+ * <li>`mobile` - 640px x 360px</li>
2488
+ * <li>`sd` - 1024px x 576px</li>
2489
+ * <li>`hd` - 1280px x 720px</li>
2490
+ * <li>`fhd` - 1920px x 1080px</li>
2491
+ * </ul>
2492
+ * @example hd
2493
+ * @enum {unknown}
3865
2494
  */
3866
- avatarStyle?: "normal" | "circle";
2495
+ resolution?: "preview" | "mobile" | "sd" | "hd" | "fhd";
3867
2496
  /**
3868
- * @description The background color of the video. Defaults to `#ffffff`.
3869
- * @example #ffffff
2497
+ * @description Adjust the visual quality of the video or image. The higher the value, the sharper the image quality but the larger file size and slower the encoding process. When specifying quality, the goal is to balance file size vs visual quality.
2498
+ * Quality is a value between 1 and 100 where 1 is fully compressed with low image quality and 100 is close to lossless with high image quality and large file size. Sane values are between 50 and 75. Omitting the quality parameter will result in an asset optimised for encoding speed, file size and visual quality.
2499
+ * @example 70
3870
2500
  */
3871
- background?: string;
2501
+ quality?: number;
3872
2502
  /**
3873
- * @description The aspect ratio of the video, `16:9` horizontal or `9:16` vertical. Defaults to `16:9`.
3874
- * @enum {string}
2503
+ * @description Change the frame rate of a video asset. <ul>
2504
+ * <li>`12` - 12fps</li>
2505
+ * <li>`15` - 15fps</li>
2506
+ * <li>`24` - 24fps</li>
2507
+ * <li>`23.976` - 23.976fps</li>
2508
+ * <li>`25` (default) - 25fps</li>
2509
+ * <li>`29.97` - 29.97fps</li>
2510
+ * <li>`30` - 30fps</li>
2511
+ * <li>`48` - 48fps</li>
2512
+ * <li>`50` - 50fps</li>
2513
+ * <li>`59.94` - 59.94fps</li>
2514
+ * <li>`60` - 60fps</li>
2515
+ * </ul>
2516
+ * @example 25
2517
+ * @enum {number}
3875
2518
  */
3876
- ratio?: "16:9" | "9:16";
2519
+ fps?: 12 | 15 | 23.976 | 24 | 25 | 29.97 | 30 | 48 | 50 | 59.94 | 60;
2520
+ speed?: components["schemas"]["Speed"];
3877
2521
  /**
3878
- * @description A boolean flag indicating whether the video is for testing purposes. See the "test" parameter in [HeyGen](https://docs.heygen.com/reference/generate-video) for more details.
3879
- * @example true
2522
+ * @description The keyframe interval is useful to optimize playback, seeking and smoother scrubbing in browsers. The value sets the number of frames between a keyframe. The lower the number, the larger the file. Try a value between 10 and 25 for smooth scrubbing.
2523
+ * @example 10
3880
2524
  */
3881
- test?: boolean;
3882
- };
3883
- /** @description Generate assets using OpenAI. OpenAI provide a text generation service using ChatGPT 3.5 and 4. The OpenAI provider works on a bring-your-own-key basis, credentials are required and must be added via the [dashboard](https://dashboard.shotstack.io/integrations/openai), not in the request. */
3884
- OpenAiGeneratedAsset: {
2525
+ keyframeInterval?: number;
3885
2526
  /**
3886
- * @description The name of the provider - set to `openai` for OpenAI. (enum property replaced by openapi-typescript)
3887
- * @enum {string}
2527
+ * @description Attempt to fix audio and video sync issues. This can occur when recording devices, such as smartphones and
2528
+ * web cams use compression techniques like [Variable Frame Rate](https://en.wikipedia.org/wiki/Variable_frame_rate)
2529
+ * (VFR) which can cause audio and video to go out of sync. This option will attempt to fix the sync issues.
2530
+ * @example true
3888
2531
  */
3889
- provider: "OpenAiGeneratedAsset";
3890
- /** @description Options and configuration for the OpenAI text-generator service. */
3891
- options: components["schemas"]["OpenAiGeneratedAssetOptions"];
3892
- };
3893
- /**
3894
- * @description Generate assets using OpenAI provider AI services.
3895
- *
3896
- * The following AI generation services are available: <ul>
3897
- * <li><a href="#tocs_openaitextgeneratoroptions">OpenAiTextGeneratorOptions</a></li>
3898
- * </ul>
3899
- */
3900
- OpenAiGeneratedAssetOptions: components["schemas"]["OpenAiTextGeneratorOptions"];
3901
- /** @description Options for the OpenAI text-generator service. Set a text prompt that will be used to generate a new body of text. The output will be generated as a text (txt) file available at the URL returned in the response. */
3902
- OpenAiTextGeneratorOptions: {
2532
+ fixOffset?: boolean;
3903
2533
  /**
3904
- * @description The type of asset to generate - set to `text-generator` for text generation.
3905
- * @default text-generator
3906
- * @enum {string}
2534
+ * @description Automatically reset the rotation of the video based on the orientation metadata in the video file. This is useful for videos recorded on smartphones that have orientation metadata that may not work correctly with certain video editing software, including the Shotstack Edit API.
2535
+ * @example true
3907
2536
  */
3908
- type: "text-generator";
2537
+ fixRotation?: boolean;
2538
+ /** @description Apply media processing enhancements to the rendition using a third party provider. Currently only Dolby.io audio enhancement is available. */
2539
+ enhance?: components["schemas"]["Enhancements"];
3909
2540
  /**
3910
- * @description The text prompt to generate text from.
3911
- * @example Generate a short script for a 15 second video describing the benefits of the Shotstack API
2541
+ * @description A custom name for the generated rendition file. The file extension will be automatically added based on the format of the rendition. If no filename is provided, the rendition ID will be used.
2542
+ * @example my-video
3912
2543
  */
3913
- prompt: string;
2544
+ filename?: string;
2545
+ };
2546
+ /** @description Generate a transcription of the audio in the video. The transcription can be output as a file in SRT or VTT format. */
2547
+ Transcription: {
3914
2548
  /**
3915
- * @description The model to use for generating the text. Select from the list of available models: <ul>
3916
- * <li>`gpt-3.5-turbo`</li>
3917
- * <li>`gpt-4`</li>
2549
+ * @description The output format of the transcription file. The following formats are available: <ul>
2550
+ * <li>`srt` - SRT captions format</li>
2551
+ * <li>`vtt` - VTT captions format</li>
3918
2552
  * </ul>
3919
- * @example gpt-4
2553
+ * @example vtt
3920
2554
  * @enum {string}
3921
2555
  */
3922
- model: "gpt-3.5-turbo" | "gpt-4";
2556
+ format?: "srt" | "vtt";
2557
+ };
2558
+ /** @description Set the playback speed of a video or audio file. Allows you to preserve the pitch of the audio so that it is sped up without sounding too high pitched or too low. */
2559
+ Speed: {
3923
2560
  /**
3924
- * @description The system prompt to use for generating the text. This is an optional prompt that can be used to provide context or additional information to the model.
3925
- * @example You are a professional script writer and film maker
2561
+ * Format: float
2562
+ * @description Adjust the playback speed of the video clip between 0 (paused) and 10 (10x normal speed) where 1 is normal speed (defaults to 1). Set values less than 1 to slow down the playback speed, i.e. set speed to 0.5 to play back at half speed. Set values greater than 1 to speed up the playback speed, i.e. set speed to 2 to play back at double speed.
2563
+ * @example 1.5
3926
2564
  */
3927
- systemPrompt?: string;
3928
- };
3929
- /** @description Generate assets using Stability AI. Stability AI provide a text-to-image service using Stable Diffusion. The Stability AI provider works on a bring-your-own-key basis, credentials are required and must be added via the [dashboard](https://dashboard.shotstack.io/integrations/stability-ai), not in the request. */
3930
- StabilityAiGeneratedAsset: {
2565
+ speed?: number;
3931
2566
  /**
3932
- * @description The name of the provider - set to `stability-ai` for Stability AI. (enum property replaced by openapi-typescript)
3933
- * @enum {string}
2567
+ * @description Set whether to adjust the audio pitch or not. Set to false to make the audio sound higher or lower pitched. By default the pitch is preserved.
2568
+ * @example false
3934
2569
  */
3935
- provider: "StabilityAiGeneratedAsset";
3936
- /** @description Options and configuration for the Stability AI text-to-image service. */
3937
- options: components["schemas"]["StabilityAiGeneratedAssetOptions"];
2570
+ preservePitch?: boolean;
2571
+ };
2572
+ /** @description Enhancements that can be applied to a rendition. Currently only supports the Dolby audio enhancement. */
2573
+ Enhancements: {
2574
+ /** @description An audio enhancement that can be applied to the audio content of the rendition. */
2575
+ audio?: components["schemas"]["AudioEnhancement"];
3938
2576
  };
3939
2577
  /**
3940
- * @description Generate assets using Stability AI provider AI services.
3941
- *
3942
- * The following AI generation services are available: <ul>
3943
- * <li><a href="#tocs_stabilityaitexttoimageoptions">StabilityAiTextToImageOptions</a></li>
2578
+ * @description An audio enhancement that can be applied to the audio content of a rendition.
2579
+ * The following providers are available: <ul>
2580
+ * <li><a href="#tocs_dolbyenhancement">DolbyEnhancement</a></li>
3944
2581
  * </ul>
3945
2582
  */
3946
- StabilityAiGeneratedAssetOptions: components["schemas"]["StabilityAiTextToImageOptions"];
3947
- /** @description Options for the Stability AI text-to-image service. Set a text prompt to generate an image from plus other engine and configuration options. The output will be generated as a JPG file available at the URL returned in the response. */
3948
- StabilityAiTextToImageOptions: {
2583
+ AudioEnhancement: components["schemas"]["DolbyEnhancement"];
2584
+ /** @description Dolby.io audio enhancement provider. Credentials are required and must be added via the [dashboard](https://dashboard.shotstack.io/integrations/dolby), not in the request. */
2585
+ DolbyEnhancement: {
3949
2586
  /**
3950
- * @description The type of asset to generate - set to `text-to-image` for text-to-image.
3951
- * @default text-to-image
3952
- * @enum {string}
2587
+ * @description The enhancement provider to use - set to `dolby` for Dolby.
2588
+ * @default dolby
2589
+ * @example dolby
3953
2590
  */
3954
- type: "text-to-image";
2591
+ provider: string;
2592
+ /** @description Additional Dolby configuration and features. */
2593
+ options: components["schemas"]["DolbyEnhancementOptions"];
3955
2594
  /**
3956
- * @description The text prompt to generate an image from.
3957
- * @example A detailed photograph of Mars, showcasing its orange-red surface
2595
+ * @description discriminator enum property added by openapi-typescript
2596
+ * @enum {string}
3958
2597
  */
3959
- prompt: string;
2598
+ enhancement: "DolbyEnhancement";
2599
+ };
2600
+ /** @description Options for the Dolby.io audio enhancement provider. */
2601
+ DolbyEnhancementOptions: {
3960
2602
  /**
3961
- * @description The engine (model) to use for generating the image. Select from the list of available engines: <ul>
3962
- * <li>`stable-diffusion-xl-1024-v0-9`</li>
3963
- * <li>`stable-diffusion-xl-1024-v1-0`</li>
3964
- * <li>`stable-diffusion-v1-6`</li>
3965
- * <li>`stable-diffusion-512-v2-1`</li>
3966
- * <li>`stable-diffusion-xl-beta-v2-2-2`</li>
2603
+ * @description The preset to use for the audio enhancement. The following presets are available: <ul>
2604
+ * <li>`conference` - Conference</li>
2605
+ * <li>`interview` - Interview</li>
2606
+ * <li>`lecture` - Lecture</li>
2607
+ * <li>`meeting` - Meeting</li>
2608
+ * <li>`mobile_phone` - Mobile Phone</li>
2609
+ * <li>`music` - Music</li>
2610
+ * <li>`podcast` - Podcast</li>
2611
+ * <li>`studio` - Studio</li>
2612
+ * <li>`voice_over` - Voice Over</li>
3967
2613
  * </ul>
3968
- * @default stable-diffusion-xl-1024-v1-0
3969
- * @example stable-diffusion-xl-1024-v1-0
2614
+ * @example studio
3970
2615
  * @enum {string}
3971
2616
  */
3972
- engine?: "stable-diffusion-xl-1024-v0-9" | "stable-diffusion-xl-1024-v1-0" | "stable-diffusion-v1-6" | "stable-diffusion-512-v2-1" | "stable-diffusion-xl-beta-v2-2-2";
3973
- /**
3974
- * @description The width of the image in pixels. Must be divisible by 64.
3975
- * @example 512
3976
- */
3977
- width: number;
3978
- /**
3979
- * @description The height of the image in pixels. Must be divisible by 64.
3980
- * @example 512
3981
- */
3982
- height: number;
2617
+ preset: "conference" | "interview" | "lecture" | "meeting" | "mobile_phone" | "music" | "podcast" | "studio" | "voice_over";
2618
+ };
2619
+ /** @description The asset URL to fetch and transfer to a destination. */
2620
+ Transfer: {
3983
2621
  /**
3984
- * @description The number of iterative diffusion steps to run. A number between 10 and 50.
3985
- * @default 30
3986
- * @example 30
2622
+ * @description The file URL to fetch and transfer.
2623
+ * @example https://s3-ap-northeast-1.amazonaws.com/my-bucket/video.mp4
3987
2624
  */
3988
- steps?: number;
2625
+ url: string;
3989
2626
  /**
3990
- * @description Using the same seed can help you create images that look similar. Set to 0 for a random seed. A number between 0 and 4294967295.
3991
- * @default 0
3992
- * @example 0
3993
- */
3994
- seed?: number;
3995
- /**
3996
- * @description Determines how closely the generated image will match the prompt. Lower numbers allow for more creative freedom. A number between 0 and 35.
3997
- * @default 7
3998
- * @example 7
3999
- */
4000
- cfgScale?: number;
4001
- /**
4002
- * @description Apply a preset to generate an image in a particular style. Select from the list of available presets: <ul>
4003
- * <li>`3d-model`</li>
4004
- * <li>`analog-film`</li>
4005
- * <li>`anime`</li>
4006
- * <li>`cinematic`</li>
4007
- * <li>`comic-book`</li>
4008
- * <li>`digital-art`</li>
4009
- * <li>`enhance`</li>
4010
- * <li>`fantasy-art`</li>
4011
- * <li>`isometric`</li>
4012
- * <li>`line-art`</li>
4013
- * <li>`low-poly`</li>
4014
- * <li>`modeling-compound`</li>
4015
- * <li>`neon-punk`</li>
4016
- * <li>`origami`</li>
4017
- * <li>`photographic`</li>
4018
- * <li>`pixel-art`</li>
4019
- * <li>`tile-texture`</li>
4020
- * </ul>
4021
- * @example photographic
4022
- * @enum {string}
2627
+ * @description An identifier for the asset which must be provided by the client. The identifier does not need to be unique.
2628
+ * @example 018e8937-5015-75ee-aab6-03f214981133
4023
2629
  */
4024
- stylePreset?: "3d-model" | "analog-film" | "anime" | "cinematic" | "comic-book" | "digital-art" | "enhance" | "fantasy-art" | "isometric" | "line-art" | "low-poly" | "modeling-compound" | "neon-punk" | "origami" | "photographic" | "pixel-art" | "tile-texture";
2630
+ id: string;
2631
+ /** @description Specify the storage locations and hosting services to send the file to. */
2632
+ destinations: components["schemas"]["Destinations"][];
4025
2633
  };
4026
2634
  /** @description The response received after a [render request](#render-asset) or [template render](#render-template) is submitted. The render task is queued for rendering and a unique render id is returned. */
4027
2635
  QueuedResponse: {
@@ -4626,94 +3234,6 @@ export interface components {
4626
3234
  */
4627
3235
  detail: string;
4628
3236
  };
4629
- /** @description The response returned by the Create API [generate asset](#generate-asset) and [get generated asset](#get-generated-asset) requests. Includes status and details of the generated asset. The response follows the [json:api](https://jsonapi.org/) specification. */
4630
- GeneratedAssetResponse: {
4631
- /** @description A generated asset resource. */
4632
- data: components["schemas"]["GeneratedAssetResponseData"];
4633
- };
4634
- /** @description The type of resource (an asset), it's id and attributes of the generated file. */
4635
- GeneratedAssetResponseData: {
4636
- /**
4637
- * @description The type of resource, in this case it is an asset.
4638
- * @example asset
4639
- */
4640
- type: string;
4641
- /**
4642
- * @description The generated asset id.
4643
- * @example 01gz0-tj679-xj30t-hr8zk-3hasvk
4644
- */
4645
- id: string;
4646
- /** @description The generated asset attributes including its url, status, provider, type, etc... */
4647
- attributes: components["schemas"]["GeneratedAssetResponseAttributes"];
4648
- };
4649
- /** @description The id and attributes of the generated asset. */
4650
- GeneratedAssetResponseAttributes: {
4651
- /**
4652
- * @description The owner id of the asset.
4653
- * @example 5ca6hu7s9k
4654
- */
4655
- owner: string;
4656
- /**
4657
- * @description The native or third party provider that generated the asset, `shotstack`, `elevenlabs`, `heygen` or `d-id`.
4658
- * @enum {string}
4659
- */
4660
- provider: "shotstack" | "elevenlabs" | "heygen" | "d-id";
4661
- /**
4662
- * @description The type of service used to generate the asset, `text-to-speech` or `text-to-avatar`.
4663
- * @enum {string}
4664
- */
4665
- type: "text-to-speech" | "text-to-avatar";
4666
- /**
4667
- * @description The URL of the asset file hosted by Shotstack. The file at the URL can be used by the Edit API. Generated asset file URL's consist of a base URL (AWS bucket), owner id, asset id and extension. The extension varies depending on the type of file generated.
4668
- * @example https://shotstack-create-api-v1-assets.s3.amazonaws.com/5ca6hu7s9k/01gz0-tj679-xj30t-hr8zk-3hasvk.mp3
4669
- */
4670
- url?: string;
4671
- /**
4672
- * @description The status of the asset file generation task. <ul>
4673
- * <li>`queued` - generation task is queued waiting to be processed</li>
4674
- * <li>`processing` - the asset is being generated by the provider</li>
4675
- * <li>`saving` - the asset is being saved to Shotstack</li>
4676
- * <li>`done` - the asset has been generated and stored</li>
4677
- * <li>`failed` - there was an error generating the asset</li>
4678
- * </ul>
4679
- * @example done
4680
- * @enum {string}
4681
- */
4682
- status: "queued" | "processing" | "saving" | "done" | "failed";
4683
- /**
4684
- * @description The time the generate asset task was initially queued.
4685
- * @example 2023-01-02T01:47:18.973Z
4686
- */
4687
- created: string;
4688
- /**
4689
- * @description The time the asset status was last updated.
4690
- * @example 2023-01-02T01:47:37.260Z
4691
- */
4692
- updated: string;
4693
- };
4694
- /** @description Error response data for validation and other errors returned by the Create API. */
4695
- GeneratedAssetErrorResponse: {
4696
- /** @description An array of errors. */
4697
- errors: components["schemas"]["GeneratedAssetErrorResponseData"][];
4698
- };
4699
- /** @description Individual errors returned by the Create API. */
4700
- GeneratedAssetErrorResponseData: {
4701
- /**
4702
- * @description The http status code.
4703
- * @example 400
4704
- */
4705
- status: string;
4706
- /**
4707
- * @description A short summary of the error.
4708
- * @example Bad Request
4709
- */
4710
- title: string;
4711
- /**
4712
- * @description A detailed description of the error.
4713
- * @example "body/options/text" is required.
4714
- */
4715
- detail: string;
4716
- };
4717
3237
  };
4718
3238
  responses: never;
4719
3239
  parameters: never;
@@ -5260,61 +3780,4 @@ export interface operations {
5260
3780
  };
5261
3781
  };
5262
3782
  };
5263
- postGenerateAsset: {
5264
- parameters: {
5265
- query?: never;
5266
- header?: never;
5267
- path?: never;
5268
- cookie?: never;
5269
- };
5270
- /** @description Generate an asset using the specified provider, type and options. */
5271
- requestBody: {
5272
- content: {
5273
- "application/json": components["schemas"]["GeneratedAsset"];
5274
- };
5275
- };
5276
- responses: {
5277
- /** @description The generated asset details */
5278
- 201: {
5279
- headers: {
5280
- [name: string]: unknown;
5281
- };
5282
- content: {
5283
- "application/json": components["schemas"]["GeneratedAssetResponse"];
5284
- };
5285
- };
5286
- /** @description A list of validation and other errors */
5287
- 400: {
5288
- headers: {
5289
- [name: string]: unknown;
5290
- };
5291
- content: {
5292
- "application/json": components["schemas"]["GeneratedAssetErrorResponse"];
5293
- };
5294
- };
5295
- };
5296
- };
5297
- getGeneratedAsset: {
5298
- parameters: {
5299
- query?: never;
5300
- header?: never;
5301
- path: {
5302
- /** @description The id of the source file in [KSUID](https://github.com/segmentio/ksuid#what-is-a-ksuid) format. */
5303
- id: string;
5304
- };
5305
- cookie?: never;
5306
- };
5307
- requestBody?: never;
5308
- responses: {
5309
- /** @description The generated asset details */
5310
- 200: {
5311
- headers: {
5312
- [name: string]: unknown;
5313
- };
5314
- content: {
5315
- "application/json": components["schemas"]["GeneratedAssetResponse"];
5316
- };
5317
- };
5318
- };
5319
- };
5320
3783
  }