@giveitsmaller/contracts 0.35.0 → 0.36.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 (414) hide show
  1. package/accepted-options/accepted-options.json +58 -1
  2. package/accepted-options/image-output-routes.json +43 -10
  3. package/availability/availability.json +204 -18
  4. package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
  5. package/dist/openapi/models/AccountLimitEntry.js +1 -1
  6. package/dist/openapi/models/AccountLimits.d.ts +1 -1
  7. package/dist/openapi/models/AccountLimits.js +1 -1
  8. package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
  9. package/dist/openapi/models/AccountLimitsLimits.js +1 -1
  10. package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
  11. package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
  12. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  13. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  14. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  15. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  16. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  17. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  18. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  19. package/dist/openapi/models/AuthErrorType.js +1 -1
  20. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
  21. package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
  22. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  23. package/dist/openapi/models/AvailabilityValue.js +1 -1
  24. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  25. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  26. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  27. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  28. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  29. package/dist/openapi/models/CallbackEventType.js +1 -1
  30. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  31. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  32. package/dist/openapi/models/CompositionPlan.d.ts +1 -1
  33. package/dist/openapi/models/CompositionPlan.js +1 -1
  34. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  35. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  36. package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
  37. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  38. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  39. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  40. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  41. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  42. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  43. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  44. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  45. package/dist/openapi/models/ConnectionSource.js +1 -1
  46. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  47. package/dist/openapi/models/ContactRequest.js +1 -1
  48. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  49. package/dist/openapi/models/ContactSubject.js +1 -1
  50. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  51. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  52. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  53. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  54. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  55. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  56. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  57. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  58. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  59. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  60. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  61. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  62. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  63. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  64. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  65. package/dist/openapi/models/CreditTransaction.js +1 -1
  66. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  67. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  68. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  69. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  70. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  71. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  72. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  73. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  74. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  75. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  76. package/dist/openapi/models/Delivery.d.ts +1 -1
  77. package/dist/openapi/models/Delivery.js +1 -1
  78. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  79. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  80. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  81. package/dist/openapi/models/DeliveryPlan.js +1 -1
  82. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  83. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  84. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  85. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  86. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  87. package/dist/openapi/models/DeliverySelection.js +1 -1
  88. package/dist/openapi/models/DownloadBundle.d.ts +1 -1
  89. package/dist/openapi/models/DownloadBundle.js +1 -1
  90. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  91. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  92. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  93. package/dist/openapi/models/EndpointProjection.js +1 -1
  94. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  95. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  96. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  97. package/dist/openapi/models/EstimateQuality.js +1 -1
  98. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  99. package/dist/openapi/models/EstimateRange.js +1 -1
  100. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  101. package/dist/openapi/models/ExternalDestination.js +1 -1
  102. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  103. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  104. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  105. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  106. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  107. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  108. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  109. package/dist/openapi/models/ExternalImportToken.js +1 -1
  110. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  111. package/dist/openapi/models/ExternalSource.js +1 -1
  112. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  113. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  114. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  115. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  116. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  117. package/dist/openapi/models/FeatureViolation.js +1 -1
  118. package/dist/openapi/models/ForgotPasswordRequest.d.ts +1 -1
  119. package/dist/openapi/models/ForgotPasswordRequest.js +1 -1
  120. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  121. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  122. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  123. package/dist/openapi/models/JobDefinition.js +1 -1
  124. package/dist/openapi/models/JobDownload.d.ts +1 -1
  125. package/dist/openapi/models/JobDownload.js +1 -1
  126. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  127. package/dist/openapi/models/JobInputV2.js +1 -1
  128. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  129. package/dist/openapi/models/JobMediaClass.js +1 -1
  130. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  131. package/dist/openapi/models/JobOutputSource.js +1 -1
  132. package/dist/openapi/models/JobResponse.d.ts +1 -1
  133. package/dist/openapi/models/JobResponse.js +1 -1
  134. package/dist/openapi/models/JobStatus.d.ts +1 -1
  135. package/dist/openapi/models/JobStatus.js +1 -1
  136. package/dist/openapi/models/JobType.d.ts +1 -1
  137. package/dist/openapi/models/JobType.js +1 -1
  138. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  139. package/dist/openapi/models/LivenessResponse.js +1 -1
  140. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  141. package/dist/openapi/models/LoginUser200Response.js +1 -1
  142. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  143. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  144. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  145. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  146. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  147. package/dist/openapi/models/LoginUserRequest.js +1 -1
  148. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  149. package/dist/openapi/models/MetadataResponse.js +1 -1
  150. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  151. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  152. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  153. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  154. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  155. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  156. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  157. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  158. package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
  159. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  160. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  161. package/dist/openapi/models/MultiInputSource.js +1 -1
  162. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  163. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  164. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  165. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  166. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  167. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  168. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  169. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  170. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  171. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  172. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  173. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  174. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  175. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  176. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  177. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  178. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  179. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  180. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  181. package/dist/openapi/models/MultipartPartListing.js +1 -1
  182. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  183. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  184. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  185. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  186. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  187. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  188. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  189. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  190. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  191. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  192. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  193. package/dist/openapi/models/OperationDefinition.js +1 -1
  194. package/dist/openapi/models/OperationDownload.d.ts +1 -1
  195. package/dist/openapi/models/OperationDownload.js +1 -1
  196. package/dist/openapi/models/OperationInputModel.d.ts +1 -1
  197. package/dist/openapi/models/OperationInputModel.js +1 -1
  198. package/dist/openapi/models/OperationResponse.d.ts +1 -1
  199. package/dist/openapi/models/OperationResponse.js +1 -1
  200. package/dist/openapi/models/OperationResult.d.ts +1 -1
  201. package/dist/openapi/models/OperationResult.js +1 -1
  202. package/dist/openapi/models/OperationResultMetadata.d.ts +1 -1
  203. package/dist/openapi/models/OperationResultMetadata.js +1 -1
  204. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  205. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  206. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  207. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  208. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  209. package/dist/openapi/models/OperationStatus.js +1 -1
  210. package/dist/openapi/models/OperationType.d.ts +1 -1
  211. package/dist/openapi/models/OperationType.js +1 -1
  212. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  213. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  214. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  215. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  216. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  217. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  218. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  219. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  220. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  221. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  222. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  223. package/dist/openapi/models/OptionSchema.js +1 -1
  224. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  225. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  226. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  227. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  228. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  229. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  230. package/dist/openapi/models/ProbePendingResponse.d.ts +1 -1
  231. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  232. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  233. package/dist/openapi/models/ProcessingClass.js +1 -1
  234. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  235. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  236. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  237. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  238. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  239. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  240. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  241. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  242. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  243. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  244. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  245. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  246. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  247. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  248. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  249. package/dist/openapi/models/ProcessingPlan.js +1 -1
  250. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  251. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  252. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  253. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  254. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  255. package/dist/openapi/models/ReadinessResponse.js +1 -1
  256. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  257. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  258. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  259. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  260. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  261. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  262. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  263. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  264. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  265. package/dist/openapi/models/RetryResponse.js +1 -1
  266. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  267. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  268. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  269. package/dist/openapi/models/SseCompletionBase.js +1 -1
  270. package/dist/openapi/models/SseEventType.d.ts +1 -1
  271. package/dist/openapi/models/SseEventType.js +1 -1
  272. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  273. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  274. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  275. package/dist/openapi/models/SseJobFailedData.js +1 -1
  276. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  277. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  278. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  279. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  280. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  281. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  282. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  283. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  284. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  285. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  286. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  287. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  288. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  289. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  290. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  291. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  292. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  293. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  294. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  295. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  296. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  297. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  298. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  299. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  300. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  301. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  302. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  303. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  304. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  305. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  306. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  307. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  308. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  309. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  310. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  311. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  312. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  313. package/dist/openapi/models/UploadFile403Response.js +1 -1
  314. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  315. package/dist/openapi/models/UploadFile422Response.js +1 -1
  316. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  317. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  318. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  319. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  320. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  321. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  322. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  323. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  324. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  325. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  326. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  327. package/dist/openapi/models/UploadResponse.js +1 -1
  328. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  329. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  330. package/dist/openapi/models/UploadSource.d.ts +1 -1
  331. package/dist/openapi/models/UploadSource.js +1 -1
  332. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  333. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  334. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  335. package/dist/openapi/models/UploadThresholds.js +1 -1
  336. package/dist/openapi/models/UserTier.d.ts +1 -1
  337. package/dist/openapi/models/UserTier.js +1 -1
  338. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  339. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  340. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  341. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  342. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  343. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  344. package/dist/openapi/models/WarningType.d.ts +1 -1
  345. package/dist/openapi/models/WarningType.js +1 -1
  346. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  347. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  348. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  349. package/dist/openapi/models/WebhookPayload.js +1 -1
  350. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  351. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  352. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  353. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  354. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  355. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  356. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  357. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  358. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  359. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  360. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  361. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  362. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  363. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  364. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  365. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  366. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  367. package/dist/openapi/models/WorkflowEdge.js +1 -1
  368. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  369. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  370. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  371. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  372. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  373. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  374. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  375. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  376. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  377. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  378. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  379. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  380. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  381. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  382. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  383. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  384. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  385. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  386. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  387. package/dist/openapi/models/WorkflowSource.js +1 -1
  388. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  389. package/dist/openapi/models/WorkflowStatus.js +1 -1
  390. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  391. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  392. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  393. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  394. package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
  395. package/dist/openapi/models/WorkflowSummary.js +1 -1
  396. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  397. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  398. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  399. package/dist/openapi/models/WorkflowWarning.js +1 -1
  400. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  401. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  402. package/dist/openapi/runtime.d.ts +1 -1
  403. package/dist/openapi/runtime.js +1 -1
  404. package/dist/operations/compress.d.ts +18 -0
  405. package/dist/operations/compress.js +15 -0
  406. package/dist/operations/compress.metadata.js +33 -0
  407. package/dist/operations/convert.d.ts +21 -0
  408. package/dist/operations/convert.js +15 -0
  409. package/dist/operations/convert.metadata.js +25 -0
  410. package/openapi/api.yaml +1 -1
  411. package/operation-capabilities/operation-capabilities.json +1 -1
  412. package/operations/schemas/compress.yaml +152 -38
  413. package/operations/schemas/convert.yaml +80 -1
  414. package/package.json +1 -1
