@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
@@ -17,15 +17,21 @@ info:
17
17
  compression Lambda handles `compress` for exactly one media type.
18
18
  - **`gisl-{env}-{region}-operations`** — non-compression operations
19
19
  (thumbnail, image_watermark, text_watermark, merge, archive, convert,
20
- custom_luma, audio_overlay, audio_watermark). Filter attribute:
21
- `operation_type`. Subscriptions: one queue per operation type, plus four
22
- thumbnail sub-type queues during the migration window. `custom_luma`,
23
- `audio_overlay`, and `audio_watermark` are `availability: planned`
24
- (per [I29](https://trello.com/c/EPUE5Vs1) +
20
+ custom_luma, audio_overlay, audio_watermark, audio_to_video,
21
+ video_watermark, video_text_watermark, split). Filter attribute:
22
+ `operation_type`. Subscriptions: one queue per operation type,
23
+ plus four thumbnail sub-type queues during the migration window.
24
+ `custom_luma`, `audio_overlay`, `audio_watermark`,
25
+ `audio_to_video`, `video_watermark`, `video_text_watermark`, and
26
+ `split` are `availability: planned` (per
27
+ [I29](https://trello.com/c/EPUE5Vs1) +
25
28
  [I19](https://trello.com/c/Xr3Z4GBF) +
26
- [I20](https://trello.com/c/omiCq7Vn)) — their queues are declared
27
- but receive no traffic until Lambda ships. `audio_watermark`
28
- additionally requires `enterprise` tier.
29
+ [I20](https://trello.com/c/omiCq7Vn) +
30
+ [`SlluxMBN`](https://trello.com/c/SlluxMBN) +
31
+ [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) +
32
+ [`vKI0CFDu`](https://trello.com/c/vKI0CFDu)) — their queues are
33
+ declared but receive no traffic until Lambda ships.
34
+ `audio_watermark` additionally requires `enterprise` tier.
29
35
 
30
36
  **Publisher branching rule** (implemented in `compression_api`'s
31
37
  `AwsSnsOperationPublisherAdapter` under Option A):
@@ -159,7 +165,7 @@ channels:
159
165
  address: gisl-{env}-{region}-operations
160
166
  description: |
161
167
  SNS topic where the API publishes **non-compression** operation
162
- requests (thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark). Filter
168
+ requests (thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark, audio_to_video, video_watermark, video_text_watermark, split). Filter
163
169
  attribute: `operation_type` (single-attribute filter policy).
164
170
  Subscriptions fan out to per-operation-type queues, keyed by
165
171
  `operation_type` value.
@@ -184,6 +190,23 @@ channels:
184
190
  (gated by `availability: planned` until Lambda ships per
185
191
  [I19](https://trello.com/c/Xr3Z4GBF) — same `feature_not_
186
192
  available` 422 gating)
193
+ - `operation_type = audio_to_video` -> `ops-audio-to-video` queue
194
+ (gated by `availability: planned` until Lambda ships per
195
+ [`SlluxMBN`](https://trello.com/c/SlluxMBN) — same
196
+ `feature_not_available` 422 gating)
197
+ - `operation_type = video_watermark` -> `ops-video-watermark`
198
+ queue (gated by `availability: planned` until Lambda ships per
199
+ [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) — same gating)
200
+ - `operation_type = video_text_watermark` ->
201
+ `ops-video-text-watermark` queue (gated by
202
+ `availability: planned` until Lambda ships per
203
+ [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) — same gating)
204
+ - `operation_type = split` -> `ops-split` queue (gated by
205
+ `availability: planned` until Lambda ships per
206
+ [`vKI0CFDu`](https://trello.com/c/vKI0CFDu) — same gating;
207
+ long-form video splits route via `processing_class` to the
208
+ `split-video-fargate` worker, same OperationType, different
209
+ worker)
187
210
  - `operation_type = audio_watermark` -> `ops-audio-watermark`
188
211
  queue (gated by `availability: planned` +
189
212
  `required_tier: enterprise` per
@@ -435,13 +458,15 @@ channels:
435
458
  (per JobInputV2.role). Backed by the operation-image-watermark
436
459
  Lambda (cross-repo X1 retirement target).
437
460
 
438
- Stable today for image bases (jpeg/png/webp). Animated GIF and
439
- video bases are advertised in `image_watermark.yaml` as `planned`
440
- via parallel mime_groups (`image_gif`, `video` per I5 — Trello
441
- AKZiOXnd); the publisher MAY route those `media_group` values to
442
- this queue once Lambda support ships. Until then the API returns
443
- `feature_not_available` (422) at workflow-create time and these
444
- messages do not reach the queue. Per ADR-0004 + I4-CONS + I5.
461
+ Stable today for image bases (jpeg/png/webp). Animated GIF is
462
+ advertised in `image_watermark.yaml` as `planned` via the
463
+ `image_gif` mime_group (per I5 — Trello AKZiOXnd); the publisher
464
+ MAY route that `media_group` value to this queue once Lambda
465
+ support ships. Until then the API returns `feature_not_available`
466
+ (422) at workflow-create time and those messages do not reach the
467
+ queue. Video bases are NOT routed here they go to
468
+ `ops-video-watermark` for the dedicated `video_watermark`
469
+ operation per ADR-0013. Per ADR-0004 + I4-CONS + I5 + ADR-0013.
445
470
  parameters:
446
471
  env:
447
472
  description: Environment (local, stg, prod)
@@ -578,6 +603,132 @@ channels:
578
603
  operationRequest:
579
604
  $ref: '#/components/messages/OperationRequestMessage'
580
605
 
606
+ opsAudioToVideo:
607
+ address: gisl-{env}-{region}-ops-audio-to-video
608
+ description: |
609
+ SQS queue for audio_to_video operations (produce video from an
610
+ audio input + optional still image overlay). Subscribed to the
611
+ `operations` SNS topic with filter
612
+ `operation_type = audio_to_video`. Multi-input role-based with
613
+ role asymmetry (Path B with `role: base` audio REQUIRED +
614
+ `role: overlay` image OPTIONAL — see `per_role_cardinality`
615
+ on the operation schema).
616
+
617
+ `availability: planned` per the operation schema; the API
618
+ rejects workflow-create with `feature_not_available` (422)
619
+ until the Lambda ships, so traffic does not reach this queue
620
+ today. Backed by the `operation-audio-to-video` Lambda
621
+ (cross-repo follow-up — lambdas pre-launch epic Wave A).
622
+
623
+ Per ADR-0004 + ADR-0015
624
+ ([`SlluxMBN`](https://trello.com/c/SlluxMBN)).
625
+ parameters:
626
+ env:
627
+ description: Environment (local, stg, prod)
628
+ region:
629
+ description: AWS region abbreviation (euw1, use1, etc.)
630
+ messages:
631
+ operationRequest:
632
+ $ref: '#/components/messages/OperationRequestMessage'
633
+
634
+ opsSplit:
635
+ address: gisl-{env}-{region}-ops-split
636
+ description: |
637
+ SQS queue for split operations (fan one input file into N
638
+ outputs across GIF / PDF / audio / video MIME families).
639
+ Subscribed to the `operations` SNS topic with filter
640
+ `operation_type = split`. Single-input — `media_group` derives
641
+ from the input MIME prefix per the existing single-input rule
642
+ (no operation-specific conditional needed in
643
+ OperationRequestAttributes).
644
+
645
+ `availability: planned` per the operation schema; the API
646
+ rejects workflow-create with `feature_not_available` (422)
647
+ until the Lambda ships, so traffic does not reach this queue
648
+ today. Backed by the `operation-split` Lambda (cross-repo
649
+ follow-up — lambdas pre-launch epic Wave A, ticket
650
+ [DbpJpVtm-sibling-L1](https://trello.com/c/vKI0CFDu)
651
+ [`vKI0CFDu`](https://trello.com/c/vKI0CFDu)).
652
+
653
+ **Long-form video splits** route to a separate
654
+ `split-video-fargate` worker via `processing_class` (same
655
+ OperationType, different worker — mirrors the
656
+ `compress` / `compress-video-fargate` topology). The schema
657
+ uses the standard processing_class short_form/long_form block
658
+ on the video mime_group; no schema-side discriminator beyond
659
+ MIME detection.
660
+
661
+ Per ADR-0004 + ADR-0014.
662
+ parameters:
663
+ env:
664
+ description: Environment (local, stg, prod)
665
+ region:
666
+ description: AWS region abbreviation (euw1, use1, etc.)
667
+ messages:
668
+ operationRequest:
669
+ $ref: '#/components/messages/OperationRequestMessage'
670
+
671
+ opsVideoWatermark:
672
+ address: gisl-{env}-{region}-ops-video-watermark
673
+ description: |
674
+ SQS queue for video_watermark operations (image overlay onto a
675
+ base video via FFmpeg's `overlay` filter). Subscribed to the
676
+ `operations` SNS topic with filter
677
+ `operation_type = video_watermark`. Multi-input role-based
678
+ (Path B with `role: base` video + `role: overlay` image,
679
+ exactly one of each per `per_role_cardinality`).
680
+
681
+ `availability: planned` per the operation schema; the API
682
+ rejects workflow-create with `feature_not_available` (422)
683
+ until the Lambda ships, so traffic does not reach this queue
684
+ today. Backed by the `operation-video-watermark` Lambda (cross-
685
+ repo follow-up — lambdas pre-launch epic Wave A, ticket
686
+ [DbpJpVtm](https://trello.com/c/DbpJpVtm)).
687
+
688
+ Distinct from `image_watermark` (pure-Rust image-only) — see
689
+ ADR-0013 for the split rationale. Audio stream-copy passthrough.
690
+
691
+ Per ADR-0004 + ADR-0013
692
+ ([`4NrRPCgh`](https://trello.com/c/4NrRPCgh)).
693
+ parameters:
694
+ env:
695
+ description: Environment (local, stg, prod)
696
+ region:
697
+ description: AWS region abbreviation (euw1, use1, etc.)
698
+ messages:
699
+ operationRequest:
700
+ $ref: '#/components/messages/OperationRequestMessage'
701
+
702
+ opsVideoTextWatermark:
703
+ address: gisl-{env}-{region}-ops-video-text-watermark
704
+ description: |
705
+ SQS queue for video_text_watermark operations (text overlay
706
+ onto a base video via FFmpeg's `drawtext` filter). Subscribed
707
+ to the `operations` SNS topic with filter
708
+ `operation_type = video_text_watermark`. Single-input — text
709
+ and styling come from options.
710
+
711
+ `availability: planned` per the operation schema; the API
712
+ rejects workflow-create with `feature_not_available` (422)
713
+ until the Lambda ships, so traffic does not reach this queue
714
+ today. Backed by the `operation-video-text-watermark` Lambda
715
+ (cross-repo follow-up — lambdas pre-launch epic Wave A,
716
+ ticket [mQdunjv6](https://trello.com/c/mQdunjv6)).
717
+
718
+ Distinct from `text_watermark` (pure-Rust image drawtext) —
719
+ see ADR-0013. Audio stream-copy passthrough.
720
+
721
+ Per ADR-0004 + ADR-0013
722
+ ([`4NrRPCgh`](https://trello.com/c/4NrRPCgh)).
723
+ parameters:
724
+ env:
725
+ description: Environment (local, stg, prod)
726
+ region:
727
+ description: AWS region abbreviation (euw1, use1, etc.)
728
+ messages:
729
+ operationRequest:
730
+ $ref: '#/components/messages/OperationRequestMessage'
731
+
581
732
  opsAudioWatermark:
582
733
  address: gisl-{env}-{region}-ops-audio-watermark
583
734
  description: |
@@ -744,6 +895,62 @@ channels:
744
895
  region:
745
896
  description: AWS region abbreviation (euw1, use1, etc.)
746
897
 
898
+ opsAudioToVideoDlq:
899
+ address: gisl-{env}-{region}-ops-audio-to-video-dlq
900
+ description: |
901
+ DLQ for failed audio_to_video operations (per ticket
902
+ [`SlluxMBN`](https://trello.com/c/SlluxMBN) / ADR-0015).
903
+ Messages land here after 5 failed processing attempts. No
904
+ traffic reaches this queue while audio_to_video is
905
+ `availability: planned`.
906
+ parameters:
907
+ env:
908
+ description: Environment (local, stg, prod)
909
+ region:
910
+ description: AWS region abbreviation (euw1, use1, etc.)
911
+
912
+ opsVideoWatermarkDlq:
913
+ address: gisl-{env}-{region}-ops-video-watermark-dlq
914
+ description: |
915
+ DLQ for failed video_watermark operations (per ticket
916
+ [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) / ADR-0013).
917
+ Messages land here after 5 failed processing attempts. No
918
+ traffic reaches this queue while video_watermark is
919
+ `availability: planned`.
920
+ parameters:
921
+ env:
922
+ description: Environment (local, stg, prod)
923
+ region:
924
+ description: AWS region abbreviation (euw1, use1, etc.)
925
+
926
+ opsVideoTextWatermarkDlq:
927
+ address: gisl-{env}-{region}-ops-video-text-watermark-dlq
928
+ description: |
929
+ DLQ for failed video_text_watermark operations (per ticket
930
+ [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) / ADR-0013).
931
+ Messages land here after 5 failed processing attempts. No
932
+ traffic reaches this queue while video_text_watermark is
933
+ `availability: planned`.
934
+ parameters:
935
+ env:
936
+ description: Environment (local, stg, prod)
937
+ region:
938
+ description: AWS region abbreviation (euw1, use1, etc.)
939
+
940
+ opsSplitDlq:
941
+ address: gisl-{env}-{region}-ops-split-dlq
942
+ description: |
943
+ DLQ for failed split operations (per ticket
944
+ [`vKI0CFDu`](https://trello.com/c/vKI0CFDu) / ADR-0014).
945
+ Messages land here after 5 failed processing attempts. No
946
+ traffic reaches this queue while split is `availability:
947
+ planned`.
948
+ parameters:
949
+ env:
950
+ description: Environment (local, stg, prod)
951
+ region:
952
+ description: AWS region abbreviation (euw1, use1, etc.)
953
+
747
954
  # ============================================
748
955
  # UPLOAD PROBE (per ticket vBlEurU7 + M2 Epic SrHwuvIl)
749
956
  # ============================================
@@ -944,7 +1151,8 @@ operations:
944
1151
  operation where `operation_type != compress` — that is, thumbnail
945
1152
  (including the four sub-type values during the migration window),
946
1153
  image_watermark, text_watermark, merge, archive, convert,
947
- custom_luma, audio_overlay, audio_watermark. The target SNS
1154
+ custom_luma, audio_overlay, audio_watermark, audio_to_video,
1155
+ video_watermark, video_text_watermark, split. The target SNS
948
1156
  topic filters subscriptions on `operation_type` alone.
949
1157
 
950
1158
  **Message attributes set on this branch:** `{operation_type,
@@ -1187,6 +1395,85 @@ operations:
1187
1395
  messages:
1188
1396
  - $ref: '#/channels/opsAudioOverlay/messages/operationRequest'
1189
1397
 
1398
+ consumeSplitOperation:
1399
+ action: receive
1400
+ channel:
1401
+ $ref: '#/channels/opsSplit'
1402
+ summary: Process split operation
1403
+ description: |
1404
+ The `operation-split` Lambda (cross-repo follow-up — lambdas
1405
+ pre-launch epic Wave A, not yet shipped) consumes split
1406
+ requests routed by `operation_type=split`. Single-input —
1407
+ `media_group` derives from the input MIME prefix per the
1408
+ existing single-input rule. `availability: planned`; the API
1409
+ rejects workflow-create with `feature_not_available` (422)
1410
+ until the Lambda ships, so traffic does not reach this channel
1411
+ today. Long-form video splits route to a separate
1412
+ `split-video-fargate` worker via `processing_class`.
1413
+ Per ADR-0004 + ADR-0014
1414
+ ([`vKI0CFDu`](https://trello.com/c/vKI0CFDu)).
1415
+ messages:
1416
+ - $ref: '#/channels/opsSplit/messages/operationRequest'
1417
+
1418
+ consumeVideoWatermarkOperation:
1419
+ action: receive
1420
+ channel:
1421
+ $ref: '#/channels/opsVideoWatermark'
1422
+ summary: Process video_watermark operation
1423
+ description: |
1424
+ The `operation-video-watermark` Lambda (cross-repo follow-up —
1425
+ lambdas pre-launch epic Wave A, not yet shipped) consumes
1426
+ video_watermark requests routed by
1427
+ `operation_type=video_watermark`. Multi-input role-based with
1428
+ `role: base` video + `role: overlay` image (exactly one of
1429
+ each per `per_role_cardinality`). `availability: planned`; the
1430
+ API rejects workflow-create with `feature_not_available` (422)
1431
+ until the Lambda ships, so traffic does not reach this channel
1432
+ today.
1433
+ Per ADR-0004 + ADR-0013
1434
+ ([`4NrRPCgh`](https://trello.com/c/4NrRPCgh)).
1435
+ messages:
1436
+ - $ref: '#/channels/opsVideoWatermark/messages/operationRequest'
1437
+
1438
+ consumeVideoTextWatermarkOperation:
1439
+ action: receive
1440
+ channel:
1441
+ $ref: '#/channels/opsVideoTextWatermark'
1442
+ summary: Process video_text_watermark operation
1443
+ description: |
1444
+ The `operation-video-text-watermark` Lambda (cross-repo
1445
+ follow-up — lambdas pre-launch epic Wave A, not yet shipped)
1446
+ consumes video_text_watermark requests routed by
1447
+ `operation_type=video_text_watermark`. Single-input — text
1448
+ and styling come from options (no `role` field on the source
1449
+ entry). `availability: planned`; the API rejects workflow-
1450
+ create with `feature_not_available` (422) until the Lambda
1451
+ ships, so traffic does not reach this channel today.
1452
+ Per ADR-0004 + ADR-0013
1453
+ ([`4NrRPCgh`](https://trello.com/c/4NrRPCgh)).
1454
+ messages:
1455
+ - $ref: '#/channels/opsVideoTextWatermark/messages/operationRequest'
1456
+
1457
+ consumeAudioToVideoOperation:
1458
+ action: receive
1459
+ channel:
1460
+ $ref: '#/channels/opsAudioToVideo'
1461
+ summary: Process audio_to_video operation
1462
+ description: |
1463
+ The `operation-audio-to-video` Lambda (cross-repo follow-up —
1464
+ lambdas pre-launch epic Wave A, not yet shipped) consumes
1465
+ audio_to_video requests routed by
1466
+ `operation_type=audio_to_video`. Multi-input role-based with
1467
+ role asymmetry (Path B with `role: base` audio REQUIRED +
1468
+ `role: overlay` image OPTIONAL per `per_role_cardinality`).
1469
+ `availability: planned`; the API rejects workflow-create with
1470
+ `feature_not_available` (422) until the Lambda ships, so
1471
+ traffic does not reach this channel today.
1472
+ Per ADR-0004 + ADR-0015
1473
+ ([`SlluxMBN`](https://trello.com/c/SlluxMBN)).
1474
+ messages:
1475
+ - $ref: '#/channels/opsAudioToVideo/messages/operationRequest'
1476
+
1190
1477
  consumeAudioWatermarkOperation:
1191
1478
  action: receive
1192
1479
  channel:
@@ -1401,17 +1688,19 @@ components:
1401
1688
  Message sent by the API to request processing of any
1402
1689
  **non-compression** operation (thumbnail, image_watermark,
1403
1690
  text_watermark, merge, archive, convert, custom_luma,
1404
- audio_overlay, audio_watermark). Published to the
1405
- `operations` SNS topic; routed by the single-attribute filter
1406
- `operation_type` to one of the ops-family queues.
1691
+ audio_overlay, audio_watermark, audio_to_video,
1692
+ video_watermark, video_text_watermark). Published to the
1693
+ `operations` SNS topic; routed by the single-attribute
1694
+ filter `operation_type` to one of the ops-family queues.
1407
1695
 
1408
1696
  **SNS Message Attributes:**
1409
1697
  - `operation_type`: always present. Values: `thumbnail`,
1410
1698
  `thumbnail_image`, `thumbnail_video`, `thumbnail_document`,
1411
1699
  `thumbnail_office`, `image_watermark`, `text_watermark`,
1412
1700
  `merge`, `archive`, `convert`, `custom_luma`,
1413
- `audio_overlay`, `audio_watermark`. Used by SNS as the
1414
- filter attribute on the `operations` topic.
1701
+ `audio_overlay`, `audio_watermark`, `audio_to_video`,
1702
+ `video_watermark`, `video_text_watermark`. Used by SNS as
1703
+ the filter attribute on the `operations` topic.
1415
1704
  - `media_group`: informational metadata, present for every
1416
1705
  operation except `archive` (which is media-agnostic). Values:
1417
1706
  `image`, `video`, `audio`, `document`. **Not** used by SNS as
@@ -1430,12 +1719,17 @@ components:
1430
1719
  `required_tier: enterprise` so workflow-create rejects with
1431
1720
  422 + 403 today.
1432
1721
  - Multi-input operations (merge, archive, image_watermark,
1433
- custom_luma, audio_overlay): use `sources` array. Merge
1434
- additionally requires `output_type`. image_watermark,
1435
- custom_luma, and audio_overlay use `role` per
1436
- `JobInputV2.role`. custom_luma and audio_overlay are
1437
- `availability: planned` so workflow-create rejects with 422
1438
- today.
1722
+ custom_luma, audio_overlay, audio_to_video): use `sources`
1723
+ array. Merge additionally requires `output_type`.
1724
+ image_watermark, custom_luma, audio_overlay, and
1725
+ audio_to_video use `role` per `JobInputV2.role`.
1726
+ audio_to_video has role asymmetry REQUIRED `base` (audio)
1727
+ + OPTIONAL `overlay` (image 0..1) per
1728
+ `per_role_cardinality`; sum-of-role-minima drives the
1729
+ minimum `sources` count (1 for audio_to_video; 2 for all
1730
+ other role-based ops today). custom_luma, audio_overlay,
1731
+ and audio_to_video are `availability: planned` so
1732
+ workflow-create rejects with 422 today.
1439
1733
 
1440
1734
  **Migration window note.** During the thumbnail sub-type
1441
1735
  migration, both `operation_type=thumbnail` (legacy) and
@@ -2151,6 +2445,14 @@ components:
2151
2445
  `required_tier: enterprise` per
2152
2446
  [I20](https://trello.com/c/omiCq7Vn), so this constraint is
2153
2447
  contract-defined but not exercised today.
2448
+ - For `operation_type = audio_to_video`, `media_group` must
2449
+ equal `audio` (derived from the `base` role input MIME
2450
+ prefix per ADR-0015 — the operation is multi-input
2451
+ role-based with role asymmetry: required audio base +
2452
+ optional image overlay; routing follows the `base` role).
2453
+ The operation is `availability: planned` per
2454
+ [`SlluxMBN`](https://trello.com/c/SlluxMBN), so this
2455
+ constraint is contract-defined but not exercised today.
2154
2456
  - For `operation_type = image_watermark`, `media_group` must
2155
2457
  equal `image` while only the stable `image` mime_group is
2156
2458
  dispatchable. The schema declares `image_gif` and `video`
@@ -2190,6 +2492,10 @@ components:
2190
2492
  - custom_luma
2191
2493
  - audio_overlay
2192
2494
  - audio_watermark
2495
+ - audio_to_video
2496
+ - video_watermark
2497
+ - video_text_watermark
2498
+ - split
2193
2499
  media_group:
2194
2500
  type: string
2195
2501
  description: |
@@ -2286,6 +2592,30 @@ components:
2286
2592
  properties:
2287
2593
  media_group:
2288
2594
  const: document
2595
+ - if:
2596
+ properties:
2597
+ operation_type:
2598
+ const: audio_to_video
2599
+ then:
2600
+ properties:
2601
+ media_group:
2602
+ const: audio
2603
+ - if:
2604
+ properties:
2605
+ operation_type:
2606
+ const: video_watermark
2607
+ then:
2608
+ properties:
2609
+ media_group:
2610
+ const: video
2611
+ - if:
2612
+ properties:
2613
+ operation_type:
2614
+ const: video_text_watermark
2615
+ then:
2616
+ properties:
2617
+ media_group:
2618
+ const: video
2289
2619
 
2290
2620
  # ============================================
2291
2621
  # OPERATION REQUEST PAYLOAD SCHEMA (shared by both messages)
@@ -2304,10 +2634,11 @@ components:
2304
2634
  `file_type` is required.
2305
2635
 
2306
2636
  **Multi-input operations** (merge, archive, image_watermark,
2307
- custom_luma, audio_overlay): use `sources` array. Each entry
2308
- has `bucket` + `key`. Merge entries may include per-input
2309
- overrides (e.g. transition type). Merge also requires
2310
- `output_type`. custom_luma and audio_overlay are
2637
+ custom_luma, audio_overlay, audio_to_video): use `sources`
2638
+ array. Each entry has `bucket` + `key`. Merge entries may
2639
+ include per-input overrides (e.g. transition type). Merge
2640
+ also requires `output_type`. custom_luma, audio_overlay, and
2641
+ audio_to_video are
2311
2642
  `availability: planned` so workflow-create rejects with 422
2312
2643
  today; the wire shape is contract-defined.
2313
2644
 
@@ -2331,6 +2662,8 @@ components:
2331
2662
  - text_watermark
2332
2663
  - convert
2333
2664
  - audio_watermark
2665
+ - video_text_watermark
2666
+ - split
2334
2667
  then:
2335
2668
  required:
2336
2669
  - file_type
@@ -2339,7 +2672,7 @@ components:
2339
2672
  - if:
2340
2673
  properties:
2341
2674
  operation_type:
2342
- enum: [merge, archive, image_watermark, custom_luma, audio_overlay]
2675
+ enum: [merge, archive, image_watermark, custom_luma, audio_overlay, audio_to_video, video_watermark]
2343
2676
  then:
2344
2677
  required:
2345
2678
  - sources
@@ -2404,16 +2737,24 @@ components:
2404
2737
  type: array
2405
2738
  description: |
2406
2739
  Input files for multi-input operations (merge, archive,
2407
- image_watermark, custom_luma, audio_overlay). Each entry
2408
- specifies an S3 location. Order matters for merge
2409
- (concatenation order). Per-input overrides (e.g.
2410
- transition) can be inlined on each entry.
2740
+ image_watermark, custom_luma, audio_overlay,
2741
+ audio_to_video). Each entry specifies an S3 location.
2742
+ Order matters for merge (concatenation order). Per-input
2743
+ overrides (e.g. transition) can be inlined on each entry.
2411
2744
  Role-based multi-input operations (image_watermark,
2412
- custom_luma, audio_overlay) require a `role` discriminator
2413
- on each entry — see `SourceEntry.role`.
2745
+ custom_luma, audio_overlay, audio_to_video) require a
2746
+ `role` discriminator on each entry — see `SourceEntry.role`.
2747
+
2748
+ **Minimum source count = sum of role minima** declared in
2749
+ the operation's `per_role_cardinality` (per ticket
2750
+ [`SlluxMBN`](https://trello.com/c/SlluxMBN) ADR-0015).
2751
+ `audio_to_video` requires 1 source (`base` audio;
2752
+ `overlay` optional, 0..1); all other role-based ops
2753
+ require 2+ today. The schema floor here is `minItems: 1`
2754
+ to admit the audio_to_video case.
2414
2755
  items:
2415
2756
  $ref: '#/components/schemas/SourceEntry'
2416
- minItems: 2
2757
+ minItems: 1
2417
2758
 
2418
2759
  # Output
2419
2760
  output_bucket:
@@ -3413,6 +3754,51 @@ components:
3413
3754
  today. Pairs with `POST /api/audio-watermark/decode` for
3414
3755
  own-watermarks-only extraction. Per ADR-0004 + I20 (Trello
3415
3756
  omiCq7Vn).
3757
+ - `audio_to_video`: Produce a video from an audio input plus an
3758
+ OPTIONAL still image overlay (multi-input role-based with
3759
+ the first OPTIONAL role on the contract — `role: base`
3760
+ audio required, `role: overlay` image 0..1 per
3761
+ `per_role_cardinality`). When overlay is omitted, the video
3762
+ uses a solid background colour. `availability: planned` per
3763
+ the operation schema; the API rejects workflow-create with
3764
+ `feature_not_available` (422) until the Lambda ships, so
3765
+ traffic does not reach SNS today. `media_group` is derived
3766
+ from the `base` role input MIME prefix per ADR-0015 (always
3767
+ `audio` for audio_to_video). Routes via
3768
+ `operation_type=audio_to_video` to `ops-audio-to-video`.
3769
+ Per ADR-0004 + ADR-0015 ([`SlluxMBN`](https://trello.com/c/SlluxMBN)).
3770
+ - `video_watermark`: Apply an image overlay onto a base video
3771
+ via FFmpeg's `overlay` filter. Multi-input role-based
3772
+ (`role: base` video + `role: overlay` image, exactly one
3773
+ of each per `per_role_cardinality { base: 1/1, overlay:
3774
+ 1/1 }`). Re-encode required; audio stream-copy passthrough.
3775
+ Distinct from `image_watermark` (pure-Rust/image-only —
3776
+ see ADR-0013). `availability: planned`; routes via
3777
+ `operation_type=video_watermark` to `ops-video-watermark`.
3778
+ Per ADR-0004 + ADR-0013
3779
+ ([`4NrRPCgh`](https://trello.com/c/4NrRPCgh)).
3780
+ - `video_text_watermark`: Render a text overlay onto a base
3781
+ video via FFmpeg's `drawtext` filter. Single-input — text
3782
+ and styling in options. Same `watermark_mode` (single/
3783
+ tiled) + `anchor` + `margin` vocab as `text_watermark`.
3784
+ Re-encode required; audio stream-copy passthrough.
3785
+ Distinct from `text_watermark` (image-only drawtext path
3786
+ — see ADR-0013). `availability: planned`; routes via
3787
+ `operation_type=video_text_watermark` to
3788
+ `ops-video-text-watermark`. Per ADR-0004 + ADR-0013.
3789
+ - `split`: Fan one input file into N outputs across GIF /
3790
+ PDF / audio / video MIME families. Single-input per-mime-
3791
+ group catalog (mode discriminator for audio + video;
3792
+ frame_range REQUIRED for GIF; page_range OR page_groups
3793
+ for PDF). 200-output hard cap per ADR-0009 §D5; output
3794
+ naming output-001..output-200. Long-form video routes to
3795
+ a separate `split-video-fargate` worker via
3796
+ `processing_class`. `media_group` derives from the input
3797
+ MIME prefix per the existing single-input rule (no
3798
+ operation-specific conditional needed). `availability:
3799
+ planned`; routes via `operation_type=split` to `ops-split`.
3800
+ Per ADR-0004 + ADR-0014
3801
+ ([`vKI0CFDu`](https://trello.com/c/vKI0CFDu)).
3416
3802
  enum:
3417
3803
  - compress
3418
3804
  - thumbnail
@@ -3424,6 +3810,10 @@ components:
3424
3810
  - custom_luma
3425
3811
  - audio_overlay
3426
3812
  - audio_watermark
3813
+ - audio_to_video
3814
+ - video_watermark
3815
+ - video_text_watermark
3816
+ - split
3427
3817
 
3428
3818
  MediaGroup:
3429
3819
  type: string
@@ -3448,6 +3838,10 @@ components:
3448
3838
  - output_type=video -> video
3449
3839
  - output_type=audio -> audio
3450
3840
 
3841
+ For multi-input role-based operations with role asymmetry
3842
+ (audio_to_video), derived from the `base` role input MIME prefix
3843
+ per ADR-0015 — audio_to_video always emits `media_group: audio`.
3844
+
3451
3845
  Omitted from the SNS attributes for archive (media-agnostic). The
3452
3846
  four thumbnail sub-types map to media_group as follows:
3453
3847
  - thumbnail_image -> image
@@ -3489,6 +3883,22 @@ components:
3489
3883
  - `audio_overlay`: REQUIRED — exactly one `base` + one
3490
3884
  `overlay` per job (per ticket I19); reuses
3491
3885
  `image_watermark`'s role values.
3886
+ - `audio_to_video`: REQUIRED `base` (audio source); OPTIONAL
3887
+ `overlay` (still image, 0..1). FIRST role-based op with
3888
+ an OPTIONAL role — see `per_role_cardinality` on the
3889
+ operation schema for the machine-readable cardinality
3890
+ declaration (per ticket
3891
+ [`SlluxMBN`](https://trello.com/c/SlluxMBN) / ADR-0015).
3892
+ Reuses `base` + `overlay` role values already declared
3893
+ for `image_watermark` / `audio_overlay`.
3894
+ - `video_watermark`: REQUIRED `base` (video source); REQUIRED
3895
+ `overlay` (watermark image). Exactly one of each per
3896
+ `per_role_cardinality { base: 1/1, overlay: 1/1 }`. First
3897
+ non-introductory adoption of the `per_role_cardinality`
3898
+ vocab (per ticket
3899
+ [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) / ADR-0013).
3900
+ `video_text_watermark` is single-input (text in options;
3901
+ no `role` field applies).
3492
3902
  - `merge` / `archive`: omit (all inputs share the same
3493
3903
  role). Future operations may widen this enum.
3494
3904
 
@@ -3496,7 +3906,11 @@ components:
3496
3906
  per ticket QokFw8VR. The OpenAPI side at `JobInputV2.role`
3497
3907
  remains an inline enum today — symmetric extraction tracked
3498
3908
  as a follow-up; value-set parity is verified by inspection
3499
- (both lists must remain identical).
3909
+ (both lists must remain identical). The
3910
+ `scripts/check-per-role-cardinality.py` anti-drift check
3911
+ takes this AsyncAPI named enum as the authoritative source
3912
+ for cardinality-key membership checks until the OpenAPI
3913
+ side is extracted.
3500
3914
  enum:
3501
3915
  - base
3502
3916
  - overlay