@giveitsmaller/contracts 0.48.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 (488) hide show
  1. package/accepted-options/accepted-options.json +31 -54
  2. package/accepted-options/image-output-routes.json +12 -22
  3. package/asyncapi/events.yaml +41 -11
  4. package/availability/availability.json +146 -265
  5. package/dist/asyncapi/OperationMetrics.d.ts +2 -0
  6. package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
  7. package/dist/openapi/models/AccountLimitEntry.js +1 -1
  8. package/dist/openapi/models/AccountLimits.d.ts +1 -1
  9. package/dist/openapi/models/AccountLimits.js +1 -1
  10. package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
  11. package/dist/openapi/models/AccountLimitsLimits.js +1 -1
  12. package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
  13. package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
  14. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  15. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  16. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  17. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  18. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  19. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  20. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  21. package/dist/openapi/models/AuthErrorType.js +1 -1
  22. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
  23. package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
  24. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  25. package/dist/openapi/models/AvailabilityValue.js +1 -1
  26. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  27. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  28. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  29. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  30. package/dist/openapi/models/BillingCheckoutRequest.d.ts +75 -0
  31. package/dist/openapi/models/BillingCheckoutRequest.js +64 -0
  32. package/dist/openapi/models/BillingCheckoutSession.d.ts +42 -0
  33. package/dist/openapi/models/BillingCheckoutSession.js +47 -0
  34. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +46 -0
  35. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +54 -0
  36. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  37. package/dist/openapi/models/CallbackEventType.js +1 -1
  38. package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
  39. package/dist/openapi/models/CapabilityCondition.js +1 -1
  40. package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
  41. package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
  42. package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
  43. package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
  44. package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
  45. package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
  46. package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
  47. package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
  48. package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
  49. package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
  50. package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
  51. package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
  52. package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
  53. package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
  54. package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
  55. package/dist/openapi/models/CapabilityConstraint.js +1 -1
  56. package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
  57. package/dist/openapi/models/CapabilityInputSpec.js +1 -1
  58. package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
  59. package/dist/openapi/models/CapabilityProduces.js +1 -1
  60. package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
  61. package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
  62. package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
  63. package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
  64. package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
  65. package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
  66. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  67. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  68. package/dist/openapi/models/CodegenSource.d.ts +1 -1
  69. package/dist/openapi/models/CodegenSource.js +1 -1
  70. package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
  71. package/dist/openapi/models/CodegenSourceInput.js +1 -1
  72. package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
  73. package/dist/openapi/models/CodegenSourceJob.js +1 -1
  74. package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
  75. package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
  76. package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
  77. package/dist/openapi/models/CodegenSourceOperation.js +1 -1
  78. package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
  79. package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
  80. package/dist/openapi/models/CompositionPlan.d.ts +1 -1
  81. package/dist/openapi/models/CompositionPlan.js +1 -1
  82. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  83. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  84. package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
  85. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  86. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  87. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  88. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  89. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  90. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  91. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  92. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  93. package/dist/openapi/models/ConnectionSource.js +1 -1
  94. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  95. package/dist/openapi/models/ContactRequest.js +1 -1
  96. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  97. package/dist/openapi/models/ContactSubject.js +1 -1
  98. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  99. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  100. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  101. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  102. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  103. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  104. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  105. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  106. package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +23 -0
  107. package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +51 -0
  108. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  109. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  110. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  111. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  112. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  113. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  114. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  115. package/dist/openapi/models/CreditTransaction.js +1 -1
  116. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  117. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  118. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  119. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  120. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  121. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  122. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  123. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  124. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  125. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  126. package/dist/openapi/models/Delivery.d.ts +1 -1
  127. package/dist/openapi/models/Delivery.js +1 -1
  128. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  129. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  130. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  131. package/dist/openapi/models/DeliveryPlan.js +1 -1
  132. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  133. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  134. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  135. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  136. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  137. package/dist/openapi/models/DeliverySelection.js +1 -1
  138. package/dist/openapi/models/DownloadBundle.d.ts +1 -1
  139. package/dist/openapi/models/DownloadBundle.js +1 -1
  140. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  141. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  142. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  143. package/dist/openapi/models/EndpointProjection.js +1 -1
  144. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  145. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  146. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  147. package/dist/openapi/models/EstimateQuality.js +1 -1
  148. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  149. package/dist/openapi/models/EstimateRange.js +1 -1
  150. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  151. package/dist/openapi/models/ExternalDestination.js +1 -1
  152. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  153. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  154. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  155. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  156. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  157. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  158. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  159. package/dist/openapi/models/ExternalImportToken.js +1 -1
  160. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  161. package/dist/openapi/models/ExternalSource.js +1 -1
  162. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  163. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  164. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  165. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  166. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  167. package/dist/openapi/models/FeatureViolation.js +1 -1
  168. package/dist/openapi/models/ForgotPasswordRequest.d.ts +1 -1
  169. package/dist/openapi/models/ForgotPasswordRequest.js +1 -1
  170. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  171. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  172. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  173. package/dist/openapi/models/JobDefinition.js +1 -1
  174. package/dist/openapi/models/JobDownload.d.ts +1 -1
  175. package/dist/openapi/models/JobDownload.js +1 -1
  176. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  177. package/dist/openapi/models/JobInputV2.js +1 -1
  178. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  179. package/dist/openapi/models/JobMediaClass.js +1 -1
  180. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  181. package/dist/openapi/models/JobOutputSource.js +1 -1
  182. package/dist/openapi/models/JobResponse.d.ts +1 -1
  183. package/dist/openapi/models/JobResponse.js +1 -1
  184. package/dist/openapi/models/JobStatus.d.ts +1 -1
  185. package/dist/openapi/models/JobStatus.js +1 -1
  186. package/dist/openapi/models/JobType.d.ts +1 -1
  187. package/dist/openapi/models/JobType.js +1 -1
  188. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  189. package/dist/openapi/models/LivenessResponse.js +1 -1
  190. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  191. package/dist/openapi/models/LoginUser200Response.js +1 -1
  192. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  193. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  194. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  195. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  196. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  197. package/dist/openapi/models/LoginUserRequest.js +1 -1
  198. package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
  199. package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
  200. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
  201. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
  202. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  203. package/dist/openapi/models/MetadataResponse.js +1 -1
  204. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  205. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  206. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  207. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  208. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  209. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  210. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  211. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  212. package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
  213. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  214. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  215. package/dist/openapi/models/MultiInputSource.js +1 -1
  216. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  217. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  218. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  219. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  220. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  221. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  222. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  223. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  224. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  225. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  226. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  227. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  228. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  229. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  230. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  231. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  232. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  233. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  234. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  235. package/dist/openapi/models/MultipartPartListing.js +1 -1
  236. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  237. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  238. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  239. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  240. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  241. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  242. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  243. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  244. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  245. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  246. package/dist/openapi/models/OperationCapability.d.ts +1 -1
  247. package/dist/openapi/models/OperationCapability.js +1 -1
  248. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  249. package/dist/openapi/models/OperationDefinition.js +1 -1
  250. package/dist/openapi/models/OperationDownload.d.ts +27 -4
  251. package/dist/openapi/models/OperationDownload.js +5 -1
  252. package/dist/openapi/models/OperationInputModel.d.ts +2 -2
  253. package/dist/openapi/models/OperationInputModel.js +2 -2
  254. package/dist/openapi/models/OperationResponse.d.ts +1 -1
  255. package/dist/openapi/models/OperationResponse.js +1 -1
  256. package/dist/openapi/models/OperationResult.d.ts +1 -1
  257. package/dist/openapi/models/OperationResult.js +1 -1
  258. package/dist/openapi/models/OperationResultMetadata.d.ts +1 -1
  259. package/dist/openapi/models/OperationResultMetadata.js +1 -1
  260. package/dist/openapi/models/OperationResultMetrics.d.ts +28 -5
  261. package/dist/openapi/models/OperationResultMetrics.js +5 -1
  262. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  263. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  264. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  265. package/dist/openapi/models/OperationStatus.js +1 -1
  266. package/dist/openapi/models/OperationType.d.ts +3 -3
  267. package/dist/openapi/models/OperationType.js +3 -3
  268. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  269. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  270. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  271. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  272. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  273. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  274. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  275. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  276. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  277. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  278. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  279. package/dist/openapi/models/OptionSchema.js +1 -1
  280. package/dist/openapi/models/OutputProperties.d.ts +1 -1
  281. package/dist/openapi/models/OutputProperties.js +1 -1
  282. package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
  283. package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
  284. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  285. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  286. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  287. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  288. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  289. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  290. package/dist/openapi/models/ProbePendingResponse.d.ts +1 -1
  291. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  292. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  293. package/dist/openapi/models/ProcessingClass.js +1 -1
  294. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  295. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  296. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  297. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  298. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  299. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  300. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  301. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  302. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  303. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  304. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  305. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  306. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  307. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  308. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  309. package/dist/openapi/models/ProcessingPlan.js +1 -1
  310. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  311. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  312. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  313. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  314. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  315. package/dist/openapi/models/ReadinessResponse.js +1 -1
  316. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  317. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  318. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  319. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  320. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  321. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  322. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  323. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  324. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  325. package/dist/openapi/models/RetryResponse.js +1 -1
  326. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  327. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  328. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  329. package/dist/openapi/models/SseCompletionBase.js +1 -1
  330. package/dist/openapi/models/SseEventType.d.ts +1 -1
  331. package/dist/openapi/models/SseEventType.js +1 -1
  332. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  333. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  334. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  335. package/dist/openapi/models/SseJobFailedData.js +1 -1
  336. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  337. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  338. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  339. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  340. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  341. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  342. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  343. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  344. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  345. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  346. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  347. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  348. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  349. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  350. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  351. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  352. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  353. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  354. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  355. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  356. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  357. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  358. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  359. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  360. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  361. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  362. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  363. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  364. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  365. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  366. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  367. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  368. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  369. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  370. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  371. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  372. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  373. package/dist/openapi/models/UploadFile403Response.js +1 -1
  374. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  375. package/dist/openapi/models/UploadFile422Response.js +1 -1
  376. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  377. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  378. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  379. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  380. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  381. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  382. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  383. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  384. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  385. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  386. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  387. package/dist/openapi/models/UploadResponse.js +1 -1
  388. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  389. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  390. package/dist/openapi/models/UploadSource.d.ts +1 -1
  391. package/dist/openapi/models/UploadSource.js +1 -1
  392. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  393. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  394. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  395. package/dist/openapi/models/UploadThresholds.js +1 -1
  396. package/dist/openapi/models/UserTier.d.ts +1 -1
  397. package/dist/openapi/models/UserTier.js +1 -1
  398. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  399. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  400. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  401. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  402. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  403. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  404. package/dist/openapi/models/WarningType.d.ts +1 -1
  405. package/dist/openapi/models/WarningType.js +1 -1
  406. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  407. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  408. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  409. package/dist/openapi/models/WebhookPayload.js +1 -1
  410. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  411. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  412. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  413. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  414. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  415. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  416. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  417. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  418. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  419. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  420. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  421. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  422. package/dist/openapi/models/WorkflowCreditSummary.d.ts +22 -56
  423. package/dist/openapi/models/WorkflowCreditSummary.js +4 -24
  424. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  425. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  426. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  427. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  428. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  429. package/dist/openapi/models/WorkflowEdge.js +1 -1
  430. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  431. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  432. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  433. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  434. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  435. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  436. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  437. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  438. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  439. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  440. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  441. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  442. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  443. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  444. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  445. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  446. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  447. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  448. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  449. package/dist/openapi/models/WorkflowSource.js +1 -1
  450. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  451. package/dist/openapi/models/WorkflowStatus.js +1 -1
  452. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  453. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  454. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  455. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  456. package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
  457. package/dist/openapi/models/WorkflowSummary.js +1 -1
  458. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  459. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  460. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  461. package/dist/openapi/models/WorkflowWarning.js +1 -1
  462. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  463. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  464. package/dist/openapi/models/index.d.ts +4 -0
  465. package/dist/openapi/models/index.js +4 -0
  466. package/dist/openapi/runtime.d.ts +1 -1
  467. package/dist/openapi/runtime.js +1 -1
  468. package/dist/operations/compress.d.ts +27 -12
  469. package/dist/operations/compress.js +24 -0
  470. package/dist/operations/compress.metadata.js +10 -42
  471. package/dist/operations/convert.d.ts +3 -6
  472. package/dist/operations/convert.js +2 -5
  473. package/dist/operations/convert.metadata.js +1 -15
  474. package/dist/operations/image_watermark.d.ts +19 -0
  475. package/dist/operations/image_watermark.js +12 -0
  476. package/dist/operations/image_watermark.metadata.js +5 -4
  477. package/dist/operations/text_watermark.metadata.js +0 -2
  478. package/dist/operations/thumbnail.d.ts +6 -24
  479. package/dist/operations/thumbnail.js +0 -12
  480. package/dist/operations/thumbnail.metadata.js +0 -33
  481. package/openapi/api.yaml +349 -63
  482. package/operation-capabilities/operation-capabilities.json +53 -3
  483. package/operations/schemas/compress.yaml +142 -139
  484. package/operations/schemas/convert.yaml +39 -42
  485. package/operations/schemas/image_watermark.yaml +140 -31
  486. package/operations/schemas/text_watermark.yaml +17 -17
  487. package/operations/schemas/thumbnail.yaml +40 -77
  488. package/package.json +1 -1
