@giveitsmaller/contracts 0.47.0 → 0.50.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 (476) hide show
  1. package/accepted-options/accepted-options.json +29 -53
  2. package/accepted-options/image-output-routes.json +20 -30
  3. package/asyncapi/events.yaml +32 -6
  4. package/availability/availability.json +94 -269
  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/CallbackEventType.d.ts +1 -1
  31. package/dist/openapi/models/CallbackEventType.js +1 -1
  32. package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
  33. package/dist/openapi/models/CapabilityCondition.js +1 -1
  34. package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
  35. package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
  36. package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
  37. package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
  38. package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
  39. package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
  40. package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
  41. package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
  42. package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
  43. package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
  44. package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
  45. package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
  46. package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
  47. package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
  48. package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
  49. package/dist/openapi/models/CapabilityConstraint.js +1 -1
  50. package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
  51. package/dist/openapi/models/CapabilityInputSpec.js +1 -1
  52. package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
  53. package/dist/openapi/models/CapabilityProduces.js +1 -1
  54. package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
  55. package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
  56. package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
  57. package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
  58. package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
  59. package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
  60. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  61. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  62. package/dist/openapi/models/CodegenSource.d.ts +1 -1
  63. package/dist/openapi/models/CodegenSource.js +1 -1
  64. package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
  65. package/dist/openapi/models/CodegenSourceInput.js +1 -1
  66. package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
  67. package/dist/openapi/models/CodegenSourceJob.js +1 -1
  68. package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
  69. package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
  70. package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
  71. package/dist/openapi/models/CodegenSourceOperation.js +1 -1
  72. package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
  73. package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
  74. package/dist/openapi/models/CompositionPlan.d.ts +1 -1
  75. package/dist/openapi/models/CompositionPlan.js +1 -1
  76. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  77. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  78. package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
  79. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  80. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  81. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  82. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  83. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  84. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  85. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  86. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  87. package/dist/openapi/models/ConnectionSource.js +1 -1
  88. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  89. package/dist/openapi/models/ContactRequest.js +1 -1
  90. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  91. package/dist/openapi/models/ContactSubject.js +1 -1
  92. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  93. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  94. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  95. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  96. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  97. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  98. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  99. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  100. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  101. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  102. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  103. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  104. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  105. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  106. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  107. package/dist/openapi/models/CreditTransaction.js +1 -1
  108. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  109. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  110. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  111. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  112. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  113. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  114. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  115. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  116. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  117. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  118. package/dist/openapi/models/Delivery.d.ts +1 -1
  119. package/dist/openapi/models/Delivery.js +1 -1
  120. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  121. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  122. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  123. package/dist/openapi/models/DeliveryPlan.js +1 -1
  124. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  125. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  126. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  127. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  128. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  129. package/dist/openapi/models/DeliverySelection.js +1 -1
  130. package/dist/openapi/models/DownloadBundle.d.ts +1 -1
  131. package/dist/openapi/models/DownloadBundle.js +1 -1
  132. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  133. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  134. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  135. package/dist/openapi/models/EndpointProjection.js +1 -1
  136. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  137. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  138. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  139. package/dist/openapi/models/EstimateQuality.js +1 -1
  140. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  141. package/dist/openapi/models/EstimateRange.js +1 -1
  142. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  143. package/dist/openapi/models/ExternalDestination.js +1 -1
  144. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  145. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  146. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  147. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  148. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  149. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  150. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  151. package/dist/openapi/models/ExternalImportToken.js +1 -1
  152. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  153. package/dist/openapi/models/ExternalSource.js +1 -1
  154. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  155. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  156. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  157. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  158. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  159. package/dist/openapi/models/FeatureViolation.js +1 -1
  160. package/dist/openapi/models/ForgotPasswordRequest.d.ts +1 -1
  161. package/dist/openapi/models/ForgotPasswordRequest.js +1 -1
  162. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  163. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  164. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  165. package/dist/openapi/models/JobDefinition.js +1 -1
  166. package/dist/openapi/models/JobDownload.d.ts +1 -1
  167. package/dist/openapi/models/JobDownload.js +1 -1
  168. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  169. package/dist/openapi/models/JobInputV2.js +1 -1
  170. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  171. package/dist/openapi/models/JobMediaClass.js +1 -1
  172. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  173. package/dist/openapi/models/JobOutputSource.js +1 -1
  174. package/dist/openapi/models/JobResponse.d.ts +1 -1
  175. package/dist/openapi/models/JobResponse.js +1 -1
  176. package/dist/openapi/models/JobStatus.d.ts +1 -1
  177. package/dist/openapi/models/JobStatus.js +1 -1
  178. package/dist/openapi/models/JobType.d.ts +1 -1
  179. package/dist/openapi/models/JobType.js +1 -1
  180. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  181. package/dist/openapi/models/LivenessResponse.js +1 -1
  182. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  183. package/dist/openapi/models/LoginUser200Response.js +1 -1
  184. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  185. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  186. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  187. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  188. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  189. package/dist/openapi/models/LoginUserRequest.js +1 -1
  190. package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
  191. package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
  192. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
  193. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
  194. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  195. package/dist/openapi/models/MetadataResponse.js +1 -1
  196. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  197. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  198. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  199. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  200. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  201. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  202. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  203. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  204. package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
  205. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  206. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  207. package/dist/openapi/models/MultiInputSource.js +1 -1
  208. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  209. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  210. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  211. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  212. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  213. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  214. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  215. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  216. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  217. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  218. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  219. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  220. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  221. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  222. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  223. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  224. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  225. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  226. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  227. package/dist/openapi/models/MultipartPartListing.js +1 -1
  228. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  229. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  230. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  231. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  232. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  233. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  234. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  235. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  236. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  237. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  238. package/dist/openapi/models/OperationCapability.d.ts +1 -1
  239. package/dist/openapi/models/OperationCapability.js +1 -1
  240. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  241. package/dist/openapi/models/OperationDefinition.js +1 -1
  242. package/dist/openapi/models/OperationDownload.d.ts +27 -4
  243. package/dist/openapi/models/OperationDownload.js +5 -1
  244. package/dist/openapi/models/OperationInputModel.d.ts +1 -1
  245. package/dist/openapi/models/OperationInputModel.js +1 -1
  246. package/dist/openapi/models/OperationResponse.d.ts +1 -1
  247. package/dist/openapi/models/OperationResponse.js +1 -1
  248. package/dist/openapi/models/OperationResult.d.ts +1 -1
  249. package/dist/openapi/models/OperationResult.js +1 -1
  250. package/dist/openapi/models/OperationResultMetadata.d.ts +1 -1
  251. package/dist/openapi/models/OperationResultMetadata.js +1 -1
  252. package/dist/openapi/models/OperationResultMetrics.d.ts +28 -5
  253. package/dist/openapi/models/OperationResultMetrics.js +5 -1
  254. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  255. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  256. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  257. package/dist/openapi/models/OperationStatus.js +1 -1
  258. package/dist/openapi/models/OperationType.d.ts +3 -3
  259. package/dist/openapi/models/OperationType.js +3 -3
  260. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  261. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  262. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  263. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  264. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  265. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  266. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  267. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  268. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  269. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  270. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  271. package/dist/openapi/models/OptionSchema.js +1 -1
  272. package/dist/openapi/models/OutputProperties.d.ts +1 -1
  273. package/dist/openapi/models/OutputProperties.js +1 -1
  274. package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
  275. package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
  276. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  277. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  278. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  279. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  280. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  281. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  282. package/dist/openapi/models/ProbePendingResponse.d.ts +1 -1
  283. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  284. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  285. package/dist/openapi/models/ProcessingClass.js +1 -1
  286. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  287. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  288. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  289. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  290. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  291. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  292. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  293. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  294. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  295. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  296. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  297. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  298. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  299. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  300. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  301. package/dist/openapi/models/ProcessingPlan.js +1 -1
  302. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  303. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  304. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  305. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  306. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  307. package/dist/openapi/models/ReadinessResponse.js +1 -1
  308. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  309. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  310. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  311. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  312. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  313. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  314. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  315. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  316. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  317. package/dist/openapi/models/RetryResponse.js +1 -1
  318. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  319. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  320. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  321. package/dist/openapi/models/SseCompletionBase.js +1 -1
  322. package/dist/openapi/models/SseEventType.d.ts +1 -1
  323. package/dist/openapi/models/SseEventType.js +1 -1
  324. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  325. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  326. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  327. package/dist/openapi/models/SseJobFailedData.js +1 -1
  328. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  329. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  330. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  331. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  332. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  333. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  334. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  335. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  336. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  337. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  338. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  339. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  340. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  341. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  342. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  343. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  344. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  345. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  346. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  347. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  348. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  349. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  350. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  351. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  352. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  353. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  354. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  355. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  356. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  357. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  358. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  359. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  360. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  361. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  362. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  363. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  364. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  365. package/dist/openapi/models/UploadFile403Response.js +1 -1
  366. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  367. package/dist/openapi/models/UploadFile422Response.js +1 -1
  368. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  369. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  370. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  371. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  372. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  373. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  374. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  375. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  376. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  377. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  378. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  379. package/dist/openapi/models/UploadResponse.js +1 -1
  380. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  381. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  382. package/dist/openapi/models/UploadSource.d.ts +1 -1
  383. package/dist/openapi/models/UploadSource.js +1 -1
  384. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  385. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  386. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  387. package/dist/openapi/models/UploadThresholds.js +1 -1
  388. package/dist/openapi/models/UserTier.d.ts +1 -1
  389. package/dist/openapi/models/UserTier.js +1 -1
  390. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  391. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  392. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  393. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  394. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  395. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  396. package/dist/openapi/models/WarningType.d.ts +1 -1
  397. package/dist/openapi/models/WarningType.js +1 -1
  398. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  399. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  400. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  401. package/dist/openapi/models/WebhookPayload.js +1 -1
  402. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  403. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  404. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  405. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  406. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  407. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  408. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  409. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  410. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  411. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  412. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  413. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  414. package/dist/openapi/models/WorkflowCreditSummary.d.ts +1 -1
  415. package/dist/openapi/models/WorkflowCreditSummary.js +1 -1
  416. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  417. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  418. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  419. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  420. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  421. package/dist/openapi/models/WorkflowEdge.js +1 -1
  422. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  423. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  424. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  425. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  426. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  427. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  428. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  429. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  430. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  431. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  432. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  433. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  434. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  435. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  436. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  437. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  438. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  439. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  440. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  441. package/dist/openapi/models/WorkflowSource.js +1 -1
  442. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  443. package/dist/openapi/models/WorkflowStatus.js +1 -1
  444. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  445. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  446. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  447. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  448. package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
  449. package/dist/openapi/models/WorkflowSummary.js +1 -1
  450. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  451. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  452. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  453. package/dist/openapi/models/WorkflowWarning.js +1 -1
  454. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  455. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  456. package/dist/openapi/runtime.d.ts +1 -1
  457. package/dist/openapi/runtime.js +1 -1
  458. package/dist/operations/compress.d.ts +27 -12
  459. package/dist/operations/compress.js +24 -0
  460. package/dist/operations/compress.metadata.js +15 -44
  461. package/dist/operations/convert.d.ts +3 -6
  462. package/dist/operations/convert.js +2 -5
  463. package/dist/operations/convert.metadata.js +1 -17
  464. package/dist/operations/image_watermark.metadata.js +0 -2
  465. package/dist/operations/text_watermark.metadata.js +0 -2
  466. package/dist/operations/thumbnail.d.ts +6 -24
  467. package/dist/operations/thumbnail.js +0 -12
  468. package/dist/operations/thumbnail.metadata.js +0 -33
  469. package/openapi/api.yaml +50 -10
  470. package/operation-capabilities/operation-capabilities.json +12 -2
  471. package/operations/schemas/compress.yaml +156 -146
  472. package/operations/schemas/convert.yaml +53 -52
  473. package/operations/schemas/image_watermark.yaml +19 -18
  474. package/operations/schemas/text_watermark.yaml +17 -17
  475. package/operations/schemas/thumbnail.yaml +40 -77
  476. package/package.json +1 -1
