@giveitsmaller/contracts 0.4.0 → 0.5.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 (352) hide show
  1. package/asyncapi/events.yaml +455 -41
  2. package/availability/availability.json +527 -78
  3. package/dist/asyncapi/OperationType.d.ts +5 -1
  4. package/dist/asyncapi/OperationType.js +4 -0
  5. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  6. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  7. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  8. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  9. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  10. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  11. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  12. package/dist/openapi/models/AuthErrorType.js +1 -1
  13. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  14. package/dist/openapi/models/AvailabilityValue.js +1 -1
  15. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  16. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  17. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  18. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  19. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  20. package/dist/openapi/models/CallbackEventType.js +1 -1
  21. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  22. package/dist/openapi/models/ConnectionSource.js +1 -1
  23. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  24. package/dist/openapi/models/ContactRequest.js +1 -1
  25. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  26. package/dist/openapi/models/ContactSubject.js +1 -1
  27. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  28. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  29. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  30. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  31. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  32. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  33. package/dist/openapi/models/CreateWorkflow422Response.d.ts +3 -2
  34. package/dist/openapi/models/CreateWorkflow422Response.js +8 -1
  35. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  36. package/dist/openapi/models/CreditTransaction.js +1 -1
  37. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  38. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  39. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  40. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  41. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  42. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  43. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  44. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  45. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  46. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  47. package/dist/openapi/models/Delivery.d.ts +1 -1
  48. package/dist/openapi/models/Delivery.js +1 -1
  49. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  50. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  51. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  52. package/dist/openapi/models/DeliveryPlan.js +1 -1
  53. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  54. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  55. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  56. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  57. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  58. package/dist/openapi/models/DeliverySelection.js +1 -1
  59. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  60. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  61. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  62. package/dist/openapi/models/EstimateQuality.js +1 -1
  63. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  64. package/dist/openapi/models/EstimateRange.js +1 -1
  65. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  66. package/dist/openapi/models/ExternalDestination.js +1 -1
  67. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  68. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  69. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  70. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  71. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  72. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  73. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  74. package/dist/openapi/models/ExternalImportToken.js +1 -1
  75. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  76. package/dist/openapi/models/ExternalSource.js +1 -1
  77. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  78. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  79. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  80. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  81. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  82. package/dist/openapi/models/FeatureViolation.js +1 -1
  83. package/dist/openapi/models/JobDefinition.d.ts +17 -6
  84. package/dist/openapi/models/JobDefinition.js +1 -1
  85. package/dist/openapi/models/JobDownload.d.ts +1 -1
  86. package/dist/openapi/models/JobDownload.js +1 -1
  87. package/dist/openapi/models/JobInputV2.d.ts +16 -1
  88. package/dist/openapi/models/JobInputV2.js +1 -1
  89. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  90. package/dist/openapi/models/JobOutputSource.js +1 -1
  91. package/dist/openapi/models/JobResponse.d.ts +1 -1
  92. package/dist/openapi/models/JobResponse.js +1 -1
  93. package/dist/openapi/models/JobStatus.d.ts +1 -1
  94. package/dist/openapi/models/JobStatus.js +1 -1
  95. package/dist/openapi/models/JobType.d.ts +1 -1
  96. package/dist/openapi/models/JobType.js +1 -1
  97. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  98. package/dist/openapi/models/LivenessResponse.js +1 -1
  99. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  100. package/dist/openapi/models/LoginUser200Response.js +1 -1
  101. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  102. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  103. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  104. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  105. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  106. package/dist/openapi/models/LoginUserRequest.js +1 -1
  107. package/dist/openapi/models/LogoutUser200Response.d.ts +1 -1
  108. package/dist/openapi/models/LogoutUser200Response.js +1 -1
  109. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  110. package/dist/openapi/models/MetadataResponse.js +1 -1
  111. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  112. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  113. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  114. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  115. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  116. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  117. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  118. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  119. package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
  120. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  121. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  122. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  123. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  124. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  125. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  126. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  127. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  128. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  129. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  130. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  131. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  132. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  133. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  134. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  135. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  136. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  137. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  138. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  139. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  140. package/dist/openapi/models/MultipartPartListing.js +1 -1
  141. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  142. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  143. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  144. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  145. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  146. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  147. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  148. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  149. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  150. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  151. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  152. package/dist/openapi/models/OperationDefinition.js +1 -1
  153. package/dist/openapi/models/OperationDownload.d.ts +1 -1
  154. package/dist/openapi/models/OperationDownload.js +1 -1
  155. package/dist/openapi/models/OperationInputModel.d.ts +4 -3
  156. package/dist/openapi/models/OperationInputModel.js +4 -3
  157. package/dist/openapi/models/OperationResponse.d.ts +1 -1
  158. package/dist/openapi/models/OperationResponse.js +1 -1
  159. package/dist/openapi/models/OperationResult.d.ts +1 -1
  160. package/dist/openapi/models/OperationResult.js +1 -1
  161. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  162. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  163. package/dist/openapi/models/OperationSchemaDefinition.d.ts +23 -2
  164. package/dist/openapi/models/OperationSchemaDefinition.js +4 -1
  165. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  166. package/dist/openapi/models/OperationStatus.js +1 -1
  167. package/dist/openapi/models/OperationType.d.ts +10 -2
  168. package/dist/openapi/models/OperationType.js +11 -3
  169. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  170. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  171. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  172. package/dist/openapi/models/OptionSchema.js +1 -1
  173. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +47 -0
  174. package/dist/openapi/models/PerRoleCardinalityEntry.js +47 -0
  175. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  176. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  177. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  178. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  179. package/dist/openapi/models/ProbePendingResponse.d.ts +171 -0
  180. package/dist/openapi/models/ProbePendingResponse.js +75 -0
  181. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  182. package/dist/openapi/models/ProcessingClass.js +1 -1
  183. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  184. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  185. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  186. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  187. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  188. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  189. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  190. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  191. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  192. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  193. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  194. package/dist/openapi/models/ProcessingPlan.js +1 -1
  195. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  196. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  197. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  198. package/dist/openapi/models/ReadinessResponse.js +1 -1
  199. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  200. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  201. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  202. package/dist/openapi/models/RetryResponse.js +1 -1
  203. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  204. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  205. package/dist/openapi/models/SseEventType.d.ts +1 -1
  206. package/dist/openapi/models/SseEventType.js +1 -1
  207. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  208. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  209. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  210. package/dist/openapi/models/SseJobFailedData.js +1 -1
  211. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +60 -0
  212. package/dist/openapi/models/SseMultiOutputCompletion.js +51 -0
  213. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +38 -0
  214. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +43 -0
  215. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +75 -0
  216. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +61 -0
  217. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +74 -0
  218. package/dist/openapi/models/SseMultiOutputResultEntry.js +51 -0
  219. package/dist/openapi/models/SseOperationCompletedData.d.ts +4 -4
  220. package/dist/openapi/models/SseOperationCompletedData.js +4 -4
  221. package/dist/openapi/models/SseOperationCompletionResult.d.ts +60 -0
  222. package/dist/openapi/models/SseOperationCompletionResult.js +47 -0
  223. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  224. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  225. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  226. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  227. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +72 -0
  228. package/dist/openapi/models/SseSingleOutputCompletion.js +62 -0
  229. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  230. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  231. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  232. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  233. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  234. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  235. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  236. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  237. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  238. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  239. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  240. package/dist/openapi/models/UploadFile403Response.js +1 -1
  241. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  242. package/dist/openapi/models/UploadFile422Response.js +1 -1
  243. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  244. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  245. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  246. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  247. package/dist/openapi/models/UploadProbeResponse.d.ts +4 -2
  248. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  249. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  250. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  251. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +56 -0
  252. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +54 -0
  253. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  254. package/dist/openapi/models/UploadResponse.js +1 -1
  255. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  256. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  257. package/dist/openapi/models/UploadSource.d.ts +1 -1
  258. package/dist/openapi/models/UploadSource.js +1 -1
  259. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  260. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  261. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  262. package/dist/openapi/models/UploadThresholds.js +1 -1
  263. package/dist/openapi/models/UserTier.d.ts +1 -1
  264. package/dist/openapi/models/UserTier.js +1 -1
  265. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  266. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  267. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  268. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  269. package/dist/openapi/models/WarningType.d.ts +1 -1
  270. package/dist/openapi/models/WarningType.js +1 -1
  271. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  272. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  273. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  274. package/dist/openapi/models/WebhookPayload.js +1 -1
  275. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  276. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  277. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  278. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  279. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  280. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  281. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  282. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  283. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  284. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  285. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  286. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  287. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  288. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  289. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  290. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  291. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  292. package/dist/openapi/models/WorkflowEdge.js +1 -1
  293. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  294. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  295. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  296. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  297. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  298. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  299. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  300. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  301. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  302. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  303. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  304. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  305. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  306. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  307. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  308. package/dist/openapi/models/WorkflowSource.js +1 -1
  309. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  310. package/dist/openapi/models/WorkflowStatus.js +1 -1
  311. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  312. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  313. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  314. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  315. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  316. package/dist/openapi/models/WorkflowWarning.js +1 -1
  317. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  318. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  319. package/dist/openapi/models/index.d.ts +9 -0
  320. package/dist/openapi/models/index.js +9 -0
  321. package/dist/openapi/runtime.d.ts +1 -1
  322. package/dist/openapi/runtime.js +1 -1
  323. package/dist/operations/audio_to_video.d.ts +20 -0
  324. package/dist/operations/audio_to_video.js +17 -0
  325. package/dist/operations/audio_to_video.metadata.d.ts +2 -0
  326. package/dist/operations/audio_to_video.metadata.js +29 -0
  327. package/dist/operations/image_watermark.d.ts +0 -18
  328. package/dist/operations/image_watermark.js +0 -12
  329. package/dist/operations/image_watermark.metadata.js +0 -41
  330. package/dist/operations/index.d.ts +8 -0
  331. package/dist/operations/index.js +8 -0
  332. package/dist/operations/metadata-types.d.ts +17 -0
  333. package/dist/operations/split.d.ts +50 -0
  334. package/dist/operations/split.js +34 -0
  335. package/dist/operations/split.metadata.d.ts +2 -0
  336. package/dist/operations/split.metadata.js +103 -0
  337. package/dist/operations/video_text_watermark.d.ts +31 -0
  338. package/dist/operations/video_text_watermark.js +22 -0
  339. package/dist/operations/video_text_watermark.metadata.d.ts +2 -0
  340. package/dist/operations/video_text_watermark.metadata.js +65 -0
  341. package/dist/operations/video_watermark.d.ts +18 -0
  342. package/dist/operations/video_watermark.js +13 -0
  343. package/dist/operations/video_watermark.metadata.d.ts +2 -0
  344. package/dist/operations/video_watermark.metadata.js +52 -0
  345. package/openapi/api.yaml +523 -72
  346. package/operations/schemas/audio_to_video.yaml +122 -0
  347. package/operations/schemas/image_watermark.yaml +15 -103
  348. package/operations/schemas/split.yaml +309 -0
  349. package/operations/schemas/thumbnail.yaml +7 -1
  350. package/operations/schemas/video_text_watermark.yaml +174 -0
  351. package/operations/schemas/video_watermark.yaml +136 -0
  352. package/package.json +8 -3
