@shotstack/schemas 1.1.2 → 1.3.1

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.
@@ -715,6 +715,23 @@ export const shotstackDestinationShotstackDestinationSchema = z.object({
715
715
  exclude: z.optional(z.boolean()),
716
716
  });
717
717
  export const shotstackDestinationSchema = shotstackDestinationShotstackDestinationSchema;
718
+ /**
719
+ * Pass additional options to control how TikTok publishes video.
720
+ */
721
+ export const tiktokDestinationOptionsTiktokDestinationOptionsSchema = z.object({
722
+ title: z.optional(z.string().max(150)),
723
+ privacyLevel: z.optional(z.enum(["public", "friends", "private"])),
724
+ disableDuet: z.optional(z.boolean()).default(false),
725
+ disableStitch: z.optional(z.boolean()).default(false),
726
+ disableComment: z.optional(z.boolean()).default(false),
727
+ });
728
+ /**
729
+ * Send videos to TikTok. TikTok credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/tiktok), not in the request.
730
+ */
731
+ export const tiktokDestinationTiktokDestinationSchema = z.object({
732
+ provider: z.string().default("tiktok"),
733
+ options: z.optional(tiktokDestinationOptionsTiktokDestinationOptionsSchema),
734
+ });
718
735
  /**
719
736
  * Options to control the visibility of videos and privacy features.
720
737
  */
@@ -731,6 +748,7 @@ export const vimeoDestinationOptionsVimeoDestinationOptionsSchema = z.object({
731
748
  name: z.optional(z.string()),
732
749
  description: z.optional(z.string()),
733
750
  privacy: z.optional(vimeoDestinationPrivacyOptionsVimeoDestinationPrivacyOptionsSchema),
751
+ folderUri: z.optional(z.string()),
734
752
  });
735
753
  export const vimeoDestinationOptionsSchema = vimeoDestinationOptionsVimeoDestinationOptionsSchema;