@@ -44,13 +44,16 @@ operation:
44
44
  # see FORMAT.md §"Route-aware Output model"). The derived per-(media, route,
45
45
  # output_format) projection is accepted-options/image-output-routes.json.
46
46
  #
47
- # RESIZE-INSIDE-OUTPUT ships STABLE (hub-directed fast-path, 2026-06-22):
48
- # width / height / fit + max_output_pixels — backed by the PROVEN image
49
- # resize engine (thumbnail-images Lanczos, 1-16384, 16MP cap; live), routed
50
- # onto the Output path. Resize is a REPLACE transform inside Output (ONE
51
- # transformed output) — NOT thumbnail's derivative/preview semantics;
52
- # thumbnail.yaml stays the preview op untouched. Flat keys keyed to the
53
- # Output (compress) op, matching thumbnail.yaml's resize shape.
47
+ # RESIZE-INSIDE-OUTPUT ships STABLE (hub-directed fast-path, 2026-06-22;
48
+ # engine corrected per API worker-verification n4CmaDE8, 2026-06-23):
49
+ # width / height / fit + max_output_pixels. The CONVERT worker is the image
50
+ # resize engine for the WHOLE Output op (image_convert.rs, Lanczos, 1-16384,
51
+ # 16MP cap, svg-reject; live #257) — the compress optimiser has NO resize.
52
+ # The API routes BOTH arms through convert (same_format = convert to the same
53
+ # token; format_change = convert to the target), so these keys are declared
54
+ # HERE (the facade entry) AND on convert.image (where the worker reads them +
55
+ # the API re-validates the rewritten op). REPLACE transform, ONE output —
56
+ # NOT thumbnail's derivative/preview semantics; thumbnail.yaml untouched.
54
57
  #
