@giveitsmaller/contracts 0.3.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 (377) hide show
  1. package/asyncapi/events.yaml +455 -41
  2. package/availability/availability.json +586 -91
  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 +20 -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 +20 -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 +23 -0
  32. package/dist/openapi/models/CreateExternalImport422Response.js +51 -0
  33. package/dist/openapi/models/CreateWorkflow422Response.d.ts +4 -2
  34. package/dist/openapi/models/CreateWorkflow422Response.js +15 -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 +20 -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 +26 -3
  78. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  79. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +20 -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 +20 -4
  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 +43 -0
  136. package/dist/openapi/models/MultipartKeepaliveResponse.js +47 -0
  137. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +46 -0
  138. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +54 -0
  139. package/dist/openapi/models/MultipartPartListing.d.ts +59 -0
  140. package/dist/openapi/models/MultipartPartListing.js +55 -0
  141. package/dist/openapi/models/MultipartPresignRequest.d.ts +41 -0
  142. package/dist/openapi/models/MultipartPresignRequest.js +43 -0
  143. package/dist/openapi/models/MultipartPresignResponse.d.ts +46 -0
  144. package/dist/openapi/models/MultipartPresignResponse.js +48 -0
  145. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +46 -0
  146. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +54 -0
  147. package/dist/openapi/models/MultipartStatusResponse.d.ts +103 -0
  148. package/dist/openapi/models/MultipartStatusResponse.js +76 -0
  149. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +46 -0
  150. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +54 -0
  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 +29 -1
  154. package/dist/openapi/models/OperationDownload.js +5 -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 +20 -1
  158. package/dist/openapi/models/OperationResponse.js +5 -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 +149 -0
  184. package/dist/openapi/models/ProcessingClassBandViolation.js +81 -0
  185. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +174 -0
  186. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +76 -0
  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 +53 -0
  192. package/dist/openapi/models/ProcessingClassRejectReason.js +71 -0
  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 +20 -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 +20 -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 +20 -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 +11 -4
  262. package/dist/openapi/models/UploadThresholds.js +2 -2
  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 +20 -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 +21 -0
  320. package/dist/openapi/models/index.js +21 -0
  321. package/dist/openapi/runtime.d.ts +1 -1
  322. package/dist/openapi/runtime.js +1 -1
  323. package/dist/operations/audio_overlay.metadata.js +4 -4
  324. package/dist/operations/audio_to_video.d.ts +20 -0
  325. package/dist/operations/audio_to_video.js +17 -0
  326. package/dist/operations/audio_to_video.metadata.d.ts +2 -0
  327. package/dist/operations/audio_to_video.metadata.js +29 -0
  328. package/dist/operations/audio_watermark.metadata.js +4 -4
  329. package/dist/operations/compress.metadata.js +3 -3
  330. package/dist/operations/convert.metadata.js +2 -2
  331. package/dist/operations/custom_luma.metadata.js +2 -2
  332. package/dist/operations/image_watermark.d.ts +0 -18
  333. package/dist/operations/image_watermark.js +0 -12
  334. package/dist/operations/image_watermark.metadata.js +0 -41
  335. package/dist/operations/index.d.ts +8 -0
  336. package/dist/operations/index.js +8 -0
  337. package/dist/operations/merge.metadata.js +3 -3
  338. package/dist/operations/metadata-types.d.ts +17 -0
  339. package/dist/operations/split.d.ts +50 -0
  340. package/dist/operations/split.js +34 -0
  341. package/dist/operations/split.metadata.d.ts +2 -0
  342. package/dist/operations/split.metadata.js +103 -0
  343. package/dist/operations/thumbnail.metadata.js +1 -1
  344. package/dist/operations/video_text_watermark.d.ts +31 -0
  345. package/dist/operations/video_text_watermark.js +22 -0
  346. package/dist/operations/video_text_watermark.metadata.d.ts +2 -0
  347. package/dist/operations/video_text_watermark.metadata.js +65 -0
  348. package/dist/operations/video_watermark.d.ts +18 -0
  349. package/dist/operations/video_watermark.js +13 -0
  350. package/dist/operations/video_watermark.metadata.d.ts +2 -0
  351. package/dist/operations/video_watermark.metadata.js +52 -0
  352. package/openapi/api.yaml +1543 -121
  353. package/operations/schemas/audio_overlay.yaml +18 -6
  354. package/operations/schemas/audio_to_video.yaml +122 -0
  355. package/operations/schemas/audio_watermark.yaml +14 -6
  356. package/operations/schemas/compress.yaml +10 -4
  357. package/operations/schemas/convert.yaml +10 -3
  358. package/operations/schemas/custom_luma.yaml +10 -3
  359. package/operations/schemas/image_watermark.yaml +15 -96
  360. package/operations/schemas/merge.yaml +10 -4
  361. package/operations/schemas/split.yaml +309 -0
  362. package/operations/schemas/thumbnail.yaml +16 -3
  363. package/operations/schemas/video_text_watermark.yaml +174 -0
  364. package/operations/schemas/video_watermark.yaml +136 -0
  365. package/package.json +8 -3
  366. package/dist/asyncapi/AnonymousSchema_13.d.ts +0 -6
  367. package/dist/asyncapi/AnonymousSchema_13.js +0 -7
  368. package/dist/asyncapi/AnonymousSchema_152.d.ts +0 -5
  369. package/dist/asyncapi/AnonymousSchema_152.js +0 -6
  370. package/dist/openapi/models/ExportConfig.d.ts +0 -63
  371. package/dist/openapi/models/ExportConfig.js +0 -59
  372. package/dist/openapi/models/JobInput.d.ts +0 -53
  373. package/dist/openapi/models/JobInput.js +0 -47
  374. package/dist/openapi/models/JobSource.d.ts +0 -43
  375. package/dist/openapi/models/JobSource.js +0 -45
  376. package/dist/operations/watermark.d.ts +0 -28
  377. package/dist/operations/watermark.js +0 -19
