@giveitsmaller/contracts 0.50.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 (483) hide show
  1. package/accepted-options/accepted-options.json +40 -2
  2. package/accepted-options/image-output-routes.json +1 -1
  3. package/asyncapi/events.yaml +293 -20
  4. package/availability/availability.json +217 -6
  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 +75 -0
  33. package/dist/openapi/models/BillingCheckoutRequest.js +64 -0
  34. package/dist/openapi/models/BillingCheckoutSession.d.ts +42 -0
  35. package/dist/openapi/models/BillingCheckoutSession.js +47 -0
  36. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +46 -0
  37. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +54 -0
  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 +23 -0
  109. package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +51 -0
  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 +3 -3
  255. package/dist/openapi/models/OperationInputModel.js +3 -3
  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 +5 -2
  269. package/dist/openapi/models/OperationType.js +5 -2
  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 +22 -56
  425. package/dist/openapi/models/WorkflowCreditSummary.js +4 -24
  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/models/index.d.ts +4 -0
  467. package/dist/openapi/models/index.js +4 -0
  468. package/dist/openapi/runtime.d.ts +1 -1
  469. package/dist/openapi/runtime.js +1 -1
  470. package/dist/operations/image_watermark.d.ts +19 -0
  471. package/dist/operations/image_watermark.js +12 -0
  472. package/dist/operations/image_watermark.metadata.js +5 -2
  473. package/dist/operations/index.d.ts +2 -0
  474. package/dist/operations/index.js +2 -0
  475. package/dist/operations/transform.d.ts +57 -0
  476. package/dist/operations/transform.js +50 -0
  477. package/dist/operations/transform.metadata.d.ts +2 -0
  478. package/dist/operations/transform.metadata.js +77 -0
  479. package/openapi/api.yaml +321 -63
  480. package/operation-capabilities/operation-capabilities.json +57 -2
  481. package/operations/schemas/image_watermark.yaml +121 -13
  482. package/operations/schemas/transform.yaml +196 -0
  483. package/package.json +5 -2
@@ -44,30 +44,53 @@ operation:
44
44
  input_model: multi
45
45
  sole_op: true # bypasses V1 chain validation — must be the only operation in its job (ADR-0025)
46
46
  min_inputs: 2
47
- max_inputs: 2
47
+ max_inputs: 9
48
48
 
49
- # Per-role input-count constraints (ADR-0015). Both roles REQUIRED,
50
- # exactly one each. Arithmetic-consistency rule (CI-checked):
51
- # - sum(role.min) == min_inputs (1 + 1 = 2)
52
- # - sum(role.max) == max_inputs (1 + 1 = 2)
49
+ # Per-role input-count constraints (ADR-0015). base REQUIRED exactly one;
50
+ # overlay 1-8 (multi-overlay stack LIVE 2026-07-01). Arithmetic-consistency
51
+ # rule (CI-checked): sum(role.min) == min_inputs (1 + 1 = 2); sum(role.max) ==
52
+ # max_inputs (1 + 8 = 9). Per-role counts are WORKER-enforced (the API validates
53
+ # only the coarse TOTAL via input min/max); per_role_cardinality is advisory.
53
54
  per_role_cardinality:
54
55
  base:
55
56
  min: 1
56
57
  max: 1
57
58
  overlay:
58
59
  min: 1
59
- max: 1
60
+ max: 8
60
61
 
61
62
  features:
62
63
  multi_overlay_stack:
63
- availability: planned
64
+ # LIVE 2026-07-01: flipped planned->stable on the lambdas worker proof
65
+ # (operation-image-watermark git-2999507, digest-verified;
66
+ # prove-multi-overlay-staging.sh — 3 index-aligned overlays each rendering
67
+ # their own colour at their anchor; mutex + cardinality worker-enforced).
68
+ # Co-landed with `input` max 2->9 + per_role overlay{1,8} + overlays[]
69
+ # executable + api's overlays[] validation & FNA-gate removal (uUdre4jg).
70
+ # availability set EXPLICITLY (matches the audio_overlay / video_watermark
71
+ # multi_overlay_stack features, which stay `planned` — their workers are
72
+ # unproven for multi-overlay).
73
+ availability: stable
64
74
  description: |