55
58
  # STABLE on the optimiser (same_format) route (all worker-proven 2026-06-23):
56
59
  # lossless (jpeg/webp) — worker honours the `lossless` bool, API emits it.
@@ -67,7 +70,7 @@ operation:
67
70
  image_jpeg:
68
71
  mimes:
69
72
  - image/jpeg
70
- # Resize-inside-Output (planned) shares thumbnail-image's 16MP output-area
73
+ # Resize-inside-Output shares the convert resize engine's 16MP output-area
71
74
  # wall — the per-axis 16384 cap can't express it (FORMAT.md §max_output_pixels).
72
75
  max_output_pixels: 16000000
73
76
  options:
@@ -76,8 +79,36 @@ operation:
76
79
  min: 1
77
80
  max: 100
78
81
  default: 80
82
+ depends_on: { encoding_mode: quality }
79
83
  honored_on: [same_format]
80
- description: "Compression quality (1 = smallest file, 100 = best quality)."
84
+ description: >-
85
+ Compression quality (1 = smallest file, 100 = best quality). Active in
86
+ `quality` mode (default); in `target_size` mode the encode-measure loop
87
+ owns quality, so this option is inactive.
88
+ encoding_mode:
89
+ type: enum
90
+ values: [quality, target_size]
91
+ default: quality
92
+ per_value_availability:
93
+ target_size: { availability: planned }
94
+ honored_on: [same_format]
95
+ description: >-
96
+ Compression mode (mirrors compress.video). `quality` = the `quality`
97
+ slider drives the encode (default, live). `target_size` = `planned` —
98
+ hit a byte budget via the worker's encode-measure-binary-search loop
99
+ (lambdas building; jpeg/webp/avif only). Optimiser (same_format) route.
100
+ target_size_bytes:
101
+ type: integer
102
+ min: 1024
103
+ availability: planned
104
+ depends_on: { encoding_mode: target_size }
105
+ honored_on: [same_format]
106
+ description: >-
107
+ Target output size in bytes (min 1024 = 1 KiB). `planned` — the image
108
+ encode-measure loop binary-searches quality to land at or under the
109
+ target; best-effort if the target is unreachable at min quality (the
110
+ result reports the chosen quality + whether the target was met).
111
+ Optimiser (same_format) route.
81
112
  metadata:
82
113
  type: enum
83
114
  values: [all, keep]
@@ -105,13 +136,16 @@ operation:
105
136
  lossless:
106
137
  type: boolean
107
138
  default: false
139
+ depends_on: { encoding_mode: quality }
108
140
  honored_on: [same_format]
109
141
  description: >-
110
142
  Lossless JPEG re-optimisation (optimiser path): optimises the Huffman
111
143
  tables WITHOUT re-encoding pixels — bit-preserving on the pixel data,
112
144
  no quality loss (it cannot recover detail a lossy JPEG already lost).
113
145
  STABLE — the compress-image worker honours the `lossless` bool
114
- (un-parked 2026-06-23). Optimiser (same_format) route only.
146
+ (un-parked 2026-06-23). Only in `quality` mode — incompatible with
147
+ `target_size` (the byte-budget loop is inherently lossy). Optimiser
148
+ (same_format) route only.
115
149
  width:
116
150
  type: integer
117
151
  min: 1
@@ -120,8 +154,9 @@ operation:
120
154
  description: >-
121
155
  Resize-inside-Output: target width in pixels (1-16384; width*height <=
122
156
  max_output_pixels). Resize the image as part of Output (replace semantics,
123
- ONE transformed output) using the proven image resize engine (Lanczos,
124
- shared with thumbnail-images) — it is NOT the derivative `thumbnail` op.
157
+ ONE transformed output) using the proven convert resize engine (Lanczos;
158
+ the API routes Output resize through the convert worker, BOTH routes —
159
+ the compress optimiser has no resize) — it is NOT the derivative `thumbnail` op.
125
160
  Optional; omit to keep the source dimensions.
126
161
  height:
127
162
  type: integer
@@ -136,9 +171,12 @@ operation:
136
171
  depends_on: { width: set, height: set, logic: or }
137
172
  honored_on: [same_format, format_change]
138
173
  description: >-
139
- Resize mode. max = fit within bounds (preserves aspect ratio, no crop),
140
- crop/scale = exact dimensions. Applies only when width or height is set,
141
- on whichever Output route runs.
174
+ Resize mode. `max` (default) = fit within bounds, preserving aspect ratio
175
+ and NEVER upscaling — it caps at the source dimensions. This IS the
176
+ "no-enlarge" behaviour (there is no separate `no_enlarge` flag — the
177
+ worker has no such key). `crop`/`scale` = exact dimensions (`scale`
178
+ deliberately enlarges past source). Applies only when width or height is
179
+ set, on whichever Output route runs.
142
180
 