@@ -104,15 +104,23 @@ operation:
104
104
  automatically to hit the size budget, so this option is inactive.
105
105
  encoding_mode:
106
106
  type: enum
107
- values: [quality, target_size]
107
+ values: [quality, target_size, auto_quality]
108
108
  default: quality
109
+ # auto_quality flipped planned->stable 2026-06-30 on the lambdas staging
110
+ # proof (compression-image git-122a329, harness PR #294): the SSIM-target
111
+ # search is calibrated — the `good` preset measures ~0.95 across jpeg/webp/
112
+ # avif and the best/good/fair/low ladder is monotonic. All three
113
+ # encoding_mode values are now live (ticket PQMWCqfR; no ADR).
109
114
  honored_on: [same_format]
110
115
  description: >-
111
116
  Compression mode. `quality` = the `quality` slider drives the encode
112
117
  (default). `target_size` = automatically find the highest quality that
113
118
  fits a byte budget (set via `target_size_bytes`); if the budget can't be
114
119
  met even at the lowest quality, the closest result is returned, and the
115
- original is kept if re-encoding wouldn't be smaller.
120
+ original is kept if re-encoding wouldn't be smaller. `auto_quality` = hit
121
+ a named perceptual-quality target (set via `quality_preset`) and let the
122
+ worker pick the encoder quality that meets it — the perceptual twin of
123
+ `target_size` (which targets bytes); the result reports the chosen quality.
116
124
  target_size_bytes:
117
125
  type: integer
118
126
  min: 1024
@@ -124,6 +132,20 @@ operation:
124
132
  be met even at the lowest quality, the closest result is returned (the
125
133
  result reports the chosen quality and whether the target was met). Requires
126
134
  `encoding_mode: target_size`.
135
+ quality_preset:
136
+ type: enum
137
+ values: [best, good, fair, low]
138
+ default: good
139
+ depends_on: { encoding_mode: auto_quality }
140
+ honored_on: [same_format]
141
+ description: >-
142
+ Named perceptual-quality target for `encoding_mode: auto_quality`
143
+ (best > good > fair > low; `good` is the default). The worker runs a
144
+ perceptual-target search and picks the encoder quality that meets the
145
+ named tier — the wire carries the NAME only, so the tier→target mapping
146
+ stays worker-internal and calibration-tunable without a contract change.
147
+ Requires `encoding_mode: auto_quality`. The achieved perceptual score is
148
+ reported on the result as `metrics.measured_quality` (+ `metrics.quality_metric`).
127
149
  metadata:
128
150
  type: enum
129
151
  values: [strip, keep, all]
@@ -136,27 +158,11 @@ operation:
136
158
  preserve EXIF, colour profile, and XMP. `all` is a DEPRECATED alias of
137
159
  `strip` (kept for older callers; emits Deprecation/Sunset headers — migrate
138
160
  to `strip`). Any other value is rejected.