@@ -0,0 +1,309 @@
1
+ schema_version: "2.0.0"
2
+
3
+ operation:
4
+ type: split
5
+ availability: planned
6
+ description: |
7
+ Fan one input file into N outputs across GIF, PDF, audio, and
8
+ video MIME families. Single-input — one input file per job, fanned
9
+ into N outputs per the per-mime-group catalog. Mirrors the
10
+ `merge` / `convert` catalog-split-by-mime-group pattern.
11
+
12
+ **Three modes** (audio + video; the mode discriminator gates which
13
+ of the three options applies per the `depends_on` rules in this
14
+ schema):
15
+ - `interval`: split every N numeric-seconds.
16
+ - `count`: split into N equal-duration pieces (integer 2..=200).
17
+ - `cut_points`: explicit cut points in numeric-seconds (strictly
18
+ increasing, no duplicates, each > 0 and < probed duration).
19
+
20
+ **GIF + PDF use range-based selection** instead of three modes:
21
+ - GIF (`image_gif`): `frame_range` REQUIRED + `output_format`
22
+ enum {png,webp,jpg}.
23
+ - PDF (`document_pdf`): `page_range` OR `page_groups` (mutually
24
+ exclusive per `depends_on`).
25
+
26
+ **Wire format**: numeric seconds (floats allowed for sub-second
27
+ precision). NOT ISO 8601 duration strings. Matches FFmpeg /
28
+ Cloudinary / Shotstack / AWS MediaConvert conventions.
29
+
30
+ **200-output hard cap** per ADR-0009 §D5
31
+ (`OperationResult.outputs[].maxItems: 200`). Preflight rejects
32
+ requests exceeding this BEFORE work as `invalid_options` (422).
33
+ Cap math by mode:
34
+ - `interval`: `ceil(probed_duration / interval) <= 200`
35
+ - `count`: enforced by the option's `min: 2 max: 200` range
36
+ - `cut_points`: `cut_points.len() + 1 <= 200`
37
+ - PDF: resolved page count after expansion `<= 200`
38
+ (cross-ref [`WgCqnMRa`](https://trello.com/c/WgCqnMRa))
39
+ - GIF: resolved frame count after expansion `<= 200`
40
+
41
+ **Output naming**: 3-digit zero-padded — `output-001` ..
42
+ `output-200`. Matches the convert PDF→N precedent.
43
+
44
+ **Output envelope binding** (per ADR-0014 + ADR-0009 §D2):
45
+ - `image_gif`: `PositionIndexed` (frame stream-position 0-based
46
+ ordinal)
47
+ - `document_pdf`: `PageIndexed` (1-based gapless page index)
48
+ - `audio`: `PositionIndexed` (cut stream-position ordinal)
49
+ - `video`: `PositionIndexed` (cut stream-position ordinal)
50
+
51
+ **`precision` flag** (audio + video only): `fast` (default) =
52
+ packet-boundary approximate cuts; `exact` = re-encode-aligned
53
+ precise cuts. Mime_group scoping is the gate — precision does
54
+ NOT apply to GIF or PDF (frame extraction is exact and PDF page
55
+ selection is exact by definition).
56
+
57
+ **Long-form video** routes to a separate `split-video-fargate`
58
+ Lambda (same `split` OperationType, different worker; routing
59
+ via `processing_class`). No schema-side discriminator beyond MIME
60
+ detection + `processing_class`.
61
+
62
+ `availability: planned` until the cross-repo Lambda support ships
63
+ ([`vKI0CFDu`](https://trello.com/c/vKI0CFDu) + lambdas L1).
64
+ Dispatch returns `feature_not_available` (422) until then.
65
+
66
+ Per ADR-0014.
67
+ default: false
68
+ input_model: single
69
+
70
+ features:
71
+ silence_mode_audio:
72
+ availability: planned
73
+ description: |
74
+ Silence-detect cut mode for audio (`mode: silence` —
75
+ Cinavia/Resemble territory, server-side silence detection).
76
+ OUT of V1 (Lambda support not yet shipped); declared as a
77
+ future-work feature here so SDK consumers see the gate.
78
+ Picked up as a separate post-launch ticket.
79
+
80
+ mime_groups:
81
+ # Animated GIF base — parallel mime_group naming follows the
82
+ # `image_gif` precedent established by `image_watermark.image_gif`.
83
+ image_gif:
84
+ mimes:
85
+ - image/gif
86
+ options:
87
+ frame_range:
88
+ type: string
89
+ required: true
90
+ pattern: '^\d+-\d+$'
91
+ description: |
92
+ Frame range as `start-end` integer pair (e.g. "1-100").
93
+ REQUIRED in V1 — no silent default. Without explicit
94
+ range, a 30-second GIF at 24 fps = 720 frames would blow
95
+ the 200-output cap on every input. Both start and end are
96
+ 1-based, inclusive. Resolved frame count MUST be <= 200
97
+ (`invalid_options` 422 if exceeded).
98
+
99
+ output_format:
100
+ type: enum
101
+ values: [png, webp, jpg]
102
+ default: png
103
+ description: |
104
+ Output image format for each extracted frame. Aspect ratio
105
+ and dimensions preserved from the source GIF.
106
+
107
+ # PDF base — page-split via qpdf or pdftk equivalent.
108
+ document_pdf:
109
+ mimes:
110
+ - application/pdf
111
+ options:
112
+ mode:
113
+ type: enum
114
+ values: [page_range, page_groups]
115
+ default: page_range
116
+ description: |
117
+ PDF split strategy:
118
+ - `page_range`: select pages via a range expression.
119
+ - `page_groups`: group N pages per output.
120
+
121
+ page_range:
122
+ type: string
123
+ pattern: '^\d+(-\d+)?(,\d+(-\d+)?)*$'
124
+ required: true
125
+ depends_on: { mode: page_range }
126
+ description: |
127
+ Page-range expression (e.g. "1-5", "1,3,5-7", "10-20").
128
+ 1-based inclusive. Required when `mode: page_range`.
129
+ Resolved page count MUST be <= 200 (`invalid_options`
130
+ 422 if exceeded — cross-ref
131
+ [`WgCqnMRa`](https://trello.com/c/WgCqnMRa)).
132
+
133
+ page_groups:
134
+ type: integer
135
+ min: 2
136
+ max: 200
137
+ required: true
138
+ depends_on: { mode: page_groups }
139
+ description: |
140
+ Group N pages per output (e.g. `page_groups: 5` on a
141
+ 50-page PDF produces 10 outputs of 5 pages each).
142
+ Required when `mode: page_groups`. The page-count cap
143
+ applies to the resolved group count: `ceil(total_pages /
144
+ page_groups) <= 200`.
145
+
146
+ # Audio base — three modes + precision flag.
147
+ audio:
148
+ mimes:
149
+ - audio/mpeg
150
+ - audio/aac
151
+ - audio/ogg
152
+ - audio/flac
153
+ - audio/wav
154
+ - audio/mp4
155
+ options:
156
+ mode:
157
+ type: enum
158
+ values: [interval, count, cut_points]
159
+ default: interval
160
+ description: |
161
+ Split strategy:
162
+ - `interval`: cut every `interval` seconds.
163
+ - `count`: cut into `count` equal-duration pieces.
164
+ - `cut_points`: cut at explicit timestamps.
165
+
166
+ interval:
167
+ type: float
168
+ min: 0.001
169
+ required: true
170
+ depends_on: { mode: interval }
171
+ description: |
172
+ Cut interval in numeric seconds (float, sub-second
173
+ allowed). `ceil(probed_duration / interval) <= 200`
174
+ preflight rule applies. Only valid when `mode: interval`.
175
+
176
+ count:
177
+ type: integer
178
+ min: 2
179
+ max: 200
180
+ required: true
181
+ depends_on: { mode: count }
182
+ description: |
183
+ Number of equal-duration output pieces. Range 2..=200
184
+ enforced declaratively (1 = no-op, rejected;
185
+ cap = 200-output ceiling). Only valid when `mode: count`.
186
+
187
+ cut_points:
188
+ type: array
189
+ items:
190
+ type: number
191
+ exclusiveMinimum: 0
192
+ minItems: 1
193
+ maxItems: 199
194
+ uniqueItems: true
195
+ required: true
196
+ depends_on: { mode: cut_points }
197
+ description: |
198
+ Cut points in numeric seconds (float, sub-second allowed).
199
+ Array entries; NOT a comma-separated string. MUST be
200
+ strictly increasing (preflight-validated against probe);
201
+ each entry > 0 and < probed duration. `uniqueItems: true`
202
+ catches accidental duplicates at the OpenAPI layer; strict
203
+ monotonicity and the < probed-duration bound are
204
+ preflight-checked at workflow-create. Output count =
205
+ `cut_points.length + 1`; `maxItems: 199` expresses the
206
+ 200-output cap declaratively. Only valid when
207
+ `mode: cut_points`.
208
+
209
+ precision:
210
+ type: enum
211
+ values: [fast, exact]
212
+ default: fast
213
+ description: |
214
+ Cut precision. Under `fast`, audio cuts are
215
+ packet-boundary approximate (drift bounded by codec
216
+ packet size — typically <= 23ms for AAC, <= 26ms for
217
+ MP3). Under `exact`, the Lambda re-encodes to align cuts
218
+ precisely at the requested timestamps (slower, larger
219
+ output, but sample-accurate). Avoid "keyframe" language
220
+ — that's video-only; audio drift is packet-boundary.
221
+
222
+ # Video base — same three modes + precision + processing_class.
223
+ # Long-form routes to `split-video-fargate` (same OperationType,
224
+ # different worker per `processing_class`).
225
+ video:
226
+ mimes:
227
+ - video/mp4
228
+ - video/webm
229
+ processing_class:
230
+ short_form:
231
+ availability: planned
232
+ constraints:
233
+ max_input_duration: "PT5M"
234
+ max_input_size_bytes: 524288000
235
+ max_output_size_bytes: 524288000
236
+ long_form:
237
+ # Routes to split-video-fargate worker per ADR-0014.
238
+ availability: planned
239
+ required_tier: pro
240
+ constraints: # baseline = Pro
241
+ max_input_duration: "PT12H"
242
+ max_input_size_bytes: 5000000000 # 5 GB (Pro)
243
+ max_output_size_bytes: 5000000000
244
+ per_tier_constraints:
245
+ enterprise:
246
+ max_input_size_bytes: 120000000000 # 120 GB
247
+ max_output_size_bytes: 120000000000
248
+ options:
249
+ mode:
250
+ type: enum
251
+ values: [interval, count, cut_points]
252
+ default: interval
253
+ description: |
254
+ Split strategy:
255
+ - `interval`: cut every `interval` seconds.
256
+ - `count`: cut into `count` equal-duration pieces.
257
+ - `cut_points`: cut at explicit timestamps.
258
+
259
+ interval:
260
+ type: float
261
+ min: 0.001
262
+ required: true
263
+ depends_on: { mode: interval }
264
+ description: |
265
+ Cut interval in numeric seconds. `ceil(probed_duration /
266
+ interval) <= 200`. Only valid when `mode: interval`.
267
+
268
+ count:
269
+ type: integer
270
+ min: 2
271
+ max: 200
272
+ required: true
273
+ depends_on: { mode: count }
274
+ description: |
275
+ Number of equal-duration output pieces. Range 2..=200.
276
+ Only valid when `mode: count`.
277
+
278
+ cut_points:
279
+ type: array
280
+ items:
281
+ type: number
282
+ exclusiveMinimum: 0
283
+ minItems: 1
284
+ maxItems: 199
285
+ uniqueItems: true
286
+ required: true
287
+ depends_on: { mode: cut_points }
288
+ description: |
289
+ Cut points in numeric seconds (float, sub-second allowed).
290
+ Array entries; NOT a comma-separated string. Strictly
291
+ increasing (preflight-validated against probe); each entry
292
+ > 0 and < probed duration. `uniqueItems: true` catches
293
+ accidental duplicates at the OpenAPI layer; strict
294
+ monotonicity and the < probed-duration bound are
295
+ preflight-checked at workflow-create. Output count =
296
+ `cut_points.length + 1`; `maxItems: 199` expresses the
297
+ 200-output cap declaratively. Only valid when
298
+ `mode: cut_points`.
299
+
300
+ precision:
301
+ type: enum
302
+ values: [fast, exact]
303
+ default: fast
304
+ description: |
305
+ Cut precision. Under `fast`, video cuts are keyframe-
306
+ aligned (drift bounded by GOP size — typically up to 1-2
307
+ seconds depending on encoder). Under `exact`, the Lambda
308
+ re-encodes to align cuts precisely at the requested
309
+ timestamps (slower, larger output, but frame-accurate).
@@ -56,11 +56,18 @@ operation:
56
56
  max_input_duration: "PT5M"
57
57
  max_input_size_bytes: 524288000
58
58
  long_form:
59
+ # Stays planned (CON-1 flips only compress.video.long_form +
60
+ # merge.video.long_form_re_encode). Per-tier caps per ADR-0011 —
61
+ # advertised shape; availability gates execution off (422).
62
+ # No max_output_size_bytes: thumbnail output is a single bounded image.
59
63
  availability: planned
60
64
  required_tier: pro
61
- constraints:
65
+ constraints: # baseline = Pro
62
66
  max_input_duration: "PT12H"
63
- max_input_size_bytes: 21474836480
67
+ max_input_size_bytes: 5000000000 # 5 GB (Pro)
68
+ per_tier_constraints:
69
+ enterprise:
70
+ max_input_size_bytes: 120000000000 # 120 GB (Enterprise enforced ceiling)
64
71
  options:
65
72
  timestamp:
66
73
  type: string
@@ -110,7 +117,13 @@ operation:
110
117
  min: 1
111
118
  default: 1
112
119
  depends_on: { source: page }
113
- description: "Page/sheet/slide number to render"
120
+ description: >-
121
+ 1-based index of the printed page to render, after print-layout
122
+ pagination is applied. For office formats this is the page in the
123
+ LibreOffice PDF export — NOT a 1:1 sheet/slide index: a spreadsheet
124
+ sheet may span multiple printed pages and multi-sheet workbooks
125
+ paginate their sheets in order. For PDF inputs it is the PDF page
126
+ number directly.
114
127
  width:
115
128
  type: integer
116
129
  min: 1
@@ -0,0 +1,174 @@
1
+ schema_version: "2.0.0"
2
+
3
+ operation:
4
+ type: video_text_watermark
5
+ availability: planned
6
+ description: |
7
+ Render a text overlay onto a base video using bundled Liberation
8
+ Sans (SIL OFL) via FFmpeg's `drawtext` filter. Single-input — the
9
+ text and its styling come from options, not from a file input.
10
+ Per ADR-0013.
11
+
12
+ **Dedicated operation, not an extension of `text_watermark`.**
13
+ `text_watermark` renders onto images (single-pass Rust path);
14
+ `video_text_watermark` renders per-frame via FFmpeg drawtext +
15
+ re-encode (overlay = pixel modification, no stream-copy escape).
16
+ Different runtime, different deploy unit.
17
+
18
+ **Audio passthrough.** The base video's audio stream is preserved
19
+ unchanged via FFmpeg stream-copy — the watermark applies to the
20
+ visual track only.
21
+
22
+ Two rendering modes (mirrors `text_watermark`):
23
+ - `single`: one label rendered at the anchor + margin position.
24
+ - `tiled`: text tiled across the source frames at the rotation
25
+ angle.
26
+
27
+ `availability: planned` until the cross-repo Lambda support ships;
28
+ dispatch returns `feature_not_available` (422) until then. Per
29
+ ADR-0013 + lambdas pre-launch epic Wave A (ticket
30
+ [`4NrRPCgh`](https://trello.com/c/4NrRPCgh)).
31
+ default: false
32
+ input_model: single
33
+
34
+ mime_groups:
35
+ video:
36
+ mimes:
37
+ - video/mp4
38
+ - video/webm
39
+ processing_class:
40
+ short_form:
41
+ availability: planned
42
+ constraints:
43
+ max_input_duration: "PT5M"
44
+ max_input_size_bytes: 524288000
45
+ max_output_size_bytes: 524288000
46
+ long_form:
47
+ availability: planned
48
+ required_tier: pro
49
+ constraints: # baseline = Pro
50
+ max_input_duration: "PT12H"
51
+ max_input_size_bytes: 5000000000 # 5 GB (Pro)
52
+ max_output_size_bytes: 5000000000
53
+ per_tier_constraints:
54
+ enterprise:
55
+ max_input_size_bytes: 120000000000 # 120 GB (Enterprise enforced ceiling)
56
+ max_output_size_bytes: 120000000000
57
+ options:
58
+ text:
59
+ type: string
60
+ required: true
61
+ description: |
62
+ Watermark text. Must be non-empty. Rendered with bundled
63
+ Liberation Sans (SIL OFL).
64
+
65
+ font_size:
66
+ type: float
67
+ min: 8.0
68
+ max: 512.0
69
+ default: 48.0
70
+ description: Font size in pixels. Clamped to range.
71
+
72
+ color:
73
+ type: string
74
+ default: "#FFFFFF80"
75
+ pattern: '^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$'
76
+ description: |
77
+ Text colour as hex RGB (#RRGGBB) or RGBA (#RRGGBBAA).
78
+ Default is white with 50% alpha. Same vocabulary as
79
+ `text_watermark.image.color`.
80
+
81
+ font_family:
82
+ type: enum
83
+ values:
84
+ - liberation_sans
85
+ default: liberation_sans
86
+ description: |
87
+ Font family. V2.0 ships with bundled Liberation Sans only;
88
+ user-uploaded fonts are a future extension (separate
89
+ ticket).
90
+
91
+ rotation:
92
+ type: float
93
+ min: -360.0
94
+ max: 360.0
95
+ default: -45.0
96
+ description: |
97
+ Rotation angle in degrees. Default -45° suits tiled mode
98
+ (angled diagonal pattern). Clamped to range.
99
+
100
+ watermark_mode:
101
+ type: enum
102
+ values: [single, tiled]
103
+ default: single
104
+ description: |
105
+ Rendering mode:
106
+ - `single`: one label placed at the anchor + margin offset
107
+ on each frame.
108
+ - `tiled`: repeated tiles across the entire frame at the
109
+ rotation angle.
110
+
111
+ tile_spacing:
112
+ type: integer
113
+ min: 0
114
+ max: 1000
115
+ depends_on: { watermark_mode: tiled }
116
+ description: |
117
+ Spacing between tiled labels in pixels. Defaults to
118
+ font_size when omitted. Only applies when watermark_mode
119
+ is tiled.
120
+
121
+ anchor:
122
+ type: enum
123
+ values:
124
+ - top_left
125
+ - top_center
126
+ - top_right
127
+ - center_left
128
+ - center
129
+ - center_right
130
+ - bottom_left
131
+ - bottom_center
132
+ - bottom_right
133
+ default: bottom_right
134
+ description: |
135
+ 9-grid anchor position. For `watermark_mode: single`, the
136
+ text label is placed at this anchor + margin_x/margin_y
137
+ offset on each frame. For `watermark_mode: tiled`, anchor
138
+ is ignored (tiles fill the frame).
139
+
140
+ margin_x:
141
+ type: string
142
+ pattern: '^\d+(\.\d+)?(px|%)$'
143
+ default: "0px"
144
+ description: |
145
+ Horizontal offset from the anchor as pixels (e.g. "40px")
146
+ or percentage of video frame width (e.g. "5%").
147
+ Anchor-relative. Ignored when `watermark_mode: tiled`.
148
+
149
+ **`anchor: center` exception** (watermark_mode: single
150
+ only). Non-zero `margin_x` combined with `anchor: center`
151
+ is rejected by the API at workflow-create time as
152
+ `invalid_options` (HTTP 422).
153
+
154
+ margin_y:
155
+ type: string
156
+ pattern: '^\d+(\.\d+)?(px|%)$'
157
+ default: "0px"
158
+ description: |
159
+ Vertical offset from the anchor as pixels or percentage of
160
+ video frame height. Ignored when `watermark_mode: tiled`.
161
+
162
+ **`anchor: center` exception** (watermark_mode: single
163
+ only). Same rejection rule as `margin_x`.
164
+
165
+ opacity:
166
+ type: float
167
+ min: 0.0
168
+ max: 1.0
169
+ default: 1.0
170
+ description: |
171
+ Text overlay opacity. Default 1.0 — the alpha channel of
172
+ `color` already encodes transparency, so opacity is
173
+ usually left at 1.0 and transparency is set via the color
174
+ hex.
@@ -0,0 +1,136 @@
1
+ schema_version: "2.0.0"
2
+
3
+ operation:
4
+ type: video_watermark
5
+ availability: planned
6
+ description: |
7
+ Apply an image overlay (file or external source) onto a base video
8
+ asset using FFmpeg's `overlay` filter. Multi-input role-based:
9
+ exactly one input with `role: base` (the source video) + exactly
10
+ one with `role: overlay` (the watermark image). The overlay can be
11
+ an upload, an external_import handle, or a vault connection per
12
+ `WorkflowSource`.
13
+
14
+ **Dedicated operation, not an extension of `image_watermark`.**
15
+ `image_watermark` is pure-Rust/no-FFmpeg and handles
16
+ image-on-image overlay only. `video_watermark` requires FFmpeg's
17
+ overlay filter + re-encode + a different deploy unit (no
18
+ stream-copy escape — overlay = pixel modification). Per ADR-0013.
19
+
20
+ **Audio passthrough.** The base video's audio stream is preserved
21
+ unchanged via FFmpeg stream-copy — the watermark applies to the
22
+ visual track only.
23
+
24
+ `availability: planned` until the cross-repo Lambda support ships;
25
+ dispatch returns `feature_not_available` (422) until then. Per
26
+ ADR-0013 + lambdas pre-launch epic Wave A (ticket
27
+ [`SlluxMBN`'s sibling `4NrRPCgh`](https://trello.com/c/4NrRPCgh)).
28
+ default: false
29
+ input_model: multi
30
+ min_inputs: 2
31
+ max_inputs: 2
32
+
33
+ per_role_cardinality:
34
+ base:
35
+ min: 1
36
+ max: 1
37
+ overlay:
38
+ min: 1
39
+ max: 1
40
+
41
+ features:
42
+ multi_overlay_stack:
43
+ availability: planned
44
+ description: |
45
+ Allow up to 8 overlay inputs per job (currently capped at 1
46
+ overlay). Per-overlay placement via JobInputV2.per_input_options.
47
+ Lambda-side support not yet confirmed; tagged planned per
48
+ ADR-0001 §1.4. Mirrors the same-named feature on
49
+ `image_watermark`.
50
+
51
+ mime_groups:
52
+ video:
53
+ mimes:
54
+ - video/mp4
55
+ - video/webm
56
+ processing_class:
57
+ short_form:
58
+ availability: planned
59
+ constraints:
60
+ max_input_duration: "PT5M"
61
+ max_input_size_bytes: 524288000
62
+ max_output_size_bytes: 524288000
63
+ long_form:
64
+ availability: planned
65
+ required_tier: pro
66
+ constraints: # baseline = Pro
67
+ max_input_duration: "PT12H"
68
+ max_input_size_bytes: 5000000000 # 5 GB (Pro)
69
+ max_output_size_bytes: 5000000000
70
+ per_tier_constraints:
71
+ enterprise:
72
+ max_input_size_bytes: 120000000000 # 120 GB (Enterprise enforced ceiling)
73
+ max_output_size_bytes: 120000000000
74
+ options:
75
+ anchor:
76
+ type: enum
77
+ values:
78
+ - top_left
79
+ - top_center
80
+ - top_right
81
+ - center_left
82
+ - center
83
+ - center_right
84
+ - bottom_left
85
+ - bottom_center
86
+ - bottom_right
87
+ default: bottom_right
88
+ description: |
89
+ 9-grid anchor position on each video frame. Same vocabulary
90
+ as `image_watermark.image` and `text_watermark.image`.
91
+
92
+ margin_x:
93
+ type: string
94
+ pattern: '^\d+(\.\d+)?(px|%)$'
95
+ default: "0px"
96
+ description: |
97
+ Horizontal offset from the anchor as pixels (e.g. "40px")
98
+ or percentage of video frame width (e.g. "5%"). Direction
99
+ is anchor-relative — positive moves toward the frame
100
+ centre.
101
+
102
+ **`anchor: center` exception.** When the anchor is `center`
103
+ the centre is the centre — there is no anchor-relative
104
+ direction. Non-zero `margin_x` combined with
105
+ `anchor: center` is rejected by the API at workflow-create
106
+ time as `invalid_options` (HTTP 422). Same rule as the
107
+ other watermark operations.
108
+
109
+ margin_y:
110
+ type: string
111
+ pattern: '^\d+(\.\d+)?(px|%)$'
112
+ default: "0px"
113
+ description: |
114
+ Vertical offset from the anchor as pixels or percentage of
115
+ video frame height. Anchor-relative; positive moves toward
116
+ the frame centre.
117
+
118
+ **`anchor: center` exception.** Same rejection rule as
119
+ `margin_x`.
120
+
121
+ opacity:
122
+ type: float
123
+ min: 0.0
124
+ max: 1.0
125
+ default: 0.5
126
+ description: |
127
+ Overlay opacity (0 = fully transparent, 1 = fully opaque).
128
+ Clamped to range.
129
+
130
+ overlay_width:
131
+ type: string
132
+ pattern: '^\d+(\.\d+)?(px|%)$'
133
+ description: |
134
+ Optional overlay width as pixels or percentage of video
135
+ frame width. Aspect ratio preserved. Omit to use the
136
+ original overlay size.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@giveitsmaller/contracts",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Generated contract types for GISL (Give It Smaller)",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -28,14 +28,18 @@
28
28
  "./availability/availability.json": "./availability/availability.json",
29
29
  "./operations/schemas/archive.yaml": "./operations/schemas/archive.yaml",
30
30
  "./operations/schemas/audio_overlay.yaml": "./operations/schemas/audio_overlay.yaml",
31
+ "./operations/schemas/audio_to_video.yaml": "./operations/schemas/audio_to_video.yaml",
31
32
  "./operations/schemas/audio_watermark.yaml": "./operations/schemas/audio_watermark.yaml",
32
33
  "./operations/schemas/compress.yaml": "./operations/schemas/compress.yaml",
33
34
  "./operations/schemas/convert.yaml": "./operations/schemas/convert.yaml",
34
35
  "./operations/schemas/custom_luma.yaml": "./operations/schemas/custom_luma.yaml",
35
36
  "./operations/schemas/image_watermark.yaml": "./operations/schemas/image_watermark.yaml",
36
37
  "./operations/schemas/merge.yaml": "./operations/schemas/merge.yaml",
38
+ "./operations/schemas/split.yaml": "./operations/schemas/split.yaml",
37
39
  "./operations/schemas/text_watermark.yaml": "./operations/schemas/text_watermark.yaml",
38
- "./operations/schemas/thumbnail.yaml": "./operations/schemas/thumbnail.yaml"
40
+ "./operations/schemas/thumbnail.yaml": "./operations/schemas/thumbnail.yaml",
41
+ "./operations/schemas/video_text_watermark.yaml": "./operations/schemas/video_text_watermark.yaml",
42
+ "./operations/schemas/video_watermark.yaml": "./operations/schemas/video_watermark.yaml"
39
43
  },
40
44
  "files": [
41
45
  "dist/",
@@ -45,7 +49,8 @@
45
49
  "availability/availability.json"
46
50
  ],
47
51
  "scripts": {
48
- "build": "tsc",
52
+ "clean": "node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"",
53
+ "build": "npm run clean && tsc",
49
54
  "prepack": "npm run build"
50
55
  },
51
56
  "devDependencies": {