@giveitsmaller/contracts 0.51.0 → 0.54.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 (477) hide show
  1. package/accepted-options/accepted-options.json +38 -1
  2. package/accepted-options/image-output-routes.json +1 -1
  3. package/asyncapi/events.yaml +283 -14
  4. package/availability/availability.json +155 -2
  5. package/code-builder/code-builder-metadata.json +7236 -0
  6. package/dist/asyncapi/OperationType.d.ts +2 -1
  7. package/dist/asyncapi/OperationType.js +1 -0
  8. package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
  9. package/dist/openapi/models/AccountLimitEntry.js +1 -1
  10. package/dist/openapi/models/AccountLimits.d.ts +1 -1
  11. package/dist/openapi/models/AccountLimits.js +1 -1
  12. package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
  13. package/dist/openapi/models/AccountLimitsLimits.js +1 -1
  14. package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
  15. package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
  16. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  17. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  18. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  19. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  20. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  21. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  22. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  23. package/dist/openapi/models/AuthErrorType.js +1 -1
  24. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
  25. package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
  26. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  27. package/dist/openapi/models/AvailabilityValue.js +1 -1
  28. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  29. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  30. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  31. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  32. package/dist/openapi/models/BillingCheckoutRequest.d.ts +1 -1
  33. package/dist/openapi/models/BillingCheckoutRequest.js +1 -1
  34. package/dist/openapi/models/BillingCheckoutSession.d.ts +1 -1
  35. package/dist/openapi/models/BillingCheckoutSession.js +1 -1
  36. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +1 -1
  37. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +1 -1
  38. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  39. package/dist/openapi/models/CallbackEventType.js +1 -1
  40. package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
  41. package/dist/openapi/models/CapabilityCondition.js +1 -1
  42. package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
  43. package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
  44. package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
  45. package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
  46. package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
  47. package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
  48. package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
  49. package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
  50. package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
  51. package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
  52. package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
  53. package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
  54. package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
  55. package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
  56. package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
  57. package/dist/openapi/models/CapabilityConstraint.js +1 -1
  58. package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
  59. package/dist/openapi/models/CapabilityInputSpec.js +1 -1
  60. package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
  61. package/dist/openapi/models/CapabilityProduces.js +1 -1
  62. package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
  63. package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
  64. package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
  65. package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
  66. package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
  67. package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
  68. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  69. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  70. package/dist/openapi/models/CodegenSource.d.ts +1 -1
  71. package/dist/openapi/models/CodegenSource.js +1 -1
  72. package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
  73. package/dist/openapi/models/CodegenSourceInput.js +1 -1
  74. package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
  75. package/dist/openapi/models/CodegenSourceJob.js +1 -1
  76. package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
  77. package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
  78. package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
  79. package/dist/openapi/models/CodegenSourceOperation.js +1 -1
  80. package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
  81. package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
  82. package/dist/openapi/models/CompositionPlan.d.ts +13 -7
  83. package/dist/openapi/models/CompositionPlan.js +1 -1
  84. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  85. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  86. package/dist/openapi/models/CompositionPlanOperation.d.ts +4 -1
  87. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  88. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  89. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  90. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  91. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  92. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  93. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  94. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  95. package/dist/openapi/models/ConnectionSource.js +1 -1
  96. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  97. package/dist/openapi/models/ContactRequest.js +1 -1
  98. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  99. package/dist/openapi/models/ContactSubject.js +1 -1
  100. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  101. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  102. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  103. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  104. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  105. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  106. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  107. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  108. package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +1 -1
  109. package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +1 -1
  110. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  111. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  112. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  113. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  114. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  115. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  116. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  117. package/dist/openapi/models/CreditTransaction.js +1 -1
  118. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  119. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  120. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  121. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  122. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  123. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  124. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  125. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  126. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  127. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  128. package/dist/openapi/models/Delivery.d.ts +1 -1
  129. package/dist/openapi/models/Delivery.js +1 -1
  130. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  131. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  132. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  133. package/dist/openapi/models/DeliveryPlan.js +1 -1
  134. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  135. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  136. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  137. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  138. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  139. package/dist/openapi/models/DeliverySelection.js +1 -1
  140. package/dist/openapi/models/DownloadBundle.d.ts +1 -1
  141. package/dist/openapi/models/DownloadBundle.js +1 -1
  142. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  143. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  144. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  145. package/dist/openapi/models/EndpointProjection.js +1 -1
  146. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  147. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  148. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  149. package/dist/openapi/models/EstimateQuality.js +1 -1
  150. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  151. package/dist/openapi/models/EstimateRange.js +1 -1
  152. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  153. package/dist/openapi/models/ExternalDestination.js +1 -1
  154. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  155. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  156. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  157. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  158. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  159. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  160. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  161. package/dist/openapi/models/ExternalImportToken.js +1 -1
  162. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  163. package/dist/openapi/models/ExternalSource.js +1 -1
  164. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  165. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  166. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  167. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  168. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  169. package/dist/openapi/models/FeatureViolation.js +1 -1
  170. package/dist/openapi/models/ForgotPasswordRequest.d.ts +1 -1
  171. package/dist/openapi/models/ForgotPasswordRequest.js +1 -1
  172. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  173. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  174. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  175. package/dist/openapi/models/JobDefinition.js +1 -1
  176. package/dist/openapi/models/JobDownload.d.ts +1 -1
  177. package/dist/openapi/models/JobDownload.js +1 -1
  178. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  179. package/dist/openapi/models/JobInputV2.js +1 -1
  180. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  181. package/dist/openapi/models/JobMediaClass.js +1 -1
  182. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  183. package/dist/openapi/models/JobOutputSource.js +1 -1
  184. package/dist/openapi/models/JobResponse.d.ts +1 -1
  185. package/dist/openapi/models/JobResponse.js +1 -1
  186. package/dist/openapi/models/JobStatus.d.ts +1 -1
  187. package/dist/openapi/models/JobStatus.js +1 -1
  188. package/dist/openapi/models/JobType.d.ts +1 -1
  189. package/dist/openapi/models/JobType.js +1 -1
  190. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  191. package/dist/openapi/models/LivenessResponse.js +1 -1
  192. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  193. package/dist/openapi/models/LoginUser200Response.js +1 -1
  194. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  195. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  196. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  197. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  198. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  199. package/dist/openapi/models/LoginUserRequest.js +1 -1
  200. package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
  201. package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
  202. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
  203. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
  204. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  205. package/dist/openapi/models/MetadataResponse.js +1 -1
  206. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  207. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  208. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  209. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  210. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  211. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  212. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  213. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  214. package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
  215. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  216. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  217. package/dist/openapi/models/MultiInputSource.js +1 -1
  218. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  219. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  220. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  221. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  222. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  223. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  224. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  225. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  226. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  227. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  228. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  229. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  230. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  231. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  232. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  233. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  234. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  235. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  236. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  237. package/dist/openapi/models/MultipartPartListing.js +1 -1
  238. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  239. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  240. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  241. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  242. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  243. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  244. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  245. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  246. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  247. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  248. package/dist/openapi/models/OperationCapability.d.ts +1 -1
  249. package/dist/openapi/models/OperationCapability.js +1 -1
  250. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  251. package/dist/openapi/models/OperationDefinition.js +1 -1
  252. package/dist/openapi/models/OperationDownload.d.ts +1 -1
  253. package/dist/openapi/models/OperationDownload.js +1 -1
  254. package/dist/openapi/models/OperationInputModel.d.ts +2 -2
  255. package/dist/openapi/models/OperationInputModel.js +2 -2
  256. package/dist/openapi/models/OperationResponse.d.ts +1 -1
  257. package/dist/openapi/models/OperationResponse.js +1 -1
  258. package/dist/openapi/models/OperationResult.d.ts +1 -1
  259. package/dist/openapi/models/OperationResult.js +1 -1
  260. package/dist/openapi/models/OperationResultMetadata.d.ts +1 -1
  261. package/dist/openapi/models/OperationResultMetadata.js +1 -1
  262. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  263. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  264. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  265. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  266. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  267. package/dist/openapi/models/OperationStatus.js +1 -1
  268. package/dist/openapi/models/OperationType.d.ts +4 -1
  269. package/dist/openapi/models/OperationType.js +4 -1
  270. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  271. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  272. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  273. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  274. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  275. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  276. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  277. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  278. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  279. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  280. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  281. package/dist/openapi/models/OptionSchema.js +1 -1
  282. package/dist/openapi/models/OutputProperties.d.ts +1 -1
  283. package/dist/openapi/models/OutputProperties.js +1 -1
  284. package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
  285. package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
  286. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  287. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  288. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  289. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  290. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  291. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  292. package/dist/openapi/models/ProbePendingResponse.d.ts +1 -1
  293. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  294. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  295. package/dist/openapi/models/ProcessingClass.js +1 -1
  296. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  297. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  298. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  299. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  300. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  301. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  302. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  303. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  304. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  305. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  306. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  307. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  308. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +2 -2
  309. package/dist/openapi/models/ProcessingClassRejectReason.js +2 -2
  310. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  311. package/dist/openapi/models/ProcessingPlan.js +1 -1
  312. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  313. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  314. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  315. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  316. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  317. package/dist/openapi/models/ReadinessResponse.js +1 -1
  318. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  319. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  320. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  321. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  322. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  323. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  324. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  325. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  326. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  327. package/dist/openapi/models/RetryResponse.js +1 -1
  328. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  329. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  330. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  331. package/dist/openapi/models/SseCompletionBase.js +1 -1
  332. package/dist/openapi/models/SseEventType.d.ts +1 -1
  333. package/dist/openapi/models/SseEventType.js +1 -1
  334. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  335. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  336. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  337. package/dist/openapi/models/SseJobFailedData.js +1 -1
  338. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  339. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  340. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  341. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  342. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  343. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  344. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  345. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  346. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  347. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  348. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  349. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  350. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  351. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  352. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  353. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  354. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  355. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  356. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  357. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  358. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  359. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  360. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  361. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  362. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  363. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  364. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  365. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  366. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  367. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  368. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  369. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  370. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  371. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  372. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  373. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  374. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  375. package/dist/openapi/models/UploadFile403Response.js +1 -1
  376. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  377. package/dist/openapi/models/UploadFile422Response.js +1 -1
  378. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  379. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  380. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  381. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  382. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  383. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  384. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  385. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  386. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  387. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  388. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  389. package/dist/openapi/models/UploadResponse.js +1 -1
  390. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  391. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  392. package/dist/openapi/models/UploadSource.d.ts +1 -1
  393. package/dist/openapi/models/UploadSource.js +1 -1
  394. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  395. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  396. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  397. package/dist/openapi/models/UploadThresholds.js +1 -1
  398. package/dist/openapi/models/UserTier.d.ts +1 -1
  399. package/dist/openapi/models/UserTier.js +1 -1
  400. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  401. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  402. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  403. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  404. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  405. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  406. package/dist/openapi/models/WarningType.d.ts +1 -1
  407. package/dist/openapi/models/WarningType.js +1 -1
  408. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  409. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  410. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  411. package/dist/openapi/models/WebhookPayload.js +1 -1
  412. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  413. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  414. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  415. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  416. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  417. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  418. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  419. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  420. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  421. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  422. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  423. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  424. package/dist/openapi/models/WorkflowCreditSummary.d.ts +1 -1
  425. package/dist/openapi/models/WorkflowCreditSummary.js +1 -1
  426. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +26 -1
  427. package/dist/openapi/models/WorkflowDownloadResponse.js +3 -1
  428. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  429. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  430. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  431. package/dist/openapi/models/WorkflowEdge.js +1 -1
  432. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  433. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  434. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  435. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  436. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  437. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  438. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  439. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  440. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  441. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  442. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  443. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  444. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  445. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  446. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  447. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  448. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  449. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  450. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  451. package/dist/openapi/models/WorkflowSource.js +1 -1
  452. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  453. package/dist/openapi/models/WorkflowStatus.js +1 -1
  454. package/dist/openapi/models/WorkflowStatusResponse.d.ts +19 -1
  455. package/dist/openapi/models/WorkflowStatusResponse.js +3 -1
  456. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  457. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  458. package/dist/openapi/models/WorkflowSummary.d.ts +16 -1
  459. package/dist/openapi/models/WorkflowSummary.js +3 -1
  460. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  461. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  462. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  463. package/dist/openapi/models/WorkflowWarning.js +1 -1
  464. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  465. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  466. package/dist/openapi/runtime.d.ts +1 -1
  467. package/dist/openapi/runtime.js +1 -1
  468. package/dist/operations/index.d.ts +2 -0
  469. package/dist/operations/index.js +2 -0
  470. package/dist/operations/transform.d.ts +57 -0
  471. package/dist/operations/transform.js +50 -0
  472. package/dist/operations/transform.metadata.d.ts +2 -0
  473. package/dist/operations/transform.metadata.js +77 -0
  474. package/openapi/api.yaml +73 -9
  475. package/operation-capabilities/operation-capabilities.json +126 -3
  476. package/operations/schemas/transform.yaml +196 -0
  477. package/package.json +5 -2
