@giveitsmaller/contracts 0.51.0 → 0.53.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 +1 -1
  427. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -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 +1 -1
  455. package/dist/openapi/models/WorkflowStatusResponse.js +1 -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 +1 -1
  459. package/dist/openapi/models/WorkflowSummary.js +1 -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 +21 -9
  475. package/operation-capabilities/operation-capabilities.json +16 -1
  476. package/operations/schemas/transform.yaml +196 -0
  477. package/package.json +5 -2
@@ -1125,6 +1125,43 @@
1125
1125
  "output_format_option": null
1126
1126
  }
1127
1127
  },
1128
+ "transform": {
1129
+ "document_pdf": {
1130
+ "accepted_options": {
1131
+ "*": [
1132
+ "rotate"
1133
+ ]
1134
+ },
1135
+ "output_format_option": null
1136
+ },
1137
+ "image": {
1138
+ "accepted_options": {
1139
+ "*": [
1140
+ "flip",
1141
+ "rotate"
1142
+ ]
1143
+ },
1144
+ "output_format_option": null
1145
+ },
1146
+ "image_gif": {
1147
+ "accepted_options": {
1148
+ "*": [
1149
+ "flip",
1150
+ "rotate"
1151
+ ]
1152
+ },
1153
+ "output_format_option": null
1154
+ },
1155
+ "video": {
1156
+ "accepted_options": {
1157
+ "*": [
1158
+ "flip",
1159
+ "rotate"
1160
+ ]
1161
+ },
1162
+ "output_format_option": null
1163
+ }
1164
+ },
1128
1165
  "video_text_watermark": {
1129
1166
  "video": {
1130
1167
  "accepted_options": {
@@ -1160,5 +1197,5 @@
1160
1197
  }
1161
1198
  }
1162
1199
  },
1163
- "schema_version": "2.152.0"
1200
+ "schema_version": "2.154.0"
1164
1201
  }
@@ -246,5 +246,5 @@
246
246
  "source_op": "compress"
247
247
  }
248
248
  },
249
- "schema_version": "2.152.0"
249
+ "schema_version": "2.154.0"
250
250
  }
@@ -93,7 +93,10 @@ info:
93
93
  `operation-custom-luma` (planned per ticket I29 — not yet shipped),
94
94
  `operation-audio-overlay` (planned per ticket I19 — not yet shipped),
95
95
  `operation-audio-watermark` (planned per ticket I20 —
96
- enterprise-tier; not yet shipped).
96
+ enterprise-tier; not yet shipped),
97
+ `operation-transform-image`, `operation-transform-video`,
98
+ `operation-transform-document` (all planned per epic fhiWebI0 /
99
+ ADR-0026 — not yet shipped).
97
100
 
98
101
  **Message Types**
99
102
 
@@ -175,7 +178,7 @@ channels:
175
178
  address: gisl-{env}-{region}-operations
176
179
  description: |
177
180
  SNS topic where the API publishes **non-compression** operation
178
- requests (thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark, audio_to_video, video_watermark, video_text_watermark, split). Filter
181
+ requests (thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark, audio_to_video, video_watermark, video_text_watermark, split, transform). Filter
179
182
  attribute: `operation_type` (single-attribute filter policy).
180
183
  Subscriptions fan out to per-operation-type queues, keyed by
181
184
  `operation_type` value.