736
754
  /**
@@ -777,6 +795,11 @@ export const destinationsDestinationsSchema = z.union([
777
795
  destinations: z.optional(z.literal("vimeoDestination_VimeoDestination")),
778
796
  })
779
797
  .and(vimeoDestinationVimeoDestinationSchema),
798
+ z
799
+ .object({
800
+ destinations: z.optional(z.literal("tiktokDestination_TiktokDestination")),
801
+ })
802
+ .and(tiktokDestinationTiktokDestinationSchema),
780
803
  ]);
781
804
  export const destinationsSchema = destinationsDestinationsSchema;
782
805
  /**
@@ -1135,6 +1158,15 @@ export const richtextpropertiesRichTextBackgroundSchema = z.object({
1135
1158
  borderRadius: z.optional(z.number().gte(0)).default(0),
1136
1159
  });
1137
1160
  export const richTextBackgroundSchema = richtextpropertiesRichTextBackgroundSchema;
1161
+ /**
1162
+ * Border styling properties for the text bounding box.
1163
+ */
1164
+ export const richtextpropertiesRichTextBorderSchema = z.object({
1165
+ width: z.optional(z.number().gte(0)).default(0),
1166
+ color: z.optional(z.string().regex(/^#[A-Fa-f0-9]{6}$/)).default("#000000"),
1167
+ opacity: z.optional(z.number().gte(0).lte(1)).default(1),
1168
+ radius: z.optional(z.number().gte(0)).default(0),
1169
+ });
1138
1170
  /**
1139
1171
  * Font properties for rich text.
1140
1172
  */
@@ -1161,6 +1193,15 @@ export const richtextpropertiesRichTextGradientSchema = z.object({
1161
1193
  .min(2),
1162
1194
  });
1163
1195
  export const richTextGradientSchema = richtextpropertiesRichTextGradientSchema;
1196
+ /**
1197
+ * Padding properties for individual sides of the text bounding box.
1198
+ */
1199
+ export const richtextpropertiesRichTextPaddingSchema = z.object({
1200
+ top: z.optional(z.number().gte(0)).default(0),
1201
+ right: z.optional(z.number().gte(0)).default(0),
1202
+ bottom: z.optional(z.number().gte(0)).default(0),
1203
+ left: z.optional(z.number().gte(0)).default(0),
1204
+ });
1164
1205
  /**
1165
1206
  * Text shadow properties.
1166
1207
  */
@@ -1200,13 +1241,13 @@ export const richTextStyleSchema = richtextpropertiesRichTextStyleSchema;
1200
1241
  export const richtextassetRichTextAssetSchema = z.object({
1201
1242
  type: z.string().default("rich-text"),
1202
1243
  text: z.string().max(5000),
1203
- width: z.optional(z.int().gte(1).lte(4096)),
1204
- height: z.optional(z.int().gte(1).lte(4096)),
1205
1244
  font: z.optional(richtextpropertiesRichTextFontSchema),
1206
1245
  style: z.optional(richtextpropertiesRichTextStyleSchema),
1207
1246
  stroke: z.optional(richtextpropertiesRichTextStrokeSchema),
1208
1247
  shadow: z.optional(richtextpropertiesRichTextShadowSchema),
1209
1248
  background: z.optional(richtextpropertiesRichTextBackgroundSchema),
1249
+ border: z.optional(richtextpropertiesRichTextBorderSchema),
1250
+ padding: z.optional(z.union([z.number().gte(0), richtextpropertiesRichTextPaddingSchema])),
1210
1251
  align: z.optional(richtextpropertiesRichTextAlignmentSchema),
1211
1252
  animation: z.optional(richtextpropertiesRichTextAnimationSchema),
1212
1253
  });
@@ -1445,11 +1486,21 @@ export const textpropertiesTextAlignmentSchema = z.object({
1445
1486
  vertical: z.optional(z.enum(["top", "center", "bottom"])),
1446
1487
  });
1447
1488
  export const textAlignmentSchema = textpropertiesTextAlignmentSchema;
1489
+ /**
1490
+ * Animation properties for text entrance effects.
1491
+ */
1492
+ export const textpropertiesTextAnimationSchema = z.object({
1493
+ preset: z.enum(["typewriter"]),
1494
+ duration: z.optional(z.number().gte(0.1).lte(30)),
1495
+ });
1448
1496
  /**
1449
1497
  * Displays a background box behind the text.
1450
1498
  */
1451
1499
  export const textpropertiesTextBackgroundSchema = z.object({
1452
- color: z.optional(z.string()),
1500
+ color: z.optional(z.string().regex(/^#[A-Fa-f0-9]{6}$/)),
1501
+ opacity: z.optional(z.number().gte(0).lte(1)),
1502
+ padding: z.optional(z.number().gte(0).lte(100)),
1503
+ borderRadius: z.optional(z.number().gte(0)),
1453
1504
  });
1454
1505
  export const textBackgroundSchema = textpropertiesTextBackgroundSchema;
1455
1506
  /**
@@ -1464,6 +1515,13 @@ export const textpropertiesTextFontSchema = z.object({
1464
1515
  lineHeight: z.optional(z.number()),
1465
1516
  });
1466
1517
  export const textFontSchema = textpropertiesTextFontSchema;
1518
+ /**
1519
+ * Text stroke (outline) properties.
1520
+ */
1521
+ export const textpropertiesTextStrokeSchema = z.object({
1522
+ width: z.optional(z.number().gte(0).lte(10)),
1523
+ color: z.optional(z.string().regex(/^#[A-Fa-f0-9]{6}$/)),
1524
+ });
1467
1525
  /**
1468
1526
  * The TextAsset is used to add text and titles to a video. The text can be styled with built in and custom
1469
1527
  * [Fonts](#tocs_font). You can also add a background bounding box used to control wrapping and overflow. Emoticons are also supported.
@@ -1477,6 +1535,9 @@ export const textassetTextAssetSchema = z.object({
1477
1535
  font: z.optional(textpropertiesTextFontSchema),
1478
1536
  background: z.optional(textpropertiesTextBackgroundSchema),
1479
1537
  alignment: z.optional(textpropertiesTextAlignmentSchema),
1538
+ stroke: z.optional(textpropertiesTextStrokeSchema),
1539
+ animation: z.optional(textpropertiesTextAnimationSchema),
1540
+ ellipsis: z.optional(z.string()),
1480
1541
  });
1481
1542
  export const textAssetSchema = textassetTextAssetSchema;
1482
1543
  /**
@@ -1519,7 +1580,7 @@ export const outputOutputSchema = z.object({
1519
1580
  z.literal(59.94),
1520
1581
  z.literal(60),
1521
1582
  ])),
1522
- scaleTo: z.optional(z.enum(["preview", "mobile", "sd", "hd", "1080"])),
1583
+ scaleTo: z.optional(z.enum(["preview", "mobile", "sd", "hd", "1080", "4k"])),
1523
1584
  quality: z.optional(z.enum(["verylow", "low", "medium", "high", "veryhigh"])),
1524
1585
  repeat: z.optional(z.boolean()),
1525
1586
  mute: z.optional(z.boolean()),
@@ -1534,6 +1595,7 @@ export const outputSchema = outputOutputSchema;
1534
1595
  */
1535
1596
  export const transitionTransitionSchema = z.object({
1536
1597
  in: z.optional(z.enum([
1598
+ "none",
1537
1599
  "fade",
1538
1600
  "fadeSlow",
1539
1601
  "fadeFast",
@@ -1597,6 +1659,7 @@ export const transitionTransitionSchema = z.object({
1597
1659
  "zoom",
1598
1660
  ])),
1599
1661
  out: z.optional(z.enum([
1662
+ "none",
1600
1663
  "fade",
1601
1664
  "fadeSlow",
1602
1665
  "fadeFast",
@@ -1718,7 +1781,7 @@ export const audioassetAudioAssetSchema = z.object({
1718
1781
  trim: z.optional(z.number()),
1719
1782
  volume: z.optional(z.union([z.number().gte(0).lte(1), z.array(tweenTweenSchema)])),
1720
1783
  speed: z.optional(z.number().gte(0).lte(10)),
1721
- effect: z.optional(z.enum(["fadeIn", "fadeOut", "fadeInFadeOut"])),
1784
+ effect: z.optional(z.enum(["none", "fadeIn", "fadeOut", "fadeInFadeOut"])),
1722
1785
  });
1723
1786
  export const audioAssetSchema = audioassetAudioAssetSchema;
1724
1787
  /**
@@ -1737,11 +1800,11 @@ export const rotatetransformationRotateTransformationSchema = z.object({
1737
1800
  });
1738
1801
  export const rotateTransformationSchema = rotatetransformationRotateTransformationSchema;
1739
1802
  /**
1740
- * Skew a clip so its edges are sheared at an angle. Use values between 0 and 3. Over 3 the clip will be skewed almost flat.
1803
+ * 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.
1741
1804
  */
1742
1805
  export const skewtransformationSkewTransformationSchema = z.object({
1743
- x: z.optional(z.union([z.number(), z.array(tweenTweenSchema)])),
1744
- y: z.optional(z.union([z.number(), z.array(tweenTweenSchema)])),
1806
+ x: z.optional(z.union([z.number().gte(-100).lte(100), z.array(tweenTweenSchema)])),
1807
+ y: z.optional(z.union([z.number().gte(-100).lte(100), z.array(tweenTweenSchema)])),
1745
1808
  });
1746
1809
  export const skewTransformationSchema = skewtransformationSkewTransformationSchema;
1747
1810
  /**
@@ -1810,7 +1873,7 @@ export const videoassetVideoAssetSchema = z.object({
1810
1873
  transcode: z.optional(z.boolean()).default(false),
1811
1874
  trim: z.optional(z.number()),
1812
1875
  volume: z.optional(z.union([z.number().gte(0).lte(1), z.array(tweenTweenSchema)])),
1813
- volumeEffect: z.optional(z.enum(["fadeIn", "fadeOut", "fadeInFadeOut"])),
1876
+ volumeEffect: z.optional(z.enum(["none", "fadeIn", "fadeOut", "fadeInFadeOut"])),
1814
1877
  speed: z.optional(z.number().gte(0).lte(10)),
1815
1878
  crop: z.optional(cropCropSchema),
1816
1879
  chromaKey: z.optional(chromakeyChromaKeySchema),
@@ -1891,6 +1954,8 @@ export const clipClipSchema = z.object({
1891
1954
  length: z.union([z.number(), z.literal("auto"), z.literal("end")]),
1892
1955
  fit: z.optional(z.enum(["cover", "contain", "crop", "none"])),
1893
1956
  scale: z.optional(z.number()),
1957
+ width: z.optional(z.int().gte(1).lte(3840)),
1958
+ height: z.optional(z.int().gte(1).lte(2160)),
1894
1959
  position: z.optional(z.enum([
1895
1960
  "top",
1896
1961
  "topRight",
@@ -1936,6 +2001,7 @@ export const clipClipSchema = z.object({
1936
2001
  ])),
1937
2002
  opacity: z.optional(z.union([z.number(), z.array(tweenTweenSchema)])),
1938
2003
  transform: z.optional(transformationTransformationSchema),
2004
+ alias: z.optional(z.string().regex(/^[A-Za-z0-9_-]+$/)),
1939
2005
  });
1940
2006
  export const clipSchema = clipClipSchema;
1941
2007
  /**
@@ -894,6 +894,25 @@ export const shotstackDestinationShotstackDestinationSchema = z.object({
894
894
  export const shotstackDestinationSchema =
895
895
  shotstackDestinationShotstackDestinationSchema;
896
896
 
897
+ /**
898
+ * Pass additional options to control how TikTok publishes video.
899
+ */
900
+ export const tiktokDestinationOptionsTiktokDestinationOptionsSchema = z.object({
901
+ title: z.optional(z.string().max(150)),
902
+ privacyLevel: z.optional(z.enum(["public", "friends", "private"])),
903
+ disableDuet: z.optional(z.boolean()).default(false),
904
+ disableStitch: z.optional(z.boolean()).default(false),
905
+ disableComment: z.optional(z.boolean()).default(false),
906
+ });
907
+
908
+ /**
909
+ * Send videos to TikTok. TikTok credentials are required and added via the [dashboard](https://dashboard.shotstack.io/integrations/tiktok), not in the request.
910
+ */
911
+ export const tiktokDestinationTiktokDestinationSchema = z.object({
912
+ provider: z.string().default("tiktok"),
913
+ options: z.optional(tiktokDestinationOptionsTiktokDestinationOptionsSchema),
914
+ });
915
+
897
916
  /**
898
917
  * Options to control the visibility of videos and privacy features.
899
918
  */
@@ -918,6 +937,7 @@ export const vimeoDestinationOptionsVimeoDestinationOptionsSchema = z.object({
918
937
  privacy: z.optional(
919
938
  vimeoDestinationPrivacyOptionsVimeoDestinationPrivacyOptionsSchema
920
939
  ),
940
+ folderUri: z.optional(z.string()),
921
941
  });
922
942
 
923
943
  export const vimeoDestinationOptionsSchema =
@@ -975,6 +995,13 @@ export const destinationsDestinationsSchema = z.union([
975
995
  destinations: z.optional(z.literal("vimeoDestination_VimeoDestination")),
976
996
  })
977
997
  .and(vimeoDestinationVimeoDestinationSchema),
998
+ z
999
+ .object({
1000
+ destinations: z.optional(
1001
+ z.literal("tiktokDestination_TiktokDestination")
1002
+ ),
1003
+ })
1004
+ .and(tiktokDestinationTiktokDestinationSchema),
978
1005
  ]);
979
1006
 
980
1007
  export const destinationsSchema = destinationsDestinationsSchema;
@@ -1431,6 +1458,16 @@ export const richtextpropertiesRichTextBackgroundSchema = z.object({
1431
1458
  export const richTextBackgroundSchema =
1432
1459
  richtextpropertiesRichTextBackgroundSchema;
1433
1460
 
1461
+ /**
1462
+ * Border styling properties for the text bounding box.
1463
+ */
1464
+ export const richtextpropertiesRichTextBorderSchema = z.object({
1465
+ width: z.optional(z.number().gte(0)).default(0),
1466
+ color: z.optional(z.string().regex(/^#[A-Fa-f0-9]{6}$/)).default("#000000"),
1467
+ opacity: z.optional(z.number().gte(0).lte(1)).default(1),
1468
+ radius: z.optional(z.number().gte(0)).default(0),
1469
+ });
1470
+
1434
1471
  /**
1435
1472
  * Font properties for rich text.
1436
1473
  */
@@ -1463,6 +1500,16 @@ export const richtextpropertiesRichTextGradientSchema = z.object({
1463
1500
 
1464
1501
  export const richTextGradientSchema = richtextpropertiesRichTextGradientSchema;
1465
1502
 
1503
+ /**
1504
+ * Padding properties for individual sides of the text bounding box.
1505
+ */
1506
+ export const richtextpropertiesRichTextPaddingSchema = z.object({
1507
+ top: z.optional(z.number().gte(0)).default(0),
1508
+ right: z.optional(z.number().gte(0)).default(0),
1509
+ bottom: z.optional(z.number().gte(0)).default(0),
1510
+ left: z.optional(z.number().gte(0)).default(0),
1511
+ });
1512
+
1466
1513
  /**
1467
1514
  * Text shadow properties.
1468
1515
  */
@@ -1510,13 +1557,15 @@ export const richTextStyleSchema = richtextpropertiesRichTextStyleSchema;
1510
1557
  export const richtextassetRichTextAssetSchema = z.object({
1511
1558
  type: z.string().default("rich-text"),
1512
1559
  text: z.string().max(5000),
1513
- width: z.optional(z.int().gte(1).lte(4096)),
1514
- height: z.optional(z.int().gte(1).lte(4096)),
1515
1560
  font: z.optional(richtextpropertiesRichTextFontSchema),
1516
1561
  style: z.optional(richtextpropertiesRichTextStyleSchema),
1517
1562
  stroke: z.optional(richtextpropertiesRichTextStrokeSchema),
1518
1563
  shadow: z.optional(richtextpropertiesRichTextShadowSchema),
1519
1564
  background: z.optional(richtextpropertiesRichTextBackgroundSchema),
1565
+ border: z.optional(richtextpropertiesRichTextBorderSchema),
1566
+ padding: z.optional(
1567
+ z.union([z.number().gte(0), richtextpropertiesRichTextPaddingSchema])
1568
+ ),
1520
1569
  align: z.optional(richtextpropertiesRichTextAlignmentSchema),
1521
1570
  animation: z.optional(richtextpropertiesRichTextAnimationSchema),
1522
1571
  });
@@ -1823,11 +1872,22 @@ export const textpropertiesTextAlignmentSchema = z.object({
1823
1872
 
1824
1873
  export const textAlignmentSchema = textpropertiesTextAlignmentSchema;
1825
1874
 
1875
+ /**
1876
+ * Animation properties for text entrance effects.
1877
+ */
1878
+ export const textpropertiesTextAnimationSchema = z.object({
1879
+ preset: z.enum(["typewriter"]),
1880
+ duration: z.optional(z.number().gte(0.1).lte(30)),
1881
+ });
1882
+
1826
1883
  /**
1827
1884
  * Displays a background box behind the text.
1828
1885
  */
1829
1886
  export const textpropertiesTextBackgroundSchema = z.object({
1830
- color: z.optional(z.string()),
1887
+ color: z.optional(z.string().regex(/^#[A-Fa-f0-9]{6}$/)),
1888
+ opacity: z.optional(z.number().gte(0).lte(1)),
1889
+ padding: z.optional(z.number().gte(0).lte(100)),
1890
+ borderRadius: z.optional(z.number().gte(0)),
1831
1891
  });
1832
1892
 
1833
1893
  export const textBackgroundSchema = textpropertiesTextBackgroundSchema;
@@ -1846,6 +1906,14 @@ export const textpropertiesTextFontSchema = z.object({
1846
1906
 
1847
1907
  export const textFontSchema = textpropertiesTextFontSchema;
1848
1908
 
1909
+ /**
1910
+ * Text stroke (outline) properties.
1911
+ */
1912
+ export const textpropertiesTextStrokeSchema = z.object({
1913
+ width: z.optional(z.number().gte(0).lte(10)),
1914
+ color: z.optional(z.string().regex(/^#[A-Fa-f0-9]{6}$/)),
1915
+ });
1916
+
1849
1917
  /**
1850
1918
  * The TextAsset is used to add text and titles to a video. The text can be styled with built in and custom
1851
1919
  * [Fonts](#tocs_font). You can also add a background bounding box used to control wrapping and overflow. Emoticons are also supported.
@@ -1859,6 +1927,9 @@ export const textassetTextAssetSchema = z.object({
1859
1927
  font: z.optional(textpropertiesTextFontSchema),
1860
1928
  background: z.optional(textpropertiesTextBackgroundSchema),
1861
1929
  alignment: z.optional(textpropertiesTextAlignmentSchema),
1930
+ stroke: z.optional(textpropertiesTextStrokeSchema),
1931
+ animation: z.optional(textpropertiesTextAnimationSchema),
1932
+ ellipsis: z.optional(z.string()),
1862
1933
  });
1863
1934
 
1864
1935
  export const textAssetSchema = textassetTextAssetSchema;
@@ -1911,7 +1982,7 @@ export const outputOutputSchema = z.object({
1911
1982
  z.literal(60),
1912
1983
  ])
1913
1984
  ),
1914
- scaleTo: z.optional(z.enum(["preview", "mobile", "sd", "hd", "1080"])),
1985
+ scaleTo: z.optional(z.enum(["preview", "mobile", "sd", "hd", "1080", "4k"])),
1915
1986
  quality: z.optional(z.enum(["verylow", "low", "medium", "high", "veryhigh"])),
1916
1987
  repeat: z.optional(z.boolean()),
1917
1988
  mute: z.optional(z.boolean()),
@@ -1929,6 +2000,7 @@ export const outputSchema = outputOutputSchema;
1929
2000
  export const transitionTransitionSchema = z.object({
1930
2001
  in: z.optional(
1931
2002
  z.enum([
2003
+ "none",
1932
2004
  "fade",
1933
2005
  "fadeSlow",
1934
2006
  "fadeFast",
@@ -1994,6 +2066,7 @@ export const transitionTransitionSchema = z.object({
1994
2066
  ),
1995
2067
  out: z.optional(
1996
2068
  z.enum([
2069
+ "none",
1997
2070
  "fade",
1998
2071
  "fadeSlow",
1999
2072
  "fadeFast",
@@ -2124,7 +2197,7 @@ export const audioassetAudioAssetSchema = z.object({
2124
2197
  z.union([z.number().gte(0).lte(1), z.array(tweenTweenSchema)])
2125
2198
  ),
2126
2199
  speed: z.optional(z.number().gte(0).lte(10)),
2127
- effect: z.optional(z.enum(["fadeIn", "fadeOut", "fadeInFadeOut"])),
2200
+ effect: z.optional(z.enum(["none", "fadeIn", "fadeOut", "fadeInFadeOut"])),
2128
2201
  });
2129
2202
 
2130
2203
  export const audioAssetSchema = audioassetAudioAssetSchema;
@@ -2156,11 +2229,15 @@ export const rotateTransformationSchema =
2156
2229
  rotatetransformationRotateTransformationSchema;
2157
2230
 
2158
2231
  /**
2159
- * Skew a clip so its edges are sheared at an angle. Use values between 0 and 3. Over 3 the clip will be skewed almost flat.
2232
+ * 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.
2160
2233
  */
2161
2234
  export const skewtransformationSkewTransformationSchema = z.object({
2162
- x: z.optional(z.union([z.number(), z.array(tweenTweenSchema)])),
2163
- y: z.optional(z.union([z.number(), z.array(tweenTweenSchema)])),
2235
+ x: z.optional(
2236
+ z.union([z.number().gte(-100).lte(100), z.array(tweenTweenSchema)])
2237
+ ),
2238
+ y: z.optional(
2239
+ z.union([z.number().gte(-100).lte(100), z.array(tweenTweenSchema)])
2240
+ ),
2164
2241
  });
2165
2242
 
2166
2243
  export const skewTransformationSchema =
@@ -2244,7 +2321,9 @@ export const videoassetVideoAssetSchema = z.object({
2244
2321
  volume: z.optional(
2245
2322
  z.union([z.number().gte(0).lte(1), z.array(tweenTweenSchema)])
2246
2323
  ),
2247
- volumeEffect: z.optional(z.enum(["fadeIn", "fadeOut", "fadeInFadeOut"])),
2324
+ volumeEffect: z.optional(
2325
+ z.enum(["none", "fadeIn", "fadeOut", "fadeInFadeOut"])
2326
+ ),
2248
2327
  speed: z.optional(z.number().gte(0).lte(10)),
2249
2328
  crop: z.optional(cropCropSchema),
2250
2329
  chromaKey: z.optional(chromakeyChromaKeySchema),
@@ -2329,6 +2408,8 @@ export const clipClipSchema = z.object({
2329
2408
  length: z.union([z.number(), z.literal("auto"), z.literal("end")]),
2330
2409
  fit: z.optional(z.enum(["cover", "contain", "crop", "none"])),
2331
2410
  scale: z.optional(z.number()),
2411
+ width: z.optional(z.int().gte(1).lte(3840)),
2412
+ height: z.optional(z.int().gte(1).lte(2160)),
2332
2413
  position: z.optional(
2333
2414
  z.enum([
2334
2415
  "top",
@@ -2380,6 +2461,7 @@ export const clipClipSchema = z.object({
2380
2461
  ),
2381
2462
  opacity: z.optional(z.union([z.number(), z.array(tweenTweenSchema)])),
2382
2463
  transform: z.optional(transformationTransformationSchema),
2464
+ alias: z.optional(z.string().regex(/^[A-Za-z0-9_-]+$/)),
2383
2465
  });
2384
2466
 
2385
2467
  export const clipSchema = clipClipSchema;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shotstack/schemas",
3
- "version": "1.1.2",
3
+ "version": "1.3.1",
4
4
  "description": "Centralized OpenAPI schemas and TypeScript types for Shotstack API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",