@@ -0,0 +1,50 @@
1
+ // Auto-generated from transform.yaml -- do not edit
2
+ export var TransformImageRotate;
3
+ (function (TransformImageRotate) {
4
+ TransformImageRotate[TransformImageRotate["_0"] = 0] = "_0";
5
+ TransformImageRotate[TransformImageRotate["_90"] = 90] = "_90";
6
+ TransformImageRotate[TransformImageRotate["_180"] = 180] = "_180";
7
+ TransformImageRotate[TransformImageRotate["_270"] = 270] = "_270";
8
+ })(TransformImageRotate || (TransformImageRotate = {}));
9
+ export var TransformImageFlip;
10
+ (function (TransformImageFlip) {
11
+ TransformImageFlip["None"] = "none";
12
+ TransformImageFlip["Horizontal"] = "horizontal";
13
+ TransformImageFlip["Vertical"] = "vertical";
14
+ TransformImageFlip["Both"] = "both";
15
+ })(TransformImageFlip || (TransformImageFlip = {}));
16
+ export var TransformImageGifRotate;
17
+ (function (TransformImageGifRotate) {
18
+ TransformImageGifRotate[TransformImageGifRotate["_0"] = 0] = "_0";
19
+ TransformImageGifRotate[TransformImageGifRotate["_90"] = 90] = "_90";
20
+ TransformImageGifRotate[TransformImageGifRotate["_180"] = 180] = "_180";
21
+ TransformImageGifRotate[TransformImageGifRotate["_270"] = 270] = "_270";
22
+ })(TransformImageGifRotate || (TransformImageGifRotate = {}));
23
+ export var TransformImageGifFlip;
24
+ (function (TransformImageGifFlip) {
25
+ TransformImageGifFlip["None"] = "none";
26
+ TransformImageGifFlip["Horizontal"] = "horizontal";
27
+ TransformImageGifFlip["Vertical"] = "vertical";
28
+ TransformImageGifFlip["Both"] = "both";
29
+ })(TransformImageGifFlip || (TransformImageGifFlip = {}));
30
+ export var TransformVideoRotate;
31
+ (function (TransformVideoRotate) {
32
+ TransformVideoRotate[TransformVideoRotate["_0"] = 0] = "_0";
33
+ TransformVideoRotate[TransformVideoRotate["_90"] = 90] = "_90";
34
+ TransformVideoRotate[TransformVideoRotate["_180"] = 180] = "_180";
35
+ TransformVideoRotate[TransformVideoRotate["_270"] = 270] = "_270";
36
+ })(TransformVideoRotate || (TransformVideoRotate = {}));
37
+ export var TransformVideoFlip;
38
+ (function (TransformVideoFlip) {
39
+ TransformVideoFlip["None"] = "none";
40
+ TransformVideoFlip["Horizontal"] = "horizontal";
41
+ TransformVideoFlip["Vertical"] = "vertical";
42
+ TransformVideoFlip["Both"] = "both";
43
+ })(TransformVideoFlip || (TransformVideoFlip = {}));
44
+ export var TransformDocumentPdfRotate;
45
+ (function (TransformDocumentPdfRotate) {
46
+ TransformDocumentPdfRotate[TransformDocumentPdfRotate["_0"] = 0] = "_0";
47
+ TransformDocumentPdfRotate[TransformDocumentPdfRotate["_90"] = 90] = "_90";
48
+ TransformDocumentPdfRotate[TransformDocumentPdfRotate["_180"] = 180] = "_180";
49
+ TransformDocumentPdfRotate[TransformDocumentPdfRotate["_270"] = 270] = "_270";
50
+ })(TransformDocumentPdfRotate || (TransformDocumentPdfRotate = {}));
@@ -0,0 +1,2 @@
1
+ import type { OperationMetadata } from './metadata-types.js';
2
+ export declare const transformMetadata: OperationMetadata;
@@ -0,0 +1,77 @@
1
+ // Auto-generated from transform.yaml -- do not edit
2
+ export const transformMetadata = {
3
+ availability: 'planned',
4
+ features: {},
5
+ mime_groups: {
6
+ image: {
7
+ availability: 'planned',
8
+ processing_class: {},
9
+ per_mime_availability: {},
10
+ options: {
11
+ rotate: {
12
+ per_value_availability: {},
13
+ },
14
+ flip: {
15
+ per_value_availability: {},
16
+ },
17
+ },
18
+ per_input_options: {},
19
+ },
20
+ image_gif: {
21
+ availability: 'planned',
22
+ processing_class: {},
23
+ per_mime_availability: {},
24
+ options: {
25
+ rotate: {
26
+ per_value_availability: {},
27
+ },
28
+ flip: {
29
+ per_value_availability: {},
30
+ },
31
+ },
32
+ per_input_options: {},
33
+ },
34
+ video: {
35
+ processing_class: {
36
+ short_form: {
37
+ availability: 'planned',
38
+ constraints: {
39
+ max_input_duration: 'PT5M',
40
+ max_input_size_bytes: 524288000,
41
+ max_output_size_bytes: 524288000,
42
+ },
43
+ },
44
+ long_form: {
45
+ availability: 'planned',
46
+ required_tier: 'pro',
47
+ constraints: {
48
+ max_input_duration: 'PT12H',
49
+ max_input_size_bytes: 5000000000,
50
+ max_output_size_bytes: 5000000000,
51
+ },
52
+ },
53
+ },
54
+ per_mime_availability: {},
55
+ options: {
56
+ rotate: {
57
+ per_value_availability: {},
58
+ },
59
+ flip: {
60
+ per_value_availability: {},
61
+ },
62
+ },
63
+ per_input_options: {},
64
+ },
65
+ document_pdf: {
66
+ availability: 'planned',
67
+ processing_class: {},
68
+ per_mime_availability: {},
69
+ options: {
70
+ rotate: {
71
+ per_value_availability: {},
72
+ },
73
+ },
74
+ per_input_options: {},
75
+ },
76
+ },
77
+ };
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.152.0
92
+ version: 2.158.0
93
93
  contact:
94
94
  name: API Support
95
95
 
@@ -7187,7 +7187,7 @@ components:
7187
7187
  exceeds the per-input ceiling (`max_input_size_bytes` /
7188
7188
  `max_input_duration`). Applies to single-input operations
7189
7189
  (compress, convert, thumbnail, text_watermark,
7190
- audio_watermark) AND per-input checks on multi-input
7190
+ audio_watermark, transform) AND per-input checks on multi-input
7191
7191
  operations with per-input caps (image_watermark,
7192
7192
  custom_luma, audio_overlay).
7193
7193
  - `combined_size_exceeds_long_form` /
@@ -7594,6 +7594,8 @@ components:
7594
7594
  - 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` and `video` mime_groups (workers live on staging — shape-stable + opt-in, MUST NOT 422); video activates BOTH classes (`video.processing_class.short_form: beta` AND `long_form: beta` — `split-video-fargate` deployed + wired on staging but NOT yet proven end-to-end per [`rcwvUKhI`](https://trello.com/c/rcwvUKhI); the first customer-path soak has not completed, the 4GB+ speed-up is unmeasured, and the long-form fan-out is flag-gated dark). The `image_gif` and `document_pdf` 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.
7595
7595
  - passthrough: Inert lossless source operation. A single-input source job whose SOLE operation is `passthrough` emits its source bytes UNCHANGED — no compression, no Lambda. The API self-completes the job at publish (terminal output = the upload `{bucket, key}` unchanged). Its purpose is to feed an uploaded file into a multi-input operation LOSSLESSLY: because `JobInputV2.source` is narrowed to exclude upload-direct, an upload that must enter a `merge` / `archive` / `image_watermark` op enters via a `passthrough` source job referenced downstream by `{type: job_output, from: <id>}` — preserving billing / DAG / lineage. Distinct from `operations: []` (which keeps its implicit-compress meaning on a single-input upload job); `passthrough` is the EXPLICIT lossless path via the "non-empty `operations[]` without `compress` = compression opt-out" rule. Media-agnostic; no options. `availability: beta` — activated (the inputs[]-narrowing + passthrough self-complete mechanism is deployed API-side); workflow-create accepts `passthrough` source jobs and MUST NOT return `feature_not_available`. **Never published to SNS** — deliberately absent from the AsyncAPI routing enums (API self-completes; no `ops-passthrough` queue). Per ticket [`4som89Uh`](https://trello.com/c/4som89Uh) + ADR-0004 (planned→beta flip).
7596
7596
 
7597
+ - transform: Geometric/orientation transform — v1 = rotate (0/90/180/270) + flip (none/horizontal/vertical/both), ADR-0026. Single-input; `produces: same_as_input` (geometry preserves format/container). Chainable (NOT sole_op); canonical single-job chain order is `transform → convert → compress → thumbnail` (geometry before encode/derive so downstream width/height/fit refer to the final frame). Media groups: image (still jpeg/png/webp + animated `image_gif`), video (mp4/webm), document (PDF page-rotate only — no flip); audio not supported. ALL groups `availability: planned` (epic `fhiWebI0`) — workflow-create returns `feature_not_available` (422) until per-media Lambdas ship. A no-op transform (`rotate: 0` + `flip: none`) is rejected as `invalid_options`. The public operation type is `transform`; the API resolves an internal per-media SNS routing sub-type (`transform_image` / `transform_video` / `transform_document`) — those sub-types are routing-only and are NOT part of this public enum. Per ADR-0026.
7598
+
7597
7599
  Both the legacy `thumbnail` value and the four sub-type values
7598
7600
  are valid routing targets today during the thumbnail migration
7599
7601
  window. See `asyncapi/events.yaml` for the full routing
@@ -7622,6 +7624,7 @@ components:
7622
7624
  - video_watermark
7623
7625
  - video_text_watermark
7624
7626
  - split
7627
+ - transform
7625
7628
  - passthrough
7626
7629
 
7627
7630
  OperationInputModel:
@@ -7631,7 +7634,7 @@ components:
7631
7634
  - single: One input file (compress, thumbnail, thumbnail_image,
7632
7635
  thumbnail_video, thumbnail_document, thumbnail_office,
7633
7636
  text_watermark, convert, audio_watermark,
7634
- video_text_watermark, split, passthrough)
7637
+ video_text_watermark, split, transform, passthrough)
7635
7638
  - multi: Multiple input files (merge, archive, image_watermark, custom_luma, audio_overlay, audio_to_video, video_watermark). audio_to_video is the first role-based op with an OPTIONAL role (min_inputs=1, max_inputs=2 — see `per_role_cardinality`); video_watermark is a fixed base+overlay pair (exactly one each, min_inputs=max_inputs=2) on video bases; image_watermark widened to base + 1–8 overlays (min 2 / max 9) with the multi_overlay_stack flip (2026-07-01).
7636
7639
  enum:
7637
7640
  - single
@@ -9408,12 +9411,18 @@ components:
9408
9411
  description: |
9409
9412
  The canonical pipeline spine (single mutated stream), as an
9410
9413
  ordered list of `chain_group` stage names. The known image/AV
9411
- spine is `merge` (fan-in) → `image_watermark` → `text_watermark`
9412
- → `audio` → `encode` (terminal: convert+compress folded) →
9413
- `derived` (fan-out: thumbnail/split). Informational — read per-op
9414
- `chain_group` / `chain_position` for placement. The geometry
9415
- stage is intentionally not exposed as a node for v1 (image
9416
- resize/fit live inside the thumbnail node).
9414
+ spine is `transform` (geometry: rotate/flip) → `merge` (fan-in)
9415
+ → `image_watermark` → `text_watermark` → `audio` → `encode`
9416
+ (terminal: convert+compress folded) → `derived` (fan-out:
9417
+ thumbnail/split). Informational — read per-op `chain_group` /
9418
+ `chain_position` for placement. The `transform` geometry stage
9419
+ (ADR-0026) runs FIRST — orientation before resize/encode so
9420
+ downstream width/height/fit refer to the final frame; its
9421
+ canonical single-job order is `transform → convert → compress →
9422
+ thumbnail`. It is `availability: planned` (epic `fhiWebI0`) — no
9423
+ transform nodes are produced until it activates. (Image
9424
+ resize/fit still live inside the `thumbnail` node — that is a
9425
+ separate stage from the `transform` op.)
9417
9426
 
9418
9427
  **Open string, NOT a fixed enum** (mirrors
9419
9428
  `ProcessingPlanJob.execution_pool`): the canonical model still
@@ -9493,6 +9502,9 @@ components:
9493
9502
  `additionalProperties: false`; consumers MUST treat unknown
9494
9503
  stage names as forward-compatible. The watermark stages are
9495
9504
  **media-agnostic overlay stages**, not image-only. Known stages:
9505
+ - `transform`: geometry stage (rotate/flip) — covers the
9506
+ `transform` operation type. Runs first in the spine (ADR-0026);
9507
+ `availability: planned` until activation.
9496
9508
  - `merge`: fan-in.
9497
9509
  - `image_watermark`: raster/image-overlay watermark stage —
9498
9510
  covers the `image_watermark` AND `video_watermark` operation
@@ -10077,6 +10089,22 @@ components:
10077
10089
  commit, paused/resumed state change, etc.). The API
10078
10090
  always emits this field; spec catches up to behaviour
10079
10091
  shipping since `WorkflowController.php:178-179`.
10092
+ completed_at:
10093
+ type: string
10094
+ format: date-time
10095
+ description: |
10096
+ ISO-8601 timestamp at which the workflow reached a TERMINAL
10097
+ status (`completed` / `failed` / `partially_failed` /
10098
+ `cancelled` / `expired`) — the authoritative completion instant.
10099
+ Unlike `updated_at`, this does NOT move once set: a later
10100
+ credit-settlement (or any other post-terminal row update) bumps
10101
+ `updated_at` but never `completed_at`, so `completed_at` is the
10102
+ reliable basis for a run's wall-clock duration
10103
+ (`completed_at − created_at`).
10104
+ OPTIONAL (additive) — absent while the workflow is non-terminal
10105
+ (`pending` / `in_progress` / `paused_insufficient_credits`) and
10106
+ for legacy rows with no recorded completion instant. Per ticket
10107
+ [`gpXrJwuI`](https://trello.com/c/gpXrJwuI).
10080
10108
  jobs:
10081
10109
  type: array
10082
10110
  items:
@@ -10248,6 +10276,19 @@ components:
10248
10276
  type: string
10249
10277
  format: date-time
10250
10278
  description: ISO-8601 workflow-creation timestamp (the list sort key, DESC).
10279
+ completed_at:
10280
+ type: string
10281
+ format: date-time
10282
+ description: |
10283
+ ISO-8601 timestamp at which the workflow reached a TERMINAL
10284
+ status — the authoritative completion instant, stable once set (a
10285
+ later credit-settlement update never moves it, unlike a plain
10286
+ last-updated timestamp). The list row derives a run's wall-clock
10287
+ duration from `completed_at − created_at`.
10288
+ OPTIONAL (additive) — absent while the workflow is non-terminal
10289
+ and for legacy rows with no recorded completion instant. Mirrors
10290
+ `WorkflowStatusResponse.completed_at`. Per ticket
10291
+ [`gpXrJwuI`](https://trello.com/c/gpXrJwuI).
10251
10292
  jobs:
10252
10293
  type: array
10253
10294
  items:
@@ -10806,6 +10847,29 @@ components:
10806
10847
  $ref: '#/components/schemas/JobDownload'
10807
10848
  bundle:
10808
10849
  $ref: '#/components/schemas/DownloadBundle'
10850
+ retention_expires_at:
10851
+ type: string
10852
+ format: date-time
10853
+ description: |
10854
+ When this workflow's downloadable outputs are purged and the
10855
+ download links stop working (RFC 3339 / ISO-8601). Server-computed
10856
+ as the workflow's `created_at` plus the account's effective
10857
+ **download-retention window** (per-tier: free 7 days / paid 30 days
10858
+ / enterprise custom — ticket
10859
+ [`G58ei6Z9`](https://trello.com/c/G58ei6Z9)). Lets consumers render
10860
+ a proactive "Downloads available until <date>" affordance without
10861
+ waiting for the list to empty.
10862
+
10863
+ **This is the retention (data-lifecycle) expiry, distinct from
10864
+ `bundle.expires_at`** — that field is the short-lived expiry of a
10865
+ single pre-signed bundle URL, whereas this is when the underlying
10866
+ deliverables themselves are removed.
10867
+
10868
+ Optional. **Absent** when not applicable — no retention window
10869
+ configured, or the workflow's outputs are not yet retained. The
10870
+ enterprise window is per-account (not a public constant), so this
10871
+ expiry cannot be derived client-side and is only available when the
10872
+ server emits it; consumers read it if present.
10809
10873
 
10810
10874
  DownloadBundle:
10811
10875
  type: object
@@ -104,7 +104,7 @@
104
104
  {
105
105
  "availability": "stable",
106
106
  "constraint_id": "compress.video.target_size.container",
107
- "message": "target_size encoding is mp4/MOV-only; not yet available for {output_format} output. Use crf.",
107
+ "message": "target_size encoding is mp4/MOV-only; not yet available for {output_container} output. Use crf.",
108
108
  "when": {
109
109
  "all": [
110
110
  {
@@ -112,7 +112,7 @@
112
112
  "field": "compress.encoding_mode"
113
113
  },
114
114
  {
115
- "field": "output_format",
115
+ "field": "output_container",
116
116
  "in": [
117
117
  "webm",
118
118
  "ogg"
@@ -214,6 +214,114 @@
214
214
  ]
215
215
  },
216
216
  "wire_code": "invalid_options"
217
+ },
218
+ {
219
+ "availability": "stable",
220
+ "constraint_id": "compress.video.codec_container.webm",
221
+ "message": "WebM output supports the vp9 or av1 codec; {compress.codec} is incompatible.",
222
+ "when": {
223
+ "all": [
224
+ {
225
+ "field": "output_container",
226
+ "in": [
227
+ "webm"
228
+ ]
229
+ },
230
+ {
231
+ "field": "compress.codec",
232
+ "isSet": true
233
+ },
234
+ {
235
+ "field": "compress.codec",
236
+ "in": [
237
+ "h264",
238
+ "h265"
239
+ ]
240
+ }
241
+ ]
242
+ },
243
+ "wire_code": "invalid_options"
244
+ },
245
+ {
246
+ "availability": "stable",
247
+ "constraint_id": "compress.video.codec_container.mp4_mov",
248
+ "message": "MP4/MOV output supports the h264 or h265 codec; {compress.codec} is incompatible.",
249
+ "when": {
250
+ "all": [
251
+ {
252
+ "field": "output_container",
253
+ "in": [
254
+ "mp4",
255
+ "mov"
256
+ ]
257
+ },
258
+ {
259
+ "field": "compress.codec",
260
+ "isSet": true
261
+ },
262
+ {
263
+ "field": "compress.codec",
264
+ "in": [
265
+ "vp9",
266
+ "av1"
267
+ ]
268
+ }
269
+ ]
270
+ },
271
+ "wire_code": "invalid_options"
272
+ },
273
+ {
274
+ "availability": "stable",
275
+ "constraint_id": "compress.video.audio_codec_container.webm",
276
+ "message": "WebM output supports opus or vorbis audio; {compress.audio_codec} is incompatible.",
277
+ "when": {
278
+ "all": [
279
+ {
280
+ "field": "output_container",
281
+ "in": [
282
+ "webm"
283
+ ]
284
+ },
285
+ {
286
+ "field": "compress.audio_codec",
287
+ "isSet": true
288
+ },
289
+ {
290
+ "field": "compress.audio_codec",
291
+ "in": [
292
+ "aac"
293
+ ]
294
+ }
295
+ ]
296
+ },
297
+ "wire_code": "invalid_options"
298
+ },
299
+ {
300
+ "availability": "stable",
301
+ "constraint_id": "compress.video.audio_codec_container.mp4_mov",
302
+ "message": "MP4/MOV output supports aac or opus audio; {compress.audio_codec} is incompatible.",
303
+ "when": {
304
+ "all": [
305
+ {
306
+ "field": "output_container",
307
+ "in": [
308
+ "mp4",
309
+ "mov"
310
+ ]
311
+ },
312
+ {
313
+ "field": "compress.audio_codec",
314
+ "isSet": true
315
+ },
316
+ {
317
+ "field": "compress.audio_codec",
318
+ "in": [
319
+ "vorbis"
320
+ ]
321
+ }
322
+ ]
323
+ },
324
+ "wire_code": "invalid_options"
217
325
  }
218
326
  ],
219
327
  "produces": {
@@ -454,6 +562,21 @@
454
562
  },
455
563
  "sole_op": false
456
564
  },
565
+ "transform": {
566
+ "accepts": [
567
+ "document",
568
+ "image",
569
+ "video"
570
+ ],
571
+ "availability": "planned",
572
+ "input": {
573
+ "model": "single"
574
+ },
575
+ "produces": {
576
+ "same_as_input": true
577
+ },
578
+ "sole_op": false
579
+ },
457
580
  "video_text_watermark": {
458
581
  "accepts": [
459
582
  "video"
@@ -565,5 +688,5 @@
565
688
  "isAnimated": "maybe"
566
689
  }
567
690
  },
568
- "schema_version": "2.152.0"
691
+ "schema_version": "2.158.0"
569
692
  }
@@ -0,0 +1,196 @@
1
+ schema_version: "2.0.0"
2
+
3
+ operation:
4
+ type: transform
5
+ availability: planned
6
+ description: |
7
+ Apply a geometric / orientation transform to a media asset. **v1 supports
8
+ rotate + flip only** (orientation transforms) — it does NOT do crop, scale,
9
+ skew, or colour transforms. The name is deliberately `transform` (not
10
+ `orient`) to leave room for a future `crop` on the same op; do not read the
11
+ name as advertising arbitrary affine transforms. Full design + normative
12
+ order-of-operations, routing topology, chain order, media gating, and
13
+ billing model: ADR-0026.
14
+
15
+ **Params (per media group):**
16
+ - `rotate` — `0 | 90 | 180 | 270` degrees clockwise (default `0`).
17
+ - `flip` — `none | horizontal | vertical | both` mirror (default `none`).
18
+ `horizontal` = left↔right (the selfie/webcam mirror-correction),
19
+ `vertical` = top↔bottom, `both` = both axes.
20
+
21
+ **Normative order-of-operations (v1 has NO arbitrary sequence).** For a
22
+ single `transform` op the worker applies, in this fixed order:
23
+ 1. (images) normalize display orientation from EXIF,
24
+ 2. apply `rotate`,
25
+ 3. apply `flip` in the FINAL (post-rotate) display axes,
26
+ 4. (images) write pixels with the orientation tag reset/removed.
27
+ So `flip: horizontal` always means left↔right in the *visible result*, even
28
+ after a 90/270 rotate. See ADR-0026 §Order-of-operations.
29
+
30
+ **auto_orient coexistence.** `transform` reads the image honouring EXIF
31
+ orientation, applies rotate/flip, and emits normalized-orientation pixels —
32
+ so a downstream `compress`/`convert` `auto_orient` is a no-op. Raw
33
+ stored-pixel rotation that ignores EXIF is out of scope for v1.
34
+
35
+ **No-op is rejected at create.** A `transform` with `rotate: 0` AND
36
+ `flip: none` (for documents: `rotate: 0`) does nothing, so the API rejects
37
+ it as `invalid_options` at create — there is no billed, worker-dispatched
38
+ no-op (mirrors the API facade gate that rejects inert option combos). At
39
+ least one of `rotate`/`flip` must be non-default.
40
+
41
+ **Media scope (v1).** IMAGE **still-raster** (jpeg/png/webp) and animated
42
+ GIF; VIDEO (mp4/webm); DOCUMENT is PDF-rotate ONLY (no flip — the
43
+ `document_pdf` group offers `rotate` alone). AUDIO is intentionally absent
44
+ (no spatial geometry). SVG, HEIC/AVIF, and non-PDF documents
45
+ (Office/ODF/EPUB) are out of scope for v1 and are not advertised.
46
+ **Animated PNG (APNG) and animated WebP** are NOT covered by the
47
+ still-raster `image` group's activation proof — like animated GIF, a
48
+ pixel-baking geometry op would drop frames / animation metadata. Before the
49
+ `image` group flips stable the worker MUST either reject animated PNG/WebP
50
+ variants at probe or transform ALL frames + preserve animation metadata
51
+ (same bar as the `image_gif` group). Everything ships `availability:
52
+ planned` first and flips per media on worker capability-source proof
53
+ (ADR-0006) — each activation co-updates schema availability + AsyncAPI
54
+ routing + API OperationType/chain/pricing + the billing weight row together
55
+ (ADR-0026 §Rollout).
56
+
57
+ **Routing (thumbnail precedent).** The payload `operation_type` stays the
58
+ base value `transform`; the API publisher resolves the effective input MIME
59
+ to an SNS `operation_type` routing-attribute sub-type
60
+ (`transform_image` / `transform_video` / `transform_document`). Those
61
+ sub-types are ROUTING ATTRIBUTES ONLY — never persisted or public operation
62
+ types (they are absent from the OperationType payload enum). The
63
+ `document_pdf` group routes under `transform_document` (media-family level,
64
+ even though v1 is PDF-only). See ADR-0026 §Routing + asyncapi/events.yaml.
65
+ default: false
66
+ input_model: single
67
+ # Chains normally (ADR-0025: absent ≡ false; set explicitly to document intent).
68
+ # Canonical single-job order is transform -> convert -> compress -> thumbnail
69
+ # (ADR-0026): orientation runs before resize/encode so downstream width/height/fit
70
+ # refer to the final visual frame, and rotate never triggers a second video encode.
71
+ sole_op: false
72
+
73
+ mime_groups:
74
+ image:
75
+ # Still-raster first. availability:planned until the image worker
76
+ # (Rust `image` crate: fliph/flipv/rotate90/180/270 — already vendored for
77
+ # resize/thumbnail) is capability-proven, then flips stable per ADR-0006.
78
+ # STILL jpeg/png/webp only: animated PNG (APNG) + animated WebP are NOT
79
+ # covered by this group's still-raster proof (a pixel-bake drops frames /
80
+ # animation metadata) — they must be rejected at probe OR handled with
81
+ # all-frames + animation-metadata preservation (GIF bar) before the flip.
82
+ availability: planned
83
+ mimes:
84
+ - image/jpeg
85
+ - image/png
86
+ - image/webp
87
+ options:
88
+ rotate:
89
+ type: enum
90
+ value_type: integer
91
+ values: [0, 90, 180, 270]
92
+ default: 0
93
+ description: >-
94
+ Clockwise rotation in degrees. Applied BEFORE `flip` (see the
95
+ operation-level normative order-of-operations).
96
+ flip:
97
+ type: enum
98
+ values: [none, horizontal, vertical, both]
99
+ default: none
100
+ description: >-
101
+ Mirror the image. `horizontal` = left↔right, `vertical` = top↔bottom,
102
+ `both` = both axes. Applied AFTER `rotate`, in the final (post-rotate)
103
+ display axes, so `horizontal` always means left↔right in the visible
104
+ result.
105
+
106
+ image_gif:
107
+ # Animated GIF as a parallel planned group (mirrors image_watermark's
108
+ # image_gif). Only honest once the worker transforms ALL frames AND
109
+ # preserves animation metadata (frame delays, loop count, disposal);
110
+ # dispatch returns feature_not_available (422) until that ships. Do NOT
111
+ # flip stable on the still-raster proof alone.
112
+ availability: planned
113
+ mimes:
114
+ - image/gif
115
+ options:
116
+ rotate:
117
+ type: enum
118
+ value_type: integer
119
+ values: [0, 90, 180, 270]
120
+ default: 0
121
+ description: "Clockwise rotation in degrees (all frames). Applied before `flip`."
122
+ flip:
123
+ type: enum
124
+ values: [none, horizontal, vertical, both]
125
+ default: none
126
+ description: "Mirror all frames. Applied after `rotate`, in final display axes."
127
+
128
+ video:
129
+ # mp4/webm first (the FFmpeg containers we already decode AND encode).
130
+ # hflip/vflip + transpose bake into pixels → a real re-encode (no
131
+ # stream-copy shortcut), so it costs compute like any transcode (billing
132
+ # weight 10, ADR-0026). quicktime/mov and other containers follow the same
133
+ # decode-AND-encode proof discipline and are not advertised in v1.
134
+ mimes:
135
+ - video/mp4
136
+ - video/webm
137
+ processing_class:
138
+ # F8 long-form video tier (ADR-0011). Both classes ship planned; short_form
139
+ # is first-in-line to flip on the FFmpeg worker proof, long_form stays
140
+ # planned until the Fargate re-encode route is real and costed (ADR-0026).
141
+ short_form:
142
+ availability: planned
143
+ constraints:
144
+ max_input_duration: "PT5M"
145
+ max_input_size_bytes: 524288000
146
+ max_output_size_bytes: 524288000
147
+ long_form:
148
+ availability: planned
149
+ required_tier: pro
150
+ constraints: # baseline = Pro
151
+ max_input_duration: "PT12H"
152
+ max_input_size_bytes: 5000000000 # 5 GB (Pro)
153
+ max_output_size_bytes: 5000000000
154
+ per_tier_constraints:
155
+ max:
156
+ max_input_size_bytes: 50000000000 # 50 GB (Max self-serve band)
157
+ max_output_size_bytes: 50000000000
158
+ enterprise:
159
+ max_input_size_bytes: 120000000000 # 120 GB (Enterprise enforced ceiling)
160
+ max_output_size_bytes: 120000000000
161
+ options:
162
+ rotate:
163
+ type: enum
164
+ value_type: integer
165
+ values: [0, 90, 180, 270]
166
+ default: 0
167
+ description: >-
168
+ Clockwise rotation in degrees (FFmpeg `transpose`). Applied BEFORE
169
+ `flip`. Re-encodes the video.
170
+ flip:
171
+ type: enum
172
+ values: [none, horizontal, vertical, both]
173
+ default: none
174
+ description: >-
175
+ Mirror the video (FFmpeg `hflip` / `vflip`). `horizontal` = left↔right,
176
+ `vertical` = top↔bottom, `both` = both. Applied AFTER `rotate`, in the
177
+ final display axes. Re-encodes the video.
178
+
179
+ document_pdf:
180
+ # PDF-rotate ONLY (page rotation for scanned/phone PDFs). NO flip — mirror
181
+ # is not a clean promise for documents. Office/ODF/EPUB are NOT covered
182
+ # (page rotation there is not same_as_input). availability:planned,
183
+ # flips beta/stable separately on worker proof; routes under the
184
+ # media-family attribute transform_document (ADR-0026 §Routing).
185
+ availability: planned
186
+ mimes:
187
+ - application/pdf
188
+ options:
189
+ rotate:
190
+ type: enum
191
+ value_type: integer
192
+ values: [0, 90, 180, 270]
193
+ default: 0
194
+ description: >-
195
+ Clockwise page rotation in degrees, applied to the rendered page
196
+ orientation. `flip` is NOT offered for documents in v1.