@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
package/openapi/api.yaml CHANGED
@@ -89,7 +89,7 @@ info:
89
89
  of truth instead of hardcoding magic numbers. A runtime
90
90
  `GET /api/uploads/limits` endpoint for dynamic discovery
91
91
  (per-tier / per-environment overrides) is a deferred follow-up.
92
- version: 2.148.0
92
+ version: 2.154.0
93
93
  contact:
94
94
  name: API Support
95
95
 
@@ -4653,6 +4653,200 @@ paths:
4653
4653
  schema:
4654
4654
  $ref: '#/components/schemas/ErrorEnvelope'
4655
4655
 
4656
+ # ============================================
4657
+ # BILLING CHECKOUT ENDPOINT
4658
+ # ============================================
4659
+
4660
+ /api/billing/checkout:
4661
+ post:
4662
+ summary: Start a Stripe hosted-Checkout session
4663
+ description: |
4664
+ Create a Stripe **hosted Checkout** session for a subscription
4665
+ upgrade or a credit-pack purchase, and return the Stripe-hosted
4666
+ `checkout_url` for the frontend to redirect the browser to.
4667
+
4668
+ The client supplies only `type` + `key`; the Stripe
4669
+ `success_url` / `cancel_url` redirect targets are **server-set**.
4670
+
4671
+ Gated behind the server `STRIPE_CHECKOUT_ENABLED` flag: while the
4672
+ flag is OFF the endpoint returns `422` `feature_not_available`
4673
+ (`FeatureNotAvailableResponse`, single violation
4674
+ `endpoint.billing.checkout`, `availability: planned`) so the
4675
+ frontend can hide/disable the upgrade affordance without
4676
+ hard-coding the rollout state.
4677
+
4678
+ The Stripe **webhook** (`POST /api/webhooks/stripe`) is a
4679
+ server-to-server, signature-authenticated callback and is
4680
+ deliberately **not** part of this client contract.
4681
+
4682
+ Per the Stripe go-live (routed 2026-07-02).
4683
+ operationId: createBillingCheckoutSession
4684
+ security: [{bearerAuth: []}, {sessionAuth: []}] # required (IS_AUTHENTICATED_FULLY; anonymous/partial sessions → 401)
4685
+ x-identity-scoped: true # the checkout session is created for the authenticated caller
4686
+ tags:
4687
+ - Billing
4688
+ requestBody:
4689
+ required: true
4690
+ content:
4691
+ application/json:
4692
+ schema:
4693
+ $ref: '#/components/schemas/BillingCheckoutRequest'
4694
+ examples:
4695
+ subscription_pro:
4696
+ summary: Upgrade to the Pro subscription
4697
+ value:
4698
+ type: subscription
4699
+ key: pro
4700
+ credit_pack:
4701
+ summary: Buy a 25-credit pack
4702
+ value:
4703
+ type: pack
4704
+ key: pack_25
4705
+ responses:
4706
+ '200':
4707
+ description: Checkout session created; redirect the browser to `checkout_url`.
4708
+ content:
4709
+ application/json:
4710
+ schema:
4711
+ $ref: '#/components/schemas/BillingCheckoutSuccessEnvelope'
4712
+ example:
4713
+ success: true
4714
+ data:
4715
+ checkout_url: "https://checkout.stripe.com/c/pay/cs_test_a1b2c3"
4716
+ session_id: "cs_test_a1b2c3"
4717
+ '400':
4718
+ description: "Malformed JSON request body (`error: INVALID_JSON`)."
4719
+ content:
4720
+ application/json:
4721
+ schema:
4722
+ $ref: '#/components/schemas/ErrorEnvelope'
4723
+ example:
4724
+ success: false
4725
+ error: INVALID_JSON
4726
+ message: "Malformed JSON in request body."
4727
+ '401':
4728
+ description: |
4729
+ Authentication required (`error: UNAUTHORIZED`). Anonymous or
4730
+ partially-authenticated (remember-me) sessions are rejected —
4731
+ the endpoint requires a fully-authenticated caller.
4732
+ content:
4733
+ application/json:
4734
+ schema:
4735
+ $ref: '#/components/schemas/ErrorEnvelope'
4736
+ example:
4737
+ success: false
4738
+ error: UNAUTHORIZED
4739
+ message: "Authentication required."
4740
+ '422':
4741
+ description: |
4742
+ One of three flavours — dispatch on `error_type` (present only
4743
+ on the feature-gate branch), then on the `error` machine code:
4744
+
4745
+ - **`error_type: feature_not_available`**
4746
+ (`FeatureNotAvailableResponse`, carries `violations[]`) —
4747
+ checkout is flag-gated OFF (`STRIPE_CHECKOUT_ENABLED=false`).
4748
+ The single violation names feature `endpoint.billing.checkout`
4749
+ (`availability: planned`). The frontend hides the upgrade
4750
+ affordance on this branch.
4751
+ - **`error: VALIDATION_FAILED`** (plain `ErrorEnvelope`, no
4752
+ `error_type`) — `type` is missing or not one of
4753
+ `subscription` / `pack`, or `key` is empty.
4754
+ - **`error: UNPROCESSABLE_ENTITY`** (plain `ErrorEnvelope`, no
4755
+ `error_type`) — the `type` + `key` pair does not resolve to a
4756
+ provisioned plan or pack (a mismatched pair such as
4757
+ `subscription` + `pack_10`, or an unknown/unprovisioned
4758
+ `key`). The pairing is validated server-side, not by the
4759
+ request schema.
4760
+ content:
4761
+ application/json:
4762
+ schema:
4763
+ # Non-overlapping oneOf, discriminable by `error_type` presence:
4764
+ # the flag-off branch (FeatureNotAvailableResponse) always carries
4765
+ # `error_type: feature_not_available` + `violations[]`; the generic
4766
+ # validation branch is a plain ErrorEnvelope with NO `error_type`
4767
+ # (the `not: required` guard keeps the two branches mutually
4768
+ # exclusive so a feature-gate body cannot also match the generic
4769
+ # branch — the workflows 422 uses a discriminated oneOf, but that
4770
+ # needs `error_type` on every branch, which these two flat codes
4771
+ # do not carry).
4772
+ oneOf:
4773
+ - $ref: '#/components/schemas/FeatureNotAvailableResponse'
4774
+ - allOf:
4775
+ - $ref: '#/components/schemas/ErrorEnvelope'
4776
+ - not:
4777
+ required: [error_type]
4778
+ examples:
4779
+ feature_not_available:
4780
+ summary: Checkout flag is off (STRIPE_CHECKOUT_ENABLED=false)
4781
+ value:
4782
+ success: false
4783
+ error_type: feature_not_available
4784
+ error: FEATURE_NOT_AVAILABLE
4785
+ message: "Checkout is not yet available."
4786
+ violations:
4787
+ - feature: endpoint.billing.checkout
4788
+ availability: planned
4789
+ message_key: feature.not_available
4790
+ validation_failed:
4791
+ summary: Missing / invalid type or empty key
4792
+ value:
4793
+ success: false
4794
+ error: VALIDATION_FAILED
4795
+ message: "Invalid checkout request: 'type' must be 'subscription' or 'pack' and 'key' is required."
4796
+ unprocessable_entity:
4797
+ summary: type/key pair does not resolve to a provisioned plan or pack
4798
+ value:
4799
+ success: false
4800
+ error: UNPROCESSABLE_ENTITY
4801
+ message: "The requested plan or pack is not available."
4802
+ '429':
4803
+ description: |
4804
+ Rate limit exceeded (`error: TOO_MANY_REQUESTS`). The billing
4805
+ endpoint family has its own tiered limiter; the response carries
4806
+ `X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`
4807
+ headers.
4808
+ headers:
4809
+ X-RateLimit-Limit:
4810
+ required: false
4811
+ description: Requests permitted in the current window.
4812
+ schema:
4813
+ type: integer
4814
+ minimum: 0
4815
+ X-RateLimit-Remaining:
4816
+ required: false
4817
+ description: Requests remaining in the current window.
4818
+ schema:
4819
+ type: integer
4820
+ minimum: 0
4821
+ X-RateLimit-Reset:
4822
+ required: false
4823
+ description: Unix epoch seconds when the current window resets.
4824
+ schema:
4825
+ type: integer
4826
+ minimum: 0
4827
+ content:
4828
+ application/json:
4829
+ schema:
4830
+ $ref: '#/components/schemas/ErrorEnvelope'
4831
+ '503':
4832
+ description: |
4833
+ Checkout temporarily unavailable — the flag is on but Stripe is
4834
+ not configured on the server (`error: SERVICE_UNAVAILABLE`).
4835
+ content:
4836
+ application/json:
4837
+ schema:
4838
+ $ref: '#/components/schemas/ErrorEnvelope'
4839
+ example:
4840
+ success: false
4841
+ error: SERVICE_UNAVAILABLE
4842
+ message: "Checkout is temporarily unavailable."
4843
+ '500':
4844
+ description: Internal server error (e.g. an unexpected Stripe SDK error).
4845
+ content:
4846
+ application/json:
4847
+ schema:
4848
+ $ref: '#/components/schemas/ErrorEnvelope'
4849
+
4656
4850
  # ============================================