143
181
  image_png:
144
182
  mimes:
@@ -197,8 +235,9 @@ operation:
197
235
  description: >-
198
236
  Resize-inside-Output: target width in pixels (1-16384; width*height <=
199
237
  max_output_pixels). Resize the image as part of Output (replace semantics,
200
- ONE transformed output) using the proven image resize engine (Lanczos,
201
- shared with thumbnail-images) — it is NOT the derivative `thumbnail` op.
238
+ ONE transformed output) using the proven convert resize engine (Lanczos;
239
+ the API routes Output resize through the convert worker, BOTH routes —
240
+ the compress optimiser has no resize) — it is NOT the derivative `thumbnail` op.
202
241
  Optional; omit to keep the source dimensions.
203
242
  height:
204
243
  type: integer
@@ -213,9 +252,12 @@ operation:
213
252
  depends_on: { width: set, height: set, logic: or }
214
253
  honored_on: [same_format, format_change]
215
254
  description: >-
216
- Resize mode. max = fit within bounds (preserves aspect ratio, no crop),
217
- crop/scale = exact dimensions. Applies only when width or height is set,
218
- on whichever Output route runs.
255
+ Resize mode. `max` (default) = fit within bounds, preserving aspect ratio
256
+ and NEVER upscaling — it caps at the source dimensions. This IS the
257
+ "no-enlarge" behaviour (there is no separate `no_enlarge` flag — the
258
+ worker has no such key). `crop`/`scale` = exact dimensions (`scale`
259
+ deliberately enlarges past source). Applies only when width or height is
260
+ set, on whichever Output route runs.
219
261
 
220
262
  image_avif:
221
263
  availability: beta
@@ -237,8 +279,37 @@ operation:
237
279
  min: 1
238
280
  max: 100
239
281
  default: 80
282
+ depends_on: { encoding_mode: quality }
240
283
  honored_on: [same_format]
241
- description: "Compression quality (1 = smallest file, 100 = best quality)."
284
+ description: >-
285
+ Compression quality (1 = smallest file, 100 = best quality). Active in
286
+ `quality` mode (default); in `target_size` mode the encode-measure loop
287
+ owns quality, so this option is inactive.
288
+ encoding_mode:
289
+ type: enum
290
+ values: [quality, target_size]
291
+ default: quality
292
+ per_value_availability:
293
+ target_size: { availability: planned }
294
+ honored_on: [same_format]
295
+ description: >-
296
+ Compression mode (mirrors compress.video). `quality` = the `quality`
297
+ slider drives the encode (default, live). `target_size` = `planned` —
298
+ hit a byte budget via the worker's encode-measure-binary-search loop
299
+ (lambdas building; jpeg/webp/avif only). AVIF encodes are slow, so the
300
+ loop caps iterations. Optimiser (same_format) route.
301
+ target_size_bytes:
302
+ type: integer
303
+ min: 1024
304
+ availability: planned
305
+ depends_on: { encoding_mode: target_size }
306
+ honored_on: [same_format]
307
+ description: >-
308
+ Target output size in bytes (min 1024 = 1 KiB). `planned` — the image
309
+ encode-measure loop binary-searches quality to land at or under the
310
+ target; best-effort if the target is unreachable at min quality (the
311
+ result reports the chosen quality + whether the target was met).
312
+ Optimiser (same_format) route.
242
313
  metadata:
243
314
  type: enum
244
315
  values: [all]
@@ -273,8 +344,9 @@ operation:
273
344
  description: >-
274
345
  Resize-inside-Output: target width in pixels (1-16384; width*height <=
275
346
  max_output_pixels). Resize the image as part of Output (replace semantics,
276
- ONE transformed output) using the proven image resize engine (Lanczos,
277
- shared with thumbnail-images) — it is NOT the derivative `thumbnail` op.
347
+ ONE transformed output) using the proven convert resize engine (Lanczos;
348
+ the API routes Output resize through the convert worker, BOTH routes —
349
+ the compress optimiser has no resize) — it is NOT the derivative `thumbnail` op.
278
350
  Optional; omit to keep the source dimensions.