@@ -1,5 +1,5 @@
1
1
  {
2
- "capabilities_version": 33,
2
+ "capabilities_version": 38,
3
3
  "environment": "baseline",
4
4
  "generated_at": null,
5
5
  "operations": {
@@ -368,6 +368,80 @@
368
368
  },
369
369
  "min_inputs": 2
370
370
  },
371
+ "audio_to_video": {
372
+ "availability": "planned",
373
+ "default": false,
374
+ "description": "Produce a video from an audio input plus an OPTIONAL still image\noverlay. Use cases: podcast \u2192 YouTube uploads, audio-only tracks\nthat need a video container for platforms requiring it, branded\naudio releases with a static cover image.\n\n**Role asymmetry.** First role-based operation on the contract\nwith an OPTIONAL role \u2014 REQUIRED `base` (audio source) +\nOPTIONAL `overlay` (still image, 0..1). When `overlay` is\nomitted, the video uses a solid `background_color`. The\nmachine-readable cardinality lives in `per_role_cardinality`\non this schema (per ADR-0015). API consumption site:\n`OperationInputRoleValidator` (rule table) consumed by\n`SchemaValidationService.php` in `compression_api`.\n\n**Input vs output asymmetry.** The single `mime_groups.audio`\nblock keys the INPUT MIME family (the `base` role input is\naudio). The OUTPUT is always video \u2014 `output_format` controls\nthe container; `mime_groups` is NOT the output type. Mirrors\nthe `audio_overlay.video` group pattern (input-keyed).\n\nRe-encode required (audio \u2192 video composition always re-encodes).\nLower framerate + FFmpeg `-tune stillimage` keeps file size\ntiny when the overlay is a still image (the common case).\n\nPer ticket [`SlluxMBN`](https://trello.com/c/SlluxMBN) +\nADR-0015. `availability: planned` until the cross-repo Lambda\nsupport ships; the API rejects workflow-create with\n`feature_not_available` (422) until then.\n",
375
+ "input_model": "multi",
376
+ "max_inputs": 2,
377
+ "mime_groups": {
378
+ "audio": {
379
+ "mimes": [
380
+ "audio/mpeg",
381
+ "audio/aac",
382
+ "audio/wav",
383
+ "audio/x-wav",
384
+ "audio/flac",
385
+ "audio/ogg",
386
+ "audio/opus",
387
+ "audio/x-m4a"
388
+ ],
389
+ "options": {
390
+ "background_color": {
391
+ "default": "#000000",
392
+ "description": "Hex `#RRGGBB` solid background colour. Used only when\n`overlay` is omitted (no image input). When an `overlay`\nimage is provided, the background colour is invisible\nbehind the image (subject to `image_fit`).\n",
393
+ "type": "string"
394
+ },
395
+ "framerate": {
396
+ "default": 2,
397
+ "description": "Output video framerate. Default `2` fps \u2014 combined with\nFFmpeg `-tune stillimage`, keeps the file size tiny for\nthe common case of a single still overlay. Raise for\nanimated overlays (not supported in V1 \u2014 overlay must be\na still image) or platform requirements (e.g. YouTube\nrecommends 24+ fps; some platforms accept lower).\n",
398
+ "max": 60,
399
+ "min": 1,
400
+ "type": "integer"
401
+ },
402
+ "image_fit": {
403
+ "default": "contain",
404
+ "description": "How to fit the overlay image into the output frame.\n`contain` = letterbox (preserve aspect ratio, may show\nbackground); `cover` = crop (fill the frame, may crop\nthe image); `stretch` = distort to fit (preserves no\naspect ratio). Default `contain` preserves the image\naesthetic.\n",
405
+ "type": "enum",
406
+ "values": [
407
+ "contain",
408
+ "cover",
409
+ "stretch"
410
+ ]
411
+ },
412
+ "output_format": {
413
+ "default": "mp4",
414
+ "description": "Output container format. V1 supports `mp4` only. Future\nadditions (webm, mov) await Lambda follow-up.\n",
415
+ "type": "enum",
416
+ "values": [
417
+ "mp4"
418
+ ]
419
+ },
420
+ "output_resolution": {
421
+ "default": "hd_720p",
422
+ "description": "Output video resolution. `hd_720p` = 1280\u00d7720 (default),\n`fhd_1080p` = 1920\u00d71080, `sd_480p` = 854\u00d7480. Choose\nlower for small file size; higher when the overlay image\nquality warrants it.\n",
423
+ "type": "enum",
424
+ "values": [
425
+ "hd_720p",
426
+ "fhd_1080p",
427
+ "sd_480p"
428
+ ]
429
+ }
430
+ }
431
+ }
432
+ },
433
+ "min_inputs": 1,
434
+ "per_role_cardinality": {
435
+ "base": {
436
+ "max": 1,
437
+ "min": 1
438
+ },
439
+ "overlay": {
440
+ "max": 1,
441
+ "min": 0
442
+ }
443
+ }
444
+ },
371
445
  "audio_watermark": {
372
446
  "availability": "planned",
373
447
  "default": false,
@@ -1242,7 +1316,7 @@
1242
1316
  },
