@giveitsmaller/contracts 0.8.0 → 0.9.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 (355) hide show
  1. package/asyncapi/events.yaml +288 -153
  2. package/availability/availability.json +50 -17
  3. package/dist/asyncapi/LongFormJobMessage.d.ts +4 -3
  4. package/dist/asyncapi/LongFormOperationType.d.ts +5 -0
  5. package/dist/asyncapi/LongFormOperationType.js +6 -0
  6. package/dist/asyncapi/LongFormProcessingClass.d.ts +4 -0
  7. package/dist/asyncapi/LongFormProcessingClass.js +5 -0
  8. package/dist/asyncapi/SourceEntry.d.ts +2 -0
  9. package/dist/asyncapi/index.d.ts +2 -1
  10. package/dist/asyncapi/index.js +2 -1
  11. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  12. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  13. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  14. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  15. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  16. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  17. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  18. package/dist/openapi/models/AuthErrorType.js +1 -1
  19. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  20. package/dist/openapi/models/AvailabilityValue.js +1 -1
  21. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  22. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  23. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  24. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  25. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  26. package/dist/openapi/models/CallbackEventType.js +1 -1
  27. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  28. package/dist/openapi/models/ConnectionSource.js +1 -1
  29. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  30. package/dist/openapi/models/ContactRequest.js +1 -1
  31. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  32. package/dist/openapi/models/ContactSubject.js +1 -1
  33. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  34. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  35. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  36. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  37. package/dist/openapi/models/CreateExternalImport422Response.d.ts +6 -2
  38. package/dist/openapi/models/CreateExternalImport422Response.js +17 -21
  39. package/dist/openapi/models/CreateWorkflow422Response.d.ts +10 -2
  40. package/dist/openapi/models/CreateWorkflow422Response.js +27 -35
  41. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  42. package/dist/openapi/models/CreditTransaction.js +1 -1
  43. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  44. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  45. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  46. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  47. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  48. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  49. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  50. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  51. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  52. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  53. package/dist/openapi/models/Delivery.d.ts +1 -1
  54. package/dist/openapi/models/Delivery.js +1 -1
  55. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  56. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  57. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  58. package/dist/openapi/models/DeliveryPlan.js +1 -1
  59. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  60. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  61. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  62. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  63. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  64. package/dist/openapi/models/DeliverySelection.js +1 -1
  65. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  66. package/dist/openapi/models/EndpointProjection.js +1 -1
  67. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  68. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  69. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  70. package/dist/openapi/models/EstimateQuality.js +1 -1
  71. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  72. package/dist/openapi/models/EstimateRange.js +1 -1
  73. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  74. package/dist/openapi/models/ExternalDestination.js +1 -1
  75. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  76. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  77. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  78. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  79. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  80. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  81. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  82. package/dist/openapi/models/ExternalImportToken.js +1 -1
  83. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  84. package/dist/openapi/models/ExternalSource.js +1 -1
  85. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +7 -8
  86. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  87. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  88. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  89. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  90. package/dist/openapi/models/FeatureViolation.js +1 -1
  91. package/dist/openapi/models/JobDefinition.d.ts +8 -5
  92. package/dist/openapi/models/JobDefinition.js +1 -1
  93. package/dist/openapi/models/JobDownload.d.ts +1 -1
  94. package/dist/openapi/models/JobDownload.js +1 -1
  95. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  96. package/dist/openapi/models/JobInputV2.js +1 -1
  97. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  98. package/dist/openapi/models/JobOutputSource.js +1 -1
  99. package/dist/openapi/models/JobResponse.d.ts +23 -1
  100. package/dist/openapi/models/JobResponse.js +4 -1
  101. package/dist/openapi/models/JobStatus.d.ts +1 -1
  102. package/dist/openapi/models/JobStatus.js +1 -1
  103. package/dist/openapi/models/JobType.d.ts +1 -1
  104. package/dist/openapi/models/JobType.js +1 -1
  105. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  106. package/dist/openapi/models/LivenessResponse.js +1 -1
  107. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  108. package/dist/openapi/models/LoginUser200Response.js +1 -1
  109. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  110. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  111. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  112. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  113. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  114. package/dist/openapi/models/LoginUserRequest.js +1 -1
  115. package/dist/openapi/models/LogoutUser200Response.d.ts +1 -1
  116. package/dist/openapi/models/LogoutUser200Response.js +1 -1
  117. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  118. package/dist/openapi/models/MetadataResponse.js +1 -1
  119. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  120. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  121. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  122. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  123. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  124. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  125. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  126. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  127. package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
  128. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  129. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  130. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  131. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  132. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  133. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  134. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  135. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  136. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  137. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  138. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  139. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  140. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  141. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  142. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  143. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  144. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  145. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  146. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  147. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  148. package/dist/openapi/models/MultipartPartListing.js +1 -1
  149. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  150. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  151. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  152. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  153. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  154. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  155. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  156. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  157. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  158. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  159. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  160. package/dist/openapi/models/OperationDefinition.js +1 -1
  161. package/dist/openapi/models/OperationDownload.d.ts +1 -1
  162. package/dist/openapi/models/OperationDownload.js +1 -1
  163. package/dist/openapi/models/OperationInputModel.d.ts +1 -1
  164. package/dist/openapi/models/OperationInputModel.js +1 -1
  165. package/dist/openapi/models/OperationResponse.d.ts +1 -1
  166. package/dist/openapi/models/OperationResponse.js +1 -1
  167. package/dist/openapi/models/OperationResult.d.ts +1 -1
  168. package/dist/openapi/models/OperationResult.js +1 -1
  169. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  170. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  171. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  172. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  173. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  174. package/dist/openapi/models/OperationStatus.js +1 -1
  175. package/dist/openapi/models/OperationType.d.ts +14 -12
  176. package/dist/openapi/models/OperationType.js +14 -12
  177. package/dist/openapi/models/OperationsSchemaResponse.d.ts +8 -1
  178. package/dist/openapi/models/OperationsSchemaResponse.js +4 -1
  179. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +55 -0
  180. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +42 -0
  181. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +40 -0
  182. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +45 -0
  183. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +45 -0
  184. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +43 -0
  185. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +33 -0
  186. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +42 -0
  187. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  188. package/dist/openapi/models/OptionSchema.js +1 -1
  189. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  190. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  191. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  192. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  193. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  194. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  195. package/dist/openapi/models/ProbePendingResponse.d.ts +8 -7
  196. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  197. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  198. package/dist/openapi/models/ProcessingClass.js +1 -1
  199. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  200. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  201. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +7 -5
  202. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  203. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  204. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  205. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  206. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  207. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  208. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  209. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  210. package/dist/openapi/models/ProcessingPlan.js +1 -1
  211. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  212. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  213. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  214. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  215. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  216. package/dist/openapi/models/ReadinessResponse.js +1 -1
  217. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  218. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  219. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  220. package/dist/openapi/models/RetryResponse.js +1 -1
  221. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  222. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  223. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  224. package/dist/openapi/models/SseCompletionBase.js +1 -1
  225. package/dist/openapi/models/SseEventType.d.ts +1 -1
  226. package/dist/openapi/models/SseEventType.js +1 -1
  227. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  228. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  229. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  230. package/dist/openapi/models/SseJobFailedData.js +1 -1
  231. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  232. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  233. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  234. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  235. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  236. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  237. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  238. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  239. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  240. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  241. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  242. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  243. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  244. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  245. package/dist/openapi/models/SseOperationProgressData.d.ts +3 -2
  246. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  247. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  248. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  249. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  250. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  251. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  252. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  253. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  254. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  255. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  256. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  257. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  258. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  259. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  260. package/dist/openapi/models/UploadFile403Response.js +1 -1
  261. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  262. package/dist/openapi/models/UploadFile422Response.js +1 -1
  263. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  264. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  265. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  266. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  267. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  268. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  269. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  270. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  271. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  272. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  273. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  274. package/dist/openapi/models/UploadResponse.js +1 -1
  275. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  276. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  277. package/dist/openapi/models/UploadSource.d.ts +1 -1
  278. package/dist/openapi/models/UploadSource.js +1 -1
  279. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  280. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  281. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  282. package/dist/openapi/models/UploadThresholds.js +1 -1
  283. package/dist/openapi/models/UserTier.d.ts +1 -1
  284. package/dist/openapi/models/UserTier.js +1 -1
  285. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +31 -4
  286. package/dist/openapi/models/ValidationErrorEnvelope.js +11 -1
  287. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  288. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  289. package/dist/openapi/models/WarningType.d.ts +1 -1
  290. package/dist/openapi/models/WarningType.js +1 -1
  291. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  292. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  293. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  294. package/dist/openapi/models/WebhookPayload.js +1 -1
  295. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  296. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  297. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  298. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  299. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  300. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  301. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  302. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  303. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  304. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  305. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  306. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  307. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  308. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  309. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  310. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  311. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  312. package/dist/openapi/models/WorkflowEdge.js +1 -1
  313. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  314. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  315. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  316. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  317. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  318. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  319. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  320. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  321. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  322. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  323. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  324. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  325. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  326. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  327. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  328. package/dist/openapi/models/WorkflowSource.js +1 -1
  329. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  330. package/dist/openapi/models/WorkflowStatus.js +1 -1
  331. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  332. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  333. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  334. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  335. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  336. package/dist/openapi/models/WorkflowWarning.js +1 -1
  337. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  338. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  339. package/dist/openapi/models/index.d.ts +4 -0
  340. package/dist/openapi/models/index.js +4 -0
  341. package/dist/openapi/runtime.d.ts +1 -1
  342. package/dist/openapi/runtime.js +1 -1
  343. package/dist/operations/audio_to_video.metadata.js +1 -1
  344. package/dist/operations/merge.metadata.js +0 -3
  345. package/dist/operations/split.metadata.js +5 -1
  346. package/dist/operations/video_watermark.metadata.js +2 -2
  347. package/openapi/api.yaml +258 -72
  348. package/operations/schemas/audio_to_video.yaml +6 -4
  349. package/operations/schemas/custom_luma.yaml +3 -4
  350. package/operations/schemas/merge.yaml +6 -6
  351. package/operations/schemas/split.yaml +11 -4
  352. package/operations/schemas/video_watermark.yaml +13 -5
  353. package/package.json +1 -1
  354. package/dist/asyncapi/AnonymousSchema_253.d.ts +0 -5
  355. package/dist/asyncapi/AnonymousSchema_253.js +0 -6