279
351
  height:
280
352
  type: integer
@@ -289,9 +361,12 @@ operation:
289
361
  depends_on: { width: set, height: set, logic: or }
290
362
  honored_on: [same_format, format_change]
291
363
  description: >-
292
- Resize mode. max = fit within bounds (preserves aspect ratio, no crop),
293
- crop/scale = exact dimensions. Applies only when width or height is set,
294
- on whichever Output route runs.
364
+ Resize mode. `max` (default) = fit within bounds, preserving aspect ratio
365
+ and NEVER upscaling — it caps at the source dimensions. This IS the
366
+ "no-enlarge" behaviour (there is no separate `no_enlarge` flag — the
367
+ worker has no such key). `crop`/`scale` = exact dimensions (`scale`
368
+ deliberately enlarges past source). Applies only when width or height is
369
+ set, on whichever Output route runs.
295
370
 
296
371
  # webp split out of the former bundled image group: it is the one input that
297
372
  # carries BOTH Resize (raster, proven in thumbnail-images) AND the optimiser
@@ -307,8 +382,36 @@ operation:
307
382
  min: 1
308
383
  max: 100
309
384
  default: 80
385
+ depends_on: { encoding_mode: quality }
310
386
  honored_on: [same_format]
311
- description: "Compression quality (1 = smallest file, 100 = best quality)."
387
+ description: >-
388
+ Compression quality (1 = smallest file, 100 = best quality). Active in
389
+ `quality` mode (default); in `target_size` mode the encode-measure loop
390
+ owns quality, so this option is inactive.
391
+ encoding_mode:
392
+ type: enum
393
+ values: [quality, target_size]
394
+ default: quality
395
+ per_value_availability:
396
+ target_size: { availability: planned }
397
+ honored_on: [same_format]
398
+ description: >-
399
+ Compression mode (mirrors compress.video). `quality` = the `quality`
400
+ slider drives the encode (default, live). `target_size` = `planned` —
401
+ hit a byte budget via the worker's encode-measure-binary-search loop
402
+ (lambdas building; jpeg/webp/avif only). Optimiser (same_format) route.
403
+ target_size_bytes:
404
+ type: integer
405
+ min: 1024
406
+ availability: planned
407
+ depends_on: { encoding_mode: target_size }
408
+ honored_on: [same_format]
409
+ description: >-
410
+ Target output size in bytes (min 1024 = 1 KiB). `planned` — the image
411
+ encode-measure loop binary-searches quality to land at or under the
412
+ target; best-effort if the target is unreachable at min quality (the
413
+ result reports the chosen quality + whether the target was met).
414
+ Optimiser (same_format) route.
312
415
  metadata:
313
416
  type: enum
314
417
  values: [all, keep]
@@ -331,12 +434,15 @@ operation:
331
434
  lossless:
332
435
  type: boolean
333
436
  default: false
437
+ depends_on: { encoding_mode: quality }
334
438
  honored_on: [same_format]
335
439
  description: >-
336
440
  Encode WebP losslessly (optimiser path): a genuine lossless WebP encode.
337
441
  STABLE — the compress-image worker honours the `lossless` bool (un-parked
338
442
  2026-06-23). Note a lossless encode can be LARGER than a lossy one at the
339
- same visual quality. Optimiser (same_format) route only.
443
+ same visual quality. Only in `quality` mode — incompatible with
444
+ `target_size` (the byte-budget loop is inherently lossy). Optimiser
445
+ (same_format) route only.
340
446
  width:
341
447
  type: integer
342
448
  min: 1
@@ -345,8 +451,9 @@ operation:
345
451
  description: >-
346
452
  Resize-inside-Output: target width in pixels (1-16384; width*height <=
347
453
  max_output_pixels). Resize the image as part of Output (replace semantics,
348
- ONE transformed output) using the proven image resize engine (Lanczos,
349
- shared with thumbnail-images) — it is NOT the derivative `thumbnail` op.
454
+ ONE transformed output) using the proven convert resize engine (Lanczos;
455
+ the API routes Output resize through the convert worker, BOTH routes —
456
+ the compress optimiser has no resize) — it is NOT the derivative `thumbnail` op.
350
457
  Optional; omit to keep the source dimensions.