65
- Allow up to 8 overlay inputs per job (currently capped at 1
66
- overlay). Per-overlay placement via per-input placement options.
67
- Backend support not yet confirmed; tagged planned. Scope is
68
- image-base only at the time this feature was specified; extension
69
- to GIF / video bases tracks alongside the corresponding mime_group
70
- `planned` → `stable` flips.
75
+ Stack up to 8 overlay inputs on one base image, each with its own
76
+ placement via the `overlays[]` array option (index-aligned to the
77
+ overlay-role sources; see the `image` group's `overlays` option).
78
+ `overlays[]` is mutually exclusive with the flat single-overlay options,
79
+ which remain the 1-overlay back-compat path.
80
+
81
+ **Base-format scope: multi-overlay (`overlays[]`) is on the `image`
82
+ group (jpeg/png/webp) ONLY** — the format the worker proved. The
83
+ stable `image_tiff` / `image_bmp` bases support the SINGLE-overlay flat
84
+ options but NOT `overlays[]` yet (multi-overlay on those bases needs its
85
+ own worker proof — a base-format extension, separate from the group's
86
+ stable single-overlay flip). GIF / video bases remain out of scope.
87
+
88
+ The op-level `input` max 9 / `per_role_cardinality` overlay `{1,8}` is
89
+ the MAXIMUM (the jpeg/png/webp base); input-cardinality has no per-mime-
90
+ group primitive, so a `>1`-overlay request on a tiff/bmp base — which
91
+ has no `overlays[]` to place the extra overlays — is rejected as
92
+ `invalid_options` (API + worker). Effective per-base overlay count:
93
+ jpeg/png/webp = 1–8, tiff/bmp = 1.
71
94
 
72
95
  mime_groups:
73
96
  image:
@@ -144,6 +167,91 @@ operation:
144
167
  Optional overlay width as either pixels (e.g. "200px") or
145
168
  percentage of base image width (e.g. "30%"). Aspect ratio is
146
169
  preserved. Omit to use the original overlay size.
170
+ overlays:
171
+ type: array
172
+ minItems: 1
173
+ maxItems: 8
174
+ # LIVE 2026-07-01 (no availability tag = stable): the multi-overlay-stack
175
+ # surface (features.multi_overlay_stack), flipped planned->stable on the
176
+ # lambdas worker proof (git-2999507). INDEX-ALIGNED to the overlay-role
177
+ # sources: overlays[i] applies to overlay source i. The option DSL has no
178
+ # source-array-length-match primitive, so `len(overlays) == overlay-source
179
+ # count` is WORKER-enforced (invalid_options otherwise) — prose below.
180
+ # Cardinality (co-design with lambdas + api): per-role counts are
181
+ # WORKER-enforced (base{1,1} + overlay{1,8}); the API validates only the
182
+ # coarse TOTAL input count via `input` min/max (2..9), so
183
+ # per_role_cardinality stays ADVISORY. The item sub-schema mirrors the flat
184
+ # single-overlay options (JSON-Schema forms per the render_variants.targets
185
+ # array-of-objects precedent).
186
+ # COEXISTENCE: `overlays[]` is MUTUALLY EXCLUSIVE with the flat
187
+ # single-overlay options (anchor/margin_x/margin_y/opacity/
188
+ # overlay_width) — setting both in one request is `invalid_options`
189
+ # (api create-validation + worker). No silent precedence; the caller
190
+ # picks ONE mode. (The option DSL has no cross-option-group mutex
191
+ # primitive, so this is validator-enforced, documented here + in prose.)
192
+ description: |
193
+ Per-overlay placement for the multi-overlay stack — one entry per
194
+ overlay source, INDEX-ALIGNED: `overlays[i]` applies to overlay
195
+ source `i`. Stacks up to 8 overlays on one base
196
+ (`features.multi_overlay_stack`). `len(overlays)` MUST equal the
197
+ number of overlay-role sources (worker-enforced; `invalid_options`
198
+ otherwise).
199
+
200
+ **Z-order = array index (painter's order, bottom → top).** Overlays
201
+ are composited in array/source order: `overlays[0]` first (bottom),
202
+ then `overlays[1]`, … `overlays[N-1]` LAST (on top). Where two
203
+ overlays overlap, the higher index wins. There is no per-overlay
204
+ `z` field — the index IS the z-order. (Deterministic in the worker;
205
+ identical per-frame for animated-WebP bases.)
206
+
207
+ **Mutually exclusive with the flat single-overlay options**
208
+ (`anchor` / `margin_x` / `margin_y` / `opacity` / `overlay_width`):
209
+ a request that sets BOTH `overlays[]` and any flat option is
210
+ rejected as `invalid_options` (API create-validation + worker) —
211
+ there is no silent precedence. Use the flat options for the
212
+ single-overlay path, `overlays[]` for the multi path.
213
+
214
+ LIVE (flipped `planned` -> stable 2026-07-01 on the lambdas worker
215
+ proof, co-landed with `input` max 2 -> 9 + `per_role_cardinality`
216
+ overlay `{1,8}` + api's overlays[] validation & FNA-gate removal).
217
+ The single-overlay FLAT options remain the 1-overlay back-compat path.
218
+ items:
219
+ type: object
220
+ properties:
221
+ anchor:
222
+ type: string
223
+ enum:
224
+ - top_left
225
+ - top_center
226
+ - top_right
227
+ - center_left
228
+ - center
229
+ - center_right
230
+ - bottom_left
231
+ - bottom_center
232
+ - bottom_right
233
+ default: bottom_right
234
+ description: 9-grid anchor position on the base image (per-overlay; see the flat `anchor`).
235
+ margin_x:
236
+ type: string
237
+ pattern: '^\d+(\.\d+)?(px|%)$'
238
+ default: "0px"
239
+ description: Horizontal offset from the anchor (px or % of base width), anchor-relative (see the flat `margin_x`).
240
+ margin_y:
241
+ type: string
242
+ pattern: '^\d+(\.\d+)?(px|%)$'
243
+ default: "0px"
244
+ description: Vertical offset from the anchor (px or % of base height), anchor-relative (see the flat `margin_y`).
245
+ opacity:
246
+ type: number
247
+ minimum: 0
248
+ maximum: 1
249
+ default: 0.5
250
+ description: Overlay opacity (0 transparent .. 1 opaque), clamped.
251
+ overlay_width:
252
+ type: string
253
+ pattern: '^\d+(\.\d+)?(px|%)$'
254
+ description: Optional overlay width (px or % of base width); aspect preserved. Omit for original size.
147
255
 
148
256
  # Animated GIF base — separate group because the rendering path is
149
257
  # frame-preserving (each frame composited with the overlay), distinct
@@ -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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@giveitsmaller/contracts",
3
- "version": "0.50.0",
3
+ "version": "0.53.0",
4
4
  "description": "Generated contract types for GISL (Give It Smaller)",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -29,6 +29,7 @@
29
29
  "./accepted-options/accepted-options.json": "./accepted-options/accepted-options.json",
30
30
  "./accepted-options/image-output-routes.json": "./accepted-options/image-output-routes.json",
31
31
  "./operation-capabilities/operation-capabilities.json": "./operation-capabilities/operation-capabilities.json",
32
+ "./code-builder/code-builder-metadata.json": "./code-builder/code-builder-metadata.json",
32
33
  "./operations/schemas/archive.yaml": "./operations/schemas/archive.yaml",
33
34
  "./operations/schemas/audio_overlay.yaml": "./operations/schemas/audio_overlay.yaml",
34
35
  "./operations/schemas/audio_to_video.yaml": "./operations/schemas/audio_to_video.yaml",
@@ -43,6 +44,7 @@
43
44
  "./operations/schemas/split.yaml": "./operations/schemas/split.yaml",
44
45
  "./operations/schemas/text_watermark.yaml": "./operations/schemas/text_watermark.yaml",
45
46
  "./operations/schemas/thumbnail.yaml": "./operations/schemas/thumbnail.yaml",
47
+ "./operations/schemas/transform.yaml": "./operations/schemas/transform.yaml",
46
48
  "./operations/schemas/video_text_watermark.yaml": "./operations/schemas/video_text_watermark.yaml",
47
49
  "./operations/schemas/video_watermark.yaml": "./operations/schemas/video_watermark.yaml"
48
50
  },
@@ -54,7 +56,8 @@
54
56
  "availability/availability.json",
55
57
  "accepted-options/accepted-options.json",
56
58
  "accepted-options/image-output-routes.json",
57
- "operation-capabilities/operation-capabilities.json"
59
+ "operation-capabilities/operation-capabilities.json",
60
+ "code-builder/code-builder-metadata.json"
58
61
  ],
59
62
  "scripts": {
60
63
  "clean": "node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"",