@transloadit/zod 6.0.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/dist/v3/builtinTemplates.d.ts +40 -0
  2. package/dist/v3/builtinTemplates.d.ts.map +1 -1
  3. package/dist/v3/builtinTemplates.js +29 -0
  4. package/dist/v3/englishInteger.d.ts +3 -0
  5. package/dist/v3/englishInteger.d.ts.map +1 -0
  6. package/dist/v3/englishInteger.js +12 -0
  7. package/dist/v3/lib/zodInputSemantics.d.ts +3 -1
  8. package/dist/v3/lib/zodInputSemantics.d.ts.map +1 -1
  9. package/dist/v3/lib/zodInputSemantics.js +17 -0
  10. package/dist/v3/responseErrors/DocumentConvertRobot.d.ts +17 -0
  11. package/dist/v3/responseErrors/DocumentConvertRobot.d.ts.map +1 -0
  12. package/dist/v3/responseErrors/DocumentConvertRobot.js +16 -0
  13. package/dist/v3/robots/_image-describe-output.d.ts +55 -0
  14. package/dist/v3/robots/_image-describe-output.d.ts.map +1 -0
  15. package/dist/v3/robots/_image-describe-output.js +15 -0
  16. package/dist/v3/robots/_image-facedetect-output.d.ts +30 -0
  17. package/dist/v3/robots/_image-facedetect-output.d.ts.map +1 -0
  18. package/dist/v3/robots/_image-facedetect-output.js +14 -0
  19. package/dist/v3/robots/_index.d.ts +582 -48
  20. package/dist/v3/robots/_index.d.ts.map +1 -1
  21. package/dist/v3/robots/_index.js +84 -80
  22. package/dist/v3/robots/_instructions-primitives.d.ts +82 -0
  23. package/dist/v3/robots/_instructions-primitives.d.ts.map +1 -1
  24. package/dist/v3/robots/_instructions-primitives.js +46 -2
  25. package/dist/v3/robots/_ocr-output.d.ts +75 -0
  26. package/dist/v3/robots/_ocr-output.d.ts.map +1 -0
  27. package/dist/v3/robots/_ocr-output.js +14 -0
  28. package/dist/v3/robots/ai-chat.d.ts +12 -12
  29. package/dist/v3/robots/audio-encode.d.ts.map +1 -1
  30. package/dist/v3/robots/audio-encode.js +8 -1
  31. package/dist/v3/robots/audio-split.d.ts.map +1 -1
  32. package/dist/v3/robots/audio-split.js +2 -0
  33. package/dist/v3/robots/digitalocean-store.d.ts +4 -4
  34. package/dist/v3/robots/digitalocean-store.js +1 -1
  35. package/dist/v3/robots/document-convert.d.ts +8 -6
  36. package/dist/v3/robots/document-convert.d.ts.map +1 -1
  37. package/dist/v3/robots/document-convert.js +24 -5
  38. package/dist/v3/robots/document-extract.d.ts +28 -16
  39. package/dist/v3/robots/document-extract.d.ts.map +1 -1
  40. package/dist/v3/robots/document-extract.js +51 -1
  41. package/dist/v3/robots/document-ocr.d.ts +8 -8
  42. package/dist/v3/robots/google-store.d.ts +32 -8
  43. package/dist/v3/robots/google-store.d.ts.map +1 -1
  44. package/dist/v3/robots/google-store.js +10 -2
  45. package/dist/v3/robots/html-convert.d.ts.map +1 -1
  46. package/dist/v3/robots/html-convert.js +1 -0
  47. package/dist/v3/robots/image-bgremove.d.ts +16 -16
  48. package/dist/v3/robots/image-describe.d.ts +17 -17
  49. package/dist/v3/robots/image-describe.d.ts.map +1 -1
  50. package/dist/v3/robots/image-describe.js +2 -1
  51. package/dist/v3/robots/image-facedetect.d.ts +9 -35
  52. package/dist/v3/robots/image-facedetect.d.ts.map +1 -1
  53. package/dist/v3/robots/image-facedetect.js +1 -11
  54. package/dist/v3/robots/image-generate.d.ts +20 -20
  55. package/dist/v3/robots/image-generate.js +1 -1
  56. package/dist/v3/robots/image-ocr.d.ts +8 -8
  57. package/dist/v3/robots/image-upscale.d.ts +17 -12
  58. package/dist/v3/robots/image-upscale.d.ts.map +1 -1
  59. package/dist/v3/robots/image-upscale.js +14 -2
  60. package/dist/v3/robots/mega-store.d.ts +4 -4
  61. package/dist/v3/robots/mega-store.js +1 -1
  62. package/dist/v3/robots/s3-store.d.ts +8 -8
  63. package/dist/v3/robots/s3-store.d.ts.map +1 -1
  64. package/dist/v3/robots/s3-store.js +14 -2
  65. package/dist/v3/robots/speech-transcribe.d.ts +26 -12
  66. package/dist/v3/robots/speech-transcribe.d.ts.map +1 -1
  67. package/dist/v3/robots/speech-transcribe.js +42 -2
  68. package/dist/v3/robots/text-speak.d.ts +8 -8
  69. package/dist/v3/robots/text-translate.d.ts +8 -8
  70. package/dist/v3/robots/video-adaptive.d.ts +16 -19
  71. package/dist/v3/robots/video-adaptive.d.ts.map +1 -1
  72. package/dist/v3/robots/video-adaptive.js +37 -3
  73. package/dist/v3/robots/video-concat.d.ts.map +1 -1
  74. package/dist/v3/robots/video-concat.js +7 -3
  75. package/dist/v3/robots/video-encode.d.ts.map +1 -1
  76. package/dist/v3/robots/video-encode.js +6 -0
  77. package/dist/v3/robots/video-generate.d.ts +20 -20
  78. package/dist/v3/robots/video-generate.js +1 -1
  79. package/dist/v3/robots/video-merge.d.ts.map +1 -1
  80. package/dist/v3/robots/video-merge.js +15 -1
  81. package/dist/v3/robots/video-split.d.ts +11 -0
  82. package/dist/v3/robots/video-split.d.ts.map +1 -1
  83. package/dist/v3/robots/video-split.js +4 -1
  84. package/dist/v3/robots/video-subtitle.d.ts +71 -28
  85. package/dist/v3/robots/video-subtitle.d.ts.map +1 -1
  86. package/dist/v3/robots/video-subtitle.js +63 -49
  87. package/dist/v3/robots/video-thumbs.d.ts +36 -36
  88. package/dist/v3/robots/video-thumbs.d.ts.map +1 -1
  89. package/dist/v3/robots/video-thumbs.js +8 -3
  90. package/dist/v3/robots/vimeo-import.d.ts.map +1 -1
  91. package/dist/v3/robots/vimeo-import.js +1 -1
  92. package/dist/v3/robots/youtube-store.d.ts +37 -20
  93. package/dist/v3/robots/youtube-store.d.ts.map +1 -1
  94. package/dist/v3/robots/youtube-store.js +17 -29
  95. package/dist/v3/template.d.ts.map +1 -1
  96. package/dist/v3/template.js +5 -2
  97. package/dist/v3/youtubeCategories.d.ts +20 -0
  98. package/dist/v3/youtubeCategories.d.ts.map +1 -0
  99. package/dist/v3/youtubeCategories.js +20 -0
  100. package/dist/v4/assemblyStatus.d.ts +2 -2
  101. package/dist/v4/builtinTemplates.d.ts +22 -0
  102. package/dist/v4/builtinTemplates.d.ts.map +1 -1
  103. package/dist/v4/builtinTemplates.js +29 -0
  104. package/dist/v4/englishInteger.d.ts +3 -0
  105. package/dist/v4/englishInteger.d.ts.map +1 -0
  106. package/dist/v4/englishInteger.js +12 -0
  107. package/dist/v4/lib/zodInputSemantics.d.ts +3 -1
  108. package/dist/v4/lib/zodInputSemantics.d.ts.map +1 -1
  109. package/dist/v4/lib/zodInputSemantics.js +6 -0
  110. package/dist/v4/responseErrors/DocumentConvertRobot.d.ts +17 -0
  111. package/dist/v4/responseErrors/DocumentConvertRobot.d.ts.map +1 -0
  112. package/dist/v4/responseErrors/DocumentConvertRobot.js +16 -0
  113. package/dist/v4/robots/_image-describe-output.d.ts +23 -0
  114. package/dist/v4/robots/_image-describe-output.d.ts.map +1 -0
  115. package/dist/v4/robots/_image-describe-output.js +15 -0
  116. package/dist/v4/robots/_image-facedetect-output.d.ts +14 -0
  117. package/dist/v4/robots/_image-facedetect-output.d.ts.map +1 -0
  118. package/dist/v4/robots/_image-facedetect-output.js +15 -0
  119. package/dist/v4/robots/_index.d.ts +582 -48
  120. package/dist/v4/robots/_index.d.ts.map +1 -1
  121. package/dist/v4/robots/_index.js +84 -80
  122. package/dist/v4/robots/_instructions-primitives.d.ts +16 -0
  123. package/dist/v4/robots/_instructions-primitives.d.ts.map +1 -1
  124. package/dist/v4/robots/_instructions-primitives.js +50 -2
  125. package/dist/v4/robots/_ocr-output.d.ts +29 -0
  126. package/dist/v4/robots/_ocr-output.d.ts.map +1 -0
  127. package/dist/v4/robots/_ocr-output.js +14 -0
  128. package/dist/v4/robots/audio-encode.d.ts.map +1 -1
  129. package/dist/v4/robots/audio-encode.js +8 -1
  130. package/dist/v4/robots/audio-split.d.ts.map +1 -1
  131. package/dist/v4/robots/audio-split.js +2 -0
  132. package/dist/v4/robots/digitalocean-store.d.ts +8 -8
  133. package/dist/v4/robots/digitalocean-store.js +1 -1
  134. package/dist/v4/robots/document-convert.d.ts +22 -8
  135. package/dist/v4/robots/document-convert.d.ts.map +1 -1
  136. package/dist/v4/robots/document-convert.js +24 -5
  137. package/dist/v4/robots/document-extract.d.ts +12 -0
  138. package/dist/v4/robots/document-extract.d.ts.map +1 -1
  139. package/dist/v4/robots/document-extract.js +51 -1
  140. package/dist/v4/robots/google-store.d.ts +16 -4
  141. package/dist/v4/robots/google-store.d.ts.map +1 -1
  142. package/dist/v4/robots/google-store.js +10 -2
  143. package/dist/v4/robots/html-convert.d.ts.map +1 -1
  144. package/dist/v4/robots/html-convert.js +1 -0
  145. package/dist/v4/robots/image-describe.d.ts +1 -5
  146. package/dist/v4/robots/image-describe.d.ts.map +1 -1
  147. package/dist/v4/robots/image-describe.js +2 -1
  148. package/dist/v4/robots/image-facedetect.d.ts +1 -11
  149. package/dist/v4/robots/image-facedetect.d.ts.map +1 -1
  150. package/dist/v4/robots/image-facedetect.js +1 -12
  151. package/dist/v4/robots/image-generate.d.ts +0 -4
  152. package/dist/v4/robots/image-generate.d.ts.map +1 -1
  153. package/dist/v4/robots/image-generate.js +1 -1
  154. package/dist/v4/robots/image-upscale.d.ts +5 -0
  155. package/dist/v4/robots/image-upscale.d.ts.map +1 -1
  156. package/dist/v4/robots/image-upscale.js +14 -2
  157. package/dist/v4/robots/mega-store.d.ts +8 -8
  158. package/dist/v4/robots/mega-store.js +1 -1
  159. package/dist/v4/robots/s3-store.d.ts +20 -0
  160. package/dist/v4/robots/s3-store.d.ts.map +1 -1
  161. package/dist/v4/robots/s3-store.js +14 -2
  162. package/dist/v4/robots/speech-transcribe.d.ts +6 -0
  163. package/dist/v4/robots/speech-transcribe.d.ts.map +1 -1
  164. package/dist/v4/robots/speech-transcribe.js +42 -2
  165. package/dist/v4/robots/video-adaptive.d.ts +16 -16
  166. package/dist/v4/robots/video-adaptive.d.ts.map +1 -1
  167. package/dist/v4/robots/video-adaptive.js +38 -5
  168. package/dist/v4/robots/video-concat.d.ts.map +1 -1
  169. package/dist/v4/robots/video-concat.js +7 -3
  170. package/dist/v4/robots/video-encode.d.ts.map +1 -1
  171. package/dist/v4/robots/video-encode.js +6 -0
  172. package/dist/v4/robots/video-generate.d.ts +0 -4
  173. package/dist/v4/robots/video-generate.d.ts.map +1 -1
  174. package/dist/v4/robots/video-generate.js +1 -1
  175. package/dist/v4/robots/video-merge.d.ts.map +1 -1
  176. package/dist/v4/robots/video-merge.js +15 -1
  177. package/dist/v4/robots/video-split.d.ts +5 -0
  178. package/dist/v4/robots/video-split.d.ts.map +1 -1
  179. package/dist/v4/robots/video-split.js +4 -1
  180. package/dist/v4/robots/video-subtitle.d.ts +43 -16
  181. package/dist/v4/robots/video-subtitle.d.ts.map +1 -1
  182. package/dist/v4/robots/video-subtitle.js +65 -55
  183. package/dist/v4/robots/video-thumbs.d.ts +12 -12
  184. package/dist/v4/robots/video-thumbs.d.ts.map +1 -1
  185. package/dist/v4/robots/video-thumbs.js +10 -5
  186. package/dist/v4/robots/vimeo-import.d.ts.map +1 -1
  187. package/dist/v4/robots/vimeo-import.js +1 -1
  188. package/dist/v4/robots/youtube-store.d.ts +25 -76
  189. package/dist/v4/robots/youtube-store.d.ts.map +1 -1
  190. package/dist/v4/robots/youtube-store.js +18 -29
  191. package/dist/v4/template.d.ts.map +1 -1
  192. package/dist/v4/template.js +5 -2
  193. package/dist/v4/youtubeCategories.d.ts +20 -0
  194. package/dist/v4/youtubeCategories.d.ts.map +1 -0
  195. package/dist/v4/youtubeCategories.js +20 -0
  196. package/package.json +2 -2