351
458
  height:
352
459
  type: integer
@@ -361,9 +468,12 @@ operation:
361
468
  depends_on: { width: set, height: set, logic: or }
362
469
  honored_on: [same_format, format_change]
363
470
  description: >-
364
- Resize mode. max = fit within bounds (preserves aspect ratio, no crop),
365
- crop/scale = exact dimensions. Applies only when width or height is set,
366
- on whichever Output route runs.
471
+ Resize mode. `max` (default) = fit within bounds, preserving aspect ratio
472
+ and NEVER upscaling — it caps at the source dimensions. This IS the
473
+ "no-enlarge" behaviour (there is no separate `no_enlarge` flag — the
474
+ worker has no such key). `crop`/`scale` = exact dimensions (`scale`
475
+ deliberately enlarges past source). Applies only when width or height is
476
+ set, on whichever Output route runs.
367
477
 
368
478
  # svg is VECTOR: no raster resize (thumbnail-images does not list svg), and the
369
479
  # optimiser `lossless` knob does not apply. SVG compression is SVGO; only
@@ -440,8 +550,9 @@ operation:
440
550
  description: >-
441
551
  Resize-inside-Output: target width in pixels (1-16384; width*height <=
442
552
  max_output_pixels). Resize the image as part of Output (replace semantics,
443
- ONE transformed output) using the proven image resize engine (Lanczos,
444
- shared with thumbnail-images) — it is NOT the derivative `thumbnail` op.
553
+ ONE transformed output) using the proven convert resize engine (Lanczos;
554
+ the API routes Output resize through the convert worker, BOTH routes —
555
+ the compress optimiser has no resize) — it is NOT the derivative `thumbnail` op.
445
556
  Optional; omit to keep the source dimensions.
446
557
  height:
447
558
  type: integer
@@ -456,9 +567,12 @@ operation:
456
567
  depends_on: { width: set, height: set, logic: or }
457
568
  honored_on: [same_format, format_change]
458
569
  description: >-
459
- Resize mode. max = fit within bounds (preserves aspect ratio, no crop),
460
- crop/scale = exact dimensions. Applies only when width or height is set,
461
- on whichever Output route runs.
570
+ Resize mode. `max` (default) = fit within bounds, preserving aspect ratio
571
+ and NEVER upscaling — it caps at the source dimensions. This IS the
572
+ "no-enlarge" behaviour (there is no separate `no_enlarge` flag — the
573
+ worker has no such key). `crop`/`scale` = exact dimensions (`scale`
574
+ deliberately enlarges past source). Applies only when width or height is
575
+ set, on whichever Output route runs.
462
576
 
463
577
  audio:
464
578
  mimes:
@@ -8,12 +8,16 @@ operation:
8
8
 
9
9
  mime_groups:
10
10
  image:
11
+ # svg is split into convert.image_svg (below): it rasterises to raster
12
+ # formats but CANNOT be raster-resized (worker rejects svg resize), so it
13
+ # must NOT sit in a group that declares width/height/fit — else the raw
14
+ # schema / availability / accepted-options advertise svg resize. Mirrors
15
+ # compress.image_svg.
11
16
  mimes:
12
17
  - image/jpeg
13
18
  - image/png
14
19
  - image/gif
15
20
  - image/webp
16
- - image/svg+xml
17
21
  - image/tiff
18
22
  - image/bmp
19
23
  - image/vnd.microsoft.icon
@@ -33,6 +37,20 @@ operation:
33
37
  # output_format) projection (accepted-options/image-output-routes.json)
34
38
  # attributes them to the transcoder path — `background` is the canonical
35
39
  # transparency→JPEG fill on format-change-to-jpeg, already live + stable.
