@giveitsmaller/contracts 0.7.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 (354) hide show
  1. package/asyncapi/events.yaml +548 -139
  2. package/availability/availability.json +59 -22
  3. package/dist/asyncapi/LongFormJobMessage.d.ts +11 -0
  4. package/dist/asyncapi/LongFormJobMessage.js +1 -0
  5. package/dist/asyncapi/LongFormOperationType.d.ts +5 -0
  6. package/dist/asyncapi/LongFormOperationType.js +6 -0
  7. package/dist/asyncapi/LongFormProcessingClass.d.ts +4 -0
  8. package/dist/asyncapi/LongFormProcessingClass.js +5 -0
  9. package/dist/asyncapi/SourceEntry.d.ts +2 -0
  10. package/dist/asyncapi/index.d.ts +3 -0
  11. package/dist/asyncapi/index.js +2 -0
  12. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +2 -2
  13. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +2 -2
  14. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +2 -2
  15. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +2 -2
  16. package/dist/openapi/models/AuthErrorResponse.d.ts +9 -6
  17. package/dist/openapi/models/AuthErrorResponse.js +2 -2
  18. package/dist/openapi/models/AuthErrorType.d.ts +2 -2
  19. package/dist/openapi/models/AuthErrorType.js +2 -2
  20. package/dist/openapi/models/AvailabilityValue.d.ts +2 -2
  21. package/dist/openapi/models/AvailabilityValue.js +2 -2
  22. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +2 -2
  23. package/dist/openapi/models/BalanceExhaustedResponse.js +2 -2
  24. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +2 -2
  25. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +2 -2
  26. package/dist/openapi/models/CallbackEventType.d.ts +2 -2
  27. package/dist/openapi/models/CallbackEventType.js +2 -2
  28. package/dist/openapi/models/ConnectionSource.d.ts +2 -2
  29. package/dist/openapi/models/ConnectionSource.js +2 -2
  30. package/dist/openapi/models/ContactRequest.d.ts +2 -2
  31. package/dist/openapi/models/ContactRequest.js +2 -2
  32. package/dist/openapi/models/ContactSubject.d.ts +2 -2
  33. package/dist/openapi/models/ContactSubject.js +2 -2
  34. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +2 -2
  35. package/dist/openapi/models/ContactValidationErrorResponse.js +2 -2
  36. package/dist/openapi/models/CreateExternalImport403Response.d.ts +2 -2
  37. package/dist/openapi/models/CreateExternalImport403Response.js +2 -2
  38. package/dist/openapi/models/CreateExternalImport422Response.d.ts +7 -3
  39. package/dist/openapi/models/CreateExternalImport422Response.js +18 -22
  40. package/dist/openapi/models/CreateWorkflow422Response.d.ts +11 -3
  41. package/dist/openapi/models/CreateWorkflow422Response.js +28 -36
  42. package/dist/openapi/models/CreditTransaction.d.ts +2 -2
  43. package/dist/openapi/models/CreditTransaction.js +2 -2
  44. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +2 -2
  45. package/dist/openapi/models/CreditTransactionSourceBucket.js +2 -2
  46. package/dist/openapi/models/CreditsBalanceResponse.d.ts +2 -2
  47. package/dist/openapi/models/CreditsBalanceResponse.js +2 -2
  48. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +2 -2
  49. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +2 -2
  50. package/dist/openapi/models/CreditsUsageResponse.d.ts +2 -2
  51. package/dist/openapi/models/CreditsUsageResponse.js +2 -2
  52. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +2 -2
  53. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +2 -2
  54. package/dist/openapi/models/Delivery.d.ts +16 -3
  55. package/dist/openapi/models/Delivery.js +2 -2
  56. package/dist/openapi/models/DeliveryOutputRef.d.ts +2 -2
  57. package/dist/openapi/models/DeliveryOutputRef.js +2 -2
  58. package/dist/openapi/models/DeliveryPlan.d.ts +2 -2
  59. package/dist/openapi/models/DeliveryPlan.js +2 -2
  60. package/dist/openapi/models/DeliveryPlanOutput.d.ts +2 -2
  61. package/dist/openapi/models/DeliveryPlanOutput.js +2 -2
  62. package/dist/openapi/models/DeliveryPlanReason.d.ts +2 -2
  63. package/dist/openapi/models/DeliveryPlanReason.js +2 -2
  64. package/dist/openapi/models/DeliverySelection.d.ts +2 -2
  65. package/dist/openapi/models/DeliverySelection.js +2 -2
  66. package/dist/openapi/models/EndpointProjection.d.ts +2 -2
  67. package/dist/openapi/models/EndpointProjection.js +2 -2
  68. package/dist/openapi/models/ErrorEnvelope.d.ts +9 -6
  69. package/dist/openapi/models/ErrorEnvelope.js +2 -2
  70. package/dist/openapi/models/EstimateQuality.d.ts +2 -2
  71. package/dist/openapi/models/EstimateQuality.js +2 -2
  72. package/dist/openapi/models/EstimateRange.d.ts +2 -2
  73. package/dist/openapi/models/EstimateRange.js +2 -2
  74. package/dist/openapi/models/ExternalDestination.d.ts +2 -2
  75. package/dist/openapi/models/ExternalDestination.js +2 -2
  76. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +2 -2
  77. package/dist/openapi/models/ExternalImportCreatedResponse.js +2 -2
  78. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +2 -2
  79. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +2 -2
  80. package/dist/openapi/models/ExternalImportRequest.d.ts +2 -2
  81. package/dist/openapi/models/ExternalImportRequest.js +2 -2
  82. package/dist/openapi/models/ExternalImportToken.d.ts +2 -2
  83. package/dist/openapi/models/ExternalImportToken.js +2 -2
  84. package/dist/openapi/models/ExternalSource.d.ts +2 -2
  85. package/dist/openapi/models/ExternalSource.js +2 -2
  86. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +15 -13
  87. package/dist/openapi/models/FeatureNotAvailableResponse.js +2 -2
  88. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +9 -6
  89. package/dist/openapi/models/FeatureTierRestrictedResponse.js +2 -2
  90. package/dist/openapi/models/FeatureViolation.d.ts +2 -2
  91. package/dist/openapi/models/FeatureViolation.js +2 -2
  92. package/dist/openapi/models/JobDefinition.d.ts +9 -6
  93. package/dist/openapi/models/JobDefinition.js +2 -2
  94. package/dist/openapi/models/JobDownload.d.ts +2 -2
  95. package/dist/openapi/models/JobDownload.js +2 -2
  96. package/dist/openapi/models/JobInputV2.d.ts +2 -2
  97. package/dist/openapi/models/JobInputV2.js +2 -2
  98. package/dist/openapi/models/JobOutputSource.d.ts +2 -2
  99. package/dist/openapi/models/JobOutputSource.js +2 -2
  100. package/dist/openapi/models/JobResponse.d.ts +24 -2
  101. package/dist/openapi/models/JobResponse.js +5 -2
  102. package/dist/openapi/models/JobStatus.d.ts +2 -2
  103. package/dist/openapi/models/JobStatus.js +2 -2
  104. package/dist/openapi/models/JobType.d.ts +2 -2
  105. package/dist/openapi/models/JobType.js +2 -2
  106. package/dist/openapi/models/LivenessResponse.d.ts +2 -2
  107. package/dist/openapi/models/LivenessResponse.js +2 -2
  108. package/dist/openapi/models/LoginUser200Response.d.ts +2 -2
  109. package/dist/openapi/models/LoginUser200Response.js +2 -2
  110. package/dist/openapi/models/LoginUser200ResponseData.d.ts +2 -2
  111. package/dist/openapi/models/LoginUser200ResponseData.js +2 -2
  112. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +2 -2
  113. package/dist/openapi/models/LoginUser200ResponseDataUser.js +2 -2
  114. package/dist/openapi/models/LoginUserRequest.d.ts +2 -2
  115. package/dist/openapi/models/LoginUserRequest.js +2 -2
  116. package/dist/openapi/models/LogoutUser200Response.d.ts +2 -2
  117. package/dist/openapi/models/LogoutUser200Response.js +2 -2
  118. package/dist/openapi/models/MetadataResponse.d.ts +2 -2
  119. package/dist/openapi/models/MetadataResponse.js +2 -2
  120. package/dist/openapi/models/MetadataResponseDimensions.d.ts +2 -2
  121. package/dist/openapi/models/MetadataResponseDimensions.js +2 -2
  122. package/dist/openapi/models/MetadataResponseExif.d.ts +2 -2
  123. package/dist/openapi/models/MetadataResponseExif.js +2 -2
  124. package/dist/openapi/models/MetadataResponseExifGps.d.ts +2 -2
  125. package/dist/openapi/models/MetadataResponseExifGps.js +2 -2
  126. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +2 -2
  127. package/dist/openapi/models/MetadataSuccessEnvelope.js +2 -2
  128. package/dist/openapi/models/MimeGroupSchema.d.ts +2 -2
  129. package/dist/openapi/models/MimeGroupSchema.js +2 -2
  130. package/dist/openapi/models/MultipartCompleteRequest.d.ts +2 -2
  131. package/dist/openapi/models/MultipartCompleteRequest.js +2 -2
  132. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +2 -2
  133. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +2 -2
  134. package/dist/openapi/models/MultipartCompleteResponse.d.ts +2 -2
  135. package/dist/openapi/models/MultipartCompleteResponse.js +2 -2
  136. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +2 -2
  137. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +2 -2
  138. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +2 -2
  139. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +2 -2
  140. package/dist/openapi/models/MultipartInitiateResponse.d.ts +2 -2
  141. package/dist/openapi/models/MultipartInitiateResponse.js +2 -2
  142. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +2 -2
  143. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +2 -2
  144. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +2 -2
  145. package/dist/openapi/models/MultipartKeepaliveResponse.js +2 -2
  146. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +2 -2
  147. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +2 -2
  148. package/dist/openapi/models/MultipartPartListing.d.ts +2 -2
  149. package/dist/openapi/models/MultipartPartListing.js +2 -2
  150. package/dist/openapi/models/MultipartPresignRequest.d.ts +2 -2
  151. package/dist/openapi/models/MultipartPresignRequest.js +2 -2
  152. package/dist/openapi/models/MultipartPresignResponse.d.ts +2 -2
  153. package/dist/openapi/models/MultipartPresignResponse.js +2 -2
  154. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +2 -2
  155. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +2 -2
  156. package/dist/openapi/models/MultipartStatusResponse.d.ts +2 -2
  157. package/dist/openapi/models/MultipartStatusResponse.js +2 -2
  158. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +2 -2
  159. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +2 -2
  160. package/dist/openapi/models/OperationDefinition.d.ts +2 -2
  161. package/dist/openapi/models/OperationDefinition.js +2 -2
  162. package/dist/openapi/models/OperationDownload.d.ts +2 -2
  163. package/dist/openapi/models/OperationDownload.js +2 -2
  164. package/dist/openapi/models/OperationInputModel.d.ts +2 -2
  165. package/dist/openapi/models/OperationInputModel.js +2 -2
  166. package/dist/openapi/models/OperationResponse.d.ts +2 -2
  167. package/dist/openapi/models/OperationResponse.js +2 -2
  168. package/dist/openapi/models/OperationResult.d.ts +2 -2
  169. package/dist/openapi/models/OperationResult.js +2 -2
  170. package/dist/openapi/models/OperationResultMetrics.d.ts +21 -2
  171. package/dist/openapi/models/OperationResultMetrics.js +7 -2
  172. package/dist/openapi/models/OperationSchemaDefinition.d.ts +2 -2
  173. package/dist/openapi/models/OperationSchemaDefinition.js +2 -2
  174. package/dist/openapi/models/OperationStatus.d.ts +2 -2
  175. package/dist/openapi/models/OperationStatus.js +2 -2
  176. package/dist/openapi/models/OperationType.d.ts +15 -13
  177. package/dist/openapi/models/OperationType.js +15 -13
  178. package/dist/openapi/models/OperationsSchemaResponse.d.ts +9 -2
  179. package/dist/openapi/models/OperationsSchemaResponse.js +5 -2
  180. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +55 -0
  181. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +42 -0
  182. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +40 -0
  183. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +45 -0
  184. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +45 -0
  185. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +43 -0
  186. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +33 -0
  187. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +42 -0
  188. package/dist/openapi/models/OptionSchema.d.ts +22 -2
  189. package/dist/openapi/models/OptionSchema.js +4 -2
  190. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +2 -2
  191. package/dist/openapi/models/PerRoleCardinalityEntry.js +2 -2
  192. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +2 -2
  193. package/dist/openapi/models/PerValueAvailabilityEntry.js +2 -2
  194. package/dist/openapi/models/PresignedUrlPart.d.ts +2 -2
  195. package/dist/openapi/models/PresignedUrlPart.js +2 -2
  196. package/dist/openapi/models/ProbePendingResponse.d.ts +16 -12
  197. package/dist/openapi/models/ProbePendingResponse.js +2 -2
  198. package/dist/openapi/models/ProcessingClass.d.ts +2 -2
  199. package/dist/openapi/models/ProcessingClass.js +2 -2
  200. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +2 -2
  201. package/dist/openapi/models/ProcessingClassBandViolation.js +2 -2
  202. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +15 -10
  203. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +2 -2
  204. package/dist/openapi/models/ProcessingClassHint.d.ts +2 -2
  205. package/dist/openapi/models/ProcessingClassHint.js +2 -2
  206. package/dist/openapi/models/ProcessingClassReason.d.ts +2 -2
  207. package/dist/openapi/models/ProcessingClassReason.js +2 -2
  208. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +2 -2
  209. package/dist/openapi/models/ProcessingClassRejectReason.js +2 -2
  210. package/dist/openapi/models/ProcessingPlan.d.ts +2 -2
  211. package/dist/openapi/models/ProcessingPlan.js +2 -2
  212. package/dist/openapi/models/ProcessingPlanJob.d.ts +2 -2
  213. package/dist/openapi/models/ProcessingPlanJob.js +2 -2
  214. package/dist/openapi/models/ReEncodeDecision.d.ts +38 -0
  215. package/dist/openapi/models/ReEncodeDecision.js +56 -0
  216. package/dist/openapi/models/ReadinessResponse.d.ts +2 -2
  217. package/dist/openapi/models/ReadinessResponse.js +2 -2
  218. package/dist/openapi/models/ResponseEnvelope.d.ts +2 -2
  219. package/dist/openapi/models/ResponseEnvelope.js +2 -2
  220. package/dist/openapi/models/RetryResponse.d.ts +2 -2
  221. package/dist/openapi/models/RetryResponse.js +2 -2
  222. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +2 -2
  223. package/dist/openapi/models/RetrySuccessEnvelope.js +2 -2
  224. package/dist/openapi/models/SseCompletionBase.d.ts +2 -2
  225. package/dist/openapi/models/SseCompletionBase.js +2 -2
  226. package/dist/openapi/models/SseEventType.d.ts +2 -2
  227. package/dist/openapi/models/SseEventType.js +2 -2
  228. package/dist/openapi/models/SseJobCompletedData.d.ts +2 -2
  229. package/dist/openapi/models/SseJobCompletedData.js +2 -2
  230. package/dist/openapi/models/SseJobFailedData.d.ts +2 -2
  231. package/dist/openapi/models/SseJobFailedData.js +2 -2
  232. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +2 -2
  233. package/dist/openapi/models/SseMultiOutputCompletion.js +2 -2
  234. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +2 -2
  235. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +2 -2
  236. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +2 -2
  237. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +2 -2
  238. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +2 -2
  239. package/dist/openapi/models/SseMultiOutputResultEntry.js +2 -2
  240. package/dist/openapi/models/SseOperationCompletedData.d.ts +2 -2
  241. package/dist/openapi/models/SseOperationCompletedData.js +2 -2
  242. package/dist/openapi/models/SseOperationCompletionResult.d.ts +2 -2
  243. package/dist/openapi/models/SseOperationCompletionResult.js +2 -2
  244. package/dist/openapi/models/SseOperationFailedData.d.ts +2 -2
  245. package/dist/openapi/models/SseOperationFailedData.js +2 -2
  246. package/dist/openapi/models/SseOperationProgressData.d.ts +4 -3
  247. package/dist/openapi/models/SseOperationProgressData.js +2 -2
  248. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +2 -2
  249. package/dist/openapi/models/SseSingleOutputCompletion.js +2 -2
  250. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +2 -2
  251. package/dist/openapi/models/SseWorkflowTerminalData.js +2 -2
  252. package/dist/openapi/models/TierRestrictionKind.d.ts +2 -2
  253. package/dist/openapi/models/TierRestrictionKind.js +2 -2
  254. package/dist/openapi/models/TierRestrictionResponse.d.ts +9 -6
  255. package/dist/openapi/models/TierRestrictionResponse.js +2 -2
  256. package/dist/openapi/models/UploadConstraintsApplied.d.ts +2 -2
  257. package/dist/openapi/models/UploadConstraintsApplied.js +2 -2
  258. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +9 -6
  259. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +2 -2
  260. package/dist/openapi/models/UploadFile403Response.d.ts +2 -2
  261. package/dist/openapi/models/UploadFile403Response.js +2 -2
  262. package/dist/openapi/models/UploadFile422Response.d.ts +2 -2
  263. package/dist/openapi/models/UploadFile422Response.js +2 -2
  264. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +16 -5
  265. package/dist/openapi/models/UploadProbeMediaMetadata.js +2 -2
  266. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +2 -2
  267. package/dist/openapi/models/UploadProbeProcessingClass.js +2 -2
  268. package/dist/openapi/models/UploadProbeResponse.d.ts +2 -2
  269. package/dist/openapi/models/UploadProbeResponse.js +2 -2
  270. package/dist/openapi/models/UploadProbeStatus.d.ts +2 -2
  271. package/dist/openapi/models/UploadProbeStatus.js +2 -2
  272. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +2 -2
  273. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +2 -2
  274. package/dist/openapi/models/UploadResponse.d.ts +2 -2
  275. package/dist/openapi/models/UploadResponse.js +2 -2
  276. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +9 -6
  277. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +2 -2
  278. package/dist/openapi/models/UploadSource.d.ts +2 -2
  279. package/dist/openapi/models/UploadSource.js +2 -2
  280. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +2 -2
  281. package/dist/openapi/models/UploadSuccessEnvelope.js +2 -2
  282. package/dist/openapi/models/UploadThresholds.d.ts +2 -2
  283. package/dist/openapi/models/UploadThresholds.js +2 -2
  284. package/dist/openapi/models/UserTier.d.ts +2 -2
  285. package/dist/openapi/models/UserTier.js +2 -2
  286. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +33 -3
  287. package/dist/openapi/models/ValidationErrorEnvelope.js +12 -2
  288. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +2 -2
  289. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +2 -2
  290. package/dist/openapi/models/WarningType.d.ts +2 -2
  291. package/dist/openapi/models/WarningType.js +2 -2
  292. package/dist/openapi/models/WebhookOperationContext.d.ts +2 -2
  293. package/dist/openapi/models/WebhookOperationContext.js +2 -2
  294. package/dist/openapi/models/WebhookPayload.d.ts +2 -2
  295. package/dist/openapi/models/WebhookPayload.js +2 -2
  296. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +2 -2
  297. package/dist/openapi/models/WorkflowCancelBillingEffect.js +2 -2
  298. package/dist/openapi/models/WorkflowCancelResponse.d.ts +2 -2
  299. package/dist/openapi/models/WorkflowCancelResponse.js +2 -2
  300. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +2 -2
  301. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +2 -2
  302. package/dist/openapi/models/WorkflowCreateRequest.d.ts +2 -2
  303. package/dist/openapi/models/WorkflowCreateRequest.js +2 -2
  304. package/dist/openapi/models/WorkflowCreateResponse.d.ts +2 -2
  305. package/dist/openapi/models/WorkflowCreateResponse.js +2 -2
  306. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +2 -2
  307. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +2 -2
  308. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +2 -2
  309. package/dist/openapi/models/WorkflowDownloadResponse.js +2 -2
  310. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +2 -2
  311. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +2 -2
  312. package/dist/openapi/models/WorkflowEdge.d.ts +2 -2
  313. package/dist/openapi/models/WorkflowEdge.js +2 -2
  314. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +9 -6
  315. package/dist/openapi/models/WorkflowExpiredResponse.js +2 -2
  316. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +2 -2
  317. package/dist/openapi/models/WorkflowPauseRequiredAction.js +2 -2
  318. package/dist/openapi/models/WorkflowPausedDetail.d.ts +2 -2
  319. package/dist/openapi/models/WorkflowPausedDetail.js +2 -2
  320. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +2 -2
  321. package/dist/openapi/models/WorkflowPausedDetailLinks.js +2 -2
  322. package/dist/openapi/models/WorkflowProcessing.d.ts +2 -2
  323. package/dist/openapi/models/WorkflowProcessing.js +2 -2
  324. package/dist/openapi/models/WorkflowResumeResponse.d.ts +2 -2
  325. package/dist/openapi/models/WorkflowResumeResponse.js +2 -2
  326. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +2 -2
  327. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +2 -2
  328. package/dist/openapi/models/WorkflowSource.d.ts +2 -2
  329. package/dist/openapi/models/WorkflowSource.js +2 -2
  330. package/dist/openapi/models/WorkflowStatus.d.ts +2 -2
  331. package/dist/openapi/models/WorkflowStatus.js +2 -2
  332. package/dist/openapi/models/WorkflowStatusResponse.d.ts +2 -2
  333. package/dist/openapi/models/WorkflowStatusResponse.js +2 -2
  334. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +2 -2
  335. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +2 -2
  336. package/dist/openapi/models/WorkflowWarning.d.ts +2 -2
  337. package/dist/openapi/models/WorkflowWarning.js +2 -2
  338. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +2 -2
  339. package/dist/openapi/models/WorkflowWarningSeverity.js +2 -2
  340. package/dist/openapi/models/index.d.ts +5 -0
  341. package/dist/openapi/models/index.js +5 -0
  342. package/dist/openapi/runtime.d.ts +2 -2
  343. package/dist/openapi/runtime.js +2 -2
  344. package/dist/operations/audio_to_video.metadata.js +1 -1
  345. package/dist/operations/merge.metadata.js +0 -3
  346. package/dist/operations/split.metadata.js +5 -1
  347. package/dist/operations/video_watermark.metadata.js +2 -2
  348. package/openapi/api.yaml +415 -98
  349. package/operations/schemas/audio_to_video.yaml +6 -4
  350. package/operations/schemas/custom_luma.yaml +3 -4
  351. package/operations/schemas/merge.yaml +20 -16
  352. package/operations/schemas/split.yaml +11 -4
  353. package/operations/schemas/video_watermark.yaml +13 -5
  354. package/package.json +1 -1