@@ -2,53 +2,44 @@ import { z } from 'zod/v3';
2
2
  import { zodInputPreservingTransform } from "../lib/zodInputSemantics.js";
3
3
  import { stackVersions } from "../stackVersions.js";
4
4
  import { color_with_alpha, color_without_alpha, defineRobot, positionSchema, robotBase, robotFFmpegVideo, robotUse, robotVideoEncodingMeta, } from "./_instructions-primitives.js";
5
+ const subtitleColorSchema = z.union([color_without_alpha, color_with_alpha]);
6
+ const subtitleColorDescription = `Use \`"rgb"\`, \`"rrggbb"\`, or \`"aarrggbb"\` format, optionally prefixed with \`#\`. Three-digit colors are expanded to six digits. Colors without alpha are fully opaque. For eight-digit colors, the first two digits specify transparency (\`"00"\` is fully opaque, \`"ff"\` is fully transparent).`;
7
+ /** Appearance defaults for the social caption preset, before customer overrides. */
8
+ export const videoSubtitleSocialStyle = {
9
+ // Static Poppins faces are included by API2's shared fontsConf google-fonts package.
10
+ font: 'Poppins',
11
+ // ASS includes the font's ascent and descent; Poppins capitals occupy about 40% of it.
12
+ font_size: 54,
13
+ bold: true,
14
+ outline_width: 2,
15
+ };
5
16
  export const meta = {
6
17
  ...robotVideoEncodingMeta,
7
18
  example_code: {
8
19
  steps: {
9
- add_english_subtitles: {
10
- robot: '/video/subtitle',
11
- use: {
12
- steps: [
13
- {
14
- name: ':original',
15
- fields: 'input_video',
16
- as: 'video',
17
- },
18
- {
19
- name: ':original',
20
- fields: 'input_srt_en',
21
- as: 'subtitles',
22
- },
23
- ],
24
- },
25
- language: 'eng',
26
- name: 'English',
27
- ffmpeg_stack: stackVersions.ffmpeg.recommendedVersion,
20
+ transcript: {
21
+ robot: '/speech/transcribe',
22
+ use: ':original',
23
+ provider: 'aws',
24
+ format: 'json',
25
+ source_language: 'en-US',
28
26
  },
29
- add_german_subtitles: {
27
+ captioned: {
30
28
  robot: '/video/subtitle',
31
29
  use: {
32
30
  steps: [
33
- {
34
- name: 'add_english_subtitles',
35
- as: 'video',
36
- },
37
- {
38
- name: ':original',
39
- fields: 'input_srt_de',
40
- as: 'subtitles',
41
- },
31
+ { name: ':original', as: 'video' },
32
+ { name: 'transcript', as: 'subtitles' },
42
33
  ],
43
34
  },
44
- language: 'deu',
45
- name: 'Deutsch',
46
- keep_subtitles: true,
35
+ subtitles_type: 'burned',
36
+ preset: 'empty',
37
+ style: 'social',
47
38
  ffmpeg_stack: stackVersions.ffmpeg.recommendedVersion,
48
39
  },
49
40
  },
50
41
  },
51
- example_code_description: 'If you have file input fields in a form — one for a video and one for each subtitle language (named `input_video`, `input_srt_en`, and `input_srt_de` via the HTML `name` attribute) — here’s how to add multiple subtitle streams with language tags to the video. Chain multiple `/video/subtitle` Steps with `keep_subtitles` set to `true` so each new stream is added alongside existing ones:',
42
+ example_code_description: 'Transcribe an uploaded video into timestamped words, then burn in uppercase social captions with the spoken word highlighted. Captions normally contain up to three words, breaking at sentence endings and pauses longer than 0.4 seconds. Social phrasing can use one extra word to keep a short phrase together or avoid a sentence-final orphan:',
52
43
  purpose_sentence: 'adds subtitles and closed captions to videos',
53
44
  purpose_verb: 'subtitle',
54
45
  purpose_word: 'subtitle',
@@ -62,12 +53,33 @@ export const robotVideoSubtitleInstructionsSchema = robotBase
62
53
  .merge(robotFFmpegVideo)
63
54
  .extend({
64
55
  robot: z.literal('/video/subtitle').describe(`
65
- This <dfn>Robot</dfn> supports both SRT and VTT subtitle files.
56
+ This <dfn>Robot</dfn> supports SRT, VTT, ASS, and the timestamped JSON output of \`/speech/transcribe\` with \`"format": "json"\`. Pass the video as \`"video"\` and the transcript as \`"subtitles"\` in the \`use\` parameter. JSON words are grouped into captions and converted to ASS for burned word highlighting, or plain SRT cues for external subtitle streams. External JSON cues preserve casing and punctuation. Provider segments do not control caption breaks. SRT and VTT timing is preserved.
57
+
58
+ Without a \`preset\` or custom \`ffmpeg\` options, the legacy \`"flash"\` preset produces FLV output. With this default, burned subtitles use MP3 audio; external subtitles copy the input audio. Set \`"preset": "empty"\` to keep the input container, such as MP4 for an MP4 input.
66
59
  `),
67
60
  subtitles_type: zodInputPreservingTransform(z.enum(['burned', 'external', 'burn']), (val) => val === 'burn' ? 'burned' : val)
68
61
  .default('external')
69
62
  .describe(`
70
63
  Determines if subtitles are added as a separate stream to the video (value \`"external"\`) that then can be switched on and off in your video player, or if they should be burned directly into the video (value \`"burned"\` or \`"burn"\`) so that they become part of the video stream.
64
+ `),
65
+ style: z
66
+ .enum(['social'])
67
+ .optional()
68
+ .describe(`
69
+ Applies a ready-made appearance for burned subtitles: heavy Poppins text, a thick outline, and a soft black shadow. JSON captions render in uppercase in the lower third. By default, JSON font sizing uses the shorter side of the video and fits each caption within the safe width, preferring one line and using at most two. Words are never split. Each caption grows from 85% to full size over 120 milliseconds, then its words stay in place while the highlight changes color. The transcript file is preserved. Existing styling parameters override the preset; an explicit \`font_size\` disables automatic fitting. ASS files retain their own styles. With timestamped JSON from \`/speech/transcribe\`, the active word is highlighted until the next word or caption starts; other words use \`font_color\`. Trailing commas and periods are omitted from social JSON captions; question marks and exclamation marks are preserved. Word highlighting and grouping require JSON input.
70
+ `),
71
+ highlight_color: subtitleColorSchema.default('FFD60A').describe(`
72
+ The accent color of the active word in JSON subtitles. Only applies to burned JSON subtitles. With \`"style": "social"\`, the previous word stays highlighted through short gaps until the next word or caption starts. Without the social style, gaps use \`font_color\` for the entire caption.
73
+
74
+ ${subtitleColorDescription}
75
+ `),
76
+ max_words_per_caption: z
77
+ .number()
78
+ .int()
79
+ .min(1)
80
+ .default(3)
81
+ .describe(`
82
+ The target maximum number of timestamped JSON words shown in a caption. Captions break earlier at sentence-ending punctuation or pauses longer than 0.4 seconds. With \`"style": "social"\`, a trailing English function word such as “by,” “to,” or “the” moves to the next caption when possible. Short phrases such as “line of code” can stay together, and a sentence-final single word can join the previous caption. These adjustments allow at most one extra word per caption, without crossing sentence endings or long pauses. Single-word captions are preserved when the limit is 1. A caption stays visible until the next caption starts when the pause is at most 0.4 seconds, and disappears at its last word’s end during longer pauses. Does not change SRT, VTT, or ASS cues.
71
83
  `),
72
84
  border_style: z
73
85
  .enum(['box', 'outline', 'shadow'])
@@ -75,37 +87,39 @@ Determines if subtitles are added as a separate stream to the video (value \`"ex
75
87
  .describe(`
76
88
  Specifies the style of the subtitle. Use the \`border_color\` parameter to specify the color of the border.
77
89
  `),
78
- border_color: color_with_alpha.default('40000000').describe(`
79
- The color for the subtitle border. The first two hex digits specify the alpha value of the color.
90
+ border_color: subtitleColorSchema.default('000000').describe(`
91
+ The color for the subtitle border. The default is opaque black. Only applies to burned subtitles.
92
+
93
+ ${subtitleColorDescription}
80
94
  `),
95
+ // Preserve omitted appearance fields so parsing cannot override the selected style's defaults.
81
96
  // TODO: Make font an enum
82
97
  font: z
83
98
  .string()
84
- .default('Arial')
99
+ .optional()
85
100
  .describe(`
86
- The font family to use. Also includes boldness and style of the font.
101
+ The font family to use. Also includes boldness and style of the font. The default is Arial. With \`"style": "social"\`, the default is ${videoSubtitleSocialStyle.font}, using its ExtraBold weight for JSON captions. An explicit font overrides the style.
87
102
 
88
103
  [Here](/docs/supported-formats/fonts/) is a list of all supported fonts.
89
104
  `),
90
- font_color: z
91
- .union([color_without_alpha, color_with_alpha])
92
- .default('FFFFFF')
93
- .describe(`
94
- The color of the subtitle text in \`"rgb"\`, \`"rrggbb"\`, or \`"aarrggbb"\` format. If 8 hex digits are provided, the first two specify the alpha value of the color (\`"00"\` is fully opaque, \`"ff"\` is fully transparent).
105
+ font_color: subtitleColorSchema.default('FFFFFF').describe(`
106
+ The color of the subtitle text. Only applies to burned subtitles.
107
+
108
+ ${subtitleColorDescription}
95
109
  `),
96
110
  font_size: z
97
111
  .number()
98
112
  .int()
99
113
  .min(1)
100
- .default(16)
114
+ .optional()
101
115
  .describe(`
102
- Specifies the size of the text.
116
+ Specifies the size of the text in the 288-pixel subtitle coordinate space, scaled with the video height. The default is 16. With \`"style": "social"\`, the default is ${videoSubtitleSocialStyle.font_size}. For social JSON captions, an omitted value scales this default with the shorter side of the video, increases it by 18% for portrait video, and shrinks captions as needed to fit at most two lines. Poppins capital letters are about 7.5% of the shorter side before fitting, or about 9% for portrait video. An explicit value keeps height-relative sizing and disables automatic fitting.
103
117
  `),
104
118
  bold: z
105
119
  .boolean()
106
- .default(false)
120
+ .optional()
107
121
  .describe(`
108
- Specifies whether the subtitle text should be bold. Only applies to burned subtitles.
122
+ Specifies whether the subtitle text should be bold. Only applies to burned subtitles. The default is \`false\`. With \`"style": "social"\`, the default is \`${videoSubtitleSocialStyle.bold}\`; an explicit \`false\` overrides the style.
109
123
  `),
110
124
  italic: z
111
125
  .boolean()
@@ -121,10 +135,10 @@ Specifies whether the subtitle text should be italic. Only applies to burned sub
121
135
  .optional()
122
136
  .nullable()
123
137
  .describe(`
124
- Specifies the width of the text outline in pixels. Only applies to burned subtitles with \`"outline"\` or \`"box"\` border styles. If not specified, the default width is used.
138
+ Specifies the width of the text outline in the 288-pixel subtitle coordinate space, scaled with the video height. Numeric strings such as \`"4"\` are also accepted. Only applies to burned subtitles with \`"outline"\` or \`"box"\` border styles. If omitted or \`null\`, the default width is used (2 with \`"style": "social"\`, proportional to the final fitted font size for social JSON captions).
125
139
  `),
126
140
  position: positionSchema.default('bottom').describe(`
127
- Specifies the position of the subtitles.
141
+ Specifies the position of the subtitles. With \`"style": "social"\`, the default bottom position places JSON captions in the lower third, with extra bottom clearance on portrait video. An explicit value overrides the style.
128
142
  `),
129
143
  language: z
130
144
  .string()
@@ -434,10 +434,10 @@ export declare const robotVideoThumbsInstructionsSchema: z.ZodObject<{
434
434
  } & {
435
435
  robot: z.ZodLiteral<"/video/thumbs">;
436
436
  count: z.ZodDefault<z.ZodNumber>;
437
- offsets: z.ZodDefault<z.ZodUnion<[z.ZodArray<z.ZodNumber, "many">, z.ZodArray<z.ZodString, "many">]>>;
437
+ offsets: z.ZodDefault<z.ZodNullable<z.ZodUnion<[z.ZodArray<z.ZodNumber, "many">, z.ZodArray<z.ZodString, "many">]>>>;
438
438
  format: z.ZodDefault<z.ZodEnum<["jpeg", "jpg", "png"]>>;
439
- width: z.ZodOptional<z.ZodNumber>;
440
- height: z.ZodOptional<z.ZodNumber>;
439
+ width: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
440
+ height: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
441
441
  resize_strategy: z.ZodDefault<z.ZodEnum<["crop", "fit", "fillcrop", "min_fit", "pad", "stretch"]>>;
442
442
  background: z.ZodDefault<z.ZodString>;
443
443
  rotate: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>, z.ZodLiteral<360>]>>;
@@ -458,7 +458,7 @@ export declare const robotVideoThumbsInstructionsSchema: z.ZodObject<{
458
458
  count: number;
459
459
  smart: boolean;
460
460
  smart_max_candidates: number;
461
- offsets: string[] | number[];
461
+ offsets: string[] | number[] | null;
462
462
  ffmpeg?: z.objectOutputType<{
463
463
  af: z.ZodOptional<z.ZodString>;
464
464
  'b:a': z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
@@ -597,8 +597,8 @@ export declare const robotVideoThumbsInstructionsSchema: z.ZodObject<{
597
597
  interpolate?: boolean | Record<string, boolean> | undefined;
598
598
  output_meta?: boolean | string[] | Record<string, boolean> | undefined;
599
599
  queue?: "batch" | undefined;
600
- width?: number | undefined;
601
- height?: number | undefined;
600
+ width?: number | null | undefined;
601
+ height?: number | null | undefined;
602
602
  input_codec?: string | undefined;
603
603
  }, {
604
604
  robot: "/video/thumbs";
@@ -745,8 +745,8 @@ export declare const robotVideoThumbsInstructionsSchema: z.ZodObject<{
745
745
  force_accept?: boolean | undefined;
746
746
  ignore_errors?: boolean | ("meta" | "execute")[] | undefined;
747
747
  ffmpeg_stack?: string | undefined;
748
- width?: number | undefined;
749
- height?: number | undefined;
748
+ width?: number | null | undefined;
749
+ height?: number | null | undefined;
750
750
  resize_strategy?: "crop" | "fit" | "fillcrop" | "min_fit" | "pad" | "stretch" | undefined;
751
751
  background?: string | undefined;
752
752
  rotate?: 0 | 90 | 180 | 270 | 360 | undefined;
@@ -754,7 +754,7 @@ export declare const robotVideoThumbsInstructionsSchema: z.ZodObject<{
754
754
  count?: number | undefined;
755
755
  smart?: boolean | undefined;
756
756
  smart_max_candidates?: number | undefined;
757
- offsets?: string[] | number[] | undefined;
757
+ offsets?: string[] | number[] | null | undefined;
758
758
  input_codec?: string | undefined;
759
759
  }>;
760
760
  export declare const robotDefinition: RobotDefinition<typeof robotVideoThumbsInstructionsSchema.shape>;
@@ -1177,10 +1177,10 @@ export declare const robotVideoThumbsInstructionsWithHiddenFieldsSchema: z.ZodOb
1177
1177
  ffmpeg_stack: z.ZodDefault<z.ZodUnion<[z.ZodEnum<["v6", "v7", "v8"]>, z.ZodString]>>;
1178
1178
  robot: z.ZodLiteral<"/video/thumbs">;
1179
1179
  count: z.ZodDefault<z.ZodNumber>;
1180
- offsets: z.ZodDefault<z.ZodUnion<[z.ZodArray<z.ZodNumber, "many">, z.ZodArray<z.ZodString, "many">]>>;
1180
+ offsets: z.ZodDefault<z.ZodNullable<z.ZodUnion<[z.ZodArray<z.ZodNumber, "many">, z.ZodArray<z.ZodString, "many">]>>>;
1181
1181
  format: z.ZodDefault<z.ZodEnum<["jpeg", "jpg", "png"]>>;
1182
- width: z.ZodOptional<z.ZodNumber>;
1183
- height: z.ZodOptional<z.ZodNumber>;
1182
+ width: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1183
+ height: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1184
1184
  resize_strategy: z.ZodDefault<z.ZodEnum<["crop", "fit", "fillcrop", "min_fit", "pad", "stretch"]>>;
1185
1185
  background: z.ZodDefault<z.ZodString>;
1186
1186
  rotate: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>, z.ZodLiteral<360>]>>;
@@ -1202,7 +1202,7 @@ export declare const robotVideoThumbsInstructionsWithHiddenFieldsSchema: z.ZodOb
1202
1202
  count: number;
1203
1203
  smart: boolean;
1204
1204
  smart_max_candidates: number;
1205
- offsets: string[] | number[];
1205
+ offsets: string[] | number[] | null;
1206
1206
  result?: boolean | "debug" | undefined;
1207
1207
  ffmpeg?: z.objectOutputType<{
1208
1208
  af: z.ZodOptional<z.ZodString>;
@@ -1342,8 +1342,8 @@ export declare const robotVideoThumbsInstructionsWithHiddenFieldsSchema: z.ZodOb
1342
1342
  interpolate?: boolean | Record<string, boolean> | undefined;
1343
1343
  output_meta?: boolean | string[] | Record<string, boolean> | undefined;
1344
1344
  queue?: "batch" | undefined;
1345
- width?: number | undefined;
1346
- height?: number | undefined;
1345
+ width?: number | null | undefined;
1346
+ height?: number | null | undefined;
1347
1347
  input_codec?: string | undefined;
1348
1348
  }, {
1349
1349
  robot: "/video/thumbs";
@@ -1490,8 +1490,8 @@ export declare const robotVideoThumbsInstructionsWithHiddenFieldsSchema: z.ZodOb
1490
1490
  force_accept?: boolean | undefined;
1491
1491
  ignore_errors?: boolean | ("meta" | "execute")[] | undefined;
1492
1492
  ffmpeg_stack?: string | undefined;
1493
- width?: number | undefined;
1494
- height?: number | undefined;
1493
+ width?: number | null | undefined;
1494
+ height?: number | null | undefined;
1495
1495
  resize_strategy?: "crop" | "fit" | "fillcrop" | "min_fit" | "pad" | "stretch" | undefined;
1496
1496
  background?: string | undefined;
1497
1497
  rotate?: 0 | 90 | 180 | 270 | 360 | undefined;
@@ -1499,7 +1499,7 @@ export declare const robotVideoThumbsInstructionsWithHiddenFieldsSchema: z.ZodOb
1499
1499
  count?: number | undefined;
1500
1500
  smart?: boolean | undefined;
1501
1501
  smart_max_candidates?: number | undefined;
1502
- offsets?: string[] | number[] | undefined;
1502
+ offsets?: string[] | number[] | null | undefined;
1503
1503
  input_codec?: string | undefined;
1504
1504
  }>, interpolatableRobotVideoThumbsInstructionsSchema: z.ZodObject<{
1505
1505
  interpolate: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["true", "false"]>]>, boolean, boolean | "true" | "false">, z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["true", "false"]>]>, boolean, boolean | "true" | "false">>]>>;
@@ -1921,10 +1921,10 @@ export declare const robotVideoThumbsInstructionsWithHiddenFieldsSchema: z.ZodOb
1921
1921
  ffmpeg_stack: z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodUnion<[z.ZodString, z.ZodEnum<["v6", "v7", "v8"]>]>, z.ZodString]>>;
1922
1922
  robot: z.ZodLiteral<"/video/thumbs">;
1923
1923
  count: z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1924
- offsets: z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">]>, z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>]>>;
1924
+ offsets: z.ZodDefault<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">]>, z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>]>>>;
1925
1925
  format: z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodEnum<["jpeg", "jpg", "png"]>]>>;
1926
- width: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1927
- height: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
1926
+ width: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
1927
+ height: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
1928
1928
  resize_strategy: z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodEnum<["crop", "fit", "fillcrop", "min_fit", "pad", "stretch"]>]>>;
1929
1929
  background: z.ZodDefault<z.ZodString>;
1930
1930
  rotate: z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodUnion<[z.ZodString, z.ZodLiteral<0>]>, z.ZodUnion<[z.ZodString, z.ZodLiteral<90>]>, z.ZodUnion<[z.ZodString, z.ZodLiteral<180>]>, z.ZodUnion<[z.ZodString, z.ZodLiteral<270>]>, z.ZodUnion<[z.ZodString, z.ZodLiteral<360>]>]>>;
@@ -1945,7 +1945,7 @@ export declare const robotVideoThumbsInstructionsWithHiddenFieldsSchema: z.ZodOb
1945
1945
  count: string | number;
1946
1946
  smart: string | boolean;
1947
1947
  smart_max_candidates: string | number;
1948
- offsets: string | (string | number)[] | string[];
1948
+ offsets: string | (string | number)[] | string[] | null;
1949
1949
  ffmpeg?: string | z.objectOutputType<{
1950
1950
  af: z.ZodOptional<z.ZodString>;
1951
1951
  'b:a': z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>]>>;
@@ -2084,8 +2084,8 @@ export declare const robotVideoThumbsInstructionsWithHiddenFieldsSchema: z.ZodOb
2084
2084
  interpolate?: boolean | Record<string, boolean> | undefined;
2085
2085
  output_meta?: string | boolean | string[] | Record<string, string | boolean> | undefined;
2086
2086
  queue?: string | undefined;
2087
- width?: string | number | undefined;
2088
- height?: string | number | undefined;
2087
+ width?: string | number | null | undefined;
2088
+ height?: string | number | null | undefined;
2089
2089
  input_codec?: string | undefined;
2090
2090
  }, {
2091
2091
  robot: "/video/thumbs";
@@ -2232,8 +2232,8 @@ export declare const robotVideoThumbsInstructionsWithHiddenFieldsSchema: z.ZodOb
2232
2232
  force_accept?: string | boolean | undefined;
2233
2233
  ignore_errors?: string | boolean | ("meta" | "execute")[] | undefined;
2234
2234
  ffmpeg_stack?: string | undefined;
2235
- width?: string | number | undefined;
2236
- height?: string | number | undefined;
2235
+ width?: string | number | null | undefined;
2236
+ height?: string | number | null | undefined;
2237
2237
  resize_strategy?: string | undefined;
2238
2238
  background?: string | undefined;
2239
2239
  rotate?: string | 0 | 90 | 180 | 270 | 360 | undefined;
@@ -2241,7 +2241,7 @@ export declare const robotVideoThumbsInstructionsWithHiddenFieldsSchema: z.ZodOb
2241
2241
  count?: string | number | undefined;
2242
2242
  smart?: string | boolean | undefined;
2243
2243
  smart_max_candidates?: string | number | undefined;
2244
- offsets?: string | (string | number)[] | string[] | undefined;
2244
+ offsets?: string | (string | number)[] | string[] | null | undefined;
2245
2245
  input_codec?: string | undefined;
2246
2246
  }>, interpolatableRobotVideoThumbsInstructionsWithHiddenFieldsSchema: z.ZodObject<{
2247
2247
  interpolate: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["true", "false"]>]>, boolean, boolean | "true" | "false">, z.ZodRecord<z.ZodString, z.ZodEffects<z.ZodUnion<[z.ZodBoolean, z.ZodEnum<["true", "false"]>]>, boolean, boolean | "true" | "false">>]>>;