@@ -18,15 +18,14 @@ operation:
18
18
  dispatch returns `feature_not_available` (422) until backend
19
19
  support ships.
20
20
 
21
- TIFF (image/tiff) and BMP (image/bmp) bases are likewise advertised
22
- as `planned` via the parallel `image_tiff` / `image_bmp` mime_groups.
23
- Both formats are already decodable and the worker's encode arms are a
24
- cheap add (shared `image`-crate encoders), so each flips to `stable`
25
- once its arm ships and is proven. Because watermark output mirrors the
26
- input format (`produces: same_as_input`), advertising a base format is
27
- only honest when the worker can both decode AND encode it — which
28
- holds for TIFF/BMP but not for HEIC/AVIF (no encoder) or SVG (cannot
29
- re-emit svg from a rasterised composite); those stay out of scope.
21
+ TIFF (image/tiff) and BMP (image/bmp) bases are now `stable` too
22
+ (flipped planned->stable 2026-06-30 on the lambdas staging proof,
23
+ UANjD38A / #296) via the parallel `image_tiff` / `image_bmp`
24
+ mime_groups. Because watermark output mirrors the input format
25
+ (`produces: same_as_input`), advertising a base format is only honest
26
+ when the worker can both decode AND encode it — which holds for
27
+ TIFF/BMP but not for HEIC/AVIF (no encoder) or SVG (cannot re-emit svg
28
+ from a rasterised composite); those stay out of scope.
30
29
 
31
30
  **Video bases are NOT supported by `image_watermark`.** Use the
32
31
  dedicated `video_watermark` operation
@@ -45,30 +44,53 @@ operation:
45
44
  input_model: multi
46
45
  sole_op: true # bypasses V1 chain validation — must be the only operation in its job (ADR-0025)
47
46
  min_inputs: 2
48
- max_inputs: 2
47
+ max_inputs: 9
49
48
 
50
- # Per-role input-count constraints (ADR-0015). Both roles REQUIRED,
51
- # exactly one each. Arithmetic-consistency rule (CI-checked):
52
- # - sum(role.min) == min_inputs (1 + 1 = 2)
53
- # - 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.
54
54
  per_role_cardinality:
55
55
  base:
56
56
  min: 1
57
57
  max: 1
58
58
  overlay:
59
59
  min: 1
60
- max: 1
60
+ max: 8
61
61
 
62
62
  features:
63
63
  multi_overlay_stack:
64
- 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
65
74
  description: |
66
- Allow up to 8 overlay inputs per job (currently capped at 1
67
- overlay). Per-overlay placement via per-input placement options.
68
- Backend support not yet confirmed; tagged planned. Scope is
69
- image-base only at the time this feature was specified; extension
70
- to GIF / video bases tracks alongside the corresponding mime_group
71
- `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.
72
94
 
73
95
  mime_groups:
74
96
  image:
@@ -145,6 +167,91 @@ operation:
145
167
  Optional overlay width as either pixels (e.g. "200px") or
146
168
  percentage of base image width (e.g. "30%"). Aspect ratio is
147
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.
148
255
 
149
256
  # Animated GIF base — separate group because the rendering path is
150
257
  # frame-preserving (each frame composited with the overlay), distinct
@@ -217,12 +324,13 @@ operation:
217
324
  width. Aspect ratio preserved. Omit to use the original
218
325
  overlay size.
219
326
 
220
- # TIFF base — separate group because backend support ships in its own
221
- # wave: the format is already decodable, but the encode arm (shared
222
- # `image`-crate TiffEncoder) is pending. Tagged `planned` until the arm
223
- # ships and is proven, then flips to `stable` (cross-repo UANjD38A).
327
+ # TIFF base — separate group (its backend arm shipped in its own wave).
328
+ # Now STABLE (flipped 2026-06-30 — see the group comment below).
224
329
  image_tiff:
225
- availability: planned
330
+ # planned->stable 2026-06-30 (UANjD38A): lambdas staging-proved the TIFF
331
+ # image-watermark encode (composited output md5 != base, decodable as TIFF,
332
+ # PR #296 c664d80; encoder shipped dark in #274). Manifest lists image/tiff in
333
+ # accepts + outputs.
226
334
  mimes:
227
335
  - image/tiff
228
336
  options:
@@ -289,11 +397,12 @@ operation:
289
397
  width. Aspect ratio preserved. Omit to use the original
290
398
  overlay size.
291
399
 
292
- # BMP base — separate group for the same reason as image_tiff: decode
293
- # is ready, the encode arm (shared `image`-crate BmpEncoder) is pending.
294
- # Tagged `planned` until the arm ships and is proven (cross-repo UANjD38A).
400
+ # BMP base — separate group for the same reason as image_tiff. Now
401
+ # STABLE (flipped 2026-06-30 — see the group comment below).
295
402
  image_bmp:
296
- availability: planned
403
+ # planned->stable 2026-06-30 (UANjD38A): lambdas staging-proved the BMP
404
+ # image-watermark encode (composited + decodable as BMP, PR #296 c664d80;
405
+ # encoder shipped dark in #274). Manifest lists image/bmp in accepts + outputs.
297
406
  mimes:
298
407
  - image/bmp
299
408
  options:
@@ -15,14 +15,13 @@ operation:
15
15
  pattern); rotation default -45° and tile_spacing controls density.
16
16
 
17
17
  Stable today for image/jpeg, image/png, image/webp inputs. TIFF
18
- (image/tiff) and BMP (image/bmp) inputs are advertised as `planned`
19
- via the parallel `image_tiff` / `image_bmp` mime_groups — both are
20
- already decodable and the worker's encode arms are a cheap add
21
- (shared `image`-crate encoders), so each flips to `stable` once its
22
- arm ships and is proven. Output mirrors the input format
23
- (`produces: same_as_input`), so a format is only advertised when the
24
- worker can both decode AND encode it; HEIC/AVIF (no encoder) and SVG
25
- (cannot re-emit svg from a rasterised composite) stay out of scope.
18
+ (image/tiff) and BMP (image/bmp) inputs are now `stable` too (flipped
19
+ planned->stable 2026-06-30 on the lambdas staging proof, UANjD38A /
20
+ #296) via the parallel `image_tiff` / `image_bmp` mime_groups. Output
21
+ mirrors the input format (`produces: same_as_input`), so a format is
22
+ only advertised when the worker can both decode AND encode it;
23
+ HEIC/AVIF (no encoder) and SVG (cannot re-emit svg from a rasterised
24
+ composite) stay out of scope.
26
25
  default: false
27
26
  input_model: single
28
27
  sole_op: true # bypasses V1 chain validation — must be the only operation in its job (ADR-0025)
@@ -158,14 +157,14 @@ operation:
158
157
  `color` already encodes transparency, so opacity is usually
159
158
  left at 1.0 and transparency is set via the color hex.
160
159
 
161
- # TIFF input — separate group because backend support ships in its own
162
- # wave: the format is already decodable, but the encode arm (shared
163
- # `image`-crate TiffEncoder) is pending. Tagged `planned` until the arm
164
- # ships and is proven, then flips to `stable` (cross-repo UANjD38A).
160
+ # TIFF input — separate group (its backend arm shipped in its own wave).
161
+ # Now STABLE (flipped 2026-06-30 — see the group comment below).
165
162
  # Text-rendering options are format-independent, so the shape mirrors
166
163
  # the canonical `image` group exactly.
167
164
  image_tiff:
168
- availability: planned
165
+ # planned->stable 2026-06-30 (UANjD38A): lambdas staging-proved the TIFF
166
+ # text-watermark encode (composited + decodable as TIFF, PR #296 c664d80;
167
+ # encoder shipped dark in #274). Manifest lists image/tiff in accepts + outputs.
169
168
  mimes:
170
169
  - image/tiff
171
170
  options:
@@ -284,11 +283,12 @@ operation:
284
283
  `color` already encodes transparency, so opacity is usually
285
284
  left at 1.0 and transparency is set via the color hex.
286
285
 
287
- # BMP input — separate group for the same reason as image_tiff: decode
288
- # is ready, the encode arm (shared `image`-crate BmpEncoder) is pending.
289
- # Tagged `planned` until the arm ships and is proven (cross-repo UANjD38A).
286
+ # BMP input — separate group for the same reason as image_tiff. Now
287
+ # STABLE (flipped 2026-06-30 — see the group comment below).
290
288
  image_bmp:
291
- availability: planned
289
+ # planned->stable 2026-06-30 (UANjD38A): lambdas staging-proved the BMP
290
+ # text-watermark encode (composited + decodable as BMP, PR #296 c664d80;
291
+ # encoder shipped dark in #274). Manifest lists image/bmp in accepts + outputs.
292
292
  mimes:
293
293
  - image/bmp
294
294
  options:
@@ -17,12 +17,12 @@ operation:
17
17
  - image/bmp
18
18
  - image/avif
19
19
  - image/heic
20
- per_mime_availability:
21
- # avif/heic decode shipped in the thumbnail-image worker via libheif
22
- # (lambdas w34Taquf, #210). beta: live + opt-in, shape-stable.
23
- # Re-add after the v2.67.0 interim crash-window drop (aYPbNVKD Phase 2).
24
- image/avif: { availability: beta }
25
- image/heic: { availability: beta }
20
+ # avif/heic decode in the thumbnail-image worker via libheif (lambdas
21
+ # w34Taquf, #210) is now GA-STABLE — no per_mime_availability tag = stable
22
+ # (the group default), promoted beta→stable 2026-06-30 on the lambdas GA
23
+ # attestation: libheif decode LIVE on staging since 2026-06-14, e2e
24
+ # decode-smoke green, zero decode failures since. Standard files are GA;
25
+ # exotic variants (10-bit / HDR / multi-image HEIC) decode best-effort.
26
26
  # Output-area wall (lambdas thumbnail-image MAX_OUTPUT_PIXELS): the FE
27
27
  # pre-validates width*height <= max_output_pixels. The per-axis max (16384)
28
28
  # is NOT the real limit — e.g. 6000x6000 (36MP) is rejected though each axis
@@ -36,72 +36,20 @@ operation:
36
36
  type: integer
37
37
  min: 1
38
38
  max: 16384
39
- required: true
40
- description: "Target width in pixels (1-16384; width*height <= 16MP). For image input this is a full resize, not just a small preview."
41
- height:
42
- type: integer
43
- min: 1
44
- max: 16384
45
- required: true
46
- description: "Target height in pixels (1-16384; width*height <= 16MP). For image input this is a full resize, not just a small preview."
47
- fit:
48
- type: enum
49
- values: [max, crop, scale]
50
- default: crop
51
- description: "Resize mode"
52
- format:
53
- type: enum
54
- values: [jpg, png, webp]
55
- default: jpg
56
- description: "Output format for the thumbnail"
57
- quality:
58
- type: integer
59
- min: 1
60
- max: 100
61
- default: 85
62
- depends_on: { format: [jpg, webp] }
63
- description: "Output quality for lossy thumbnail formats (jpg/webp): higher = better quality, larger file. Ignored for png (lossless)."
64
- background:
65
- type: string
66
- pattern: "^#[0-9a-fA-F]{6}$"
67
- depends_on: { format: jpg }
68
39
  description: >-
69
- Background colour as a 6-digit hex (`#RRGGBB`, e.g. `#ffffff`) for a
70
- transparent image (e.g. PNG/WebP with alpha) resized to an opaque JPG
71
- thumbnail — the alpha-flatten fill colour. Mirrors
72
- convert.image.background. HEX ONLY: a non-hex value (e.g. a CSS named
73
- colour) is rejected rather than advertising an inert free-form string.
74
- When omitted, transparency is flattened onto white. JPG output only:
75
- PNG/WebP keep alpha, so the flatten (and this option) do not apply.
76
-
77
- # SVG input (planned, UANjD38A). SVG is split into its own parallel mime_group
78
- # (group-level `availability: planned`, which the API gates -> feature_not_available)
79
- # rather than tagged inside the stable `image` group, because per-MIME planned is
80
- # advisory/not enforced. SVG rasterises to a bitmap cleanly, so render->resize for
81
- # thumbnail is feasible. Flip planned -> stable
82
- # (or beta) once the worker proves svg-rasterise input. Shares the `image` group's
83
- # option shape (FORMAT.md "Parallel groups").
84
- image_svg:
85
- availability: planned
86
- mimes:
87
- - image/svg+xml
88
- max_output_pixels: 16000000
89
- options:
90
- # IMAGE input is a full resizer (Lanczos): width/height accept the
91
- # worker's real 1-16384px range (area-capped above) — this op is the
92
- # image-resize path, surfaced in the UI as "Resize", not only thumbnails.
93
- width:
94
- type: integer
95
- min: 1
96
- max: 16384
97
- required: true
98
- description: "Target width in pixels (1-16384; width*height <= 16MP). For image input this is a full resize, not just a small preview."
40
+ Target width in pixels (1-16384; width*height <= 16MP). For image input
41
+ this is a full resize, not just a small preview. Optional — when omitted
42
+ the server applies an aspect-preserving default (both omitted → longest
43
+ edge 320px; only one of width/height provided → the other is derived from
44
+ the source aspect ratio), so non-square images are never distorted.
99
45
  height:
100
46
  type: integer
101
47
  min: 1
102
48
  max: 16384
103
- required: true
104
- description: "Target height in pixels (1-16384; width*height <= 16MP). For image input this is a full resize, not just a small preview."
49
+ description: >-
50
+ Target height in pixels (1-16384; width*height <= 16MP). For image input
51
+ this is a full resize. Optional — see `width` for the omitted-default
52
+ (aspect-preserving) behaviour.
105
53
  fit:
106
54
  type: enum
107
55
  values: [max, crop, scale]
@@ -117,8 +65,15 @@ operation:
117
65
  min: 1
118
66
  max: 100
119
67
  default: 85
120
- depends_on: { format: [jpg, webp] }
121
- description: "Output quality for lossy thumbnail formats (jpg/webp): higher = better quality, larger file. Ignored for png (lossless)."
68
+ depends_on: { format: [jpg, webp, png] }
69
+ description: >-
70
+ Output quality for lossy thumbnail formats (jpg / webp / png): higher =
71
+ better quality, larger file. For PNG, `quality` < 100 applies lossy palette
72
+ quantization (imagequant — transparency preserved); `quality: 100` keeps the
73
+ PNG lossless. Per-format effective default (server-resolved when `quality`
74
+ is unset, per ADR-0020 D1): PNG → 70 (more aggressive — thumbnails target
75
+ small files), jpg/webp → 85. The schema `default` is the nominal jpg/webp
76
+ value (85); the FE shows 70 as the initial PNG slider value.
122
77
  background:
123
78
  type: string
124
79
  pattern: "^#[0-9a-fA-F]{6}$"
@@ -175,14 +130,18 @@ operation:
175
130
  type: integer
176
131
  min: 1
177
132
  max: 16384
178
- required: true
179
- description: "Target width in pixels (1-16384; width*height <= 16MP). Rounded down to an even number."
133
+ description: >-
134
+ Target width in pixels (1-16384; width*height <= 16MP). Rounded down to an
135
+ even number. Optional — when omitted the server applies an aspect-preserving
136
+ default (both omitted → longest edge 320px; only one of width/height
137
+ provided → the other is derived from the source aspect ratio).
180
138
  height:
181
139
  type: integer
182
140
  min: 1
183
141
  max: 16384
184
- required: true
185
- description: "Target height in pixels (1-16384; width*height <= 16MP). Rounded down to an even number."
142
+ description: >-
143
+ Target height in pixels (1-16384; width*height <= 16MP). Rounded down to an
144
+ even number. Optional — see `width` for the omitted-default behaviour.
186
145
  fit:
187
146
  type: enum
188
147
  values: [max, crop, scale]
@@ -237,14 +196,18 @@ operation:
237
196
  type: integer
238
197
  min: 1
239
198
  max: 16384
240
- required: true
241
- description: "Target width in pixels (1-16384; width*height <= 16MP)."
199
+ description: >-
200
+ Target width in pixels (1-16384; width*height <= 16MP). Optional — when
201
+ omitted the server applies an aspect-preserving default (both omitted →
202
+ longest edge 320px; only one of width/height provided → the other is
203
+ derived from the source aspect ratio).
242
204
  height:
243
205
  type: integer
244
206
  min: 1
245
207
  max: 16384
246
- required: true
247
- description: "Target height in pixels (1-16384; width*height <= 16MP)."
208
+ description: >-
209
+ Target height in pixels (1-16384; width*height <= 16MP). Optional — see
210
+ `width` for the omitted-default behaviour.
248
211
  fit:
249
212
  type: enum
250
213
  values: [max, crop, scale]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@giveitsmaller/contracts",
3
- "version": "0.48.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",