@giveitsmaller/contracts 0.50.0 → 0.51.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 (473) hide show
  1. package/accepted-options/accepted-options.json +3 -2
  2. package/accepted-options/image-output-routes.json +1 -1
  3. package/asyncapi/events.yaml +10 -6
  4. package/availability/availability.json +64 -6
  5. package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
  6. package/dist/openapi/models/AccountLimitEntry.js +1 -1
  7. package/dist/openapi/models/AccountLimits.d.ts +1 -1
  8. package/dist/openapi/models/AccountLimits.js +1 -1
  9. package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
  10. package/dist/openapi/models/AccountLimitsLimits.js +1 -1
  11. package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
  12. package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
  13. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  14. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  15. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  16. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  17. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  18. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  19. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  20. package/dist/openapi/models/AuthErrorType.js +1 -1
  21. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
  22. package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
  23. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  24. package/dist/openapi/models/AvailabilityValue.js +1 -1
  25. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  26. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  27. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  28. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  29. package/dist/openapi/models/BillingCheckoutRequest.d.ts +75 -0
  30. package/dist/openapi/models/BillingCheckoutRequest.js +64 -0
  31. package/dist/openapi/models/BillingCheckoutSession.d.ts +42 -0
  32. package/dist/openapi/models/BillingCheckoutSession.js +47 -0
  33. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +46 -0
  34. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +54 -0
  35. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  36. package/dist/openapi/models/CallbackEventType.js +1 -1
  37. package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
  38. package/dist/openapi/models/CapabilityCondition.js +1 -1
  39. package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
  40. package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
  41. package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
  42. package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
  43. package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
  44. package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
  45. package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
  46. package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
  47. package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
  48. package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
  49. package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
  50. package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
  51. package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
  52. package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
  53. package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
  54. package/dist/openapi/models/CapabilityConstraint.js +1 -1
  55. package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
  56. package/dist/openapi/models/CapabilityInputSpec.js +1 -1
  57. package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
  58. package/dist/openapi/models/CapabilityProduces.js +1 -1
  59. package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
  60. package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
  61. package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
  62. package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
  63. package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
  64. package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
  65. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  66. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  67. package/dist/openapi/models/CodegenSource.d.ts +1 -1
  68. package/dist/openapi/models/CodegenSource.js +1 -1
  69. package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
  70. package/dist/openapi/models/CodegenSourceInput.js +1 -1
  71. package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
  72. package/dist/openapi/models/CodegenSourceJob.js +1 -1
  73. package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
  74. package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
  75. package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
  76. package/dist/openapi/models/CodegenSourceOperation.js +1 -1
  77. package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
  78. package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
  79. package/dist/openapi/models/CompositionPlan.d.ts +1 -1
  80. package/dist/openapi/models/CompositionPlan.js +1 -1
  81. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  82. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  83. package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
  84. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  85. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  86. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  87. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  88. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  89. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  90. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  91. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  92. package/dist/openapi/models/ConnectionSource.js +1 -1
  93. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  94. package/dist/openapi/models/ContactRequest.js +1 -1
  95. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  96. package/dist/openapi/models/ContactSubject.js +1 -1
  97. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  98. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  99. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  100. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  101. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  102. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  103. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  104. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  105. package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +23 -0
  106. package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +51 -0
  107. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  108. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  109. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  110. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  111. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  112. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  113. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  114. package/dist/openapi/models/CreditTransaction.js +1 -1
  115. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  116. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  117. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  118. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  119. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  120. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  121. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  122. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  123. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  124. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  125. package/dist/openapi/models/Delivery.d.ts +1 -1
  126. package/dist/openapi/models/Delivery.js +1 -1
  127. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  128. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  129. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  130. package/dist/openapi/models/DeliveryPlan.js +1 -1
  131. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  132. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  133. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  134. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  135. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  136. package/dist/openapi/models/DeliverySelection.js +1 -1
  137. package/dist/openapi/models/DownloadBundle.d.ts +1 -1
  138. package/dist/openapi/models/DownloadBundle.js +1 -1
  139. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  140. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  141. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  142. package/dist/openapi/models/EndpointProjection.js +1 -1
  143. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  144. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  145. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  146. package/dist/openapi/models/EstimateQuality.js +1 -1
  147. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  148. package/dist/openapi/models/EstimateRange.js +1 -1
  149. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  150. package/dist/openapi/models/ExternalDestination.js +1 -1
  151. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  152. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  153. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  154. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  155. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  156. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  157. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  158. package/dist/openapi/models/ExternalImportToken.js +1 -1
  159. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  160. package/dist/openapi/models/ExternalSource.js +1 -1
  161. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  162. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  163. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  164. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  165. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  166. package/dist/openapi/models/FeatureViolation.js +1 -1
  167. package/dist/openapi/models/ForgotPasswordRequest.d.ts +1 -1
  168. package/dist/openapi/models/ForgotPasswordRequest.js +1 -1
  169. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  170. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  171. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  172. package/dist/openapi/models/JobDefinition.js +1 -1
  173. package/dist/openapi/models/JobDownload.d.ts +1 -1
  174. package/dist/openapi/models/JobDownload.js +1 -1
  175. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  176. package/dist/openapi/models/JobInputV2.js +1 -1
  177. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  178. package/dist/openapi/models/JobMediaClass.js +1 -1
  179. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  180. package/dist/openapi/models/JobOutputSource.js +1 -1
  181. package/dist/openapi/models/JobResponse.d.ts +1 -1
  182. package/dist/openapi/models/JobResponse.js +1 -1
  183. package/dist/openapi/models/JobStatus.d.ts +1 -1
  184. package/dist/openapi/models/JobStatus.js +1 -1
  185. package/dist/openapi/models/JobType.d.ts +1 -1
  186. package/dist/openapi/models/JobType.js +1 -1
  187. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  188. package/dist/openapi/models/LivenessResponse.js +1 -1
  189. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  190. package/dist/openapi/models/LoginUser200Response.js +1 -1
  191. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  192. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  193. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  194. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  195. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  196. package/dist/openapi/models/LoginUserRequest.js +1 -1
  197. package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
  198. package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
  199. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
  200. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
  201. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  202. package/dist/openapi/models/MetadataResponse.js +1 -1
  203. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  204. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  205. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  206. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  207. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  208. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  209. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  210. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  211. package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
  212. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  213. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  214. package/dist/openapi/models/MultiInputSource.js +1 -1
  215. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  216. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  217. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  218. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  219. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  220. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  221. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  222. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  223. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  224. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  225. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  226. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  227. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  228. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  229. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  230. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  231. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  232. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  233. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  234. package/dist/openapi/models/MultipartPartListing.js +1 -1
  235. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  236. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  237. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  238. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  239. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  240. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  241. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  242. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  243. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  244. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  245. package/dist/openapi/models/OperationCapability.d.ts +1 -1
  246. package/dist/openapi/models/OperationCapability.js +1 -1
  247. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  248. package/dist/openapi/models/OperationDefinition.js +1 -1
  249. package/dist/openapi/models/OperationDownload.d.ts +1 -1
  250. package/dist/openapi/models/OperationDownload.js +1 -1
  251. package/dist/openapi/models/OperationInputModel.d.ts +2 -2
  252. package/dist/openapi/models/OperationInputModel.js +2 -2
  253. package/dist/openapi/models/OperationResponse.d.ts +1 -1
  254. package/dist/openapi/models/OperationResponse.js +1 -1
  255. package/dist/openapi/models/OperationResult.d.ts +1 -1
  256. package/dist/openapi/models/OperationResult.js +1 -1
  257. package/dist/openapi/models/OperationResultMetadata.d.ts +1 -1
  258. package/dist/openapi/models/OperationResultMetadata.js +1 -1
  259. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  260. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  261. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  262. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  263. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  264. package/dist/openapi/models/OperationStatus.js +1 -1
  265. package/dist/openapi/models/OperationType.d.ts +2 -2
  266. package/dist/openapi/models/OperationType.js +2 -2
  267. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  268. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  269. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  270. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  271. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  272. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  273. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  274. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  275. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  276. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  277. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  278. package/dist/openapi/models/OptionSchema.js +1 -1
  279. package/dist/openapi/models/OutputProperties.d.ts +1 -1
  280. package/dist/openapi/models/OutputProperties.js +1 -1
  281. package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
  282. package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
  283. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  284. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  285. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  286. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  287. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  288. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  289. package/dist/openapi/models/ProbePendingResponse.d.ts +1 -1
  290. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  291. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  292. package/dist/openapi/models/ProcessingClass.js +1 -1
  293. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  294. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  295. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  296. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  297. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  298. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  299. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  300. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  301. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  302. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  303. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  304. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  305. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  306. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  307. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  308. package/dist/openapi/models/ProcessingPlan.js +1 -1
  309. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  310. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  311. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  312. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  313. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  314. package/dist/openapi/models/ReadinessResponse.js +1 -1
  315. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  316. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  317. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  318. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  319. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  320. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  321. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  322. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  323. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  324. package/dist/openapi/models/RetryResponse.js +1 -1
  325. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  326. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  327. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  328. package/dist/openapi/models/SseCompletionBase.js +1 -1
  329. package/dist/openapi/models/SseEventType.d.ts +1 -1
  330. package/dist/openapi/models/SseEventType.js +1 -1
  331. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  332. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  333. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  334. package/dist/openapi/models/SseJobFailedData.js +1 -1
  335. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  336. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  337. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  338. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  339. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  340. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  341. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  342. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  343. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  344. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  345. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  346. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  347. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  348. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  349. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  350. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  351. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  352. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  353. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  354. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  355. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  356. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  357. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  358. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  359. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  360. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  361. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  362. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  363. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  364. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  365. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  366. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  367. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  368. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  369. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  370. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  371. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  372. package/dist/openapi/models/UploadFile403Response.js +1 -1
  373. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  374. package/dist/openapi/models/UploadFile422Response.js +1 -1
  375. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  376. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  377. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  378. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  379. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  380. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  381. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  382. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  383. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  384. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  385. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  386. package/dist/openapi/models/UploadResponse.js +1 -1
  387. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  388. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  389. package/dist/openapi/models/UploadSource.d.ts +1 -1
  390. package/dist/openapi/models/UploadSource.js +1 -1
  391. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  392. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  393. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  394. package/dist/openapi/models/UploadThresholds.js +1 -1
  395. package/dist/openapi/models/UserTier.d.ts +1 -1
  396. package/dist/openapi/models/UserTier.js +1 -1
  397. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  398. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  399. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  400. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  401. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  402. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  403. package/dist/openapi/models/WarningType.d.ts +1 -1
  404. package/dist/openapi/models/WarningType.js +1 -1
  405. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  406. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  407. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  408. package/dist/openapi/models/WebhookPayload.js +1 -1
  409. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  410. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  411. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  412. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  413. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  414. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  415. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  416. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  417. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  418. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  419. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  420. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  421. package/dist/openapi/models/WorkflowCreditSummary.d.ts +22 -56
  422. package/dist/openapi/models/WorkflowCreditSummary.js +4 -24
  423. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  424. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  425. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  426. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  427. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  428. package/dist/openapi/models/WorkflowEdge.js +1 -1
  429. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  430. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  431. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  432. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  433. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  434. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  435. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  436. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  437. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  438. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  439. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  440. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  441. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  442. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  443. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  444. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  445. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  446. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  447. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  448. package/dist/openapi/models/WorkflowSource.js +1 -1
  449. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  450. package/dist/openapi/models/WorkflowStatus.js +1 -1
  451. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  452. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  453. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  454. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  455. package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
  456. package/dist/openapi/models/WorkflowSummary.js +1 -1
  457. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  458. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  459. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  460. package/dist/openapi/models/WorkflowWarning.js +1 -1
  461. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  462. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  463. package/dist/openapi/models/index.d.ts +4 -0
  464. package/dist/openapi/models/index.js +4 -0
  465. package/dist/openapi/runtime.d.ts +1 -1
  466. package/dist/openapi/runtime.js +1 -1
  467. package/dist/operations/image_watermark.d.ts +19 -0
  468. package/dist/operations/image_watermark.js +12 -0
  469. package/dist/operations/image_watermark.metadata.js +5 -2
  470. package/openapi/api.yaml +301 -55
  471. package/operation-capabilities/operation-capabilities.json +42 -2
  472. package/operations/schemas/image_watermark.yaml +121 -13
  473. package/package.json +1 -1
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.152.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
@@ -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.
@@ -7366,7 +7632,7 @@ components:
7366
7632
  thumbnail_video, thumbnail_document, thumbnail_office,