@@ -2662,10 +2662,10 @@ export declare const robotVideoThumbsInstructionsWithHiddenFieldsSchema: z.ZodOb
2662
2662
  ffmpeg_stack: z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodUnion<[z.ZodString, z.ZodEnum<["v6", "v7", "v8"]>]>, z.ZodString]>>;
2663
2663
  robot: z.ZodLiteral<"/video/thumbs">;
2664
2664
  count: z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
2665
- offsets: z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">]>, z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>]>>;
2665
+ offsets: z.ZodDefault<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">]>, z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>]>>>;
2666
2666
  format: z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodEnum<["jpeg", "jpg", "png"]>]>>;
2667
- width: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
2668
- height: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
2667
+ width: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
2668
+ height: z.ZodOptional<z.ZodNullable<z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
2669
2669
  resize_strategy: z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodEnum<["crop", "fit", "fillcrop", "min_fit", "pad", "stretch"]>]>>;
2670
2670
  background: z.ZodDefault<z.ZodString>;
2671
2671
  rotate: z.ZodDefault<z.ZodUnion<[z.ZodString, z.ZodUnion<[z.ZodString, z.ZodLiteral<0>]>, z.ZodUnion<[z.ZodString, z.ZodLiteral<90>]>, z.ZodUnion<[z.ZodString, z.ZodLiteral<180>]>, z.ZodUnion<[z.ZodString, z.ZodLiteral<270>]>, z.ZodUnion<[z.ZodString, z.ZodLiteral<360>]>]>>;