@@ -233,6 +236,23 @@ channels:
233
236
  [`w3EwzHYd`](https://trello.com/c/w3EwzHYd) /
234
237
  [`MNuDYJaY`](https://trello.com/c/MNuDYJaY) — same
235
238
  `feature_not_available` 422 gating)
239
+ - `operation_type = transform_image` -> `ops-transform-image` queue
240
+ - `operation_type = transform_video` -> `ops-transform-video` queue
241
+ - `operation_type = transform_document` -> `ops-transform-document`
242
+ queue
243
+
244
+ The three `transform_*` values are the per-media routing sub-types
245
+ of the single `transform` op (geometry — rotate + flip, ADR-0026),
246
+ mirroring the thumbnail attribute/payload split: the payload
247
+ `operation_type` field always stays the base value `transform`; the
248
+ publisher resolves each operation's effective input MIME to the
249
+ matching `transform_{image,video,document}` SNS attribute. All three
250
+ media groups are `availability: planned` until their Lambdas ship
251
+ (epic `fhiWebI0`) — the API rejects workflow-create with
252
+ `feature_not_available` (422) so no transform traffic reaches the
253
+ topic today. There is no legacy bare-`transform` routing target
254
+ (unlike thumbnail): the base value is payload-only, never an SNS
255
+ attribute.
236
256
 
237
257
  The API's Option A publisher sets `operation_type` as the filter
238
258
  attribute and additionally sets `media_group` as an **informational**
@@ -529,6 +549,93 @@ channels:
529
549
  operationRequest:
530
550
  $ref: '#/components/messages/OperationRequestMessage'
531
551
 
552
+ opsTransformImage:
553
+ address: gisl-{env}-{region}-ops-transform-image
554
+ description: |
555
+ SQS queue for image transform operations (rotate + flip, ADR-0026).
556
+ Subscribed to the `operations` SNS topic with filter
557
+ `operation_type = transform_image`. Backed by the image transform
558
+ Lambda (`operation-transform-image`, Rust image crate).
559
+
560
+ Receives traffic for image inputs — the API publisher emits
561
+ `operation_type=transform_image` on the SNS attribute (resolved from
562
+ the operation's effective input MIME); the payload `operation_type`
563
+ field stays `transform`. `availability: planned` (epic fhiWebI0) —
564
+ no traffic until the Lambda ships.
565
+ bindings:
566
+ sqs:
567
+ queue:
568
+ name: gisl-{env}-{region}-ops-transform-image
569
+ fifoQueue: false
570
+ bindingVersion: '0.2.0'
571
+ parameters:
572
+ env:
573
+ description: Environment (local, stg, prod)
574
+ region:
575
+ description: AWS region abbreviation (euw1, use1, etc.)
576
+ messages:
577
+ operationRequest:
578
+ $ref: '#/components/messages/OperationRequestMessage'
579
+
580
+ opsTransformVideo:
581
+ address: gisl-{env}-{region}-ops-transform-video
582
+ description: |
583
+ SQS queue for video transform operations (rotate + flip, ADR-0026).
584
+ Subscribed to the `operations` SNS topic with filter
585
+ `operation_type = transform_video`. Backed by the video transform
586
+ Lambda (`operation-transform-video`, FFmpeg hflip/vflip/transpose —
587
+ re-encode).
588
+
589
+ Receives traffic for video inputs — the API publisher emits
590
+ `operation_type=transform_video` on the SNS attribute (resolved from
591
+ the operation's effective input MIME); the payload `operation_type`
592
+ field stays `transform`. `availability: planned` (epic fhiWebI0) —
593
+ no traffic until the Lambda ships.
594
+ bindings:
595
+ sqs:
596
+ queue:
597
+ name: gisl-{env}-{region}-ops-transform-video
598
+ fifoQueue: false
599
+ bindingVersion: '0.2.0'
600
+ parameters:
601
+ env:
602
+ description: Environment (local, stg, prod)
603
+ region:
604
+ description: AWS region abbreviation (euw1, use1, etc.)
605
+ messages:
606
+ operationRequest:
607
+ $ref: '#/components/messages/OperationRequestMessage'
608
+
609
+ opsTransformDocument:
610
+ address: gisl-{env}-{region}-ops-transform-document
611
+ description: |
612
+ SQS queue for document transform operations (PDF page rotate only,
613
+ ADR-0026). Subscribed to the `operations` SNS topic with filter
614
+ `operation_type = transform_document`. Backed by the document
615
+ transform Lambda (`operation-transform-document`).
616
+
617
+ Receives traffic for PDF inputs — the API publisher emits
618
+ `operation_type=transform_document` on the SNS attribute (resolved
619
+ from the operation's effective input MIME); the payload
620
+ `operation_type` field stays `transform`. The routing label is
621
+ media-family level (`transform_document`) though v1 gates the group
622
+ to PDF. `availability: planned` (epic fhiWebI0) — no traffic until
623
+ the Lambda ships.
624
+ bindings:
625
+ sqs:
626
+ queue:
627
+ name: gisl-{env}-{region}-ops-transform-document
628
+ fifoQueue: false
629
+ bindingVersion: '0.2.0'
630
+ parameters:
631
+ env:
632
+ description: Environment (local, stg, prod)
633
+ region:
634
+ description: AWS region abbreviation (euw1, use1, etc.)
635
+ messages:
636
+ operationRequest:
637
+ $ref: '#/components/messages/OperationRequestMessage'
638
+
532
639
  opsImageWatermark:
533
640
  address: gisl-{env}-{region}-ops-image-watermark
534
641
  description: |
@@ -995,6 +1102,33 @@ channels:
995
1102
  region:
996
1103
  description: AWS region abbreviation (euw1, use1, etc.)
997
1104
 
1105
+ opsTransformImageDlq:
1106
+ address: gisl-{env}-{region}-ops-transform-image-dlq
1107
+ description: DLQ for failed image transform operations. Messages land here after 5 failed processing attempts.
1108
+ parameters:
1109
+ env:
1110
+ description: Environment (local, stg, prod)
1111
+ region:
1112
+ description: AWS region abbreviation (euw1, use1, etc.)
1113
+
1114
+ opsTransformVideoDlq:
1115
+ address: gisl-{env}-{region}-ops-transform-video-dlq
1116
+ description: DLQ for failed video transform operations. Messages land here after 5 failed processing attempts.
1117
+ parameters:
1118
+ env:
1119
+ description: Environment (local, stg, prod)
1120
+ region:
1121
+ description: AWS region abbreviation (euw1, use1, etc.)
1122
+
1123
+ opsTransformDocumentDlq:
1124
+ address: gisl-{env}-{region}-ops-transform-document-dlq
1125
+ description: DLQ for failed document transform operations. Messages land here after 5 failed processing attempts.
1126
+ parameters:
1127
+ env:
1128
+ description: Environment (local, stg, prod)
1129
+ region:
1130
+ description: AWS region abbreviation (euw1, use1, etc.)
1131
+
998
1132
  opsImageWatermarkDlq:
999
1133
  address: gisl-{env}-{region}-ops-image-watermark-dlq
1000
1134
  description: DLQ for failed image_watermark operations. Messages land here after 5 failed processing attempts.
@@ -1500,7 +1634,10 @@ operations:
1500
1634
  (including the four sub-type values during the migration window),
1501
1635
  image_watermark, text_watermark, merge, archive, convert,
1502
1636
  custom_luma, audio_overlay, audio_watermark, audio_to_video,
1503
- video_watermark, video_text_watermark, split. The target SNS
1637
+ video_watermark, video_text_watermark, split, transform (the payload
1638
+ `operation_type` stays base `transform`, while the SNS attribute
1639
+ carries one of the `transform_{image,video,document}` sub-types
1640
+ resolved from the effective input MIME — ADR-0026). The target SNS
1504
1641
  topic filters subscriptions on `operation_type` alone.
1505
1642
 
1506
1643
  **Message attributes set on this branch:** `{operation_type,
@@ -1694,6 +1831,64 @@ operations:
1694
1831
  messages:
1695
1832
  - $ref: '#/channels/opsThumbnailOffice/messages/operationRequest'
1696
1833
 
1834
+ consumeTransformImageOperation:
1835
+ action: receive
1836
+ channel:
1837
+ $ref: '#/channels/opsTransformImage'
1838
+ bindings:
1839
+ sqs:
1840
+ queues:
1841
+ - name: gisl-{env}-{region}-ops-transform-image
1842
+ fifoQueue: false
1843
+ bindingVersion: '0.2.0'
1844
+ summary: Process image transform operation
1845
+ description: |
1846
+ The image transform Lambda consumes transform requests routed by
1847
+ `operation_type=transform_image`. Backed by the Rust image crate
1848
+ (fliph/flipv/rotate90/180/270). Receives traffic for image inputs —
1849
+ see channel description. `availability: planned` (epic fhiWebI0).
1850
+ messages:
1851
+ - $ref: '#/channels/opsTransformImage/messages/operationRequest'
1852
+
1853
+ consumeTransformVideoOperation:
1854
+ action: receive
1855
+ channel:
1856
+ $ref: '#/channels/opsTransformVideo'
1857
+ bindings:
1858
+ sqs:
1859
+ queues:
1860
+ - name: gisl-{env}-{region}-ops-transform-video
1861
+ fifoQueue: false
1862
+ bindingVersion: '0.2.0'
1863
+ summary: Process video transform operation
1864
+ description: |
1865
+ The video transform Lambda consumes transform requests routed by
1866
+ `operation_type=transform_video`. Backed by FFmpeg
1867
+ (hflip/vflip/transpose — re-encode). Receives traffic for video
1868
+ inputs — see channel description. `availability: planned` (epic
1869
+ fhiWebI0).
1870
+ messages:
1871
+ - $ref: '#/channels/opsTransformVideo/messages/operationRequest'
1872
+
1873
+ consumeTransformDocumentOperation:
1874
+ action: receive
1875
+ channel:
1876
+ $ref: '#/channels/opsTransformDocument'
1877
+ bindings:
1878
+ sqs:
1879
+ queues:
1880
+ - name: gisl-{env}-{region}-ops-transform-document
1881
+ fifoQueue: false
1882
+ bindingVersion: '0.2.0'
1883
+ summary: Process document transform operation
1884
+ description: |
1885
+ The document transform Lambda consumes transform requests routed by
1886
+ `operation_type=transform_document`. Backed by a PDF page-rotate
1887
+ worker. Receives traffic for PDF inputs — see channel description.
1888
+ `availability: planned` (epic fhiWebI0).
1889
+ messages:
1890
+ - $ref: '#/channels/opsTransformDocument/messages/operationRequest'
1891
+
1697
1892
  consumeImageWatermarkOperation:
1698
1893
  action: receive
1699
1894
  channel:
@@ -2368,9 +2563,10 @@ components:
2368
2563
  **non-compression** operation (thumbnail, image_watermark,
2369
2564
  text_watermark, merge, archive, convert, custom_luma,
2370
2565
  audio_overlay, audio_watermark, audio_to_video,
2371
- video_watermark, video_text_watermark, split). Published to the
2372
- `operations` SNS topic; routed by the single-attribute
2373
- filter `operation_type` to one of the ops-family queues.
2566
+ video_watermark, video_text_watermark, split, transform).
2567
+ Published to the `operations` SNS topic; routed by the
2568
+ single-attribute filter `operation_type` to one of the ops-family
2569
+ queues.
2374
2570
 
2375
2571
  **SNS Message Attributes:**
2376
2572
  - `operation_type`: always present. Values: `thumbnail`,
@@ -2378,8 +2574,12 @@ components:
2378
2574
  `thumbnail_office`, `image_watermark`, `text_watermark`,
2379
2575
  `merge`, `archive`, `convert`, `custom_luma`,
2380
2576
  `audio_overlay`, `audio_watermark`, `audio_to_video`,
2381
- `video_watermark`, `video_text_watermark`, `split`. Used by
2382
- SNS as the filter attribute on the `operations` topic.
2577
+ `video_watermark`, `video_text_watermark`, `split`,
2578
+ `transform_image`, `transform_video`, `transform_document`. Used
2579
+ by SNS as the filter attribute on the `operations` topic. (The
2580
+ transform sub-types are routing-only — the payload
2581
+ `operation_type` field carries the base value `transform`;
2582
+ there is no bare-`transform` attribute value.)
2383
2583
  - `media_group`: informational metadata, present for every
2384
2584
  operation except `archive` (which is media-agnostic). Values:
2385
2585
  `image`, `video`, `audio`, `document`. **Not** used by SNS as
@@ -2466,6 +2666,23 @@ components:
2466
2666
  height: 512
2467
2667
  fit: "max"
2468
2668
  format: "webp"
2669
+ - name: Transform Image (sub-type routing)
2670
+ summary: Rotate + flip an image via the transform op. The SNS attribute `operation_type` carries the sub-type `transform_image` (drives routing); the payload `operation_type` carries the base value `transform`. Availability is planned today.
2671
+ headers:
2672
+ operation_type: "transform_image"
2673
+ media_group: "image"
2674
+ payload:
2675
+ job_id: "018f9c42-5d6b-7481-b3df-9fd0a0a5e131"
2676
+ operation_id: "018f9c42-5d6b-7481-b3df-9fd0a0a5e231"
2677
+ operation_type: "transform"
2678
+ file_type: "image/jpeg"
2679
+ source_bucket: "gisl-stg-euw1-input"
2680
+ source_key: "uploads/018f9c42-mmnn/selfie.jpg"
2681
+ output_bucket: "gisl-stg-euw1-output"
2682
+ output_key_prefix: "jobs/018f9c42-5d6b-7481-b3df-9fd0a0a5e131/018f9c42-5d6b-7481-b3df-9fd0a0a5e231/"
2683
+ options:
2684
+ rotate: 90
2685
+ flip: "horizontal"
2469
2686
  - name: Image Watermark (file overlay)
2470
2687
  summary: Apply a PNG logo overlay to a JPEG image (V2 multi-input Path B)
2471
2688
  headers:
@@ -3199,6 +3416,13 @@ components:
3199
3416
  - `thumbnail_document` -> `document`
3200
3417
  - `thumbnail_office` -> `document` (office files are routed as
3201
3418
  documents at the media_group level)
3419
+ - For the three transform sub-types (ADR-0026 — the single
3420
+ `transform` op's per-media routing attributes; the payload
3421
+ `operation_type` stays base `transform`), `media_group` is
3422
+ constrained to the matching media:
3423
+ - `transform_image` -> `image`
3424
+ - `transform_video` -> `video`
3425
+ - `transform_document` -> `document`
3202
3426
  required:
3203
3427
  - operation_type
3204
3428
  properties:
@@ -3234,6 +3458,9 @@ components:
3234
3458
  - video_text_watermark
3235
3459
  - split
3236
3460
  - render_variants
3461
+ - transform_image
3462
+ - transform_video
3463
+ - transform_document
3237
3464
  media_group:
3238
3465
  type: string
3239
3466
  description: |
@@ -3330,6 +3557,30 @@ components:
3330
3557
  properties:
3331
3558
  media_group:
3332
3559
  const: document
3560
+ - if:
3561
+ properties:
3562
+ operation_type:
3563
+ const: transform_image
3564
+ then:
3565
+ properties:
3566
+ media_group:
3567
+ const: image
3568
+ - if:
3569
+ properties:
3570
+ operation_type:
3571
+ const: transform_video
3572
+ then:
3573
+ properties:
3574
+ media_group:
3575
+ const: video
3576
+ - if:
3577
+ properties:
3578
+ operation_type:
3579
+ const: transform_document
3580
+ then:
3581
+ properties:
3582
+ media_group:
3583
+ const: document
3333
3584
  - if:
3334
3585
  properties:
3335
3586
  operation_type:
@@ -3368,9 +3619,9 @@ components:
3368
3619
  API to SNS, consumed by Lambda from SQS.
3369
3620
 
3370
3621
  **Single-input operations** (compress, thumbnail, text_watermark,
3371
- convert, audio_watermark, video_text_watermark, split): use
3372
- `source_bucket` + `source_key` for the input file. `file_type` is
3373
- required.
3622
+ convert, audio_watermark, video_text_watermark, split, transform):
3623
+ use `source_bucket` + `source_key` for the input file. `file_type`
3624
+ is required.
3374
3625
 
3375
3626
  **Multi-input operations** (merge, archive, image_watermark,
3376
3627
  custom_luma, audio_overlay, audio_to_video, video_watermark):
@@ -3409,6 +3660,7 @@ components:
3409
3660
  - video_text_watermark
3410
3661
  - split
3411
3662
  - render_variants
3663
+ - transform
3412
3664
  then:
3413
3665
  required:
3414
3666
  - file_type
@@ -4763,9 +5015,11 @@ components:
4763
5015
  enum is deliberately narrower than the SNS `operation_type`
4764
5016
  MessageAttribute: the attribute enum permits per-media thumbnail
4765
5017
  sub-types (`thumbnail_image`, `thumbnail_video`,
4766
- `thumbnail_document`, `thumbnail_office`) for routing on the
4767
- `operations` topic, but the payload body always carries the
4768
- semantic base value (`thumbnail`). See
5018
+ `thumbnail_document`, `thumbnail_office`) and per-media transform
5019
+ sub-types (`transform_image`, `transform_video`,
5020
+ `transform_document`) for routing on the `operations` topic, but the
5021
+ payload body always carries the semantic base value (`thumbnail` /
5022
+ `transform`). See
4769
5023
  `OperationRequestAttributes.operation_type` for the broader
4770
5024
  attribute enum and the routing contract. Note that the attribute
4771
5025
  values the publisher currently emits are governed by the
@@ -4895,6 +5149,20 @@ components:
4895
5149
  `planned`. Routes via `operation_type=split` to `ops-split`.
4896
5150
  Per ADR-0004 + ADR-0014
4897
5151
  ([`vKI0CFDu`](https://trello.com/c/vKI0CFDu)).
5152
+ - `transform`: Geometric/orientation transform — v1 = rotate
5153
+ (0/90/180/270) + flip (none/horizontal/vertical/both), ADR-0026.
5154
+ Single-input; `produces: same_as_input`. The payload always
5155
+ carries the base value `transform`; the SNS `operation_type`
5156
+ attribute enum additionally permits the three per-media sub-type
5157
+ values (`transform_image`, `transform_video`,
5158
+ `transform_document`) for routing to the matching per-media
5159
+ Lambda (there is NO legacy bare-`transform` routing target — the
5160
+ base value is payload-only). All media groups
5161
+ (image jpeg/png/webp + image_gif; video mp4/webm; document PDF
5162
+ rotate-only) are `availability: planned`; the API rejects
5163
+ workflow-create with `feature_not_available` (422) until the
5164
+ transform Lambdas ship, so no traffic reaches SNS today. Audio is
5165
+ not supported. Per ADR-0026 (epic `fhiWebI0`).
4898
5166
 
4899
5167
  Note: the `passthrough` OpenAPI operation is **deliberately
4900
5168
  absent** from this payload enum. A passthrough source job is
@@ -4918,6 +5186,7 @@ components:
4918
5186
  - video_text_watermark
4919
5187
  - split
4920
5188
  - render_variants
5189
+ - transform
4921
5190
 
4922
5191
  MediaGroup:
4923
5192
  type: string
@@ -1,5 +1,5 @@
1
1
  {
2
- "capabilities_version": 162,
2
+ "capabilities_version": 163,
3
3
  "endpoints": {
4
4
  "DELETE /api/auth/api-keys/{apiKeyId}": {
5
5
  "auth": "required",
@@ -4659,6 +4659,159 @@
4659
4659
  }
4660
4660
  }
4661
4661
  },
4662
+ "transform": {
4663
+ "availability": "planned",
4664
+ "default": false,
4665
+ "description": "Apply a geometric / orientation transform to a media asset. **v1 supports\nrotate + flip only** (orientation transforms) \u2014 it does NOT do crop, scale,\nskew, or colour transforms. The name is deliberately `transform` (not\n`orient`) to leave room for a future `crop` on the same op; do not read the\nname as advertising arbitrary affine transforms. Full design + normative\norder-of-operations, routing topology, chain order, media gating, and\nbilling model: ADR-0026.\n\n**Params (per media group):**\n- `rotate` \u2014 `0 | 90 | 180 | 270` degrees clockwise (default `0`).\n- `flip` \u2014 `none | horizontal | vertical | both` mirror (default `none`).\n `horizontal` = left\u2194right (the selfie/webcam mirror-correction),\n `vertical` = top\u2194bottom, `both` = both axes.\n\n**Normative order-of-operations (v1 has NO arbitrary sequence).** For a\nsingle `transform` op the worker applies, in this fixed order:\n1. (images) normalize display orientation from EXIF,\n2. apply `rotate`,\n3. apply `flip` in the FINAL (post-rotate) display axes,\n4. (images) write pixels with the orientation tag reset/removed.\nSo `flip: horizontal` always means left\u2194right in the *visible result*, even\nafter a 90/270 rotate. See ADR-0026 \u00a7Order-of-operations.\n\n**auto_orient coexistence.** `transform` reads the image honouring EXIF\norientation, applies rotate/flip, and emits normalized-orientation pixels \u2014\nso a downstream `compress`/`convert` `auto_orient` is a no-op. Raw\nstored-pixel rotation that ignores EXIF is out of scope for v1.\n\n**No-op is rejected at create.** A `transform` with `rotate: 0` AND\n`flip: none` (for documents: `rotate: 0`) does nothing, so the API rejects\nit as `invalid_options` at create \u2014 there is no billed, worker-dispatched\nno-op (mirrors the API facade gate that rejects inert option combos). At\nleast one of `rotate`/`flip` must be non-default.\n\n**Media scope (v1).** IMAGE **still-raster** (jpeg/png/webp) and animated\nGIF; VIDEO (mp4/webm); DOCUMENT is PDF-rotate ONLY (no flip \u2014 the\n`document_pdf` group offers `rotate` alone). AUDIO is intentionally absent\n(no spatial geometry). SVG, HEIC/AVIF, and non-PDF documents\n(Office/ODF/EPUB) are out of scope for v1 and are not advertised.\n**Animated PNG (APNG) and animated WebP** are NOT covered by the\nstill-raster `image` group's activation proof \u2014 like animated GIF, a\npixel-baking geometry op would drop frames / animation metadata. Before the\n`image` group flips stable the worker MUST either reject animated PNG/WebP\nvariants at probe or transform ALL frames + preserve animation metadata\n(same bar as the `image_gif` group). Everything ships `availability:\nplanned` first and flips per media on worker capability-source proof\n(ADR-0006) \u2014 each activation co-updates schema availability + AsyncAPI\nrouting + API OperationType/chain/pricing + the billing weight row together\n(ADR-0026 \u00a7Rollout).\n\n**Routing (thumbnail precedent).** The payload `operation_type` stays the\nbase value `transform`; the API publisher resolves the effective input MIME\nto an SNS `operation_type` routing-attribute sub-type\n(`transform_image` / `transform_video` / `transform_document`). Those\nsub-types are ROUTING ATTRIBUTES ONLY \u2014 never persisted or public operation\ntypes (they are absent from the OperationType payload enum). The\n`document_pdf` group routes under `transform_document` (media-family level,\neven though v1 is PDF-only). See ADR-0026 \u00a7Routing + asyncapi/events.yaml.\n",
4666
+ "input_model": "single",
4667
+ "mime_groups": {
4668
+ "document_pdf": {
4669
+ "availability": "planned",
4670
+ "mimes": [
4671
+ "application/pdf"
4672
+ ],
4673
+ "options": {
4674
+ "rotate": {
4675
+ "default": 0,
4676
+ "description": "Clockwise page rotation in degrees, applied to the rendered page orientation. `flip` is NOT offered for documents in v1.",
4677
+ "type": "enum",
4678
+ "value_type": "integer",
4679
+ "values": [
4680
+ 0,
4681
+ 90,
4682
+ 180,
4683
+ 270
4684
+ ]
4685
+ }
4686
+ }
4687
+ },
4688
+ "image": {
4689
+ "availability": "planned",
4690
+ "mimes": [
4691
+ "image/jpeg",
4692
+ "image/png",
4693
+ "image/webp"
4694
+ ],
4695
+ "options": {
4696
+ "flip": {
4697
+ "default": "none",
4698
+ "description": "Mirror the image. `horizontal` = left\u2194right, `vertical` = top\u2194bottom, `both` = both axes. Applied AFTER `rotate`, in the final (post-rotate) display axes, so `horizontal` always means left\u2194right in the visible result.",
4699
+ "type": "enum",
4700
+ "values": [
4701
+ "none",
4702
+ "horizontal",
4703
+ "vertical",
4704
+ "both"
4705
+ ]
4706
+ },
4707
+ "rotate": {
4708
+ "default": 0,
4709
+ "description": "Clockwise rotation in degrees. Applied BEFORE `flip` (see the operation-level normative order-of-operations).",
4710
+ "type": "enum",
4711
+ "value_type": "integer",
4712
+ "values": [
4713
+ 0,
4714
+ 90,
4715
+ 180,
4716
+ 270
4717
+ ]
4718
+ }
4719
+ }
4720
+ },
4721
+ "image_gif": {
4722
+ "availability": "planned",
4723
+ "mimes": [
4724
+ "image/gif"
4725
+ ],
4726
+ "options": {
4727
+ "flip": {
4728
+ "default": "none",
4729
+ "description": "Mirror all frames. Applied after `rotate`, in final display axes.",
4730
+ "type": "enum",
4731
+ "values": [
4732
+ "none",
4733
+ "horizontal",
4734
+ "vertical",
4735
+ "both"
4736
+ ]
4737
+ },
4738
+ "rotate": {
4739
+ "default": 0,
4740
+ "description": "Clockwise rotation in degrees (all frames). Applied before `flip`.",
4741
+ "type": "enum",
4742
+ "value_type": "integer",
4743
+ "values": [
4744
+ 0,
4745
+ 90,
4746
+ 180,
4747
+ 270
4748
+ ]
4749
+ }
4750
+ }
4751
+ },
4752
+ "video": {
4753
+ "mimes": [
4754
+ "video/mp4",
4755
+ "video/webm"
4756
+ ],
4757
+ "options": {
4758
+ "flip": {
4759
+ "default": "none",
4760
+ "description": "Mirror the video (FFmpeg `hflip` / `vflip`). `horizontal` = left\u2194right, `vertical` = top\u2194bottom, `both` = both. Applied AFTER `rotate`, in the final display axes. Re-encodes the video.",
4761
+ "type": "enum",
4762
+ "values": [
4763
+ "none",
4764
+ "horizontal",
4765
+ "vertical",
4766
+ "both"
4767
+ ]
4768
+ },
4769
+ "rotate": {
4770
+ "default": 0,
4771
+ "description": "Clockwise rotation in degrees (FFmpeg `transpose`). Applied BEFORE `flip`. Re-encodes the video.",
4772
+ "type": "enum",
4773
+ "value_type": "integer",
4774
+ "values": [
4775
+ 0,
4776
+ 90,
4777
+ 180,
4778
+ 270
4779
+ ]
4780
+ }
4781
+ },
4782
+ "processing_class": {
4783
+ "long_form": {
4784
+ "availability": "planned",
4785
+ "constraints": {
4786
+ "max_input_duration": "PT12H",
4787
+ "max_input_size_bytes": 5000000000,
4788
+ "max_output_size_bytes": 5000000000
4789
+ },
4790
+ "per_tier_constraints": {
4791
+ "enterprise": {
4792
+ "max_input_size_bytes": 120000000000,
4793
+ "max_output_size_bytes": 120000000000
4794
+ },
4795
+ "max": {
4796
+ "max_input_size_bytes": 50000000000,
4797
+ "max_output_size_bytes": 50000000000
4798
+ }
4799
+ },
4800
+ "required_tier": "pro"
4801
+ },
4802
+ "short_form": {
4803
+ "availability": "planned",
4804
+ "constraints": {
4805
+ "max_input_duration": "PT5M",
4806
+ "max_input_size_bytes": 524288000,
4807
+ "max_output_size_bytes": 524288000
4808
+ }
4809
+ }
4810
+ }
4811
+ }
4812
+ },
4813
+ "sole_op": false
4814
+ },
4662
4815
  "video_text_watermark": {
4663
4816
  "availability": "planned",
4664
4817
  "default": false,
@@ -4896,7 +5049,7 @@
4896
5049
  "sole_op": true
4897
5050
  }
4898
5051
  },
4899
- "schema_version": "2.152.0",
5052
+ "schema_version": "2.154.0",
4900
5053
  "source_commit": null,
4901
5054
  "user_tier": null,
4902
5055
  "workflow_features": {