7367
7633
  text_watermark, convert, audio_watermark,
7368
7634
  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.
7635
+ - 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
7636
  enum:
7371
7637
  - single
7372
7638
  - multi
@@ -9839,10 +10105,10 @@ components:
9839
10105
  [`RrxdUBGZ`](https://trello.com/c/RrxdUBGZ) / `i2J8AMy6`.
9840
10106
  credits:
9841
10107
  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`.
10108
+ OPTIONAL. Per-workflow credit summary — the net cost of the run
10109
+ (`used`). `null` for legacy workflows with no credit record (or
10110
+ while a run has no final charge yet). See `WorkflowCreditSummary`.
10111
+ Per ticket `7XbqXO1B` (reshaped to `{ used }`-only per `DsHbIlC1`).
9846
10112
  oneOf:
9847
10113
  - $ref: '#/components/schemas/WorkflowCreditSummary'
9848
10114
  - type: 'null'
@@ -9988,66 +10254,46 @@ components:
9988
10254
  $ref: '#/components/schemas/WorkflowSummaryJob'
9989
10255
  credits:
9990
10256
  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`.
10257
+ OPTIONAL. Per-workflow credit summary — the net cost of the run
10258
+ (`used`) so the list row can show what each run cost. `null` for
10259
+ legacy workflows with no credit record. Same shape as
10260
+ `WorkflowStatusResponse.credits`. Per ticket `7XbqXO1B` (reshaped to
10261
+ `{ used }`-only per `DsHbIlC1`).
9995
10262
  oneOf:
9996
10263
  - $ref: '#/components/schemas/WorkflowCreditSummary'
9997
10264
  - type: 'null'
9998
10265
 
9999
10266
  WorkflowCreditSummary:
10000
10267
  type: object
10268
+ additionalProperties: false
10001
10269
  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`.
10270
+ Per-workflow credit summary for the workflow reads — the net cost of a
10271
+ run. Exposes ONLY `used` (the net credits charged); the internal
10272
+ reservation mechanics (`reserved` / `refunded` / lifecycle `state`) are
10273
+ deliberately NOT surfaced — a user-facing cost readout needs only the
10274
+ net figure, and `reserved` would leak a worst-case COGS estimate. The
10275
+ schema is CLOSED (`additionalProperties: false`) so the removed
10276
+ reservation fields cannot leak back into the payload.
10277
+
10278
+ The enclosing `credits` field is `null` for legacy workflows with no
10279
+ credit record, and may be `null`/absent while a run has no charge yet.
10280
+ Per ticket `7XbqXO1B` (reshaped to `{ used }` per `DsHbIlC1` — product
10281
+ decision to show net cost only).
10008
10282
  required:
10009
- - reserved
10010
- - refunded
10011
- - net
10012
- - state
10283
+ - used
10013
10284
  properties:
10014
- reserved:
10015
- type: integer
10016
- minimum: 0
10017
- description: Credits reserved (held) for the workflow at create time.
10018
- refunded:
10285
+ used:
10019
10286
  type: integer
10020
10287
  minimum: 0
10021
10288
  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`).
10289
+ Net credits charged for the run (the value the old `net` field
10290
+ carried). AUTHORITATIVE (final) only once the workflow reaches a
10291
+ TERMINAL status — while the run is in flight this is a
10292
+ current-but-not-yet-final figure. Consumers MUST gate any "final
10293
+ cost" display on the workflow's terminal status: the removed `state`
10294
+ field previously carried the active-vs-final distinction, so read
10295
+ the workflow status instead (do not present `used` as the final
10296
+ charge while the run is still in flight).
10051
10297
 
10052
10298
  CodegenSource:
10053
10299
  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
  },
@@ -525,5 +565,5 @@
525
565
  "isAnimated": "maybe"
526
566
  }
527
567
  },
528
- "schema_version": "2.148.0"
568
+ "schema_version": "2.152.0"
529
569
  }
@@ -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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@giveitsmaller/contracts",
3
- "version": "0.50.0",
3
+ "version": "0.51.0",
4
4
  "description": "Generated contract types for GISL (Give It Smaller)",
5
5
  "license": "MIT",
6
6
  "type": "module",