@@ -2686,7 +2686,7 @@ export declare const robotVideoThumbsInstructionsWithHiddenFieldsSchema: z.ZodOb
2686
2686
  count: string | number;
2687
2687
  smart: string | boolean;
2688
2688
  smart_max_candidates: string | number;
2689
- offsets: string | (string | number)[] | string[];
2689
+ offsets: string | (string | number)[] | string[] | null;
2690
2690
  result?: string | boolean | undefined;
2691
2691
  ffmpeg?: string | z.objectOutputType<{
2692
2692
  af: z.ZodOptional<z.ZodString>;
@@ -2826,8 +2826,8 @@ export declare const robotVideoThumbsInstructionsWithHiddenFieldsSchema: z.ZodOb
2826
2826
  interpolate?: boolean | Record<string, boolean> | undefined;
2827
2827
  output_meta?: string | boolean | string[] | Record<string, string | boolean> | undefined;
2828
2828
  queue?: string | undefined;
2829
- width?: string | number | undefined;
2830
- height?: string | number | undefined;
2829
+ width?: string | number | null | undefined;
2830
+ height?: string | number | null | undefined;
2831
2831
  input_codec?: string | undefined;
2832
2832
  }, {
2833
2833
  robot: "/video/thumbs";
@@ -2974,8 +2974,8 @@ export declare const robotVideoThumbsInstructionsWithHiddenFieldsSchema: z.ZodOb
2974
2974
  force_accept?: string | boolean | undefined;
2975
2975
  ignore_errors?: string | boolean | ("meta" | "execute")[] | undefined;
2976
2976
  ffmpeg_stack?: string | undefined;
2977
- width?: string | number | undefined;
2978
- height?: string | number | undefined;
2977
+ width?: string | number | null | undefined;
2978
+ height?: string | number | null | undefined;
2979
2979
  resize_strategy?: string | undefined;
2980
2980
  background?: string | undefined;
2981
2981
  rotate?: string | 0 | 90 | 180 | 270 | 360 | undefined;
@@ -2983,7 +2983,7 @@ export declare const robotVideoThumbsInstructionsWithHiddenFieldsSchema: z.ZodOb
2983
2983
  count?: string | number | undefined;
2984
2984
  smart?: string | boolean | undefined;
2985
2985
  smart_max_candidates?: string | number | undefined;
2986
- offsets?: string | (string | number)[] | string[] | undefined;
2986
+ offsets?: string | (string | number)[] | string[] | null | undefined;
2987
2987
  input_codec?: string | undefined;
2988
2988
  }>;