package/openapi/api.yaml CHANGED
@@ -89,7 +89,7 @@ info:
89
89
  of truth instead of hardcoding magic numbers. A runtime
90
90
  `GET /api/uploads/limits` endpoint for dynamic discovery
91
91
  (per-tier / per-environment overrides) is a deferred follow-up.
92
- version: 2.21.0
92
+ version: 2.31.0
93
93
  contact:
94
94
  name: API Support
95
95
 
@@ -1146,10 +1146,12 @@ paths:
1146
1146
  discriminated union with 4 leaves: `upload` /
1147
1147
  `external_import` / `connection` / `job_output`).
1148
1148
  - **Multi-input jobs** (merge, archive, image_watermark,
1149
- custom_luma, audio_overlay): provide `inputs[]` with
1149
+ custom_luma, audio_overlay, audio_to_video, video_watermark):
1150
+ provide `inputs[]` with
1150
1151
  `JobInputV2` entries. Each entry has its own `source`
1151
1152
  (same `WorkflowSource` union), plus optional `role`
1152
- (image_watermark, custom_luma, audio_overlay) and
1153
+ (image_watermark, custom_luma, audio_overlay, audio_to_video,
1154
+ video_watermark) and
1153
1155
  `per_input_options`.
1154
1156
 
1155
1157
  Exactly one of `source` or `inputs` is required per job.
@@ -1184,8 +1186,9 @@ paths:
1184
1186
 
1185
1187
  **Multi-input constraint:** multi-input jobs (`inputs[]`) must
1186
1188
  have exactly one operation, which must be a multi-input type
1187
- (`merge`, `archive`, `image_watermark`, `custom_luma`, or
1188
- `audio_overlay`). Chaining after a multi-input operation is
1189
+ (`merge`, `archive`, `image_watermark`, `custom_luma`,
1190
+ `audio_overlay`, `audio_to_video`, or `video_watermark`).
1191
+ Chaining after a multi-input operation is
1189
1192
  not valid — create a downstream `job_output`-sourced job
1190
1193
  instead.
1191
1194
 
@@ -1393,11 +1396,59 @@ paths:
1393
1396
  max_parallel_long_form_jobs: 2
1394
1397
  warnings: []
1395
1398
  '400':