139
- keep_metadata:
140
- type: array
141
- items:
142
- # JSON-Schema `enum:` (not the DSL `type: enum`) on a string item: the
143
- # SDK operation-schema parser's valid array-item types are
144
- # {number,integer,float,string,object} — `type: enum` is rejected, so the
145
- # categories are carried as a JSON-Schema `enum` constraint on a string
146
- # item. Consumers (FE) read the allowed categories structurally from the
147
- # sidecar; SDK codegen sees a string array (the enum key is value-only) —
148
- # wire-identical (a JSON array of strings).
149
- type: string
150
- enum: [copyright, gps, date]
151
- uniqueItems: true
152
- availability: planned
153
- depends_on: { metadata: strip }
154
- honored_on: [same_format]
155
- description: >-
156
- Selectively keep only certain metadata categories and strip the rest —
157
- refines `metadata: strip`. Allowed categories: `copyright`, `gps`
158
- (location), `date` (capture time); combinable. `planned` — selective keep
159
- is not yet supported (use `metadata: keep` to preserve everything).
161
+ # keep_metadata (selective copyright/gps/date) REMOVED 2026-06-30 (hub honesty
162
+ # decision): the compress worker (libcaesium) does ALL-OR-NOTHING keep/strip
163
+ # only — no per-category control, and selective EXIF/XMP surgery is unscheduled
164
+ # (lambdas, M-L build). Use `metadata: keep` for all-or-nothing preservation.
165
+ # Re-add the selective primitive when that worker support is built + scheduled.
160
166
  progressive:
161
167
  type: boolean
162
168
  default: true
@@ -237,7 +243,7 @@ operation:
237
243
  that stripping metadata never silently shifts colours. `keep` (default) =
238
244
  preserve your colours: embed the ICC profile where the output format can
239
245
  carry one, otherwise convert to sRGB and bake the colours in so they survive
240
- (never a silent drop); `srgb` = convert to sRGB (also handles CMYK → sRGB);
246
+ (never a silent drop); `srgb` = convert to sRGB (transform pixels to sRGB, emit untagged — no embedded ICC, the web default; CMYK/grayscale best-effort);
241
247
  `strip` = drop the profile (smallest — only when the consumer manages colour
242
248
  itself).
243
249
  auto_orient:
@@ -262,7 +268,14 @@ operation:
262
268
  max: 100
263
269
  default: 80
264
270
  honored_on: [same_format]
265
- description: "Compression quality (1 = smallest file, 100 = best quality)."
271
+ description: >-
272
+ Compression quality (1-100). For PNG this is the SINGLE lossy/lossless
273
+ control: `quality` < 100 applies lossy palette quantization (imagequant —
274
+ licence-cleared for our server-side SaaS backend, `kkajDFXD`; the value is
275
+ the quantization level), while `quality: 100` keeps the PNG lossless (oxipng
276
+ optimisation only — tune the lossless effort via `optimization_level`).
277
+ 1 = smallest file, 100 = best quality / lossless. There is no separate
278
+ lossy/lossless toggle for PNG — it is purely quality-driven.
266
279
  metadata:
267
280
  type: enum
268
281
  values: [strip, keep, all]
@@ -275,27 +288,11 @@ operation:
275
288
  preserve EXIF, colour profile, and XMP. `all` is a DEPRECATED alias of
276
289
  `strip` (kept for older callers; emits Deprecation/Sunset headers — migrate
277
290
  to `strip`). Any other value is rejected.
278
- keep_metadata:
279
- type: array
280
- items:
281
- # JSON-Schema `enum:` (not the DSL `type: enum`) on a string item: the
282
- # SDK operation-schema parser's valid array-item types are
283
- # {number,integer,float,string,object} — `type: enum` is rejected, so the
284
- # categories are carried as a JSON-Schema `enum` constraint on a string
285
- # item. Consumers (FE) read the allowed categories structurally from the
286
- # sidecar; SDK codegen sees a string array (the enum key is value-only) —
287
- # wire-identical (a JSON array of strings).
288
- type: string
289
- enum: [copyright, gps, date]
290
- uniqueItems: true
291
- availability: planned
292
- depends_on: { metadata: strip }
293
- honored_on: [same_format]
294
- description: >-
295
- Selectively keep only certain metadata categories and strip the rest —
296
- refines `metadata: strip`. Allowed categories: `copyright`, `gps`
297
- (location), `date` (capture time); combinable. `planned` — selective keep
298
- is not yet supported (use `metadata: keep` to preserve everything).
291
+ # keep_metadata (selective copyright/gps/date) REMOVED 2026-06-30 (hub honesty
292
+ # decision): the compress worker (libcaesium) does ALL-OR-NOTHING keep/strip
293
+ # only — no per-category control, and selective EXIF/XMP surgery is unscheduled
294
+ # (lambdas, M-L build). Use `metadata: keep` for all-or-nothing preservation.
295
+ # Re-add the selective primitive when that worker support is built + scheduled.
299
296
  optimization_level:
300
297
  type: integer
301
298
  min: 0
@@ -319,14 +316,6 @@ operation:
319
316
  reporting the chosen format via the result `mime_type`. They are selection
320
317
  strategies, not concrete targets, and stay `planned` until supported. See
321
318
  FORMAT.md.
322
- lossy:
323
- type: boolean
324
- default: false
325
- availability: planned
326
- honored_on: [same_format]
327
- description: >-
328
- Lossy PNG palette quantization — a large saving for flat-colour PNGs.
329
- `planned` — not yet supported.
330
319
  width:
331
320
  type: integer
332
321
  min: 1
@@ -365,7 +354,7 @@ operation:
365
354
  that stripping metadata never silently shifts colours. `keep` (default) =
366
355
  preserve your colours: embed the ICC profile where the output format can
367
356
  carry one, otherwise convert to sRGB and bake the colours in so they survive
368
- (never a silent drop); `srgb` = convert to sRGB (also handles CMYK → sRGB);
357
+ (never a silent drop); `srgb` = convert to sRGB (transform pixels to sRGB, emit untagged — no embedded ICC, the web default; CMYK/grayscale best-effort);
369
358
  `strip` = drop the profile (smallest — only when the consumer manages colour
370
359
  itself).
371
360
  auto_orient:
@@ -380,9 +369,12 @@ operation:
380
369
  which can drop other (non-orientation) metadata even with `metadata: keep`.
381
370
 
382
371
  image_avif:
383
- availability: beta
384
- # avif INPUT decode shipped in the compress-image worker via libheif
385
- # (lambdas w34Taquf, #210). beta: live + opt-in, shape-stable.
372
+ # avif INPUT compress (libheif decode + ravif re-encode) is now GA-STABLE —
373
+ # flipped beta->stable 2026-06-30 on the lambdas attestation: decode+re-encode
374
+ # proven 1-46MP (quality / target_size / auto_quality all green), AND the
375
+ # large-image crash path is now guarded (#295, compression-image git-74b3161,
376
+ # digest-verified): inputs >~70MP return a clean non-retryable InvalidRequest
377
+ # instead of an OOM process-kill, so GA carries no crash path.
386
378
  # image/heic is intentionally NOT a compress input: compress is decode-only
387
379
  # and there is no HEIC encoder, so the worker rejects a declared image/heic
388
380
  # (FormatMismatch). heic stays on convert+thumbnail.
@@ -407,16 +399,25 @@ operation:
407
399
  automatically to hit the size budget, so this option is inactive.
408
400
  encoding_mode:
409
401
  type: enum
410
- values: [quality, target_size]
402
+ values: [quality, target_size, auto_quality]
411
403
  default: quality
404
+ # auto_quality flipped planned->stable 2026-06-30 on the lambdas staging
405
+ # proof (compression-image git-122a329, harness PR #294): the SSIM-target
406
+ # search is calibrated — the `good` preset measures ~0.95 across jpeg/webp/
407
+ # avif and the best/good/fair/low ladder is monotonic. All three
408
+ # encoding_mode values are now live (ticket PQMWCqfR; no ADR).
412
409
  honored_on: [same_format]
413
410
  description: >-
414
411
  Compression mode. `quality` = the `quality` slider drives the encode
415
412
  (default). `target_size` = automatically find the highest quality that
416
413
  fits a byte budget (set via `target_size_bytes`); if the budget can't be
417
414
  met even at the lowest quality, the closest result is returned, and the
418
- original is kept if re-encoding wouldn't be smaller. AVIF encoding is
419
- slower, so the search is bounded and may stop slightly above the budget.
415
+ original is kept if re-encoding wouldn't be smaller. `auto_quality` = hit
416
+ a named perceptual-quality target (set via `quality_preset`) and let the
417
+ worker pick the encoder quality that meets it — the perceptual twin of
418
+ `target_size` (which targets bytes); the result reports the chosen quality.
419
+ AVIF encoding is slower, so the search is bounded and may stop slightly
420
+ above the budget.
420
421
  target_size_bytes:
421
422
  type: integer
422
423
  min: 1024
@@ -428,6 +429,20 @@ operation:
428
429
  be met even at the lowest quality, the closest result is returned (the
429
430
  result reports the chosen quality and whether the target was met). Requires
430
431
  `encoding_mode: target_size`.
432
+ quality_preset:
433
+ type: enum
434
+ values: [best, good, fair, low]
435
+ default: good
436
+ depends_on: { encoding_mode: auto_quality }
437
+ honored_on: [same_format]
438
+ description: >-
439
+ Named perceptual-quality target for `encoding_mode: auto_quality`
440
+ (best > good > fair > low; `good` is the default). The worker runs a
441
+ perceptual-target search and picks the encoder quality that meets the
442
+ named tier — the wire carries the NAME only, so the tier→target mapping
443
+ stays worker-internal and calibration-tunable without a contract change.
444
+ Requires `encoding_mode: auto_quality`. The achieved perceptual score is
445
+ reported on the result as `metrics.measured_quality` (+ `metrics.quality_metric`).
431
446
  metadata:
432
447
  type: enum
433
448
  values: [strip, all]
@@ -495,14 +510,21 @@ operation:
495
510
  type: enum
496
511
  values: [keep, srgb, strip]
497
512
  default: keep
498
- availability: planned
499
513
  honored_on: [same_format, format_change]
500
514
  description: >-
501
515
  Colour-profile handling — a dedicated control, separate from `metadata` so
502
516
  that stripping metadata never silently shifts colours. `keep` (default) =
503
- preserve the embedded colour profile; `srgb` = convert to sRGB (also
504
- handles CMYK → sRGB); `strip` = drop the profile (smallest — only when the
505
- consumer manages colour itself). `planned` — not yet supported.
517
+ preserve your colours: embed the ICC profile where the output format can
518
+ carry one, otherwise convert to sRGB and bake the colours in so they survive
519
+ (never a silent drop — for AVIF the gamut is baked to sRGB); `srgb` = convert
520
+ to sRGB (transform pixels to sRGB, emit untagged — no embedded ICC, the web
521
+ default; CMYK/grayscale best-effort); `strip` = drop the profile (smallest —
522
+ only when the consumer manages colour itself). All three values are live on
523
+ compress AVIF — `srgb` flipped planned->stable 2026-06-30 on the lambdas
524
+ proof (wide-gamut-p3-icc.avif: srgb bakes untagged, whole-image RMSE 0.041 /
525
+ 92% pixels shifted vs strip). Note: on AVIF `keep` and `srgb` both bake the
526
+ gamut to sRGB by design, so keep_px == srgb_px; the proving inequality is
527
+ srgb != strip, which holds.
506
528
  auto_orient:
507
529
  type: boolean
508
530
  default: true
@@ -536,15 +558,23 @@ operation:
536
558
  automatically to hit the size budget, so this option is inactive.
537
559
  encoding_mode:
538
560
  type: enum
539
- values: [quality, target_size]
561
+ values: [quality, target_size, auto_quality]
540
562
  default: quality
563
+ # auto_quality flipped planned->stable 2026-06-30 on the lambdas staging
564
+ # proof (compression-image git-122a329, harness PR #294): the SSIM-target
565
+ # search is calibrated — the `good` preset measures ~0.95 across jpeg/webp/
566
+ # avif and the best/good/fair/low ladder is monotonic. All three
567
+ # encoding_mode values are now live (ticket PQMWCqfR; no ADR).
541
568
  honored_on: [same_format]
542
569
  description: >-
543
570
  Compression mode. `quality` = the `quality` slider drives the encode
544
571
  (default). `target_size` = automatically find the highest quality that
545
572
  fits a byte budget (set via `target_size_bytes`); if the budget can't be
546
573
  met even at the lowest quality, the closest result is returned, and the
547
- original is kept if re-encoding wouldn't be smaller.
574
+ original is kept if re-encoding wouldn't be smaller. `auto_quality` = hit
575
+ a named perceptual-quality target (set via `quality_preset`) and let the
576
+ worker pick the encoder quality that meets it — the perceptual twin of
577
+ `target_size` (which targets bytes); the result reports the chosen quality.
548
578
  target_size_bytes:
549
579
  type: integer
550
580
  min: 1024
@@ -556,6 +586,20 @@ operation:
556
586
  be met even at the lowest quality, the closest result is returned (the
557
587
  result reports the chosen quality and whether the target was met). Requires
558
588
  `encoding_mode: target_size`.
589
+ quality_preset:
590
+ type: enum
591
+ values: [best, good, fair, low]
592
+ default: good
593
+ depends_on: { encoding_mode: auto_quality }
594
+ honored_on: [same_format]
595
+ description: >-
596
+ Named perceptual-quality target for `encoding_mode: auto_quality`
597
+ (best > good > fair > low; `good` is the default). The worker runs a
598
+ perceptual-target search and picks the encoder quality that meets the
599
+ named tier — the wire carries the NAME only, so the tier→target mapping
600
+ stays worker-internal and calibration-tunable without a contract change.
601
+ Requires `encoding_mode: auto_quality`. The achieved perceptual score is
602
+ reported on the result as `metrics.measured_quality` (+ `metrics.quality_metric`).
559
603
  metadata:
560
604
  type: enum
561
605
  values: [strip, keep, all]
@@ -568,27 +612,11 @@ operation:
568
612
  preserve EXIF, colour profile, and XMP. `all` is a DEPRECATED alias of
569
613
  `strip` (kept for older callers; emits Deprecation/Sunset headers — migrate
570
614
  to `strip`). Any other value is rejected.