4657
4851
  # CONTACT ENDPOINT
4658
4852
  # ============================================
@@ -5828,6 +6022,78 @@ components:
5828
6022
  tier:
5829
6023
  $ref: '#/components/schemas/UserTier'
5830
6024
 
6025
+ BillingCheckoutRequest:
6026
+ type: object
6027
+ additionalProperties: false
6028
+ description: |
6029
+ Request body for `POST /api/billing/checkout`. The client supplies
6030
+ only the target `type` + `key`; the Stripe `success_url` /
6031
+ `cancel_url` redirect targets are server-set. Unknown extra
6032
+ properties are rejected.
6033
+
6034
+ Valid `key` values partition by `type`:
6035
+ - `type: subscription` → `key` ∈ { `pro`, `max` }
6036
+ - `type: pack` → `key` ∈ { `pack_10`, `pack_25`, `pack_50` }
6037
+
6038
+ The `type` ↔ `key` pairing is validated **server-side**, not by this
6039
+ schema (the `key` enum lists all values across both types). A
6040
+ mismatched or unprovisioned pair returns `422` `UNPROCESSABLE_ENTITY`;
6041
+ a missing `type` or empty `key` returns `422` `VALIDATION_FAILED`.
6042
+ required:
6043
+ - type
6044
+ - key
6045
+ properties:
6046
+ type:
6047
+ type: string
6048
+ enum: [subscription, pack]
6049
+ description: |
6050
+ Whether the checkout is for a recurring `subscription` upgrade
6051
+ or a one-off credit `pack` purchase.
6052
+ key:
6053
+ type: string
6054
+ enum: [pro, max, pack_10, pack_25, pack_50]
6055
+ description: |
6056
+ The specific plan or pack to purchase. Must be consistent with
6057
+ `type` (subscription → `pro` / `max`; pack → `pack_10` /
6058
+ `pack_25` / `pack_50`) — the pairing is server-validated.
6059
+
6060
+ BillingCheckoutSession:
6061
+ type: object
6062
+ # Open payload (the response-data target stays open for additive
6063
+ # evolution — matches CreditsBalanceResponse / AccountLimits; the
6064
+ # enclosing BillingCheckoutSuccessEnvelope is the closed shape). New
6065
+ # top-level fields (e.g. an expiry) may be added without a breaking
6066
+ # change.
6067
+ description: |
6068
+ The created Stripe hosted-Checkout session — the redirect URL plus
6069
+ the Stripe session id.
6070
+ required:
6071
+ - checkout_url
6072
+ - session_id
6073
+ properties:
6074
+ checkout_url:
6075
+ type: string
6076
+ format: uri
6077
+ description: The Stripe-hosted Checkout URL to redirect the browser to.
6078
+ session_id:
6079
+ type: string
6080
+ description: |
6081
+ The Stripe Checkout Session id (`cs_...`). Opaque; useful for
6082
+ correlation / observability.
6083
+
6084
+ BillingCheckoutSuccessEnvelope:
6085
+ type: object
6086
+ additionalProperties: false
6087
+ required:
6088
+ - success
6089
+ - data
6090
+ properties:
6091
+ success:
6092
+ type: boolean
6093
+ enum: [true]
6094
+ data:
6095
+ $ref: '#/components/schemas/BillingCheckoutSession'
6096
+
5831
6097
  CreditsBalanceSuccessEnvelope:
5832
6098
  type: object
5833
6099
  additionalProperties: false
@@ -6921,7 +7187,7 @@ components:
6921
7187
  exceeds the per-input ceiling (`max_input_size_bytes` /
6922
7188
  `max_input_duration`). Applies to single-input operations
6923
7189
  (compress, convert, thumbnail, text_watermark,
6924
- audio_watermark) AND per-input checks on multi-input
7190
+ audio_watermark, transform) AND per-input checks on multi-input
6925
7191
  operations with per-input caps (image_watermark,
6926
7192
  custom_luma, audio_overlay).
6927
7193
  - `combined_size_exceeds_long_form` /
@@ -7314,7 +7580,7 @@ components:
7314
7580
  - thumbnail_office: Office document (DOCX/XLSX/PPTX/ODT/ODS/ODP)
7315
7581
  thumbnail sub-type. Backed by a dedicated LibreOffice Lambda.
7316
7582
  Emitted by the publisher for office-document inputs.
7317
- - image_watermark: Image overlay onto a base IMAGE asset. Multi-input (Path B with role: base + overlay). Each input is a `MultiInputSource` (external_import / connection / job_output — no upload-direct); an uploaded base or overlay enters via a `passthrough` source job referenced by `job_output`. Stable for static-image bases (jpeg/png/webp); TIFF (`image_tiff`) and BMP (`image_bmp`) bases are now `stable` too (flipped 2026-06-30, UANjD38A). Animated GIF (`image_gif`) bases stay `planned` via a parallel mime_group — dispatch returns `feature_not_available` (422) until Lambda support ships. Video bases are NOT supported by image_watermark — use the dedicated `video_watermark` operation per ADR-0013. Per ADR-0004 + I4-CONS + I5 (Trello AKZiOXnd).
7583
+ - image_watermark: Image overlay onto a base IMAGE asset. Multi-input (Path B, role-based): one `base` + 1–8 `overlay` inputs (`input` min 2 / max 9). A single overlay uses the flat placement options (`anchor` / `margin_x` / `margin_y` / `opacity` / `overlay_width`); 2–8 overlays use the index-aligned `overlays[]` array (multi_overlay_stack, LIVE 2026-07-01) — the two are mutually exclusive. Each input is a `MultiInputSource` (external_import / connection / job_output — no upload-direct); an uploaded base or overlay enters via a `passthrough` source job referenced by `job_output`. Stable for static-image bases (jpeg/png/webp); TIFF (`image_tiff`) and BMP (`image_bmp`) bases are now `stable` too (flipped 2026-06-30, UANjD38A). Animated GIF (`image_gif`) bases stay `planned` via a parallel mime_group — dispatch returns `feature_not_available` (422) until Lambda support ships. Video bases are NOT supported by image_watermark — use the dedicated `video_watermark` operation per ADR-0013. Per ADR-0004 + I4-CONS + I5 (Trello AKZiOXnd).
7318
7584
  - text_watermark: Text overlay rendered onto an image (Liberation Sans). Single-input. Stable for jpeg/png/webp; TIFF (`image_tiff`) and BMP (`image_bmp`) inputs are now `stable` too (flipped 2026-06-30, UANjD38A). Per ADR-0004 + I4-CONS.