1396
- description: Validation failed (malformed request body)
1399
+ description: |
1400
+ Bad request — malformed request body, or a workflow-DAG
1401
+ structural violation caught before semantic validation. The
1402
+ `ErrorEnvelope.error` field carries a specific machine code (per
1403
+ [`g8PPkbNu`](https://trello.com/c/g8PPkbNu) — narrower
1404
+ DAG-validation codes; HTTP statuses unchanged, only the code
1405
+ narrows). Conformance-safe: `error` is a free string (no enum).
1406
+ - `WORKFLOW_EDGE_REFERENCES_UNKNOWN_JOB` — a `workflow_edges`
1407
+ entry, a job-level `source`, or an `inputs[].source` references
1408
+ a job `ref`/`id` not present in the request (one code across
1409
+ all unknown-job-reference sites).
1410
+ - `CYCLIC_JOB_OUTPUT_SOURCE_GRAPH` — an implicit cycle in the
1411
+ `job_output` source graph, detected during effective-input-MIME
1412
+ resolution (distinct from explicit `workflow_edges` cycles,
1413
+ which are 422 `CYCLIC_WORKFLOW_EDGES`).
1414
+ - `RESERVED_JOB_ID_PATTERN` — a user-supplied job `id` matches the
1415
+ reserved `^job_\d+$` pattern **and is the SOLE validation
1416
+ failure**; mixed-violation requests keep the aggregated generic
1417
+ `BAD_REQUEST`.
1418
+ - `BAD_REQUEST` — malformed JSON / generic body validation, or any
1419
+ mixed/aggregated violation set.
1397
1420
  content:
1398
1421
  application/json:
1399
1422
  schema:
1400
1423
  $ref: '#/components/schemas/ErrorEnvelope'
1424
+ examples:
1425
+ edge_references_unknown_job:
1426
+ summary: A workflow reference points at a job that does not exist
1427
+ value:
1428
+ success: false
1429
+ error: "WORKFLOW_EDGE_REFERENCES_UNKNOWN_JOB"
1430
+ message: "A workflow reference points at a job that does not exist."
1431
+ message_key: "error.workflow_edge_references_unknown_job"
1432
+ reserved_job_id_pattern:
1433
+ summary: Sole violation — a job id uses the reserved pattern
1434
+ value:
1435
+ success: false
1436
+ error: "RESERVED_JOB_ID_PATTERN"
1437
+ message: "Job id must not use the reserved pattern (job_<number>)."
1438
+ message_key: "error.reserved_job_id_pattern"
1439
+ cyclic_job_output_source_graph:
1440
+ summary: Implicit cycle in the job_output source graph
1441
+ value:
1442
+ success: false
1443
+ error: "CYCLIC_JOB_OUTPUT_SOURCE_GRAPH"
1444
+ message: "Job output sources form a cycle."
1445
+ message_key: "error.cyclic_job_output_source_graph"
1446
+ bad_request_malformed:
1447
+ summary: Malformed JSON / generic or mixed-violation body
1448
+ value:
1449
+ success: false
1450
+ error: "BAD_REQUEST"
1451
+ message: "Invalid workflow request"
1401
1452
  '403':
1402
1453
  description: |
1403
1454
  Forbidden — tier-quota or feature-tier restriction. Discriminated
@@ -1496,10 +1547,19 @@ paths:
1496
1547
  Semantically invalid request. One of:
1497
1548
 
1498
1549
  - Generic validation error (unknown operation type, invalid
1499
- option combinations, cyclic dependency in workflow_edges,
1500
- multi-input job with multiple operations, source ref
1501
- pointing to a non-existent job) — returned as
1502
- `ValidationErrorEnvelope`. No `error_type` field.
1550
+ option combinations, multi-input job with multiple
1551
+ operations) returned as `ValidationErrorEnvelope`
1552
+ (`error_type: "validation_error"`, per ADR-0018).
1553
+ - Cyclic explicit `workflow_edges` (a cycle or self-edge in the
1554
+ edge DAG) — returned as a `ValidationErrorEnvelope` with
1555
+ `error_type: "validation_error"`, `error:
1556
+ "CYCLIC_WORKFLOW_EDGES"`, `message_key:
1557
+ "error.cyclic_workflow_edges"`, and a `details[0].field =
1558
+ "workflow_edges"` entry (per
1559
+ [`g8PPkbNu`](https://trello.com/c/g8PPkbNu)). Implicit
1560
+ `job_output` source-graph cycles and unknown-job references are
1561
+ narrower **400** codes (`CYCLIC_JOB_OUTPUT_SOURCE_GRAPH` /
1562
+ `WORKFLOW_EDGE_REFERENCES_UNKNOWN_JOB`) — see the 400 response.
1503
1563
  - Feature-availability violation (workflow references one or
1504
1564
  more `planned` / `experimental` / non-enabled-`beta`
1505
1565
  features) — returned as `FeatureNotAvailableResponse`
@@ -1537,29 +1597,34 @@ paths:
1537
1597
  or `always`. The compatibility-probe algorithm is
1538
1598
  server-side and deliberately opaque per plan v5 §F8.2.
1539
1599
 
1540
- Backward-compatibility note: the prior 422 shape
1541
- (`ValidationErrorEnvelope`) is preserved unchanged — its
1542
- `details[]` array is the structural signature consumers
1543
- duck-type against. `FeatureNotAvailableResponse` carries
1544
- `error_type: feature_not_available` + `violations[]`;
1545
- `ProcessingClassExceedsBandResponse` carries `error_type:
1546
- processing_class_exceeds_band` + `violations[]`.
1547
- `ProbePendingResponse` carries `error_type: probe_pending`
1548
- + `job_ref` (and NO `violations[]` / `details[]`), emitted
1549
- when the probe-pending gate is on and a job's upload has
1550
- not yet been probed. The `REQUIRES_REENCODE` flavour reuses
1551
- `ValidationErrorEnvelope`
1552
- (a user-fixable validation error in the same family as
1553
- `INVALID_OPTIONS`) and is distinguished by the stable
1554
- `error: "REQUIRES_REENCODE"` string code rather than a new
1555
- `error_type` enum value. Branches are distinguishable by
1556
- required-field shape (`details` vs `error_type` value), so
1557
- plain `oneOf` matches without a discriminator object see
1558
- `openapi/api.yaml` §"FEATURE AVAILABILITY ENVELOPES"
1559
- commentary for the convention rationale (no discriminator
1560
- here because `ValidationErrorEnvelope` has no `error_type`
1561
- field; OpenAPI 3.1 discriminators require the property to
1562
- be present on every branch).
1600
+ **Branch dispatch via the `error_type` discriminator** (per
1601
+ [ADR-0018](../docs/decisions/0018-universal-422-error-type-discriminator.md)).
1602
+ All four branches carry a required `error_type` enum, so the
1603
+ `oneOf` declares an explicit `discriminator`
1604
+ (`propertyName: error_type`):
1605
+ - `validation_error` `ValidationErrorEnvelope` (carries
1606
+ `details[]`; the specific failure is in the `error` machine
1607
+ code `INVALID_OPTIONS`, `REQUIRES_REENCODE`,
1608
+ `CYCLIC_WORKFLOW_EDGES`, …). The `REQUIRES_REENCODE` flavour
1609
+ (per I16-CONS) reuses this same envelope/`error_type` and is
1610
+ distinguished only by its `error` code.
1611
+ - `feature_not_available` → `FeatureNotAvailableResponse`
1612
+ (`violations[]`).
1613
+ - `processing_class_exceeds_band`
1614
+ `ProcessingClassExceedsBandResponse` (`violations[]`).
1615
+ - `probe_pending` `ProbePendingResponse` (`job_ref`, no
1616
+ `violations[]`/`details[]`), emitted when the probe-pending
1617
+ gate is on and a job's upload has not yet been probed.
1618
+
1619
+ The prior 422 shape is otherwise preserved unchanged — the
1620
+ `details[]` / `violations[]` / `job_ref` required-field shapes
1621
+ still hold, so structural duck-typing keeps working; the
1622
+ discriminator simply lets generated SDK clients dispatch on a
1623
+ single property instead of mis-firing `instanceOf` guards
1624
+ (camelCase-vs-snake_case). `error_type: validation_error` is a
1625
+ **new required field** on `ValidationErrorEnvelope` — the
1626
+ server populates it at every emission site (rollout coordinated
1627
+ with the API per ADR-0018).
1563
1628
  headers:
1564
1629
  Retry-After:
1565
1630
  required: false
@@ -1583,11 +1648,19 @@ paths:
1583
1648
  - $ref: '#/components/schemas/FeatureNotAvailableResponse'
1584
1649
  - $ref: '#/components/schemas/ProcessingClassExceedsBandResponse'
1585
1650
  - $ref: '#/components/schemas/ProbePendingResponse'
1651
+ discriminator:
1652
+ propertyName: error_type
1653
+ mapping:
1654
+ validation_error: '#/components/schemas/ValidationErrorEnvelope'
1655
+ feature_not_available: '#/components/schemas/FeatureNotAvailableResponse'
1656
+ processing_class_exceeds_band: '#/components/schemas/ProcessingClassExceedsBandResponse'
1657
+ probe_pending: '#/components/schemas/ProbePendingResponse'
1586
1658
  examples:
1587
1659
  validation_error:
1588
1660
  summary: Generic validation error (legacy shape)
1589
1661
  value:
1590
1662
  success: false
1663
+ error_type: "validation_error"
1591
1664
  error: "INVALID_OPTIONS"
1592
1665
  details:
1593
1666
  - operation: "compress"
@@ -1596,6 +1669,17 @@ paths:
1596
1669
  - operation: "thumbnail"
1597
1670
  option: "width"
1598
1671
  message: "Required field"
1672
+ cyclic_workflow_edges:
1673
+ summary: Cyclic or self-referential explicit workflow_edges (g8PPkbNu)
1674
+ value:
1675
+ success: false
1676
+ error_type: "validation_error"
1677
+ error: "CYCLIC_WORKFLOW_EDGES"
1678
+ message: "Workflow edges form a cycle."
1679
+ message_key: "error.cyclic_workflow_edges"
1680
+ details:
1681
+ - field: "workflow_edges"
1682
+ message: "Workflow edges form a cycle."
1599
1683
  feature_not_available:
1600
1684
  summary: Workflow references planned features
1601
1685
  value:
@@ -1663,6 +1747,7 @@ paths:
1663
1747
  summary: merge.video re_encode_mode=never with incompatible inputs (I16-CONS)
1664
1748
  value:
1665
1749
  success: false
1750
+ error_type: "validation_error"
1666
1751
  error: "REQUIRES_REENCODE"
1667
1752
  details:
1668
1753
  - operation: "merge"
@@ -2793,6 +2878,11 @@ paths:
2793
2878
  oneOf:
2794
2879
  - $ref: '#/components/schemas/ValidationErrorEnvelope'
2795
2880
  - $ref: '#/components/schemas/FeatureNotAvailableResponse'
2881
+ discriminator:
2882
+ propertyName: error_type
2883
+ mapping:
2884
+ validation_error: '#/components/schemas/ValidationErrorEnvelope'
2885
+ feature_not_available: '#/components/schemas/FeatureNotAvailableResponse'
2796
2886
  '429':
2797
2887
  description: Rate limit exceeded
2798
2888
  content:
@@ -2905,6 +2995,11 @@ paths:
2905
2995
  oneOf:
2906
2996
  - $ref: '#/components/schemas/ValidationErrorEnvelope'
2907
2997
  - $ref: '#/components/schemas/FeatureNotAvailableResponse'
2998
+ discriminator:
2999
+ propertyName: error_type
3000
+ mapping:
3001
+ validation_error: '#/components/schemas/ValidationErrorEnvelope'
3002
+ feature_not_available: '#/components/schemas/FeatureNotAvailableResponse'
2908
3003
  '429':
2909
3004
  description: |
2910
3005
  Rate limit exceeded for decode requests. Decode
@@ -3191,6 +3286,7 @@ paths:
3191
3286
  $ref: '#/components/schemas/ValidationErrorEnvelope'
3192
3287
  example:
3193
3288
  success: false
3289
+ error_type: "validation_error"
3194
3290
  error: "VALIDATION_FAILED"
3195
3291
  details:
3196
3292
  - field: "limit"
@@ -3489,11 +3585,30 @@ components:
3489
3585
  required:
3490
3586
  - success
3491
3587
  - error
3588
+ - error_type
3492
3589
  - details
3493
3590
  properties:
3494
3591
  success:
3495
3592
  type: boolean
3496
3593
  enum: [false]
3594
+ error_type:
3595
+ type: string
3596
+ enum:
3597
+ - validation_error
3598
+ description: |
3599
+ Discriminator for the multi-branch 422 `oneOf` (per
3600
+ [ADR-0018](../docs/decisions/0018-universal-422-error-type-discriminator.md)).
3601
+ Always `validation_error` on this envelope. Added so the four
3602
+ 422 branches (`ValidationErrorEnvelope`,
3603
+ `FeatureNotAvailableResponse`,
3604
+ `ProcessingClassExceedsBandResponse`, `ProbePendingResponse`)
3605
+ share a single discriminator property — generated SDK clients
3606
+ dispatch on `error_type` instead of structural `instanceOf`
3607
+ guards (which mis-fire on camelCase-vs-snake_case property
3608
+ names). Distinct from the `error` machine code below: `error`
3609
+ carries the specific failure code (`INVALID_OPTIONS`,
3610
+ `REQUIRES_REENCODE`, `CYCLIC_WORKFLOW_EDGES`, …) while
3611
+ `error_type` only names the envelope shape.
3497
3612
  error:
3498
3613
  type: string
3499
3614
  description: |
@@ -3502,9 +3617,10 @@ components:
3502
3617
  (per ticket I16-CONS — `merge.video` with
3503
3618
  `re_encode_mode: never` and incompatible inputs; caller
3504
3619
  resolves by switching to `re_encode_mode: auto` or `always`),
3505
- `VALIDATION_FAILED` (request/query-param validation failure
3506
- per the project-wide convention — e.g. `GET /api/v2/credits/usage`
3507
- invalid `limit`/`offset`).
3620
+ `CYCLIC_WORKFLOW_EDGES` (cyclic/self explicit `workflow_edges`,
3621
+ per `g8PPkbNu`), `VALIDATION_FAILED` (request/query-param
3622
+ validation failure per the project-wide convention — e.g.
3623
+ `GET /api/v2/credits/usage` invalid `limit`/`offset`).
3508
3624
  SDKs duck-type on this field for typed error-branch helpers.
3509
3625
  message:
3510
3626
  type: string
@@ -4988,13 +5104,12 @@ components:
4988
5104
  with a generic schema error. This envelope is the structured
4989
5105
  rejection.
4990
5106
 
4991
- The 422 response is delivered alongside `ValidationErrorEnvelope`
4992
- and `ProcessingClassExceedsBandResponse` via a naked `oneOf`
4993
- (duck-typed on required-field shape `details` vs `error_type`
4994
- value: `feature_not_available` vs `processing_class_exceeds_band`).
4995
- No discriminator object is used because `ValidationErrorEnvelope`
4996
- has no `error_type` field. See the 422 response on
4997
- `POST /api/workflows`.
5107
+ The 422 response is delivered alongside `ValidationErrorEnvelope`,
5108
+ `ProcessingClassExceedsBandResponse`, and `ProbePendingResponse`
5109
+ via a `oneOf` with an explicit `error_type` discriminator (per
5110
+ [ADR-0018](../docs/decisions/0018-universal-422-error-type-discriminator.md));
5111
+ this branch's discriminator value is `feature_not_available`. See
5112
+ the 422 response on `POST /api/workflows`.
4998
5113
  allOf:
4999
5114
  - $ref: '#/components/schemas/ErrorEnvelope'
5000
5115
  - type: object
@@ -5037,12 +5152,13 @@ components:
5037
5152
 
5038
5153
  Delivered alongside `ValidationErrorEnvelope`,
5039
5154
  `FeatureNotAvailableResponse`, and
5040
- `ProcessingClassExceedsBandResponse` via the naked `oneOf` on
5041
- the 422 response — duck-typed on required-field shape: this
5042
- branch is the only one carrying `error_type: probe_pending`
5043
- and it has neither `details` (ValidationErrorEnvelope) nor
5044
- `violations` (the other two typed envelopes), so it matches
5045
- exactly one branch.
5155
+ `ProcessingClassExceedsBandResponse` via the discriminated
5156
+ `oneOf` on the 422 response (per
5157
+ [ADR-0018](../docs/decisions/0018-universal-422-error-type-discriminator.md))
5158
+ this branch's `error_type` discriminator value is `probe_pending`;
5159
+ it also remains the only branch carrying `job_ref` and neither
5160
+ `details` (`ValidationErrorEnvelope`) nor `violations` (the other
5161
+ two typed envelopes).
5046
5162
  allOf:
5047
5163
  - $ref: '#/components/schemas/ErrorEnvelope'
5048
5164
  - type: object
@@ -5238,10 +5354,12 @@ components:
5238
5354
  envelope is 422, not an extension of `TierRestrictionResponse`
5239
5355
  on 403).
5240
5356
 
5241
- Delivered on `POST /api/workflows` 422 in a naked `oneOf`
5242
- alongside `ValidationErrorEnvelope` and
5243
- `FeatureNotAvailableResponse` — branches distinguished by
5244
- required-field shape (`details` vs `error_type` value).
5357
+ Delivered on `POST /api/workflows` 422 in a discriminated `oneOf`
5358
+ alongside `ValidationErrorEnvelope`, `FeatureNotAvailableResponse`,
5359
+ and `ProbePendingResponse` (per
5360
+ [ADR-0018](../docs/decisions/0018-universal-422-error-type-discriminator.md))
5361
+ this branch's `error_type` discriminator value is
5362
+ `processing_class_exceeds_band`.
5245
5363
  allOf:
5246
5364
  - $ref: '#/components/schemas/ErrorEnvelope'
5247
5365
  - type: object
@@ -5462,19 +5580,21 @@ components:
5462
5580
  Available operation types:
5463
5581
  - compress: Reduce file size (images, audio, video, documents)
5464
5582
  - thumbnail: Legacy thumbnail value. Generates a preview image
5465
- for any media type via a single Lambda. Currently the only
5466
- thumbnail value the compression_api publisher emits; retirement
5467
- is planned after the publisher adopts the four sub-type values
5468
- below in a follow-up API PR.
5583
+ for any media type via a single Lambda. Retained as a valid
5584
+ routing target during the migration window, but the
5585
+ compression_api publisher no longer emits it it now resolves
5586
+ the per-media sub-type value below on the SNS `operation_type`
5587
+ attribute. The payload `operation_type` field stays `thumbnail`.
5469
5588
  - thumbnail_image: Image thumbnail sub-type. Backed by a dedicated
5470
- Rust image Lambda. Not yet emitted by the publisher.
5589
+ Rust image Lambda. Emitted by the publisher for image inputs.
5471
5590
  - thumbnail_video: Video thumbnail sub-type. Backed by a dedicated
5472
- FFmpeg Lambda. Not yet emitted.
5591
+ FFmpeg Lambda. Emitted by the publisher for video inputs.
5473
5592
  - thumbnail_document: PDF/EPUB thumbnail sub-type. Backed by a
5474
- dedicated Ghostscript Lambda. Not yet emitted.
5593
+ dedicated Ghostscript Lambda. Emitted by the publisher for
5594
+ PDF/EPUB inputs.
5475
5595
  - thumbnail_office: Office document (DOCX/XLSX/PPTX/ODT/ODS/ODP)
5476
5596
  thumbnail sub-type. Backed by a dedicated LibreOffice Lambda.
5477
- Not yet emitted.
5597
+ Emitted by the publisher for office-document inputs.
5478
5598
  - image_watermark: Image overlay (file or external_source) onto a base IMAGE asset. Multi-input (Path B with role: base + overlay). Stable for static-image bases (jpeg/png/webp); animated GIF is advertised as `planned` via the `image_gif` mime_group — dispatch returns `feature_not_available` (422) until Lambda support ships. Video bases are NOT supported by image_watermark — use the dedicated `video_watermark` operation per ADR-0013. Per ADR-0004 + I4-CONS + I5 (Trello AKZiOXnd).
5479
5599
  - text_watermark: Text overlay rendered onto an image (Liberation Sans). Single-input. Per ADR-0004 + I4-CONS.
5480
5600
  - merge: Concatenate/combine multiple files into one (images, video, audio). Multi-input. Image inputs merge into animated GIF or slideshow video; image collage/grid and PDF concatenation are not supported by the V1 Lambda.
@@ -5483,10 +5603,10 @@ components:
5483
5603
  - custom_luma: Apply a caller-uploaded luma matte to a base video for a custom luma-matte transition effect. Multi-input (`role: base` + `role: transition_mask`). `availability: planned` + `required_tier: pro`; dispatch returns `feature_not_available` (422) until Lambda ships. Distinct from FFmpeg `xfade=custom` (which is an expression, not an operation). Per ticket I29 (Trello EPUE5Vs1).
5484
5604
  - audio_overlay: Mix a secondary audio asset over a primary audio or video base (DJ tags, podcast intros/outros, station IDs, jingles). Multi-input (`role: base` + `role: overlay`). `availability: planned`; dispatch returns `feature_not_available` (422) until Lambda ships. **NOT** the same as `audio_watermark` — that operation is steganographic (imperceptible identifier embedded for ownership tracking), tracked separately by I20. Per ticket I19 (Trello Xr3Z4GBF).
5485
5605
  - audio_watermark: Embed a steganographic forensic watermark into an audio asset (or a video's audio track) — Cinavia / Resemble PerTh territory. Single-input. `availability: planned` + `required_tier: enterprise`; dispatch returns `feature_not_available` (422) until Lambda ships. Pairs with `POST /api/audio-watermark/decode` for own-watermarks-only extraction. Per ticket I20 (Trello omiCq7Vn).
5486
- - audio_to_video: Produce a video from an audio input plus an OPTIONAL still image overlay. Multi-input role-based with the first OPTIONAL role on the contract (`role: base` audio required, `role: overlay` image 0..1 — see `per_role_cardinality`). When overlay is omitted, the video uses a solid background colour. `availability: planned`; dispatch returns `feature_not_available` (422) until Lambda ships. Per ticket [`SlluxMBN`](https://trello.com/c/SlluxMBN) + ADR-0015 (introduces `per_role_cardinality` vocab).
5487
- - video_watermark: Apply an image overlay onto a base video via FFmpeg's `overlay` filter. Multi-input role-based (`role: base` video + `role: overlay` image, exactly one of each per `per_role_cardinality`). Re-encode required; audio stream-copy passthrough. Distinct from `image_watermark` (pure-Rust/image-only). `availability: planned`; dispatch returns `feature_not_available` (422) until Lambda ships. Per ticket [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) + ADR-0013.
5606
+ - audio_to_video: Produce a video from an audio input plus an OPTIONAL still image overlay. Multi-input role-based with the first OPTIONAL role on the contract (`role: base` audio required, `role: overlay` image 0..1 — see `per_role_cardinality`). When overlay is omitted, the video uses a solid background colour. `availability: beta` (Wave A — Lambda backend live; opt-in, MUST NOT return `feature_not_available`; may change with notice). Per ticket [`SlluxMBN`](https://trello.com/c/SlluxMBN) + ADR-0015 (introduces `per_role_cardinality` vocab).
5607
+ - video_watermark: Apply an image overlay onto a base video via FFmpeg's `overlay` filter. Multi-input role-based (`role: base` video + `role: overlay` image, exactly one of each per `per_role_cardinality`). Re-encode required; audio stream-copy passthrough. Distinct from `image_watermark` (pure-Rust/image-only). `availability: beta` (Wave A — Lambda backend live; opt-in, MUST NOT 422; `short_form` is beta, `long_form` stays `planned` — no live Fargate worker; `multi_overlay_stack` stays `planned`). Per ticket [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) + ADR-0013.
5488
5608
  - video_text_watermark: Render a text overlay onto a base video via FFmpeg's `drawtext` filter. Single-input — text and styling in options. Same `watermark_mode` (single/tiled), anchor + margin vocab as `text_watermark`. Re-encode required; audio stream-copy passthrough. `availability: planned`; dispatch returns `feature_not_available` (422) until Lambda ships. Per ticket [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) + ADR-0013.
5489
- - split: Fan one input file into N outputs across GIF / PDF / audio / video MIME families. Single-input per-mime-group catalog (mirrors merge/convert): GIF uses `frame_range` (REQUIRED) + `output_format`; PDF uses `page_range` OR `page_groups` (mutually exclusive); audio + video use a `mode` discriminator (interval/count/cut_points) + numeric-seconds wire format + `precision` flag (fast/exact). 200-output hard cap per ADR-0009 §D5 with per-mode preflight math; output naming `output-001..output-200`. Long-form video routes to a separate `split-video-fargate` worker via `processing_class`. `availability: planned`; dispatch returns `feature_not_available` (422) until Lambda ships. Per ticket [`vKI0CFDu`](https://trello.com/c/vKI0CFDu) + ADR-0014.
5609
+ - split: Fan one input file into N outputs across GIF / PDF / audio / video MIME families. Single-input per-mime-group catalog (mirrors merge/convert): GIF uses `frame_range` (REQUIRED) + `output_format`; PDF uses `page_range` OR `page_groups` (mutually exclusive); audio + video use a `mode` discriminator (interval/count/cut_points) + numeric-seconds wire format + `precision` flag (fast/exact). 200-output hard cap per ADR-0009 §D5 with per-mode preflight math; output naming `output-001..output-200`. Long-form video routes to a separate `split-video-fargate` worker via `processing_class`. `availability: beta` for the `audio` mime_group (worker live on staging — shape-stable + opt-in, MUST NOT 422); the `image_gif`, `document_pdf`, and `video` mime_groups stay `availability: planned` and dispatch returns `feature_not_available` (422) until their workers ship. Per ticket [`vKI0CFDu`](https://trello.com/c/vKI0CFDu) + ADR-0014.
5490
5610
 
5491
5611
  Both the legacy `thumbnail` value and the four sub-type values
5492
5612
  are valid routing targets today during the thumbnail migration
@@ -6407,9 +6527,11 @@ components:
6407
6527
  text_watermark, convert).
6408
6528
  - `inputs[]` (multi-input): array of `JobInputV2` entries. Each entry
6409
6529
  carries its own `source` plus an optional `role`
6410
- (image_watermark, custom_luma, audio_overlay) and
6530
+ (image_watermark, custom_luma, audio_overlay, audio_to_video,
6531
+ video_watermark) and
6411
6532
  `per_input_options`. Used by multi-input operations (merge,
6412
- archive, image_watermark, custom_luma, audio_overlay).
6533
+ archive, image_watermark, custom_luma, audio_overlay,
6534
+ audio_to_video, video_watermark).
6413
6535
 
6414
6536
  Exactly one of `source` or `inputs` is required.
6415
6537
 
@@ -6472,7 +6594,8 @@ components:
6472
6594
  type: array
6473
6595
  description: |
6474
6596
  Multi-input list for `merge`, `archive`, `image_watermark`,
6475
- `custom_luma`, `audio_overlay`, and `audio_to_video`. Each
6597
+ `custom_luma`, `audio_overlay`, `audio_to_video`, and
6598
+ `video_watermark`. Each
6476
6599
  entry is a `JobInputV2` with its own `WorkflowSource`.
6477
6600
  Mutually exclusive with `source` — the V2 shape boundary
6478
6601
  stays `source` (single-input) XOR `inputs[]` (multi-input
@@ -6499,7 +6622,7 @@ components:
6499
6622
  Multi-input jobs (with `inputs[]`) must have exactly one
6500
6623
  operation, and it must be a multi-input type (`merge`,
6501
6624
  `archive`, `image_watermark`, `custom_luma`,
6502
- `audio_overlay`, or `audio_to_video`).
6625
+ `audio_overlay`, `audio_to_video`, or `video_watermark`).
6503
6626
  items:
6504
6627
  $ref: '#/components/schemas/OperationDefinition'
6505
6628
  deliver:
@@ -6540,10 +6663,12 @@ components:
6540
6663
  `custom_luma` (joined via ticket
6541
6664
  [I29](https://trello.com/c/EPUE5Vs1) — `availability:
6542
6665
  planned` so workflow-create returns 422 until Lambda
6543
- ships), and `audio_overlay` (joined via ticket
6666
+ ships), `audio_overlay` (joined via ticket
6544
6667
  [I19](https://trello.com/c/Xr3Z4GBF) — same `planned`
6545
- gating). The multi-input shape is contract-defined for
6546
- all entries.
6668
+ gating), and `audio_to_video` + `video_watermark` (joined
6669
+ via Wave A [`c3uthIP4`](https://trello.com/c/c3uthIP4) —
6670
+ `availability: beta`, backends live). The multi-input
6671
+ shape is contract-defined for all entries.
6547
6672
 
6548
6673
  JobInputV2:
6549
6674
  type: object
@@ -7597,6 +7722,24 @@ components:
7597
7722
  $ref: '#/components/schemas/UuidV7'
7598
7723
  status:
7599
7724
  $ref: '#/components/schemas/JobStatus'
7725
+ processing_class:
7726
+ $ref: '#/components/schemas/ProcessingClass'
7727
+ description: |
7728
+ The logical processing class the server resolved this job to.
7729
+ The status-poll echo of `WorkflowCreateResponse.processing_plan`
7730
+ `.jobs[].processing_class` (`ProcessingPlanJob`) — same enum, same
7731
+ per-job granularity — so consumers can observe the resolved
7732
+ routing decision (`short_form` vs `long_form`, plus the merge-only
7733
+ `*_concat` / `*_re_encode` aliases) after create, not just at
7734
+ create time. The server always knows a job's class once the
7735
+ workflow is resolved and populates this on every status response
7736
+ (mirrors the `ProcessingPlanJob` invariant); it is left
7737
+ schema-OPTIONAL rather than `required` only because `JobResponse`
7738
+ is also embedded in the `WebhookPayload.workflow` callback payload,
7739
+ where a required addition would be a breaking request-contract
7740
+ change for existing webhook consumers. Per ticket
7741
+ [F3dL0UKz](https://trello.com/c/F3dL0UKz); consumed by api
7742
+ [D3yN1SGm](https://trello.com/c/D3yN1SGm).
7600
7743
  depends_on:
7601
7744
  type: array
7602
7745
  description: List of upstream job refs this job depends on
@@ -7892,7 +8035,8 @@ components:
7892
8035
  Total number of inputs expected in this phase. Pairs with
7893
8036
  `phase_input_index`. For single-input operations this is
7894
8037
  `1` during the relevant phase; for multi-input merge /
7895
- archive / image_watermark / custom_luma / audio_overlay,
8038
+ archive / image_watermark / custom_luma / audio_overlay /
8039
+ audio_to_video / video_watermark,
7896
8040
  it matches the inputs[] count. Per ticket I27.
7897
8041
 
7898
8042
  SseOperationCompletedData:
@@ -8424,6 +8568,48 @@ components:
8424
8568
  either source.
8425
8569
  additionalProperties:
8426
8570
  $ref: '#/components/schemas/EndpointProjection'
8571
+ workflow_features:
8572
+ type: object
8573
+ description: |
8574
+ Workflow-level option availability projection (ticket
8575
+ [`1ZQjSm0j`](https://trello.com/c/1ZQjSm0j)). Surfaces
8576
+ `per_value_availability` for workflow-level options that live in
8577
+ OpenAPI **component** schemas (not the per-operation
8578
+ `schemas/operations/*.yaml` that drive the `operations` map),
8579
+ keyed by REQUEST-shape path:
8580
+ - `delivery.mode.per_value_availability` (from the `Delivery.mode`
8581
+ schema)
8582
+ - `delivery.selection.type.per_value_availability` (from the
8583
+ `DeliverySelection.type` schema)
8584
+
8585
+ Closes the co0CERtJ (v2.19.0) authority-hierarchy gap: those
8586
+ `planned` downgrades lived only in the (decorative per ADR-0001
8587
+ §1.5) openapi component tags; this surfaces them in the
8588
+ authoritative sidecar.
8589
+
8590
+ **Optional in the wire envelope** (same incremental-mirroring
8591
+ stance as `endpoints`): the committed sidecar emits this block
8592
+ authoritatively; the runtime `GET /api/operations/schema` MAY
8593
+ mirror it once the API generator catches up. Consumers MUST
8594
+ tolerate its absence from the runtime endpoint (read the sidecar)
8595
+ and its presence from either source.
8596
+ properties:
8597
+ delivery:
8598
+ type: object
8599
+ properties:
8600
+ mode:
8601
+ type: object
8602
+ properties:
8603
+ per_value_availability:
8604
+ $ref: '#/components/schemas/PerValueAvailability'
8605
+ selection:
8606
+ type: object
8607
+ properties:
8608
+ type:
8609
+ type: object
8610
+ properties:
8611
+ per_value_availability:
8612
+ $ref: '#/components/schemas/PerValueAvailability'
8427
8613
 
8428
8614
  EndpointProjection:
8429
8615
  type: object
@@ -2,7 +2,7 @@ schema_version: "2.0.0"
2
2
 
3
3
  operation:
4
4
  type: audio_to_video
5
- availability: planned
5
+ availability: beta
6
6
  description: |
7
7
  Produce a video from an audio input plus an OPTIONAL still image
8
8
  overlay. Use cases: podcast → YouTube uploads, audio-only tracks
@@ -29,9 +29,11 @@ operation:
29
29
  tiny when the overlay is a still image (the common case).
30
30
 
31
31
  Per ticket [`SlluxMBN`](https://trello.com/c/SlluxMBN) +
32
- ADR-0015. `availability: planned` until the cross-repo Lambda
33
- support ships; the API rejects workflow-create with
34
- `feature_not_available` (422) until then.
32
+ ADR-0015. Activated to `availability: beta` (Wave A, ticket
33
+ [`c3uthIP4`](https://trello.com/c/c3uthIP4)): the cross-repo
34
+ Lambda backend is live (API accepts + publishes), so this is
35
+ shape-stable + opt-in for callers and MUST NOT return
36
+ `feature_not_available` — it may still change with notice while beta.
35
37
 
36
38
  default: false
37
39
  input_model: multi
@@ -12,10 +12,9 @@ operation:
12
12
 
13
13
  **NOT** related to FFmpeg's `xfade=custom` filter (which is an
14
14
  expression-mode parameter on the same `xfade` filter). The
15
- `merge.transition.custom` value is tagged `planned` with
16
- documentation_url pointing at this operation; once `custom_luma`
17
- ships, the merge slot is repurposed to a "use the dedicated
18
- `custom_luma` operation instead" advisory.
15
+ `merge.transition.custom` value is tagged `planned` as an advisory
16
+ that points callers at this dedicated operation for caller-uploaded
17
+ luma-matte transitions.
19
18
 
20
19
  Multi-input: exactly one input with `role: base` (the source
21
20
  video being transitioned) + exactly one input with
@@ -106,11 +106,11 @@ operation:
106
106
  # `custom` is `planned` indefinitely as an advisory — for
107
107
  # caller-uploaded luma-matte transitions, use the dedicated
108
108
  # `custom_luma` operation (multi-input with role: base +
109
- # transition_mask) per ticket I29 (EPUE5Vs1). FFmpeg's
109
+ # transition_mask). FFmpeg's
110
110
  # xfade=custom is an expression-mode parameter, not the
111
111
  # shape callers want; the dedicated operation is the
112
112
  # supported path.
113
- custom: { availability: planned, documentation_url: "https://trello.com/c/EPUE5Vs1" }
113
+ custom: { availability: planned }
114
114
  wipetl: { availability: planned, eta: "2026-Q3" }
115
115
  wipetr: { availability: planned, eta: "2026-Q3" }
116
116
  wipebl: { availability: planned, eta: "2026-Q3" }
@@ -212,11 +212,11 @@ operation:
212
212
  # `custom` is `planned` indefinitely as an advisory — for
213
213
  # caller-uploaded luma-matte transitions, use the dedicated
214
214
  # `custom_luma` operation (multi-input with role: base +
215
- # transition_mask) per ticket I29 (EPUE5Vs1). FFmpeg's
215
+ # transition_mask). FFmpeg's
216
216
  # xfade=custom is an expression-mode parameter, not the
217
217
  # shape callers want; the dedicated operation is the
218
218
  # supported path.
219
- custom: { availability: planned, documentation_url: "https://trello.com/c/EPUE5Vs1" }
219
+ custom: { availability: planned }
220
220
  wipetl: { availability: planned, eta: "2026-Q3" }
221
221
  wipetr: { availability: planned, eta: "2026-Q3" }
222
222
  wipebl: { availability: planned, eta: "2026-Q3" }
@@ -359,11 +359,11 @@ operation:
359
359
  # `custom` is `planned` indefinitely as an advisory — for
360
360
  # caller-uploaded luma-matte transitions, use the dedicated
361
361
  # `custom_luma` operation (multi-input with role: base +
362
- # transition_mask) per ticket I29 (EPUE5Vs1). FFmpeg's
362
+ # transition_mask). FFmpeg's
363
363
  # xfade=custom is an expression-mode parameter, not the
364
364
  # shape callers want; the dedicated operation is the
365
365
  # supported path.
366
- custom: { availability: planned, documentation_url: "https://trello.com/c/EPUE5Vs1" }
366
+ custom: { availability: planned }
367
367
  wipetl: { availability: planned, eta: "2026-Q3" }
368
368
  wipetr: { availability: planned, eta: "2026-Q3" }
369
369
  wipebl: { availability: planned, eta: "2026-Q3" }