571
- keep_metadata:
572
- type: array
573
- items:
574
- # JSON-Schema `enum:` (not the DSL `type: enum`) on a string item: the
575
- # SDK operation-schema parser's valid array-item types are
576
- # {number,integer,float,string,object} — `type: enum` is rejected, so the
577
- # categories are carried as a JSON-Schema `enum` constraint on a string
578
- # item. Consumers (FE) read the allowed categories structurally from the
579
- # sidecar; SDK codegen sees a string array (the enum key is value-only) —
580
- # wire-identical (a JSON array of strings).
581
- type: string
582
- enum: [copyright, gps, date]
583
- uniqueItems: true
584
- availability: planned
585
- depends_on: { metadata: strip }
586
- honored_on: [same_format]
587
- description: >-
588
- Selectively keep only certain metadata categories and strip the rest —
589
- refines `metadata: strip`. Allowed categories: `copyright`, `gps`
590
- (location), `date` (capture time); combinable. `planned` — selective keep
591
- is not yet supported (use `metadata: keep` to preserve everything).
615
+ # keep_metadata (selective copyright/gps/date) REMOVED 2026-06-30 (hub honesty
616
+ # decision): the compress worker (libcaesium) does ALL-OR-NOTHING keep/strip
617
+ # only — no per-category control, and selective EXIF/XMP surgery is unscheduled
618
+ # (lambdas, M-L build). Use `metadata: keep` for all-or-nothing preservation.
619
+ # Re-add the selective primitive when that worker support is built + scheduled.
592
620
  output_format:
593
621
  type: enum
594
622
  values: [original, webp, auto, smallest]
@@ -647,18 +675,17 @@ operation:
647
675
  type: enum
648
676
  values: [keep, srgb, strip]
649
677
  default: keep
650
- per_value_availability:
651
- srgb: { availability: planned }
652
678
  honored_on: [same_format, format_change]
653
679
  description: >-
654
680
  Colour-profile handling — a dedicated control, separate from `metadata` so
655
681
  that stripping metadata never silently shifts colours. `keep` (default) =
656
682
  preserve your colours: embed the ICC profile where the output format can
657
683
  carry one, otherwise convert to sRGB and bake the colours in so they survive
658
- (never a silent drop); `srgb` = convert to sRGB (also handles CMYK → sRGB);
684
+ (never a silent drop); `srgb` = convert to sRGB (transform pixels to sRGB, emit untagged — no embedded ICC, the web default; CMYK/grayscale best-effort);
659
685
  `strip` = drop the profile (smallest — only when the consumer manages colour
660
- itself). On the WebP same-format route `srgb` is `planned` (the byte-level
661
- optimiser does not yet run the sRGB transform); `keep` and `strip` are live.
686
+ itself). All three values are live on the WebP same-format route — the sRGB
687
+ pixel transform is staging-proven (lambdas compression-image git-13b5000:
688
+ srgb output untagged + a real pixel shift vs strip).
662
689
  auto_orient:
663
690
  type: boolean
664
691
  default: true
@@ -677,13 +704,11 @@ operation:
677
704
  mimes:
678
705
  - image/svg+xml
679
706
  options:
680
- quality:
681
- type: integer
682
- min: 1
683
- max: 100
684
- default: 80
685
- honored_on: [same_format]
686
- description: "Compression quality (1 = smallest file, 100 = best quality)."
707
+ # No `quality`: compress SVG is SVG->SVG via SVGO (lossless vector optimise);
708
+ # `quality` is never passed to the worker, so a quality slider here is a no-op
709
+ # (removed — lambdas worker-code investigation, the SVG-quality ticket). Raster
710
+ # output (the webp facade route) goes through convert, which carries its own
711
+ # quality on convert.image_svg.
687
712
  metadata:
688
713
  type: enum
689
714
  values: [strip, all]
@@ -740,27 +765,11 @@ operation:
740
765
  preserve EXIF, colour profile, and XMP. `all` is a DEPRECATED alias of
741
766
  `strip` (kept for older callers; emits Deprecation/Sunset headers — migrate
742
767
  to `strip`). Any other value is rejected.
743
- keep_metadata:
744
- type: array
745
- items:
746
- # JSON-Schema `enum:` (not the DSL `type: enum`) on a string item: the
747
- # SDK operation-schema parser's valid array-item types are
748
- # {number,integer,float,string,object} — `type: enum` is rejected, so the
749
- # categories are carried as a JSON-Schema `enum` constraint on a string
750
- # item. Consumers (FE) read the allowed categories structurally from the
751
- # sidecar; SDK codegen sees a string array (the enum key is value-only) —
752
- # wire-identical (a JSON array of strings).
753
- type: string
754
- enum: [copyright, gps, date]
755
- uniqueItems: true
756
- availability: planned
757
- depends_on: { metadata: strip }
758
- honored_on: [same_format]
759
- description: >-
760
- Selectively keep only certain metadata categories and strip the rest —
761
- refines `metadata: strip`. Allowed categories: `copyright`, `gps`
762
- (location), `date` (capture time); combinable. `planned` — selective keep
763
- is not yet supported (use `metadata: keep` to preserve everything).
768
+ # keep_metadata (selective copyright/gps/date) REMOVED 2026-06-30 (hub honesty
769
+ # decision): the compress worker (libcaesium) does ALL-OR-NOTHING keep/strip
770
+ # only — no per-category control, and selective EXIF/XMP surgery is unscheduled
771
+ # (lambdas, M-L build). Use `metadata: keep` for all-or-nothing preservation.
772
+ # Re-add the selective primitive when that worker support is built + scheduled.
764
773
  output_format:
765
774
  type: enum
766
775
  values: [original, webp, auto, smallest]
@@ -809,14 +818,21 @@ operation:
809
818
  type: enum
810
819
  values: [keep, srgb, strip]
811
820
  default: keep
812
- availability: planned
821
+ per_value_availability:
822
+ srgb: { availability: planned }
813
823
  honored_on: [same_format, format_change]
814
824
  description: >-
815
825
  Colour-profile handling — a dedicated control, separate from `metadata` so
816
826
  that stripping metadata never silently shifts colours. `keep` (default) =
817
- preserve the embedded colour profile; `srgb` = convert to sRGB (also
818
- handles CMYK → sRGB); `strip` = drop the profile (smallest — only when the
819
- consumer manages colour itself). `planned` — not yet supported.
827
+ preserve your colours: embed the ICC profile where the output format can
828
+ carry one, otherwise convert to sRGB and bake the colours in so they survive
829
+ (never a silent drop — for TIFF inputs the gamut is baked to sRGB; GIF carries
830
+ no profile so this is a no-op); `srgb` = convert to sRGB (transform pixels to
831
+ sRGB, emit untagged — no embedded ICC, the web default; CMYK/grayscale
832
+ best-effort); `strip` = drop the profile (smallest — only when the consumer
833
+ manages colour itself). On compress `srgb` is `planned` for this group (the
834
+ sRGB pixel transform is wired for JPEG/PNG only so far); `keep` and `strip`
835
+ are live.
820
836
  auto_orient:
821
837
  type: boolean
822
838
  default: true
@@ -1178,13 +1194,11 @@ operation:
1178
1194
  max: 100
1179
1195
  default: 50
1180
1196
  description: "Compression quality (1 = smallest, 100 = best). The only document compression option supported today."
1181
- image_quality:
1182
- type: integer
1183
- min: 1
1184
- max: 100
1185
- default: 80
1186
- availability: planned
1187
- description: "Recompress embedded images at this quality level (1 = smallest, 100 = best). `planned` — not yet supported (use `quality`)."
1197
+ # image_quality REMOVED 2026-06-30 (hub honesty decision): redundant — the
1198
+ # zip-based document worker ALREADY recompresses embedded jpeg/png/webp/gif
1199
+ # via libcaesium, driven by the general `quality` option (capability is LIVE).
1200
+ # The separate `image_quality` knob was unwired (a planned no-op). Re-add only
1201
+ # if a distinct image-vs-document quality split is genuinely wanted (small wiring).
1188
1202
  strip_macros:
1189
1203
  type: boolean
1190
1204
  default: true
@@ -1214,13 +1228,11 @@ operation:
1214
1228
  max: 100
1215
1229
  default: 50
1216
1230
  description: "Compression quality (1 = smallest, 100 = best). The only document compression option supported today."
1217
- image_quality:
1218
- type: integer
1219
- min: 1
1220
- max: 100
1221
- default: 80
1222
- availability: planned
1223
- description: "Recompress embedded images at this quality level. `planned` — not yet supported (use `quality`)."
1231
+ # image_quality REMOVED 2026-06-30 (hub honesty decision): redundant — the
1232
+ # zip-based document worker ALREADY recompresses embedded jpeg/png/webp/gif
1233
+ # via libcaesium, driven by the general `quality` option (capability is LIVE).
1234
+ # The separate `image_quality` knob was unwired (a planned no-op). Re-add only
1235
+ # if a distinct image-vs-document quality split is genuinely wanted (small wiring).
1224
1236
  strip_metadata:
1225
1237
  type: boolean
1226
1238
  default: true
@@ -1243,13 +1255,11 @@ operation:
1243
1255
  max: 100
1244
1256
  default: 50
1245
1257
  description: "Compression quality (1 = smallest, 100 = best). The only document compression option supported today."
1246
- image_quality:
1247
- type: integer
1248
- min: 1
1249
- max: 100
1250
- default: 80
1251
- availability: planned
1252
- description: "Recompress embedded images at this quality level. `planned` — not yet supported (use `quality`)."
1258
+ # image_quality REMOVED 2026-06-30 (hub honesty decision): redundant — the
1259
+ # zip-based document worker ALREADY recompresses embedded jpeg/png/webp/gif
1260
+ # via libcaesium, driven by the general `quality` option (capability is LIVE).
1261
+ # The separate `image_quality` knob was unwired (a planned no-op). Re-add only
1262
+ # if a distinct image-vs-document quality split is genuinely wanted (small wiring).
1253
1263
  font_subsetting:
1254
1264
  type: boolean
1255
1265
  default: true