1243
1317
  "image_watermark": {
1244
1318
  "default": false,
1245
- "description": "Apply an image overlay (file or external source) onto a base media\nasset. Multi-input: exactly one input with role: base (the source\nasset) + exactly one with role: overlay (the watermark). The overlay\ncan be an upload, an external_import handle, or a vault connection\nper WorkflowSource (ticket I10).\n\nStable today for static-image bases (image/jpeg, image/png,\nimage/webp); animated GIF and video bases are advertised as\n`planned` via parallel mime_groups (`image_gif`, `video`) \u2014 schema\nis contract-defined, dispatch returns `feature_not_available` (422)\nuntil Lambda support ships. Per Tension 1 (ADR-0001) +\nplan v5 \u00a7F4 round 6.\n\n**Audio is explicitly NOT supported.** For audio overlay (DJ tags,\npodcast intros, jingles), use the `audio_overlay` operation\n(declared in schemas/operations/audio_overlay.yaml at\n`availability: planned`).\n\nSource capped at 25 megapixels for image bases (V1 watermark\nprecedent retained); per-frame caps for GIF / video bases will be\ndefined when the corresponding Lambda support ships.\nPer ADR-0004 \u00a7\"V2 JobDefinition\" + plan v5 \u00a7F1.\n",
1319
+ "description": "Apply an image overlay (file or external source) onto a base media\nasset. Multi-input: exactly one input with role: base (the source\nasset) + exactly one with role: overlay (the watermark). The overlay\ncan be an upload, an external_import handle, or a vault connection\nper WorkflowSource (ticket I10).\n\nStable today for static-image bases (image/jpeg, image/png,\nimage/webp); animated GIF bases are advertised as `planned` via\nthe parallel `image_gif` mime_group \u2014 schema is contract-defined,\ndispatch returns `feature_not_available` (422) until Lambda\nsupport ships. Per Tension 1 (ADR-0001) + plan v5 \u00a7F4 round 6.\n\n**Video bases are NOT supported by `image_watermark`.** Use the\ndedicated `video_watermark` operation\n(`schemas/operations/video_watermark.yaml`) which routes through\nFFmpeg overlay + re-encode. Per ADR-0013.\n\n**Audio is explicitly NOT supported.** For audio overlay (DJ tags,\npodcast intros, jingles), use the `audio_overlay` operation\n(declared in schemas/operations/audio_overlay.yaml at\n`availability: planned`).\n\nSource capped at 25 megapixels for image bases (V1 watermark\nprecedent retained); per-frame caps for animated GIF bases will be\ndefined when the corresponding Lambda support ships.\nPer ADR-0004 \u00a7\"V2 JobDefinition\" + plan v5 \u00a7F1.\n",
1246
1320
  "features": {
1247
1321
  "multi_overlay_stack": {
1248
1322
  "availability": "planned",
@@ -1348,80 +1422,6 @@
1348
1422
  "type": "string"
1349
1423
  }
1350
1424
  }
1351
- },
1352
- "video": {
1353
- "availability": "planned",
1354
- "mimes": [
1355
- "video/mp4",
1356
- "video/webm"
1357
- ],
1358
- "options": {
1359
- "anchor": {
1360
- "default": "bottom_right",
1361
- "description": "9-grid anchor position on each video frame. Same semantics\nas the `image` group.\n",
1362
- "type": "enum",
1363
- "values": [
1364
- "top_left",
1365
- "top_center",
1366
- "top_right",
1367
- "center_left",
1368
- "center",
1369
- "center_right",
1370
- "bottom_left",
1371
- "bottom_center",
1372
- "bottom_right"
1373
- ]
1374
- },
1375
- "margin_x": {
1376
- "default": "0px",
1377
- "description": "Horizontal offset from the anchor in pixels or percentage of\nvideo frame width. Anchor-relative; positive moves toward\nthe frame centre.\n\n**`anchor: center` exception.** Same rejection rule as the\n`image` mime_group \u2014 non-zero `margin_x` with\n`anchor: center` is rejected by the API at workflow-create\ntime as `invalid_options` (HTTP 422).\n",
1378
- "pattern": "^\\d+(\\.\\d+)?(px|%)$",
1379
- "type": "string"
1380
- },
1381
- "margin_y": {
1382
- "default": "0px",
1383
- "description": "Vertical offset from the anchor in pixels or percentage of\nvideo frame height. Anchor-relative; positive moves toward\nthe frame centre.\n\n**`anchor: center` exception.** Same rejection rule as the\n`image` mime_group \u2014 non-zero `margin_y` with\n`anchor: center` is rejected by the API at workflow-create\ntime as `invalid_options` (HTTP 422).\n",
1384
- "pattern": "^\\d+(\\.\\d+)?(px|%)$",
1385
- "type": "string"
1386
- },
1387
- "opacity": {
1388
- "default": 0.5,
1389
- "description": "Overlay opacity (0 = fully transparent, 1 = fully opaque).\nClamped to range.\n",
1390
- "max": 1.0,
1391
- "min": 0.0,
1392
- "type": "float"
1393
- },
1394
- "overlay_width": {
1395
- "description": "Optional overlay width as pixels or percentage of video\nframe width. Aspect ratio preserved. Omit to use the\noriginal overlay size.\n",
1396
- "pattern": "^\\d+(\\.\\d+)?(px|%)$",
1397
- "type": "string"
1398
- }
1399
- },
1400
- "processing_class": {
1401
- "long_form": {
1402
- "availability": "planned",
1403
- "constraints": {
1404
- "max_input_duration": "PT12H",
1405
- "max_input_size_bytes": 5000000000,
1406
- "max_output_size_bytes": 5000000000
1407
- },
1408
- "per_tier_constraints": {
1409
- "enterprise": {
1410
- "max_input_size_bytes": 120000000000,
1411
- "max_output_size_bytes": 120000000000
1412
- }
1413
- },
1414
- "required_tier": "pro"
1415
- },
1416
- "short_form": {
1417
- "availability": "planned",
1418
- "constraints": {
1419
- "max_input_duration": "PT5M",
1420
- "max_input_size_bytes": 524288000,
1421
- "max_output_size_bytes": 524288000
1422
- }
1423
- }
1424
- }
1425
1425
  }