40
+ #
41
+ # RESIZE: convert is the image resize ENGINE for the WHOLE Output op (both
42
+ # routes) — the compress optimiser has NO resize code (it never reads
43
+ # width/height/fit). The API carries width/height/fit onto the convert op
44
+ # for BOTH arms: format_change = convert to the requested format; same_format
45
+ # = convert to the SAME format token (the optimiser leg delegates resize to
46
+ # the transcoder — see compress.image resize comments). So width/height/fit
47
+ # are declared HERE (the worker reads them: image_convert.rs ->
48
+ # shared::image::resize_request_from_job, full validation + 16MP cap + svg
49
+ # REJECT + animation preserve; live #257). svg INPUT cannot be raster-resized
50
+ # (worker rejects as invalid_options) — the output-keyed projection lists
51
+ # resize on every format_change target, so it is INPUT-GATED: consumers
52
+ # cross-ref same_format[input] (svg has no resize) before offering it.
53
+ max_output_pixels: 16000000 # worker MAX_OUTPUT_PIXELS; parity with compress.image
36
54
  options:
37
55
  output_format:
38
56
  type: enum
@@ -60,6 +78,67 @@ operation:
60
78
  (e.g. `magenta`) to the white default, so the `pattern` rejects a
61
79
  non-hex value as `invalid_options` rather than advertising an inert
62
80
  free-form string (e2e staging-verified 2026-06-22).
81
+ width:
82
+ type: integer
83
+ min: 1
84
+ max: 16384
85
+ honored_on: [format_change]
86
+ description: >-
87
+ Resize-inside-Output: target width in pixels (1-16384; width*height <=
88
+ max_output_pixels). The convert worker resizes (Lanczos) before encode;
89
+ single transformed output. NOT honored for SVG input (the worker
90
+ rejects svg resize). Input-gated — see the resize comment above.
91
+ height:
92
+ type: integer
93
+ min: 1
94
+ max: 16384
95
+ honored_on: [format_change]
96
+ description: "Resize-inside-Output: target height in pixels (1-16384; width*height <= max_output_pixels). Not honored for SVG input. See `width`."
97
+ fit:
98
+ type: enum
99
+ values: [max, crop, scale]
100
+ default: max
101
+ depends_on: { width: set, height: set, logic: or }
102
+ honored_on: [format_change]
103
+ description: >-
104
+ Resize mode. `max` (default) = fit within bounds, preserving aspect ratio
105
+ and NEVER upscaling — it caps at the source dimensions. This IS the
106
+ "no-enlarge" behaviour (there is no separate `no_enlarge` flag — the
107
+ worker has no such key). `crop`/`scale` = exact dimensions (`scale`
108
+ deliberately enlarges past source). Applies only when width or height is set.
109
+
110
+ # svg is VECTOR: it converts (rasterises) to a raster format, but CANNOT be
111
+ # raster-resized — the convert worker rejects svg resize. Split out of
112
+ # convert.image so width/height/fit are STRUCTURALLY absent for svg input:
113
+ # the API validates an svg op against THIS group + rejects resize at create
114
+ # (not prose), and raw schema / availability / accepted-options never
115
+ # advertise svg resize. Mirrors compress.image_svg. NO resize, NO area cap.
116
+ image_svg:
117
+ mimes:
118
+ - image/svg+xml
119
+ options:
120
+ output_format:
121
+ type: enum
122
+ values: [jpeg, png, webp, avif, gif, tiff]
123
+ required: true
124
+ description: "Target raster format (SVG is rasterised, then encoded)."
125
+ quality:
126
+ type: integer
127
+ min: 1
128
+ max: 100
129
+ default: 85
130
+ depends_on: { output_format: [jpeg, webp, avif] }
131
+ honored_on: [format_change]
132
+ description: "Output quality for lossy formats"
133
+ background:
134
+ type: string
135
+ pattern: "^#[0-9a-fA-F]{6}$"
136
+ depends_on: { output_format: jpeg }
137
+ honored_on: [format_change]
138
+ description: >-
139
+ Background colour as a 6-digit hex (`#RRGGBB`) for transparent SVG
140
+ rasterised to JPEG (alpha-flatten). HEX ONLY — non-hex is rejected as
141
+ `invalid_options` (see convert.image.background).
63
142
 
64
143
  video:
65
144
  mimes:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@giveitsmaller/contracts",
3
- "version": "0.35.0",
3
+ "version": "0.36.0",
4
4
  "description": "Generated contract types for GISL (Give It Smaller)",
5
5
  "license": "MIT",
6
6
  "type": "module",