7319
7585
  - merge: Concatenate/combine multiple files into one (images, video, audio). Multi-input. Image inputs merge into animated GIF or slideshow video; image collage/grid and PDF concatenation are not supported by the V1 Lambda.
7320
7586
  - archive: Bundle files into ZIP/tar.gz (all types). Multi-input.
@@ -7328,6 +7594,8 @@ components:
7328
7594
  - split: Fan one input file into N outputs across GIF / PDF / audio / video MIME families. Single-input per-mime-group catalog (mirrors merge/convert): GIF uses `frame_range` (REQUIRED) + `output_format`; PDF uses `page_range` OR `page_groups` (mutually exclusive); audio + video use a `mode` discriminator (interval/count/cut_points) + numeric-seconds wire format + `precision` flag (fast/exact). 200-output hard cap per ADR-0009 §D5 with per-mode preflight math; output naming `output-001..output-200`. Long-form video routes to a separate `split-video-fargate` worker via `processing_class`. `availability: beta` for the `audio` and `video` mime_groups (workers live on staging — shape-stable + opt-in, MUST NOT 422); video activates BOTH classes (`video.processing_class.short_form: beta` AND `long_form: beta` — `split-video-fargate` deployed + wired on staging but NOT yet proven end-to-end per [`rcwvUKhI`](https://trello.com/c/rcwvUKhI); the first customer-path soak has not completed, the 4GB+ speed-up is unmeasured, and the long-form fan-out is flag-gated dark). The `image_gif` and `document_pdf` mime_groups stay `availability: planned` and dispatch returns `feature_not_available` (422) until their workers ship. Per ticket [`vKI0CFDu`](https://trello.com/c/vKI0CFDu) + ADR-0014.
7329
7595
  - passthrough: Inert lossless source operation. A single-input source job whose SOLE operation is `passthrough` emits its source bytes UNCHANGED — no compression, no Lambda. The API self-completes the job at publish (terminal output = the upload `{bucket, key}` unchanged). Its purpose is to feed an uploaded file into a multi-input operation LOSSLESSLY: because `JobInputV2.source` is narrowed to exclude upload-direct, an upload that must enter a `merge` / `archive` / `image_watermark` op enters via a `passthrough` source job referenced downstream by `{type: job_output, from: <id>}` — preserving billing / DAG / lineage. Distinct from `operations: []` (which keeps its implicit-compress meaning on a single-input upload job); `passthrough` is the EXPLICIT lossless path via the "non-empty `operations[]` without `compress` = compression opt-out" rule. Media-agnostic; no options. `availability: beta` — activated (the inputs[]-narrowing + passthrough self-complete mechanism is deployed API-side); workflow-create accepts `passthrough` source jobs and MUST NOT return `feature_not_available`. **Never published to SNS** — deliberately absent from the AsyncAPI routing enums (API self-completes; no `ops-passthrough` queue). Per ticket [`4som89Uh`](https://trello.com/c/4som89Uh) + ADR-0004 (planned→beta flip).
7330
7596
 
7597
+ - transform: Geometric/orientation transform — v1 = rotate (0/90/180/270) + flip (none/horizontal/vertical/both), ADR-0026. Single-input; `produces: same_as_input` (geometry preserves format/container). Chainable (NOT sole_op); canonical single-job chain order is `transform → convert → compress → thumbnail` (geometry before encode/derive so downstream width/height/fit refer to the final frame). Media groups: image (still jpeg/png/webp + animated `image_gif`), video (mp4/webm), document (PDF page-rotate only — no flip); audio not supported. ALL groups `availability: planned` (epic `fhiWebI0`) — workflow-create returns `feature_not_available` (422) until per-media Lambdas ship. A no-op transform (`rotate: 0` + `flip: none`) is rejected as `invalid_options`. The public operation type is `transform`; the API resolves an internal per-media SNS routing sub-type (`transform_image` / `transform_video` / `transform_document`) — those sub-types are routing-only and are NOT part of this public enum. Per ADR-0026.
7598
+
7331
7599
  Both the legacy `thumbnail` value and the four sub-type values
7332
7600
  are valid routing targets today during the thumbnail migration
7333
7601
  window. See `asyncapi/events.yaml` for the full routing
@@ -7356,6 +7624,7 @@ components:
7356
7624
  - video_watermark
7357
7625
  - video_text_watermark
7358
7626
  - split
7627
+ - transform
7359
7628
  - passthrough
7360
7629
 
7361
7630
  OperationInputModel:
@@ -7365,8 +7634,8 @@ components:
7365
7634
  - single: One input file (compress, thumbnail, thumbnail_image,
7366
7635
  thumbnail_video, thumbnail_document, thumbnail_office,
7367
7636
  text_watermark, convert, audio_watermark,
7368
- video_text_watermark, split, passthrough)
7369
- - multi: Multiple input files (merge, archive, image_watermark, custom_luma, audio_overlay, audio_to_video, video_watermark). audio_to_video is the first role-based op with an OPTIONAL role (min_inputs=1, max_inputs=2 — see `per_role_cardinality`); video_watermark mirrors `image_watermark`'s 2-required pattern on video bases.
7637
+ video_text_watermark, split, transform, passthrough)
7638
+ - multi: Multiple input files (merge, archive, image_watermark, custom_luma, audio_overlay, audio_to_video, video_watermark). audio_to_video is the first role-based op with an OPTIONAL role (min_inputs=1, max_inputs=2 — see `per_role_cardinality`); video_watermark is a fixed base+overlay pair (exactly one each, min_inputs=max_inputs=2) on video bases; image_watermark widened to base + 1–8 overlays (min 2 / max 9) with the multi_overlay_stack flip (2026-07-01).
7370
7639
  enum:
7371
7640
  - single
7372
7641
  - multi
@@ -9142,12 +9411,18 @@ components:
9142
9411
  description: |
9143
9412
  The canonical pipeline spine (single mutated stream), as an
9144
9413
  ordered list of `chain_group` stage names. The known image/AV
9145
- spine is `merge` (fan-in) → `image_watermark` → `text_watermark`
9146
- → `audio` → `encode` (terminal: convert+compress folded) →
9147
- `derived` (fan-out: thumbnail/split). Informational — read per-op
9148
- `chain_group` / `chain_position` for placement. The geometry
9149
- stage is intentionally not exposed as a node for v1 (image
9150
- resize/fit live inside the thumbnail node).
9414
+ spine is `transform` (geometry: rotate/flip) → `merge` (fan-in)
9415
+ → `image_watermark` → `text_watermark` → `audio` → `encode`
9416
+ (terminal: convert+compress folded) → `derived` (fan-out:
9417
+ thumbnail/split). Informational — read per-op `chain_group` /
9418
+ `chain_position` for placement. The `transform` geometry stage
9419
+ (ADR-0026) runs FIRST — orientation before resize/encode so
9420
+ downstream width/height/fit refer to the final frame; its
9421
+ canonical single-job order is `transform → convert → compress →
9422
+ thumbnail`. It is `availability: planned` (epic `fhiWebI0`) — no
9423
+ transform nodes are produced until it activates. (Image
9424
+ resize/fit still live inside the `thumbnail` node — that is a
9425
+ separate stage from the `transform` op.)
9151
9426
 
9152
9427
  **Open string, NOT a fixed enum** (mirrors
9153
9428
  `ProcessingPlanJob.execution_pool`): the canonical model still
@@ -9227,6 +9502,9 @@ components:
9227
9502
  `additionalProperties: false`; consumers MUST treat unknown
9228
9503
  stage names as forward-compatible. The watermark stages are
9229
9504
  **media-agnostic overlay stages**, not image-only. Known stages:
9505
+ - `transform`: geometry stage (rotate/flip) — covers the
9506
+ `transform` operation type. Runs first in the spine (ADR-0026);
9507
+ `availability: planned` until activation.
9230
9508
  - `merge`: fan-in.
9231
9509
  - `image_watermark`: raster/image-overlay watermark stage —
9232
9510
  covers the `image_watermark` AND `video_watermark` operation
@@ -9839,10 +10117,10 @@ components:
9839
10117
  [`RrxdUBGZ`](https://trello.com/c/RrxdUBGZ) / `i2J8AMy6`.
9840
10118
  credits:
9841
10119
  description: |
9842
- OPTIONAL. Per-workflow credit summary (`reserved` / `refunded` /
9843
- `net` + settlement `state`) for the credits-per-run readout — what
9844
- this run cost. `null` for legacy workflows with no credit record.
9845
- See `WorkflowCreditSummary`. Per ticket `7XbqXO1B`.
10120
+ OPTIONAL. Per-workflow credit summary — the net cost of the run
10121
+ (`used`). `null` for legacy workflows with no credit record (or
10122
+ while a run has no final charge yet). See `WorkflowCreditSummary`.
10123
+ Per ticket `7XbqXO1B` (reshaped to `{ used }`-only per `DsHbIlC1`).
9846
10124
  oneOf:
9847
10125
  - $ref: '#/components/schemas/WorkflowCreditSummary'
9848
10126
  - type: 'null'
@@ -9988,66 +10266,46 @@ components:
9988
10266
  $ref: '#/components/schemas/WorkflowSummaryJob'
9989
10267
  credits:
9990
10268
  description: |
9991
- OPTIONAL. Per-workflow credit summary (`reserved` / `refunded` /
9992
- `net` + settlement `state`) so the list row can show what each run
9993
- cost. `null` for legacy workflows with no credit record. Same shape
9994
- as `WorkflowStatusResponse.credits`. Per ticket `7XbqXO1B`.
10269
+ OPTIONAL. Per-workflow credit summary — the net cost of the run
10270
+ (`used`) so the list row can show what each run cost. `null` for
10271
+ legacy workflows with no credit record. Same shape as
10272
+ `WorkflowStatusResponse.credits`. Per ticket `7XbqXO1B` (reshaped to
10273
+ `{ used }`-only per `DsHbIlC1`).
9995
10274
  oneOf:
9996
10275
  - $ref: '#/components/schemas/WorkflowCreditSummary'
9997
10276
  - type: 'null'
9998
10277
 
9999
10278
  WorkflowCreditSummary:
10000
10279
  type: object
10280
+ additionalProperties: false
10001
10281
  description: |
10002
- Per-workflow credit summary for the workflows-history read
10003
- (credits-per-run). Exposes the billing-ledger figures so the UI can show
10004
- what a run cost without treating an in-flight reservation as a final
10005
- charge — `state` distinguishes a held reservation from a settled charge.
10006
- Additive; the enclosing `credits` field is `null` for legacy workflows
10007
- with no credit record. Per ticket `7XbqXO1B`.
10282
+ Per-workflow credit summary for the workflow reads — the net cost of a
10283
+ run. Exposes ONLY `used` (the net credits charged); the internal
10284
+ reservation mechanics (`reserved` / `refunded` / lifecycle `state`) are
10285
+ deliberately NOT surfaced — a user-facing cost readout needs only the
10286
+ net figure, and `reserved` would leak a worst-case COGS estimate. The
10287
+ schema is CLOSED (`additionalProperties: false`) so the removed
10288
+ reservation fields cannot leak back into the payload.
10289
+
10290
+ The enclosing `credits` field is `null` for legacy workflows with no
10291
+ credit record, and may be `null`/absent while a run has no charge yet.
10292
+ Per ticket `7XbqXO1B` (reshaped to `{ used }` per `DsHbIlC1` — product
10293
+ decision to show net cost only).
10008
10294
  required:
10009
- - reserved
10010
- - refunded
10011
- - net
10012
- - state
10295
+ - used
10013
10296
  properties:
10014
- reserved:
10015
- type: integer
10016
- minimum: 0
10017
- description: Credits reserved (held) for the workflow at create time.
10018
- refunded:
10297
+ used:
10019
10298
  type: integer
10020
10299
  minimum: 0
10021
10300
  description: |
10022
- Credits refunded back to the caller (e.g. on failure / partial
10023
- completion / released reservation).
10024
- net:
10025
- type: integer
10026
- minimum: 0
10027
- description: |
10028
- Net credits charged for the run (`reserved` − `refunded`).
10029
- AUTHORITATIVE for every non-`active` `state` (both `settled` and
10030
- `released`); only while `state` is `active` is it a
10031
- current-but-not-yet-final figure.
10032
- state:
10033
- type: string
10034
- enum: [active, settled, released]
10035
- description: |
10036
- A UI-facing PROJECTION of the workflow's billing-ledger reservation
10037
- lifecycle into three states — the API maps the underlying ledger
10038
- states into exactly one of these (consumers read only this projected
10039
- value, not the raw ledger state):
10040
- - `active` — reservation held, charge NOT yet final (a UI MUST NOT
10041
- present `net` as the final cost).
10042
- - `settled` — final charge applied; `net` is authoritative.
10043
- - `released` — the reservation reached a terminal NON-settled
10044
- outcome (released / cancelled / expired / fully-refunded — they
10045
- all project here); `net` is authoritative (typically 0, or the
10046
- partial charge that stuck).
10047
-
10048
- Both non-`active` states are TERMINAL with an authoritative `net`;
10049
- the `active` vs non-`active` split is the only distinction a cost
10050
- readout needs (don't show a final figure while `active`).
10301
+ Net credits charged for the run (the value the old `net` field
10302
+ carried). AUTHORITATIVE (final) only once the workflow reaches a
10303
+ TERMINAL status — while the run is in flight this is a
10304
+ current-but-not-yet-final figure. Consumers MUST gate any "final
10305
+ cost" display on the workflow's terminal status: the removed `state`
10306
+ field previously carried the active-vs-final distinction, so read
10307
+ the workflow status instead (do not present `used` as the final
10308
+ charge while the run is still in flight).
10051
10309
 
10052
10310
  CodegenSource:
10053
10311
  type: object
@@ -294,7 +294,7 @@
294
294
  ],
295
295
  "availability": "stable",
296
296
  "input": {
297
- "max": 2,
297
+ "max": 9,
298
298
  "min": 2,
299
299
  "model": "multi",
300
300
  "roles": [
@@ -302,6 +302,46 @@
302
302
  "overlay"
303
303
  ]
304
304
  },
305
+ "option_conflicts": [
306
+ {
307
+ "availability": "stable",
308
+ "constraint_id": "image_watermark.overlays_vs_flat_options",
309
+ "message": "`overlays[]` (multi-overlay) is mutually exclusive with the flat single-overlay options (anchor / margin_x / margin_y / opacity / overlay_width) \u2014 set one mode, not both.",
310
+ "when": {
311
+ "all": [
312
+ {
313
+ "field": "image_watermark.overlays",
314
+ "isSet": true
315
+ },
316
+ {
317
+ "any": [
318
+ {
319
+ "field": "image_watermark.anchor",
320
+ "isSet": true
321
+ },
322
+ {
323
+ "field": "image_watermark.margin_x",
324
+ "isSet": true
325
+ },
326
+ {
327
+ "field": "image_watermark.margin_y",
328
+ "isSet": true
329
+ },
330
+ {
331
+ "field": "image_watermark.opacity",
332
+ "isSet": true
333
+ },
334
+ {
335
+ "field": "image_watermark.overlay_width",
336
+ "isSet": true
337
+ }
338
+ ]
339
+ }
340
+ ]
341
+ },
342
+ "wire_code": "invalid_options"
343
+ }
344
+ ],
305
345
  "produces": {
306
346
  "same_as_input": true
307
347
  },
@@ -414,6 +454,21 @@
414
454
  },
415
455
  "sole_op": false
416
456
  },
457
+ "transform": {
458
+ "accepts": [
459
+ "document",
460
+ "image",
461
+ "video"
462
+ ],
463
+ "availability": "planned",
464
+ "input": {
465
+ "model": "single"
466
+ },
467
+ "produces": {
468
+ "same_as_input": true
469
+ },
470
+ "sole_op": false
471
+ },
417
472
  "video_text_watermark": {
418
473
  "accepts": [
419
474
  "video"
@@ -525,5 +580,5 @@
525
580
  "isAnimated": "maybe"
526
581
  }
527
582
  },
528
- "schema_version": "2.148.0"
583
+ "schema_version": "2.154.0"
529
584
  }