2989
2989
  type Instructions = RobotSchemaVariantTypes<typeof robotDefinition>;
@@ -1 +1 @@
1
- {"version":3,"file":"video-thumbs.d.ts","sourceRoot":"","sources":["../../../src/v3/robots/video-thumbs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"video-thumbs.d.ts","sourceRoot":"","sources":["../../../src/v3/robots/video-thumbs.ts"],"names":[],"mappings":"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"}
@@ -67,7 +67,8 @@ The thumbnails are taken at regular intervals, determined by dividing the video
67
67
  To extract thumbnails for specific timestamps, use the \`offsets\` parameter.
68
68
  `),
69
69
  offsets: z
70
- .union([z.array(z.number()), z.array(percentageSchema)])
70
+ .union([z.array(z.number().finite()), z.array(percentageSchema)])
71
+ .nullable()
71
72
  .default([])
72
73
  .describe(`
73
74
  An array of offsets representing seconds of the file duration, such as \`[ 2, 45, 120 ]\`. Millisecond durations of a file can also be used by using decimal place values. For example, an offset from 1250 milliseconds would be represented with \`1.25\`. Offsets can also be percentage values such as \`[ "2%", "50%", "75%" ]\`.
@@ -75,6 +76,8 @@ An array of offsets representing seconds of the file duration, such as \`[ 2, 45
75
76
  This option cannot be used with the \`count\` parameter, and takes precedence if both are specified. Out-of-range offsets are silently ignored.
76
77
 
77
78
  When \`smart\` is \`true\`, smart selection ignores \`offsets\` and uses \`count\` to select from its own candidate timestamps. If no smart candidates can be extracted, the Robot falls back to standard extraction, where \`offsets\` takes precedence. Use \`smart: false\` to consistently extract the specified timestamps.
79
+
80
+ Use \`null\` to leave timestamp selection to \`count\` and \`smart\`.
78
81
  `),
79
82
  format: z
80
83
  .enum(['jpeg', 'jpg', 'png'])
@@ -87,18 +90,20 @@ The format of the extracted thumbnail. Supported values are \`"jpg"\`, \`"jpeg"\
87
90
  .int()
88
91
  .min(1)
89
92
  .max(1920)
93
+ .nullable()
90
94
  .optional()
91
95
  .describe(`
92
- The width of the thumbnail, in pixels. Defaults to the original width of the video.
96
+ The width of the thumbnail, in pixels. Omit or use \`null\` for the original width of the video.
93
97
  `),