1426
1426
  },
1427
1427
  "min_inputs": 2
@@ -2149,6 +2149,229 @@
2149
2149
  },
2150
2150
  "min_inputs": 2
2151
2151
  },
2152
+ "split": {
2153
+ "availability": "planned",
2154
+ "default": false,
2155
+ "description": "Fan one input file into N outputs across GIF, PDF, audio, and\nvideo MIME families. Single-input \u2014 one input file per job, fanned\ninto N outputs per the per-mime-group catalog. Mirrors the\n`merge` / `convert` catalog-split-by-mime-group pattern.\n\n**Three modes** (audio + video; the mode discriminator gates which\nof the three options applies per the `depends_on` rules in this\nschema):\n- `interval`: split every N numeric-seconds.\n- `count`: split into N equal-duration pieces (integer 2..=200).\n- `cut_points`: explicit cut points in numeric-seconds (strictly\n increasing, no duplicates, each > 0 and < probed duration).\n\n**GIF + PDF use range-based selection** instead of three modes:\n- GIF (`image_gif`): `frame_range` REQUIRED + `output_format`\n enum {png,webp,jpg}.\n- PDF (`document_pdf`): `page_range` OR `page_groups` (mutually\n exclusive per `depends_on`).\n\n**Wire format**: numeric seconds (floats allowed for sub-second\nprecision). NOT ISO 8601 duration strings. Matches FFmpeg /\nCloudinary / Shotstack / AWS MediaConvert conventions.\n\n**200-output hard cap** per ADR-0009 \u00a7D5\n(`OperationResult.outputs[].maxItems: 200`). Preflight rejects\nrequests exceeding this BEFORE work as `invalid_options` (422).\nCap math by mode:\n- `interval`: `ceil(probed_duration / interval) <= 200`\n- `count`: enforced by the option's `min: 2 max: 200` range\n- `cut_points`: `cut_points.len() + 1 <= 200`\n- PDF: resolved page count after expansion `<= 200`\n (cross-ref [`WgCqnMRa`](https://trello.com/c/WgCqnMRa))\n- GIF: resolved frame count after expansion `<= 200`\n\n**Output naming**: 3-digit zero-padded \u2014 `output-001` ..\n`output-200`. Matches the convert PDF\u2192N precedent.\n\n**Output envelope binding** (per ADR-0014 + ADR-0009 \u00a7D2):\n- `image_gif`: `PositionIndexed` (frame stream-position 0-based\n ordinal)\n- `document_pdf`: `PageIndexed` (1-based gapless page index)\n- `audio`: `PositionIndexed` (cut stream-position ordinal)\n- `video`: `PositionIndexed` (cut stream-position ordinal)\n\n**`precision` flag** (audio + video only): `fast` (default) =\npacket-boundary approximate cuts; `exact` = re-encode-aligned\nprecise cuts. Mime_group scoping is the gate \u2014 precision does\nNOT apply to GIF or PDF (frame extraction is exact and PDF page\nselection is exact by definition).\n\n**Long-form video** routes to a separate `split-video-fargate`\nLambda (same `split` OperationType, different worker; routing\nvia `processing_class`). No schema-side discriminator beyond MIME\ndetection + `processing_class`.\n\n`availability: planned` until the cross-repo Lambda support ships\n([`vKI0CFDu`](https://trello.com/c/vKI0CFDu) + lambdas L1).\nDispatch returns `feature_not_available` (422) until then.\n\nPer ADR-0014.\n",
2156
+ "features": {
2157
+ "silence_mode_audio": {
2158
+ "availability": "planned",
2159
+ "description": "Silence-detect cut mode for audio (`mode: silence` \u2014\nCinavia/Resemble territory, server-side silence detection).\nOUT of V1 (Lambda support not yet shipped); declared as a\nfuture-work feature here so SDK consumers see the gate.\nPicked up as a separate post-launch ticket.\n"
2160
+ }
2161
+ },
2162
+ "input_model": "single",
2163
+ "mime_groups": {
2164
+ "audio": {
2165
+ "mimes": [
2166
+ "audio/mpeg",
2167
+ "audio/aac",
2168
+ "audio/ogg",
2169
+ "audio/flac",
2170
+ "audio/wav",
2171
+ "audio/mp4"
2172
+ ],
2173
+ "options": {
2174
+ "count": {
2175
+ "depends_on": {
2176
+ "mode": "count"
2177
+ },
2178
+ "description": "Number of equal-duration output pieces. Range 2..=200\nenforced declaratively (1 = no-op, rejected;\ncap = 200-output ceiling). Only valid when `mode: count`.\n",
2179
+ "max": 200,
2180
+ "min": 2,
2181
+ "required": true,
2182
+ "type": "integer"
2183
+ },
2184
+ "cut_points": {
2185
+ "depends_on": {
2186
+ "mode": "cut_points"
2187
+ },
2188
+ "description": "Cut points in numeric seconds (float, sub-second allowed).\nArray entries; NOT a comma-separated string. MUST be\nstrictly increasing (preflight-validated against probe);\neach entry > 0 and < probed duration. `uniqueItems: true`\ncatches accidental duplicates at the OpenAPI layer; strict\nmonotonicity and the < probed-duration bound are\npreflight-checked at workflow-create. Output count =\n`cut_points.length + 1`; `maxItems: 199` expresses the\n200-output cap declaratively. Only valid when\n`mode: cut_points`.\n",
2189
+ "items": {
2190
+ "exclusiveMinimum": 0,
2191
+ "type": "number"
2192
+ },
2193
+ "maxItems": 199,
2194
+ "minItems": 1,
2195
+ "required": true,
2196
+ "type": "array",
2197
+ "uniqueItems": true
2198
+ },
2199
+ "interval": {
2200
+ "depends_on": {
2201
+ "mode": "interval"
2202
+ },
2203
+ "description": "Cut interval in numeric seconds (float, sub-second\nallowed). `ceil(probed_duration / interval) <= 200`\npreflight rule applies. Only valid when `mode: interval`.\n",
2204
+ "min": 0.001,
2205
+ "required": true,
2206
+ "type": "float"
2207
+ },
2208
+ "mode": {
2209
+ "default": "interval",
2210
+ "description": "Split strategy:\n- `interval`: cut every `interval` seconds.\n- `count`: cut into `count` equal-duration pieces.\n- `cut_points`: cut at explicit timestamps.\n",
2211
+ "type": "enum",
2212
+ "values": [
2213
+ "interval",
2214
+ "count",
2215
+ "cut_points"
2216
+ ]
2217
+ },
2218
+ "precision": {
2219
+ "default": "fast",
2220
+ "description": "Cut precision. Under `fast`, audio cuts are\npacket-boundary approximate (drift bounded by codec\npacket size \u2014 typically <= 23ms for AAC, <= 26ms for\nMP3). Under `exact`, the Lambda re-encodes to align cuts\nprecisely at the requested timestamps (slower, larger\noutput, but sample-accurate). Avoid \"keyframe\" language\n\u2014 that's video-only; audio drift is packet-boundary.\n",
2221
+ "type": "enum",
2222
+ "values": [
2223
+ "fast",
2224
+ "exact"
2225
+ ]
2226
+ }
2227
+ }
2228
+ },
2229
+ "document_pdf": {
2230
+ "mimes": [
2231
+ "application/pdf"
2232
+ ],
2233
+ "options": {
2234
+ "mode": {
2235
+ "default": "page_range",
2236
+ "description": "PDF split strategy:\n- `page_range`: select pages via a range expression.\n- `page_groups`: group N pages per output.\n",
2237
+ "type": "enum",
2238
+ "values": [
2239
+ "page_range",
2240
+ "page_groups"
2241
+ ]
2242
+ },
2243
+ "page_groups": {
2244
+ "depends_on": {
2245
+ "mode": "page_groups"
2246
+ },
2247
+ "description": "Group N pages per output (e.g. `page_groups: 5` on a\n50-page PDF produces 10 outputs of 5 pages each).\nRequired when `mode: page_groups`. The page-count cap\napplies to the resolved group count: `ceil(total_pages /\npage_groups) <= 200`.\n",
2248
+ "max": 200,
2249
+ "min": 2,
2250
+ "required": true,
2251
+ "type": "integer"
2252
+ },
2253
+ "page_range": {
2254
+ "depends_on": {
2255
+ "mode": "page_range"
2256
+ },
2257
+ "description": "Page-range expression (e.g. \"1-5\", \"1,3,5-7\", \"10-20\").\n1-based inclusive. Required when `mode: page_range`.\nResolved page count MUST be <= 200 (`invalid_options`\n422 if exceeded \u2014 cross-ref\n[`WgCqnMRa`](https://trello.com/c/WgCqnMRa)).\n",
2258
+ "pattern": "^\\d+(-\\d+)?(,\\d+(-\\d+)?)*$",
2259
+ "required": true,
2260
+ "type": "string"
2261
+ }
2262
+ }
2263
+ },
2264
+ "image_gif": {
2265
+ "mimes": [
2266
+ "image/gif"
2267
+ ],
2268
+ "options": {
2269
+ "frame_range": {
2270
+ "description": "Frame range as `start-end` integer pair (e.g. \"1-100\").\nREQUIRED in V1 \u2014 no silent default. Without explicit\nrange, a 30-second GIF at 24 fps = 720 frames would blow\nthe 200-output cap on every input. Both start and end are\n1-based, inclusive. Resolved frame count MUST be <= 200\n(`invalid_options` 422 if exceeded).\n",
2271
+ "pattern": "^\\d+-\\d+$",
2272
+ "required": true,
2273
+ "type": "string"
2274
+ },
2275
+ "output_format": {
2276
+ "default": "png",
2277
+ "description": "Output image format for each extracted frame. Aspect ratio\nand dimensions preserved from the source GIF.\n",
2278
+ "type": "enum",
2279
+ "values": [
2280
+ "png",
2281
+ "webp",
2282
+ "jpg"
2283
+ ]
2284
+ }
2285
+ }
2286
+ },
2287
+ "video": {
2288
+ "mimes": [
2289
+ "video/mp4",
2290
+ "video/webm"
2291
+ ],
2292
+ "options": {
2293
+ "count": {
2294
+ "depends_on": {
2295
+ "mode": "count"
2296
+ },
2297
+ "description": "Number of equal-duration output pieces. Range 2..=200.\nOnly valid when `mode: count`.\n",
2298
+ "max": 200,
2299
+ "min": 2,
2300
+ "required": true,
2301
+ "type": "integer"
2302
+ },
2303
+ "cut_points": {
2304
+ "depends_on": {
2305
+ "mode": "cut_points"
2306
+ },
2307
+ "description": "Cut points in numeric seconds (float, sub-second allowed).\nArray entries; NOT a comma-separated string. Strictly\nincreasing (preflight-validated against probe); each entry\n> 0 and < probed duration. `uniqueItems: true` catches\naccidental duplicates at the OpenAPI layer; strict\nmonotonicity and the < probed-duration bound are\npreflight-checked at workflow-create. Output count =\n`cut_points.length + 1`; `maxItems: 199` expresses the\n200-output cap declaratively. Only valid when\n`mode: cut_points`.\n",
2308
+ "items": {
2309
+ "exclusiveMinimum": 0,
2310
+ "type": "number"
2311
+ },
2312
+ "maxItems": 199,
2313
+ "minItems": 1,
2314
+ "required": true,
2315
+ "type": "array",
2316
+ "uniqueItems": true
2317
+ },
2318
+ "interval": {
2319
+ "depends_on": {
2320
+ "mode": "interval"
2321
+ },
2322
+ "description": "Cut interval in numeric seconds. `ceil(probed_duration /\ninterval) <= 200`. Only valid when `mode: interval`.\n",
2323
+ "min": 0.001,
2324
+ "required": true,
2325
+ "type": "float"
2326
+ },
2327
+ "mode": {
2328
+ "default": "interval",
2329
+ "description": "Split strategy:\n- `interval`: cut every `interval` seconds.\n- `count`: cut into `count` equal-duration pieces.\n- `cut_points`: cut at explicit timestamps.\n",
2330
+ "type": "enum",
2331
+ "values": [
2332
+ "interval",
2333
+ "count",
2334
+ "cut_points"
2335
+ ]
2336
+ },
2337
+ "precision": {
2338
+ "default": "fast",
2339
+ "description": "Cut precision. Under `fast`, video cuts are keyframe-\naligned (drift bounded by GOP size \u2014 typically up to 1-2\nseconds depending on encoder). Under `exact`, the Lambda\nre-encodes to align cuts precisely at the requested\ntimestamps (slower, larger output, but frame-accurate).\n",
2340
+ "type": "enum",
2341
+ "values": [
2342
+ "fast",
2343
+ "exact"
2344
+ ]
2345
+ }
2346
+ },
2347
+ "processing_class": {
2348
+ "long_form": {
2349
+ "availability": "planned",
2350
+ "constraints": {
2351
+ "max_input_duration": "PT12H",
2352
+ "max_input_size_bytes": 5000000000,
2353
+ "max_output_size_bytes": 5000000000
2354
+ },
2355
+ "per_tier_constraints": {
2356
+ "enterprise": {
2357
+ "max_input_size_bytes": 120000000000,
2358
+ "max_output_size_bytes": 120000000000
2359
+ }
2360
+ },
2361
+ "required_tier": "pro"
2362
+ },
2363
+ "short_form": {
2364
+ "availability": "planned",
2365
+ "constraints": {
2366
+ "max_input_duration": "PT5M",
2367
+ "max_input_size_bytes": 524288000,
2368
+ "max_output_size_bytes": 524288000
2369
+ }
2370
+ }
2371
+ }
2372
+ }
2373
+ }
2374
+ },
2152
2375
  "text_watermark": {
2153
2376
  "default": false,
2154
2377
  "description": "Render a text overlay onto an image using bundled Liberation Sans\n(SIL OFL). Single-input \u2014 text comes from options, not from a file\ninput. Source capped at 25 megapixels (V1 watermark precedent\nretained). Per ADR-0004 \u00a7\"V2 JobDefinition\" + plan v5 \u00a7F1.\n\nTwo rendering modes:\n- `single`: one label rendered at the anchor + margin position.\n- `tiled`: text tiled across the source image (Cinavia / Adobe Stock\n pattern); rotation default -45\u00b0 and tile_spacing controls density.\n",
@@ -2300,7 +2523,7 @@
2300
2523
  "depends_on": {
2301
2524
  "source": "page"
2302
2525
  },
2303
- "description": "Page/sheet/slide number to render",
2526
+ "description": "1-based index of the printed page to render, after print-layout pagination is applied. For office formats this is the page in the LibreOffice PDF export \u2014 NOT a 1:1 sheet/slide index: a spreadsheet sheet may span multiple printed pages and multi-sheet workbooks paginate their sheets in order. For PDF inputs it is the PDF page number directly.",
2304
2527
  "min": 1,
2305
2528
  "type": "integer"
2306
2529
  },