package/openapi/api.yaml CHANGED
@@ -42,13 +42,27 @@ info:
42
42
  `message_key`. Machine-readable fields (`error`, enum values, status
43
43
  codes) stay canonical English.
44
44
 
45
+ - **Currently committed locales:** `en-GB` only (per ticket
46
+ [`4GKyuYo6`](https://trello.com/c/4GKyuYo6)). The I26 carrier
47
+ shape (`Accept-Language` + `Content-Language` + `Vary` headers +
48
+ `locale` envelope field + `message_key` + `message_params`) is
49
+ stable and exercised; the **catalog** of translated `message`
50
+ strings is en-GB-only at runtime today. Additional locales (e.g.
51
+ `pt-PT`) will be advertised by name when their catalogs ship —
52
+ the request/response carrier shape does NOT change when a new
53
+ locale lands. Treat unrequested locales as "machine-code +
54
+ `message_key` path is committed; localised `message` prose is
55
+ not" until this prose enumerates them by name.
45
56
  - **Request:** `Accept-Language` header per RFC 9110 §12.5.4 (q-value
46
57
  negotiation supported). The server selects the best-match locale
47
- from its supported list; falls back to `en-GB` when no match.
58
+ from its supported list; falls back to `en-GB` when no match
59
+ which, until additional catalogs land, is every non-`en-GB`
60
+ `Accept-Language`.
48
61
  - **Response:** `Content-Language: <locale>` echo on every localised
49
62
  response; `Vary: Accept-Language` on every response (CDN/cache
50
63
  correctness — different `Accept-Language` requests produce
51
- different responses).
64
+ different responses). `Vary` is emitted unconditionally so the
65
+ header contract does not flip when a second locale ships.
52
66
  - **Fallback locale:** `en-GB` (also the canonical locale for
53
67
  `message_key` translations and English `message` prose).
54
68
  - **SDK guidance:** switch on `error` (machine code) for typed
@@ -75,7 +89,7 @@ info:
75
89
  of truth instead of hardcoding magic numbers. A runtime
76
90
  `GET /api/uploads/limits` endpoint for dynamic discovery
77
91
  (per-tier / per-environment overrides) is a deferred follow-up.
78
- version: 2.17.0
92
+ version: 2.31.0
79
93
  contact:
80
94
  name: API Support
81
95
 
@@ -1132,10 +1146,12 @@ paths:
1132
1146
  discriminated union with 4 leaves: `upload` /
1133
1147
  `external_import` / `connection` / `job_output`).