94
98
  height: z
95
99
  .number()
96
100
  .int()
97
101
  .min(1)
98
102
  .max(1080)
103
+ .nullable()
99
104
  .optional()
100
105
  .describe(`
101
- The height of the thumbnail, in pixels. Defaults to the original height of the video.
106
+ The height of the thumbnail, in pixels. Omit or use \`null\` for the original height of the video.
102
107
  `),
103
108
  resize_strategy: resize_strategy.describe(`
104
109
  One of the [available resize strategies](/docs/topics/resize-strategies/).
@@ -1 +1 @@
1
- {"version":3,"file":"vimeo-import.d.ts","sourceRoot":"","sources":["../../../src/v3/robots/vimeo-import.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpF,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAW1B,eAAO,MAAM,IAAI,EAAE,cAwBlB,CAAA;AAED,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCpC,CAAA;AAEX,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAC7F,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAElG,eAAO,MAAM,gDAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE5D,CAAA;AACD,MAAM,MAAM,0CAA0C,GACpD,+CAA+C,CAAA;AAEjD,MAAM,MAAM,+CAA+C,GAAG,CAAC,CAAC,KAAK,CACnE,OAAO,gDAAgD,CACxD,CAAA;AAED,eAAO,MAAM,kDAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY3D,CAAA;AAEJ,eAAO,MAAM,gEAAgE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE5E,CAAA;AACD,MAAM,MAAM,0DAA0D,GAAG,CAAC,CAAC,KAAK,CAC9E,OAAO,gEAAgE,CACxE,CAAA;AACD,MAAM,MAAM,+DAA+D,GAAG,CAAC,CAAC,KAAK,CACnF,OAAO,gEAAgE,CACxE,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,OAAO,gDAAgD,EACvD,OAAO,gEAAgE,CAKxE,CAAA"}
1
+ {"version":3,"file":"vimeo-import.d.ts","sourceRoot":"","sources":["../../../src/v3/robots/vimeo-import.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpF,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAA;AAW1B,eAAO,MAAM,IAAI,EAAE,cAwBlB,CAAA;AAED,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCpC,CAAA;AAEX,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAC7F,MAAM,MAAM,iCAAiC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAA;AAElG,eAAO,MAAM,gDAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE5D,CAAA;AACD,MAAM,MAAM,0CAA0C,GACpD,+CAA+C,CAAA;AAEjD,MAAM,MAAM,+CAA+C,GAAG,CAAC,CAAC,KAAK,CACnE,OAAO,gDAAgD,CACxD,CAAA;AAED,eAAO,MAAM,kDAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY3D,CAAA;AAEJ,eAAO,MAAM,gEAAgE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE5E,CAAA;AACD,MAAM,MAAM,0DAA0D,GAAG,CAAC,CAAC,KAAK,CAC9E,OAAO,gEAAgE,CACxE,CAAA;AACD,MAAM,MAAM,+DAA+D,GAAG,CAAC,CAAC,KAAK,CACnF,OAAO,gEAAgE,CACxE,CAAA;AAED,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,OAAO,gDAAgD,EACvD,OAAO,gEAAgE,CAKxE,CAAA"}
@@ -58,7 +58,7 @@ You can also use an array of path strings here to import multiple paths in the s
58
58
  rendition: z
59
59
  .enum(['240p', '360p', '540p', '720p', '1080p', 'source'])
60
60
  .default('720p')
61
- .describe('The quality of the video to import.'),
61
+ .describe('The quality of the video to import. Use `source` for the original upload. Source availability depends on video permissions, your Vimeo account, the access token’s `video_files` scope, and whether Vimeo has retained the source file. The import fails with an error if the source file is unavailable.'),
62
62
  })
63
63
  .strict();
64
64
  export const interpolatableRobotVimeoImportInstructionsSchema = interpolateRobot(robotVimeoImportInstructionsSchema);