@@ -2441,9 +2664,235 @@
2441
2664
  }
2442
2665
  }
2443
2666
  }
2667
+ },
2668
+ "video_text_watermark": {
2669
+ "availability": "planned",
2670
+ "default": false,
2671
+ "description": "Render a text overlay onto a base video using bundled Liberation\nSans (SIL OFL) via FFmpeg's `drawtext` filter. Single-input \u2014 the\ntext and its styling come from options, not from a file input.\nPer ADR-0013.\n\n**Dedicated operation, not an extension of `text_watermark`.**\n`text_watermark` renders onto images (single-pass Rust path);\n`video_text_watermark` renders per-frame via FFmpeg drawtext +\nre-encode (overlay = pixel modification, no stream-copy escape).\nDifferent runtime, different deploy unit.\n\n**Audio passthrough.** The base video's audio stream is preserved\nunchanged via FFmpeg stream-copy \u2014 the watermark applies to the\nvisual track only.\n\nTwo rendering modes (mirrors `text_watermark`):\n- `single`: one label rendered at the anchor + margin position.\n- `tiled`: text tiled across the source frames at the rotation\n angle.\n\n`availability: planned` until the cross-repo Lambda support ships;\ndispatch returns `feature_not_available` (422) until then. Per\nADR-0013 + lambdas pre-launch epic Wave A (ticket\n[`4NrRPCgh`](https://trello.com/c/4NrRPCgh)).\n",
2672
+ "input_model": "single",
2673
+ "mime_groups": {
2674
+ "video": {
2675
+ "mimes": [
2676
+ "video/mp4",
2677
+ "video/webm"
2678
+ ],
2679
+ "options": {
2680
+ "anchor": {
2681
+ "default": "bottom_right",
2682
+ "description": "9-grid anchor position. For `watermark_mode: single`, the\ntext label is placed at this anchor + margin_x/margin_y\noffset on each frame. For `watermark_mode: tiled`, anchor\nis ignored (tiles fill the frame).\n",
2683
+ "type": "enum",
2684
+ "values": [
2685
+ "top_left",
2686
+ "top_center",
2687
+ "top_right",
2688
+ "center_left",
2689
+ "center",
2690
+ "center_right",
2691
+ "bottom_left",
2692
+ "bottom_center",
2693
+ "bottom_right"
2694
+ ]
2695
+ },
2696
+ "color": {
2697
+ "default": "#FFFFFF80",
2698
+ "description": "Text colour as hex RGB (#RRGGBB) or RGBA (#RRGGBBAA).\nDefault is white with 50% alpha. Same vocabulary as\n`text_watermark.image.color`.\n",
2699
+ "pattern": "^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$",
2700
+ "type": "string"
2701
+ },
2702
+ "font_family": {
2703
+ "default": "liberation_sans",
2704
+ "description": "Font family. V2.0 ships with bundled Liberation Sans only;\nuser-uploaded fonts are a future extension (separate\nticket).\n",
2705
+ "type": "enum",
2706
+ "values": [
2707
+ "liberation_sans"
2708
+ ]
2709
+ },
2710
+ "font_size": {
2711
+ "default": 48.0,
2712
+ "description": "Font size in pixels. Clamped to range.",
2713
+ "max": 512.0,
2714
+ "min": 8.0,
2715
+ "type": "float"
2716
+ },
2717
+ "margin_x": {
2718
+ "default": "0px",
2719
+ "description": "Horizontal offset from the anchor as pixels (e.g. \"40px\")\nor percentage of video frame width (e.g. \"5%\").\nAnchor-relative. Ignored when `watermark_mode: tiled`.\n\n**`anchor: center` exception** (watermark_mode: single\nonly). Non-zero `margin_x` combined with `anchor: center`\nis rejected by the API at workflow-create time as\n`invalid_options` (HTTP 422).\n",
2720
+ "pattern": "^\\d+(\\.\\d+)?(px|%)$",
2721
+ "type": "string"
2722
+ },
2723
+ "margin_y": {
2724
+ "default": "0px",
2725
+ "description": "Vertical offset from the anchor as pixels or percentage of\nvideo frame height. Ignored when `watermark_mode: tiled`.\n\n**`anchor: center` exception** (watermark_mode: single\nonly). Same rejection rule as `margin_x`.\n",
2726
+ "pattern": "^\\d+(\\.\\d+)?(px|%)$",
2727
+ "type": "string"
2728
+ },
2729
+ "opacity": {
2730
+ "default": 1.0,
2731
+ "description": "Text overlay opacity. Default 1.0 \u2014 the alpha channel of\n`color` already encodes transparency, so opacity is\nusually left at 1.0 and transparency is set via the color\nhex.\n",
2732
+ "max": 1.0,
2733
+ "min": 0.0,
2734
+ "type": "float"
2735
+ },
2736
+ "rotation": {
2737
+ "default": -45.0,
2738
+ "description": "Rotation angle in degrees. Default -45\u00b0 suits tiled mode\n(angled diagonal pattern). Clamped to range.\n",
2739
+ "max": 360.0,
2740
+ "min": -360.0,
2741
+ "type": "float"
2742
+ },
2743
+ "text": {
2744
+ "description": "Watermark text. Must be non-empty. Rendered with bundled\nLiberation Sans (SIL OFL).\n",
2745
+ "required": true,
2746
+ "type": "string"
2747
+ },
2748
+ "tile_spacing": {
2749
+ "depends_on": {
2750
+ "watermark_mode": "tiled"
2751
+ },
2752
+ "description": "Spacing between tiled labels in pixels. Defaults to\nfont_size when omitted. Only applies when watermark_mode\nis tiled.\n",
2753
+ "max": 1000,
2754
+ "min": 0,
2755
+ "type": "integer"
2756
+ },
2757
+ "watermark_mode": {
2758
+ "default": "single",
2759
+ "description": "Rendering mode:\n- `single`: one label placed at the anchor + margin offset\n on each frame.\n- `tiled`: repeated tiles across the entire frame at the\n rotation angle.\n",
2760
+ "type": "enum",
2761
+ "values": [
2762
+ "single",
2763
+ "tiled"
2764
+ ]
2765
+ }
2766
+ },
2767
+ "processing_class": {
2768
+ "long_form": {
2769
+ "availability": "planned",
2770
+ "constraints": {
2771
+ "max_input_duration": "PT12H",
2772
+ "max_input_size_bytes": 5000000000,
2773
+ "max_output_size_bytes": 5000000000
2774
+ },
2775
+ "per_tier_constraints": {
2776
+ "enterprise": {
2777
+ "max_input_size_bytes": 120000000000,
2778
+ "max_output_size_bytes": 120000000000
2779
+ }
2780
+ },
2781
+ "required_tier": "pro"
2782
+ },
2783
+ "short_form": {
2784
+ "availability": "planned",
2785
+ "constraints": {
2786
+ "max_input_duration": "PT5M",
2787
+ "max_input_size_bytes": 524288000,
2788
+ "max_output_size_bytes": 524288000
2789
+ }
2790
+ }
2791
+ }
2792
+ }
2793
+ }
2794
+ },
2795
+ "video_watermark": {
2796
+ "availability": "planned",
2797
+ "default": false,
2798
+ "description": "Apply an image overlay (file or external source) onto a base video\nasset using FFmpeg's `overlay` filter. Multi-input role-based:\nexactly one input with `role: base` (the source video) + exactly\none with `role: overlay` (the watermark image). The overlay can be\nan upload, an external_import handle, or a vault connection per\n`WorkflowSource`.\n\n**Dedicated operation, not an extension of `image_watermark`.**\n`image_watermark` is pure-Rust/no-FFmpeg and handles\nimage-on-image overlay only. `video_watermark` requires FFmpeg's\noverlay filter + re-encode + a different deploy unit (no\nstream-copy escape \u2014 overlay = pixel modification). Per ADR-0013.\n\n**Audio passthrough.** The base video's audio stream is preserved\nunchanged via FFmpeg stream-copy \u2014 the watermark applies to the\nvisual track only.\n\n`availability: planned` until the cross-repo Lambda support ships;\ndispatch returns `feature_not_available` (422) until then. Per\nADR-0013 + lambdas pre-launch epic Wave A (ticket\n[`SlluxMBN`'s sibling `4NrRPCgh`](https://trello.com/c/4NrRPCgh)).\n",
2799
+ "features": {
2800
+ "multi_overlay_stack": {
2801
+ "availability": "planned",
2802
+ "description": "Allow up to 8 overlay inputs per job (currently capped at 1\noverlay). Per-overlay placement via JobInputV2.per_input_options.\nLambda-side support not yet confirmed; tagged planned per\nADR-0001 \u00a71.4. Mirrors the same-named feature on\n`image_watermark`.\n"
2803
+ }
2804
+ },
2805
+ "input_model": "multi",
2806
+ "max_inputs": 2,
2807
+ "mime_groups": {
2808
+ "video": {
2809
+ "mimes": [
2810
+ "video/mp4",
2811
+ "video/webm"
2812
+ ],
2813
+ "options": {
2814
+ "anchor": {
2815
+ "default": "bottom_right",
2816
+ "description": "9-grid anchor position on each video frame. Same vocabulary\nas `image_watermark.image` and `text_watermark.image`.\n",
2817
+ "type": "enum",
2818
+ "values": [
2819
+ "top_left",
2820
+ "top_center",
2821
+ "top_right",
2822
+ "center_left",
2823
+ "center",
2824
+ "center_right",
2825
+ "bottom_left",
2826
+ "bottom_center",
2827
+ "bottom_right"
2828
+ ]
2829
+ },
2830
+ "margin_x": {
2831
+ "default": "0px",
2832
+ "description": "Horizontal offset from the anchor as pixels (e.g. \"40px\")\nor percentage of video frame width (e.g. \"5%\"). Direction\nis anchor-relative \u2014 positive moves toward the frame\ncentre.\n\n**`anchor: center` exception.** When the anchor is `center`\nthe centre is the centre \u2014 there is no anchor-relative\ndirection. Non-zero `margin_x` combined with\n`anchor: center` is rejected by the API at workflow-create\ntime as `invalid_options` (HTTP 422). Same rule as the\nother watermark operations.\n",
2833
+ "pattern": "^\\d+(\\.\\d+)?(px|%)$",
2834
+ "type": "string"
2835
+ },
2836
+ "margin_y": {
2837
+ "default": "0px",
2838
+ "description": "Vertical offset from the anchor as pixels or percentage of\nvideo frame height. Anchor-relative; positive moves toward\nthe frame centre.\n\n**`anchor: center` exception.** Same rejection rule as\n`margin_x`.\n",
2839
+ "pattern": "^\\d+(\\.\\d+)?(px|%)$",
2840
+ "type": "string"
2841
+ },
2842
+ "opacity": {
2843
+ "default": 0.5,
2844
+ "description": "Overlay opacity (0 = fully transparent, 1 = fully opaque).\nClamped to range.\n",
2845
+ "max": 1.0,
2846
+ "min": 0.0,
2847
+ "type": "float"
2848
+ },
2849
+ "overlay_width": {
2850
+ "description": "Optional overlay width as pixels or percentage of video\nframe width. Aspect ratio preserved. Omit to use the\noriginal overlay size.\n",
2851
+ "pattern": "^\\d+(\\.\\d+)?(px|%)$",
2852
+ "type": "string"
2853
+ }
2854
+ },
2855
+ "processing_class": {
2856
+ "long_form": {
2857
+ "availability": "planned",
2858
+ "constraints": {
2859
+ "max_input_duration": "PT12H",
2860
+ "max_input_size_bytes": 5000000000,
2861
+ "max_output_size_bytes": 5000000000
2862
+ },
2863
+ "per_tier_constraints": {
2864
+ "enterprise": {
2865
+ "max_input_size_bytes": 120000000000,
2866
+ "max_output_size_bytes": 120000000000
2867
+ }
2868
+ },
2869
+ "required_tier": "pro"
2870
+ },
2871
+ "short_form": {
2872
+ "availability": "planned",
2873
+ "constraints": {
2874
+ "max_input_duration": "PT5M",
2875
+ "max_input_size_bytes": 524288000,
2876
+ "max_output_size_bytes": 524288000
2877
+ }
2878
+ }
2879
+ }
2880
+ }
2881
+ },
2882
+ "min_inputs": 2,
2883
+ "per_role_cardinality": {
2884
+ "base": {
2885
+ "max": 1,
2886
+ "min": 1
2887
+ },
2888
+ "overlay": {
2889
+ "max": 1,
2890
+ "min": 1
2891
+ }
2892
+ }
2444
2893
  }
2445
2894
  },
2446
- "schema_version": "2.12.0",
2895
+ "schema_version": "2.15.3",
2447
2896
  "source_commit": null,
2448
2897
  "user_tier": null
2449
2898
  }