1134
1148
  - **Multi-input jobs** (merge, archive, image_watermark,
1135
- custom_luma, audio_overlay): provide `inputs[]` with
1149
+ custom_luma, audio_overlay, audio_to_video, video_watermark):
1150
+ provide `inputs[]` with
1136
1151
  `JobInputV2` entries. Each entry has its own `source`
1137
1152
  (same `WorkflowSource` union), plus optional `role`
1138
- (image_watermark, custom_luma, audio_overlay) and
1153
+ (image_watermark, custom_luma, audio_overlay, audio_to_video,
1154
+ video_watermark) and
1139
1155
  `per_input_options`.
1140
1156
 
1141
1157
  Exactly one of `source` or `inputs` is required per job.
@@ -1170,8 +1186,9 @@ paths:
1170
1186
 
1171
1187
  **Multi-input constraint:** multi-input jobs (`inputs[]`) must
1172
1188
  have exactly one operation, which must be a multi-input type
1173
- (`merge`, `archive`, `image_watermark`, `custom_luma`, or
1174
- `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
1175
1192
  not valid — create a downstream `job_output`-sourced job
1176
1193
  instead.
1177
1194
 
@@ -1379,11 +1396,59 @@ paths:
1379
1396
  max_parallel_long_form_jobs: 2
1380
1397
  warnings: []
1381
1398
  '400':
1382
- 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.
1383
1420
  content:
1384
1421
  application/json:
1385
1422
  schema:
1386
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"
1387
1452
  '403':
1388
1453
  description: |
1389
1454
  Forbidden — tier-quota or feature-tier restriction. Discriminated
@@ -1482,10 +1547,19 @@ paths:
1482
1547
  Semantically invalid request. One of:
1483
1548
 
1484
1549
  - Generic validation error (unknown operation type, invalid
1485
- option combinations, cyclic dependency in workflow_edges,
1486
- multi-input job with multiple operations, source ref
1487
- pointing to a non-existent job) — returned as
1488
- `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.
1489
1563
  - Feature-availability violation (workflow references one or
1490
1564
  more `planned` / `experimental` / non-enabled-`beta`
1491
1565
  features) — returned as `FeatureNotAvailableResponse`
@@ -1523,29 +1597,34 @@ paths:
1523
1597
  or `always`. The compatibility-probe algorithm is
1524
1598
  server-side and deliberately opaque per plan v5 §F8.2.
1525
1599
 
1526
- Backward-compatibility note: the prior 422 shape
1527
- (`ValidationErrorEnvelope`) is preserved unchanged — its
1528
- `details[]` array is the structural signature consumers
1529
- duck-type against. `FeatureNotAvailableResponse` carries
1530
- `error_type: feature_not_available` + `violations[]`;
1531
- `ProcessingClassExceedsBandResponse` carries `error_type:
1532
- processing_class_exceeds_band` + `violations[]`.
1533
- `ProbePendingResponse` carries `error_type: probe_pending`
1534
- + `job_ref` (and NO `violations[]` / `details[]`), emitted
1535
- when the probe-pending gate is on and a job's upload has
1536
- not yet been probed. The `REQUIRES_REENCODE` flavour reuses
1537
- `ValidationErrorEnvelope`
1538
- (a user-fixable validation error in the same family as
1539
- `INVALID_OPTIONS`) and is distinguished by the stable
1540
- `error: "REQUIRES_REENCODE"` string code rather than a new
1541
- `error_type` enum value. Branches are distinguishable by
1542
- required-field shape (`details` vs `error_type` value), so
1543
- plain `oneOf` matches without a discriminator object see
1544
- `openapi/api.yaml` §"FEATURE AVAILABILITY ENVELOPES"
1545
- commentary for the convention rationale (no discriminator
1546
- here because `ValidationErrorEnvelope` has no `error_type`
1547
- field; OpenAPI 3.1 discriminators require the property to
1548
- 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).
1549
1628
  headers:
1550
1629
  Retry-After:
1551
1630
  required: false
@@ -1569,11 +1648,19 @@ paths:
1569
1648
  - $ref: '#/components/schemas/FeatureNotAvailableResponse'
1570
1649
  - $ref: '#/components/schemas/ProcessingClassExceedsBandResponse'
1571
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'
1572
1658
  examples:
1573
1659
  validation_error:
1574
1660
  summary: Generic validation error (legacy shape)
1575
1661
  value:
1576
1662
  success: false
1663
+ error_type: "validation_error"
1577
1664
  error: "INVALID_OPTIONS"
1578
1665
  details:
1579
1666
  - operation: "compress"
@@ -1582,6 +1669,17 @@ paths:
1582
1669
  - operation: "thumbnail"
1583
1670
  option: "width"
1584
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."
1585
1683
  feature_not_available:
1586
1684
  summary: Workflow references planned features
1587
1685
  value:
@@ -1649,6 +1747,7 @@ paths:
1649
1747
  summary: merge.video re_encode_mode=never with incompatible inputs (I16-CONS)
1650
1748
  value:
1651
1749
  success: false
1750
+ error_type: "validation_error"
1652
1751
  error: "REQUIRES_REENCODE"
1653
1752
  details:
1654
1753
  - operation: "merge"
@@ -2185,7 +2284,7 @@ paths:
2185
2284
  still fresh. Strong-ETag comparison.
2186
2285
  schema:
2187
2286
  type: string
2188
- example: '"v2-pro-47"'
2287
+ example: '"v2-pro-49"'
2189
2288
  - name: If-Modified-Since
2190
2289
  in: header
2191
2290
  required: false
@@ -2218,7 +2317,7 @@ paths:
2218
2317
  Strong entity tag. Clients send `If-None-Match: <etag>`
2219
2318
  on subsequent requests to revalidate; the server returns
2220
2319
  `304 Not Modified` when the response is still fresh.
2221
- example: '"v2-pro-47"'
2320
+ example: '"v2-pro-49"'
2222
2321
  Last-Modified:
2223
2322
  schema:
2224
2323
  type: string
@@ -2236,7 +2335,7 @@ paths:
2236
2335
  summary: Full schema (truncated for brevity)
2237
2336
  value:
2238
2337
  schema_version: "2.0.0"
2239
- capabilities_version: 47
2338
+ capabilities_version: 49
2240
2339
  generated_at: "2026-04-26T09:00:00Z"
2241
2340
  user_tier: "pro"
2242
2341
  operations:
@@ -2299,7 +2398,7 @@ paths:
2299
2398
  ETag:
2300
2399
  schema:
2301
2400
  type: string
2302
- example: '"v2-pro-47"'
2401
+ example: '"v2-pro-49"'
2303
2402
  Last-Modified:
2304
2403
  schema:
2305
2404
  type: string
@@ -2779,6 +2878,11 @@ paths:
2779
2878
  oneOf:
2780
2879
  - $ref: '#/components/schemas/ValidationErrorEnvelope'
2781
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'
2782
2886
  '429':
2783
2887
  description: Rate limit exceeded
2784
2888
  content:
@@ -2891,6 +2995,11 @@ paths:
2891
2995
  oneOf:
2892
2996
  - $ref: '#/components/schemas/ValidationErrorEnvelope'
2893
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'
2894
3003
  '429':
2895
3004
  description: |
2896
3005
  Rate limit exceeded for decode requests. Decode
@@ -3017,7 +3126,10 @@ paths:
3017
3126
  - name: limit
3018
3127
  in: query
3019
3128
  required: false
3020
- description: Page size. Server may reject larger values with 400.
3129
+ description: |
3130
+ Page size. Server may reject invalid `limit` / `offset`
3131
+ with `422 VALIDATION_FAILED` (per project-wide query-param
3132
+ validation convention).
3021
3133
  schema:
3022
3134
  type: integer
3023
3135
  minimum: 1
@@ -3026,7 +3138,9 @@ paths:
3026
3138
  - name: offset
3027
3139
  in: query
3028
3140
  required: false
3029
- description: Page offset (zero-based).
3141
+ description: |
3142
+ Page offset (zero-based). Server may reject invalid
3143
+ `limit` / `offset` with `422 VALIDATION_FAILED`.
3030
3144
  schema:
3031
3145
  type: integer
3032
3146
  minimum: 0
@@ -3149,21 +3263,34 @@ paths:
3149
3263
  total: 47
3150
3264
  limit: 20
3151
3265
  offset: 0
3152
- '400':
3153
- description: Invalid pagination parameters (limit out of range, offset negative).
3266
+ '401':
3267
+ description: Authentication required.
3154
3268
  content:
3155
3269
  application/json:
3156
3270
  schema:
3157
3271
  $ref: '#/components/schemas/ErrorEnvelope'
3158
- example:
3159
- success: false
3160
- error: "limit must be between 1 and 100"
3161
- '401':
3162
- description: Authentication required.
3272
+ '422':
3273
+ description: |
3274
+ Invalid pagination parameters (`limit` out of range,
3275
+ `offset` negative). Per the project-wide query-param
3276
+ validation convention: the API runtime translates parameter
3277
+ constraint violations into `ValidationErrorEnvelope` with
3278
+ `error: "VALIDATION_FAILED"` and structured `details[]`
3279
+ describing each rejected parameter. Replaces the prior
3280
+ `400 ErrorEnvelope` shape — wire change landed via
3281
+ [`gCfdFhdo`](https://trello.com/c/gCfdFhdo) on the API side
3282
+ (contracts caught up via [`d4rJzTcU`](https://trello.com/c/d4rJzTcU)).
3163
3283
  content:
3164
3284
  application/json:
3165
3285
  schema:
3166
- $ref: '#/components/schemas/ErrorEnvelope'
3286
+ $ref: '#/components/schemas/ValidationErrorEnvelope'
3287
+ example:
3288
+ success: false
3289
+ error_type: "validation_error"
3290
+ error: "VALIDATION_FAILED"
3291
+ details:
3292
+ - field: "limit"
3293
+ message: "limit must be between 1 and 100"
3167
3294
  '429':
3168
3295
  description: Rate limit exceeded
3169
3296
  content:
@@ -3420,10 +3547,13 @@ components:
3420
3547
  type: string
3421
3548
  description: |
3422
3549
  BCP 47 locale tag echoing the resolved `Content-Language`
3423
- response header value (e.g. `en-GB`, `pt-BR`, `ja-JP`).
3424
- Lets the SDK confirm which locale the server selected
3425
- when the request used q-value negotiation across multiple
3426
- `Accept-Language` values.
3550
+ response header value. Currently always `en-GB` (the only
3551
+ committed locale per `info.description` Localisation block
3552
+ + ticket [`4GKyuYo6`](https://trello.com/c/4GKyuYo6));
3553
+ additional values will appear here when their catalogs
3554
+ ship. Lets the SDK confirm which locale the server
3555
+ selected when the request used q-value negotiation across
3556
+ multiple `Accept-Language` values.
3427
3557
  example: "en-GB"
3428
3558
  message_params:
3429
3559
  type: object
@@ -3455,11 +3585,30 @@ components:
3455
3585
  required:
3456
3586
  - success
3457
3587
  - error
3588
+ - error_type
3458
3589
  - details
3459
3590
  properties:
3460
3591
  success:
3461
3592
  type: boolean
3462
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.
3463
3612
  error:
3464
3613
  type: string
3465
3614
  description: |
@@ -3467,7 +3616,11 @@ components:
3467
3616
  (generic option/value validation failure), `REQUIRES_REENCODE`
3468
3617
  (per ticket I16-CONS — `merge.video` with
3469
3618
  `re_encode_mode: never` and incompatible inputs; caller
3470
- resolves by switching to `re_encode_mode: auto` or `always`).
3619
+ resolves by switching to `re_encode_mode: auto` or `always`),
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`).
3471
3624
  SDKs duck-type on this field for typed error-branch helpers.
3472
3625
  message:
3473
3626
  type: string
@@ -3538,6 +3691,26 @@ components:
3538
3691
  `ErrorEnvelope.message_params`. Excludes cost
3539
3692
  numbers.
3540
3693
 
3694
+ ReEncodeDecision:
3695
+ type: string
3696
+ description: |
3697
+ Path chosen for `merge.video` when `re_encode_mode=auto`.
3698
+ Server reports the actual path so callers can see why
3699
+ `auto` took the slow path. Absent for non-`merge.video`
3700
+ operations and for `merge.video` when `re_encode_mode` is
3701
+ `always` or `never` (path was caller-fixed). Per ticket
3702
+ I16-CONS (Trello 7nCZXEru).
3703
+
3704
+ Mirrors the AsyncAPI `ReEncodeDecision` (and
3705
+ `OperationMetrics.re_encode_decision`); exposed on the REST
3706
+ `OperationResult.metrics` per ticket zS4e9CI2 so the SDK
3707
+ customer path carries the same signal as the SSE/message
3708
+ surface. Cross-spec enum parity is verified by
3709
+ `tests/test_asyncapi_named_schemas.py`.
3710
+ enum:
3711
+ - stream_copy
3712
+ - re_encode
3713
+
3541
3714
  # ============================================
3542
3715
  # AVAILABILITY METADATA (decorative)
3543
3716
  # ============================================
@@ -4931,13 +5104,12 @@ components:
4931
5104
  with a generic schema error. This envelope is the structured
4932
5105
  rejection.
4933
5106
 
4934
- The 422 response is delivered alongside `ValidationErrorEnvelope`
4935
- and `ProcessingClassExceedsBandResponse` via a naked `oneOf`
4936
- (duck-typed on required-field shape `details` vs `error_type`
4937
- value: `feature_not_available` vs `processing_class_exceeds_band`).
4938
- No discriminator object is used because `ValidationErrorEnvelope`
4939
- has no `error_type` field. See the 422 response on
4940
- `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`.
4941
5113
  allOf:
4942
5114
  - $ref: '#/components/schemas/ErrorEnvelope'
4943
5115
  - type: object
@@ -4980,12 +5152,13 @@ components:
4980
5152
 
4981
5153
  Delivered alongside `ValidationErrorEnvelope`,
4982
5154
  `FeatureNotAvailableResponse`, and
4983
- `ProcessingClassExceedsBandResponse` via the naked `oneOf` on
4984
- the 422 response — duck-typed on required-field shape: this
4985
- branch is the only one carrying `error_type: probe_pending`
4986
- and it has neither `details` (ValidationErrorEnvelope) nor
4987
- `violations` (the other two typed envelopes), so it matches
4988
- 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).
4989
5162
  allOf:
4990
5163
  - $ref: '#/components/schemas/ErrorEnvelope'
4991
5164
  - type: object
@@ -5181,10 +5354,12 @@ components:
5181
5354
  envelope is 422, not an extension of `TierRestrictionResponse`
5182
5355
  on 403).
5183
5356
 
5184
- Delivered on `POST /api/workflows` 422 in a naked `oneOf`
5185
- alongside `ValidationErrorEnvelope` and
5186
- `FeatureNotAvailableResponse` — branches distinguished by
5187
- 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`.
5188
5363
  allOf:
5189
5364
  - $ref: '#/components/schemas/ErrorEnvelope'
5190
5365
  - type: object
@@ -5405,19 +5580,21 @@ components:
5405
5580
  Available operation types:
5406
5581
  - compress: Reduce file size (images, audio, video, documents)
5407
5582
  - thumbnail: Legacy thumbnail value. Generates a preview image
5408
- for any media type via a single Lambda. Currently the only
5409
- thumbnail value the compression_api publisher emits; retirement
5410
- is planned after the publisher adopts the four sub-type values
5411
- 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`.
5412
5588
  - thumbnail_image: Image thumbnail sub-type. Backed by a dedicated
5413
- Rust image Lambda. Not yet emitted by the publisher.
5589
+ Rust image Lambda. Emitted by the publisher for image inputs.
5414
5590
  - thumbnail_video: Video thumbnail sub-type. Backed by a dedicated
5415
- FFmpeg Lambda. Not yet emitted.
5591
+ FFmpeg Lambda. Emitted by the publisher for video inputs.
5416
5592
  - thumbnail_document: PDF/EPUB thumbnail sub-type. Backed by a
5417
- dedicated Ghostscript Lambda. Not yet emitted.
5593
+ dedicated Ghostscript Lambda. Emitted by the publisher for
5594
+ PDF/EPUB inputs.
5418
5595
  - thumbnail_office: Office document (DOCX/XLSX/PPTX/ODT/ODS/ODP)
5419
5596
  thumbnail sub-type. Backed by a dedicated LibreOffice Lambda.
5420
- Not yet emitted.
5597
+ Emitted by the publisher for office-document inputs.
5421
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).
5422
5599
  - text_watermark: Text overlay rendered onto an image (Liberation Sans). Single-input. Per ADR-0004 + I4-CONS.
5423
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.
@@ -5426,10 +5603,10 @@ components:
5426
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).
5427
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).
5428
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).
5429
- - 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).
5430
- - 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.
5431
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.
5432
- - 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.
5433
5610
 
5434
5611
  Both the legacy `thumbnail` value and the four sub-type values
5435
5612
  are valid routing targets today during the thumbnail migration
@@ -6350,9 +6527,11 @@ components:
6350
6527
  text_watermark, convert).
6351
6528
  - `inputs[]` (multi-input): array of `JobInputV2` entries. Each entry
6352
6529
  carries its own `source` plus an optional `role`
6353
- (image_watermark, custom_luma, audio_overlay) and
6530
+ (image_watermark, custom_luma, audio_overlay, audio_to_video,
6531
+ video_watermark) and
6354
6532
  `per_input_options`. Used by multi-input operations (merge,
6355
- archive, image_watermark, custom_luma, audio_overlay).
6533
+ archive, image_watermark, custom_luma, audio_overlay,
6534
+ audio_to_video, video_watermark).
6356
6535
 
6357
6536
  Exactly one of `source` or `inputs` is required.
6358
6537
 
@@ -6415,7 +6594,8 @@ components:
6415
6594
  type: array
6416
6595
  description: |
6417
6596
  Multi-input list for `merge`, `archive`, `image_watermark`,
6418
- `custom_luma`, `audio_overlay`, and `audio_to_video`. Each
6597
+ `custom_luma`, `audio_overlay`, `audio_to_video`, and
6598
+ `video_watermark`. Each
6419
6599
  entry is a `JobInputV2` with its own `WorkflowSource`.
6420
6600
  Mutually exclusive with `source` — the V2 shape boundary
6421
6601
  stays `source` (single-input) XOR `inputs[]` (multi-input
@@ -6442,7 +6622,7 @@ components:
6442
6622
  Multi-input jobs (with `inputs[]`) must have exactly one
6443
6623
  operation, and it must be a multi-input type (`merge`,
6444
6624
  `archive`, `image_watermark`, `custom_luma`,
6445
- `audio_overlay`, or `audio_to_video`).
6625
+ `audio_overlay`, `audio_to_video`, or `video_watermark`).
6446
6626
  items:
6447
6627
  $ref: '#/components/schemas/OperationDefinition'
6448
6628
  deliver:
@@ -6483,10 +6663,12 @@ components:
6483
6663
  `custom_luma` (joined via ticket
6484
6664
  [I29](https://trello.com/c/EPUE5Vs1) — `availability:
6485
6665
  planned` so workflow-create returns 422 until Lambda
6486
- ships), and `audio_overlay` (joined via ticket
6666
+ ships), `audio_overlay` (joined via ticket
6487
6667
  [I19](https://trello.com/c/Xr3Z4GBF) — same `planned`
6488
- gating). The multi-input shape is contract-defined for
6489
- 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.
6490
6672
 
6491
6673
  JobInputV2:
6492
6674
  type: object
@@ -6631,8 +6813,19 @@ components:
6631
6813
  - explicit
6632
6814
  per_value_availability:
6633
6815
  terminal: { availability: stable }
6634
- all_outputs: { availability: beta }
6635
- explicit: { availability: beta }
6816
+ all_outputs: { availability: planned }
6817
+ explicit: { availability: planned }
6818
+ # Availability flipped beta → planned per ticket
6819
+ # [`co0CERtJ`](https://trello.com/c/co0CERtJ) — the API
6820
+ # runtime currently 422s every non-default `selection.type`
6821
+ # with `feature_not_available`, which per the
6822
+ # `info.description` availability taxonomy IS the `planned`
6823
+ # behaviour (`stable`/`beta` MUST NOT 422). When the API
6824
+ # threads the request-level `delivery.selection` shape, this
6825
+ # flips back. Terminal stays `stable` because the runtime
6826
+ # honours it as the implicit default (`DeliveryPlanComputer`
6827
+ # computes terminal selection regardless of whether the
6828
+ # caller supplied a `delivery` block).
6636
6829
  refs:
6637
6830
  type: array
6638
6831
  description: |
@@ -6659,7 +6852,20 @@ components:
6659
6852
  properties:
6660
6853
  mode:
6661
6854
  type: string
6662
- description: Delivery mode.
6855
+ description: |
6856
+ Delivery mode. `individual` is the only committed value
6857
+ today (per ticket [`co0CERtJ`](https://trello.com/c/co0CERtJ)).
6858
+ `bundle` and `both` are `planned`: the API runtime returns
6859
+ `422 feature_not_available` for any non-`individual` value,
6860
+ which per the `info.description` availability taxonomy is
6861
+ the `planned` behaviour (`stable`/`beta` MUST NOT 422).
6862
+
6863
+ For workflows that need a packaged output today, compose
6864
+ a terminal `archive` job whose `sources` are
6865
+ `JobOutputSource` refs to the upstream jobs — `archive` is
6866
+ the canonical output-bundler per ADR-0017. `delivery.mode:
6867
+ bundle` is the deferred post-launch ergonomic sugar that
6868
+ will reuse the same `archive` runtime under the hood.
6663
6869
  enum:
6664
6870
  - individual
6665
6871
  - bundle
@@ -6667,8 +6873,8 @@ components:
6667
6873
  default: individual
6668
6874
  per_value_availability:
6669
6875
  individual: { availability: stable }
6670
- bundle: { availability: stable }
6671
- both: { availability: beta }
6876
+ bundle: { availability: planned }
6877
+ both: { availability: planned }
6672
6878
  bundle_format:
6673
6879
  type: string
6674
6880
  enum:
@@ -6699,6 +6905,11 @@ components:
6699
6905
  description: |
6700
6906
  How to pick outputs. Default `terminal` (leaves only).
6701
6907
  example:
6908
+ # Spec example uses `bundle` to document the deferred (planned)
6909
+ # shape end-to-end — see Delivery.mode per_value_availability
6910
+ # for the runtime state. For workflows that need packaged
6911
+ # output today, compose a terminal `archive` job whose
6912
+ # `sources` are `JobOutputSource` refs (ADR-0017).
6702
6913
  mode: bundle
6703
6914
  bundle_format: zip
6704
6915
  bundle_filename: "compressed-photos"
@@ -7068,12 +7279,22 @@ components:
7068
7279
  description: Container-reported duration (audio + video).
7069
7280
  width:
7070
7281
  type: integer
7282
+ format: int64
7071
7283
  minimum: 1
7072
- description: Pixel width (image + video; best-effort document).
7284
+ description: |
7285
+ Pixel width (image + video; best-effort document). Declared
7286
+ `int64` so Rust SDK generators emit `i64` instead of the
7287
+ default `i32`; `i32` is fine for everything ffmpeg/libcaesium
7288
+ handles today but the format hint keeps the door open for
7289
+ scientific / RAW imagery without future SDK churn (per
7290
+ ticket [`0sTmbUsc`](https://trello.com/c/0sTmbUsc)).
7073
7291
  height:
7074
7292
  type: integer
7293
+ format: int64
7075
7294
  minimum: 1
7076
- description: Pixel height (image + video; best-effort document).
7295
+ description: |
7296
+ Pixel height (image + video; best-effort document). See
7297
+ `width` for the `format: int64` rationale.
7077
7298
  codec:
7078
7299
  type: string
7079
7300
  description: |
@@ -7108,12 +7329,16 @@ components:
7108
7329
  `29.97`, `23.976`).
7109
7330
  bitrate_bps:
7110
7331
  type: integer
7332
+ format: int64
7111
7333
  minimum: 0
7112
7334
  description: |
7113
7335
  Overall stream bitrate, **bits per second**. Units in
7114
7336
  the field name, mirroring `duration_seconds`, so SDKs
7115
7337
  avoid the kbps-vs-bps guessing trap. Container-reported
7116
- for video + audio.
7338
+ for video + audio. Declared `int64` so Rust SDK
7339
+ generators emit `i64` instead of `i32`; `i32` caps at
7340
+ ~2.1 Gbps which is tight for future 4K/8K/RAW workloads
7341
+ (per ticket [`0sTmbUsc`](https://trello.com/c/0sTmbUsc)).
7117
7342
  audio_layout:
7118
7343
  type: string
7119
7344
  description: |
@@ -7497,6 +7722,24 @@ components:
7497
7722
  $ref: '#/components/schemas/UuidV7'
7498
7723
  status:
7499
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).
7500
7743
  depends_on:
7501
7744
  type: array
7502
7745
  description: List of upstream job refs this job depends on
@@ -7574,6 +7817,21 @@ components:
7574
7817
  duration_ms:
7575
7818
  type: integer
7576
7819
  description: Processing time in milliseconds
7820
+ re_encode_decision:
7821
+ # Mirrors AsyncAPI OperationMetrics.re_encode_decision so the
7822
+ # REST result surface (SDK customer path) carries the same
7823
+ # merge.video stream-copy-vs-re-encode signal as the SSE/message
7824
+ # channel. Per ticket zS4e9CI2 (unblocks e2e aDFI1FgT).
7825
+ $ref: '#/components/schemas/ReEncodeDecision'
7826
+ re_encode_reason:
7827
+ type: string
7828
+ description: |
7829
+ Advisory explanation for `re_encode_decision` (e.g.
7830
+ `all_inputs_compatible`, `explicit_always_mode`,
7831
+ `input_codec_mismatch`, `input_framerate_mismatch`).
7832
+ Free-form string — not an enum — so the Lambda can emit
7833
+ human-readable diagnostics that evolve without contract
7834
+ changes. Mirrors `OperationMetrics.re_encode_reason`.
7577
7835
 
7578
7836
  # ============================================
7579
7837
  # WORKFLOW DOWNLOAD SCHEMAS
@@ -7777,7 +8035,8 @@ components:
7777
8035
  Total number of inputs expected in this phase. Pairs with
7778
8036
  `phase_input_index`. For single-input operations this is
7779
8037
  `1` during the relevant phase; for multi-input merge /
7780
- archive / image_watermark / custom_luma / audio_overlay,
8038
+ archive / image_watermark / custom_luma / audio_overlay /
8039
+ audio_to_video / video_watermark,
7781
8040
  it matches the inputs[] count. Per ticket I27.
7782
8041
 
7783
8042
  SseOperationCompletedData:
@@ -8309,6 +8568,48 @@ components:
8309
8568
  either source.
8310
8569
  additionalProperties:
8311
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'
8312
8613
 
8313
8614
  EndpointProjection:
8314
8615
  type: object
@@ -8584,6 +8885,22 @@ components:
8584
8885
  by `make check-per-value-availability` (CI guard, ticket
8585
8886
  [I17 `0gwtwCav`](https://trello.com/c/0gwtwCav)). Runtime
8586
8887
  emission lands with I3.
8888
+ per_value_depends_on:
8889
+ type: object
8890
+ description: |
8891
+ Per-enum-value cross-field constraint map, only meaningful
8892
+ when `type: enum`. Keys MUST be a subset of `values[]`;
8893
+ each entry value is a `depends_on`-shaped condition mapping
8894
+ that the named enum value REQUIRES. Distinct from
8895
+ option-level `depends_on` (which gates applicability with
8896
+ silent-ignore semantics); `per_value_depends_on` rejects
8897
+ the request with `invalid_options` when the named value is
8898
+ chosen and the condition is not met. Verified by
8899
+ `make check-per-value-depends-on` (CI guard, ticket
8900
+ [`bsV3FWM5`](https://trello.com/c/bsV3FWM5)). Runtime
8901
+ emission ships verbatim alongside other availability
8902
+ metadata. See `schemas/FORMAT.md` §per_value_depends_on.
8903
+ additionalProperties: true
8587
8904
  min:
8588
8905
  type: number
8589
8906
  description: Minimum value (for integer/float types)