@giveitsmaller/contracts 0.32.0 → 0.34.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 (411) hide show
  1. package/accepted-options/accepted-options.json +76 -8
  2. package/accepted-options/image-output-routes.json +185 -0
  3. package/availability/availability.json +408 -25
  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 +33 -1
  223. package/dist/openapi/models/OptionSchema.js +10 -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 +83 -8
  405. package/dist/operations/compress.js +58 -4
  406. package/dist/operations/compress.metadata.js +123 -5
  407. package/openapi/api.yaml +27 -1
  408. package/operation-capabilities/operation-capabilities.json +1 -21
  409. package/operations/schemas/compress.yaml +353 -37
  410. package/operations/schemas/convert.yaml +10 -1
  411. package/package.json +3 -1
@@ -312,26 +312,6 @@
312
312
  "video"
313
313
  ],
314
314
  "availability": "beta",
315
- "excludes": [
316
- {
317
- "availability": "stable",
318
- "constraint_id": "split.requires_chain_predecessor",
319
- "message": "split must follow a compress or convert operation.",
320
- "when": {
321
- "not": {
322
- "any": [
323
- {
324
- "opSelected": "compress"
325
- },
326
- {
327
- "opSelected": "convert"
328
- }
329
- ]
330
- }
331
- },
332
- "wire_code": "INVALID_OPERATION_ORDER"
333
- }
334
- ],
335
315
  "input": {
336
316
  "model": "single"
337
317
  },
@@ -491,5 +471,5 @@
491
471
  "isAnimated": "maybe"
492
472
  }
493
473
  },
494
- "schema_version": "2.94.0"
474
+ "schema_version": "2.97.0"
495
475
  }
@@ -33,28 +33,69 @@ operation:
33
33
  # dangling coming-soon values are dishonest at source; every other format
34
34
  # change is the convert operation's job (all stable). Re-add a target here
35
35
  # only when its compress+format canonicalization actually ships.
36
+ #
37
+ # ---- ROUTE-AWARE "OUTPUT" model (image-options Phase 0, tewB37Jg) ----
38
+ # The user-facing "Output" operation IS this compress op + output_format:
39
+ # the API routes by comparing the authored/resolved output_format to the
40
+ # input format — same_format (output_format == input, or `original`) runs
41
+ # the libcaesium OPTIMISER; format_change runs the convert TRANSCODER (the
42
+ # VcPeRWdD facade). Each option carries `honored_on: [<route>...]` declaring
43
+ # which route's worker reads it (absent ≡ all routes its depends_on admits;
44
+ # see FORMAT.md §"Route-aware Output model"). The derived per-(media, route,
45
+ # output_format) projection is accepted-options/image-output-routes.json.
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.
54
+ #
55
+ # The remaining PHASE 1 controls land availability:planned (ANTI-REGRESSION:
56
+ # no stable-flip until the worker honours it + API proves representability —
57
+ # plan §2.5; FE-hidden / API-422 until then). They are route-CONDITIONAL,
58
+ # which is why they ride the route-aware honored_on model:
59
+ # lossless (jpeg/webp) -> the worker `lossless` bool the API has never
60
+ # emitted (product-parked); planned, optimiser (same_format) route only.
61
+ # metadata: keep -> un-hardcode keep_metadata=false; planned value
62
+ # on the existing `metadata` enum.
63
+ # lossy (png) -> palette quantization (pngquant/imagequant-class);
64
+ # planned + licensing-gated by the lambdas spike — do NOT stable-flip
65
+ # until that confirms a permissive path.
36
66
  image_jpeg:
37
67
  mimes:
38
68
  - image/jpeg
69
+ # Resize-inside-Output (planned) shares thumbnail-image's 16MP output-area
70
+ # wall — the per-axis 16384 cap can't express it (FORMAT.md §max_output_pixels).
71
+ max_output_pixels: 16000000
39
72
  options:
40
73
  quality:
41
74
  type: integer
42
75
  min: 1
43
76
  max: 100
44
77
  default: 80
78
+ honored_on: [same_format]
45
79
  description: "Compression quality (1 = smallest file, 100 = best quality)."
46
80
  metadata:
47
81
  type: enum
48
- values: [all]
82
+ values: [all, keep]
49
83
  default: all
84
+ per_value_availability:
85
+ keep: { availability: planned }
86
+ honored_on: [same_format]
50
87
  description: >-
51
- Metadata handling. `all` = strip all EXIF/IPTC/XMP — the only supported
52
- behaviour (the compress worker always strips; preservation is not
53
- currently available).
88
+ Metadata handling. `all` = strip all EXIF/IPTC/XMP (default, the only
89
+ live behaviour — the compress worker hardcodes keep_metadata=false).
90
+ `keep` = preserve metadata — `planned` (the worker cannot preserve it
91
+ yet; un-hardcoding keep_metadata is the Phase 1 keep/strip toggle).
92
+ Optimiser (same_format) route — the format-change transcoder has no
93
+ metadata-preservation control today.
54
94
  progressive:
55
95
  type: boolean
56
96
  default: true
57
- description: "Enable progressive JPEG rendering (a low-quality preview renders first, then refines). JPEG only."
97
+ honored_on: [same_format]
98
+ description: "Enable progressive JPEG rendering (a low-quality preview renders first, then refines). JPEG only — the optimiser (same_format) route."
58
99
  output_format:
59
100
  type: enum
60
101
  values: [original, webp]
@@ -64,31 +105,76 @@ operation:
64
105
  WebP — the one live compress+format target (proven on staging). Other format
65
106
  changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
66
107
  See FORMAT.md.
108
+ lossless:
109
+ type: boolean
110
+ default: false
111
+ availability: planned
112
+ honored_on: [same_format]
113
+ description: >-
114
+ Encode losslessly (JPEG optimiser path). `planned` — the worker carries
115
+ a `lossless` bool the API has never emitted (product-parked: a lossless
116
+ output can be LARGER than lossy). Optimiser (same_format) route only.
117
+ width:
118
+ type: integer
119
+ min: 1
120
+ max: 16384
121
+ honored_on: [same_format, format_change]
122
+ description: >-
123
+ Resize-inside-Output: target width in pixels (1-16384; width*height <=
124
+ max_output_pixels). Resize the image as part of Output (replace semantics,
125
+ ONE transformed output) using the proven image resize engine (Lanczos,
126
+ shared with thumbnail-images) — it is NOT the derivative `thumbnail` op.
127
+ Optional; omit to keep the source dimensions.
128
+ height:
129
+ type: integer
130
+ min: 1
131
+ max: 16384
132
+ honored_on: [same_format, format_change]
133
+ description: "Resize-inside-Output: target height in pixels (1-16384; width*height <= max_output_pixels). Resize replaces the image (one output). Optional — see `width`."
134
+ fit:
135
+ type: enum
136
+ values: [max, crop, scale]
137
+ default: max
138
+ depends_on: { width: set, height: set, logic: or }
139
+ honored_on: [same_format, format_change]
140
+ description: >-
141
+ Resize mode. max = fit within bounds (preserves aspect ratio, no crop),
142
+ crop/scale = exact dimensions. Applies only when width or height is set,
143
+ on whichever Output route runs.
67
144
 
68
145
  image_png:
69
146
  mimes:
70
147
  - image/png
148
+ max_output_pixels: 16000000
71
149
  options:
72
150
  quality:
73
151
  type: integer
74
152
  min: 1
75
153
  max: 100
76
154
  default: 80
155
+ honored_on: [same_format]
77
156
  description: "Compression quality (1 = smallest file, 100 = best quality)."
78
157
  metadata:
79
158
  type: enum
80
- values: [all]
159
+ values: [all, keep]
81
160
  default: all
161
+ per_value_availability:
162
+ keep: { availability: planned }
163
+ honored_on: [same_format]
82
164
  description: >-
83
- Metadata handling. `all` = strip all EXIF/IPTC/XMP — the only supported
84
- behaviour (the compress worker always strips; preservation is not
85
- currently available).
165
+ Metadata handling. `all` = strip all EXIF/IPTC/XMP (default, the only
166
+ live behaviour — the compress worker hardcodes keep_metadata=false).
167
+ `keep` = preserve metadata — `planned` (the worker cannot preserve it
168
+ yet; un-hardcoding keep_metadata is the Phase 1 keep/strip toggle).
169
+ Optimiser (same_format) route — the format-change transcoder has no
170
+ metadata-preservation control today.
86
171
  optimization_level:
87
172
  type: integer
88
173
  min: 0
89
174
  max: 6
90
175
  default: 3
91
- description: "PNG optimization effort (0-6, oxipng). Higher = smaller file, slower encode. Default 3."
176
+ honored_on: [same_format]
177
+ description: "PNG optimization effort (0-6, oxipng). Higher = smaller file, slower encode. Default 3. Optimiser (same_format) route."
92
178
  output_format:
93
179
  type: enum
94
180
  values: [original, webp]
@@ -98,6 +184,44 @@ operation:
98
184
  WebP — the one live compress+format target (proven on staging). Other format
99
185
  changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
100
186
  See FORMAT.md.
187
+ lossy:
188
+ type: boolean
189
+ default: false
190
+ availability: planned
191
+ honored_on: [same_format]
192
+ description: >-
193
+ Lossy PNG palette quantization (pngquant/imagequant-class) — a large
194
+ saving for flat-colour PNGs. `planned` AND LICENSING-GATED: do not
195
+ stable-flip until the lambdas licensing spike confirms a permissive
196
+ quantizer path (libimagequant/pngquant is GPL-or-commercial). Optimiser
197
+ (same_format) route only.
198
+ width:
199
+ type: integer
200
+ min: 1
201
+ max: 16384
202
+ honored_on: [same_format, format_change]
203
+ description: >-
204
+ Resize-inside-Output: target width in pixels (1-16384; width*height <=
205
+ max_output_pixels). Resize the image as part of Output (replace semantics,
206
+ ONE transformed output) using the proven image resize engine (Lanczos,
207
+ shared with thumbnail-images) — it is NOT the derivative `thumbnail` op.
208
+ Optional; omit to keep the source dimensions.
209
+ height:
210
+ type: integer
211
+ min: 1
212
+ max: 16384
213
+ honored_on: [same_format, format_change]
214
+ description: "Resize-inside-Output: target height in pixels (1-16384; width*height <= max_output_pixels). Resize replaces the image (one output). Optional — see `width`."
215
+ fit:
216
+ type: enum
217
+ values: [max, crop, scale]
218
+ default: max
219
+ depends_on: { width: set, height: set, logic: or }
220
+ honored_on: [same_format, format_change]
221
+ description: >-
222
+ Resize mode. max = fit within bounds (preserves aspect ratio, no crop),
223
+ crop/scale = exact dimensions. Applies only when width or height is set,
224
+ on whichever Output route runs.
101
225
 
102
226
  image_avif:
103
227
  availability: beta
@@ -112,27 +236,36 @@ operation:
112
236
  # contract vocab today; tracked for the image-size-cap mechanism (F3).
113
237
  mimes:
114
238
  - image/avif
239
+ max_output_pixels: 16000000
115
240
  options:
116
241
  quality:
117
242
  type: integer
118
243
  min: 1
119
244
  max: 100
120
245
  default: 80
246
+ honored_on: [same_format]
121
247
  description: "Compression quality (1 = smallest file, 100 = best quality)."
122
248
  metadata:
123
249
  type: enum
124
- values: [all]
250
+ values: [all, keep]
125
251
  default: all
252
+ per_value_availability:
253
+ keep: { availability: planned }
254
+ honored_on: [same_format]
126
255
  description: >-
127
- Metadata handling. `all` = strip all EXIF/IPTC/XMP — the only supported
128
- behaviour (the compress worker always strips; preservation is not
129
- currently available).
256
+ Metadata handling. `all` = strip all EXIF/IPTC/XMP (default, the only
257
+ live behaviour — the compress worker hardcodes keep_metadata=false).
258
+ `keep` = preserve metadata — `planned` (the worker cannot preserve it
259
+ yet; un-hardcoding keep_metadata is the Phase 1 keep/strip toggle).
260
+ Optimiser (same_format) route — the format-change transcoder has no
261
+ metadata-preservation control today.
130
262
  avif_speed:
131
263
  type: integer
132
264
  min: 1
133
265
  max: 10
134
266
  default: 4
135
- description: "AVIF encode speed (1-10, ravif). Lower = smaller file, slower encode; higher = faster, larger. Default 4."
267
+ honored_on: [same_format]
268
+ description: "AVIF encode speed (1-10, ravif). Lower = smaller file, slower encode; higher = faster, larger. Default 4. Optimiser (same_format) route."
136
269
  output_format:
137
270
  type: enum
138
271
  values: [original, webp]
@@ -142,30 +275,174 @@ operation:
142
275
  WebP — the one live compress+format target (proven on staging). Other format
143
276
  changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
144
277
  See FORMAT.md.
278
+ width:
279
+ type: integer
280
+ min: 1
281
+ max: 16384
282
+ honored_on: [same_format, format_change]
283
+ description: >-
284
+ Resize-inside-Output: target width in pixels (1-16384; width*height <=
285
+ max_output_pixels). Resize the image as part of Output (replace semantics,
286
+ ONE transformed output) using the proven image resize engine (Lanczos,
287
+ shared with thumbnail-images) — it is NOT the derivative `thumbnail` op.
288
+ Optional; omit to keep the source dimensions.
289
+ height:
290
+ type: integer
291
+ min: 1
292
+ max: 16384
293
+ honored_on: [same_format, format_change]
294
+ description: "Resize-inside-Output: target height in pixels (1-16384; width*height <= max_output_pixels). Resize replaces the image (one output). Optional — see `width`."
295
+ fit:
296
+ type: enum
297
+ values: [max, crop, scale]
298
+ default: max
299
+ depends_on: { width: set, height: set, logic: or }
300
+ honored_on: [same_format, format_change]
301
+ description: >-
302
+ Resize mode. max = fit within bounds (preserves aspect ratio, no crop),
303
+ crop/scale = exact dimensions. Applies only when width or height is set,
304
+ on whichever Output route runs.
145
305
 
146
- image:
306
+ # webp split out of the former bundled image group: it is the one input that
307
+ # carries BOTH Resize (raster, proven in thumbnail-images) AND the optimiser
308
+ # `lossless` knob. gif/tiff (below) resize but have no lossless; svg is vector
309
+ # (no raster resize, no lossless) — see image_svg.
310
+ image_webp:
147
311
  mimes:
148
312
  - image/webp
149
- - image/gif
313
+ max_output_pixels: 16000000
314
+ options:
315
+ quality:
316
+ type: integer
317
+ min: 1
318
+ max: 100
319
+ default: 80
320
+ honored_on: [same_format]
321
+ description: "Compression quality (1 = smallest file, 100 = best quality)."
322
+ metadata:
323
+ type: enum
324
+ values: [all, keep]
325
+ default: all
326
+ per_value_availability:
327
+ keep: { availability: planned }
328
+ honored_on: [same_format]
329
+ description: >-
330
+ Metadata handling. `all` = strip all EXIF/IPTC/XMP (default, the only
331
+ live behaviour — the compress worker hardcodes keep_metadata=false).
332
+ `keep` = preserve metadata — `planned` (the worker cannot preserve it
333
+ yet; un-hardcoding keep_metadata is the Phase 1 keep/strip toggle).
334
+ Optimiser (same_format) route — the format-change transcoder has no
335
+ metadata-preservation control today.
336
+ output_format:
337
+ type: enum
338
+ values: [original, webp]
339
+ default: original
340
+ description: >-
341
+ Output format. original = keep input format (default); webp = recompress to
342
+ WebP — the one live compress+format target (proven on staging). Other format
343
+ changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
344
+ See FORMAT.md.
345
+ lossless:
346
+ type: boolean
347
+ default: false
348
+ availability: planned
349
+ honored_on: [same_format]
350
+ description: >-
351
+ Encode WebP losslessly (optimiser path). `planned` — the worker carries a
352
+ `lossless` bool the API has never emitted (product-parked: lossless can be
353
+ LARGER). Optimiser (same_format) route only.
354
+ width:
355
+ type: integer
356
+ min: 1
357
+ max: 16384
358
+ honored_on: [same_format, format_change]
359
+ description: >-
360
+ Resize-inside-Output: target width in pixels (1-16384; width*height <=
361
+ max_output_pixels). Resize the image as part of Output (replace semantics,
362
+ ONE transformed output) using the proven image resize engine (Lanczos,
363
+ shared with thumbnail-images) — it is NOT the derivative `thumbnail` op.
364
+ Optional; omit to keep the source dimensions.
365
+ height:
366
+ type: integer
367
+ min: 1
368
+ max: 16384
369
+ honored_on: [same_format, format_change]
370
+ description: "Resize-inside-Output: target height in pixels (1-16384; width*height <= max_output_pixels). Resize replaces the image (one output). Optional — see `width`."
371
+ fit:
372
+ type: enum
373
+ values: [max, crop, scale]
374
+ default: max
375
+ depends_on: { width: set, height: set, logic: or }
376
+ honored_on: [same_format, format_change]
377
+ description: >-
378
+ Resize mode. max = fit within bounds (preserves aspect ratio, no crop),
379
+ crop/scale = exact dimensions. Applies only when width or height is set,
380
+ on whichever Output route runs.
381
+
382
+ # svg is VECTOR: no raster resize (thumbnail-images does not list svg), and the
383
+ # optimiser `lossless` knob does not apply. SVG compression is SVGO; only
384
+ # quality/metadata/output_format carry. NO Resize / lossless / area cap here.
385
+ image_svg:
386
+ mimes:
150
387
  - image/svg+xml
388
+ options:
389
+ quality:
390
+ type: integer
391
+ min: 1
392
+ max: 100
393
+ default: 80
394
+ honored_on: [same_format]
395
+ description: "Compression quality (1 = smallest file, 100 = best quality)."
396
+ metadata:
397
+ type: enum
398
+ values: [all, keep]
399
+ default: all
400
+ per_value_availability:
401
+ keep: { availability: planned }
402
+ honored_on: [same_format]
403
+ description: >-
404
+ Metadata handling. `all` = strip all metadata (default, live). `keep` =
405
+ preserve metadata — `planned` (worker cannot preserve yet). Optimiser
406
+ (same_format) route.
407
+ output_format:
408
+ type: enum
409
+ values: [original, webp]
410
+ default: original
411
+ description: >-
412
+ Output format. original = keep input format (default); webp = recompress to
413
+ WebP. Other format changes are the convert operation's job. See FORMAT.md.
414
+
415
+ # gif/tiff: raster Resize is engine-proven (both are in thumbnail-images), but
416
+ # the optimiser `lossless` knob is WebP-only — not advertised here.
417
+ image:
418
+ mimes:
419
+ - image/gif
151
420
  - image/tiff
421
+ max_output_pixels: 16000000
152
422
  options:
153
423
  quality:
154
424
  type: integer
155
425
  min: 1
156
426
  max: 100
157
427
  default: 80
428
+ honored_on: [same_format]
158
429
  description: >-
159
430
  Compression quality (1 = smallest file, 100 = best quality). For animated
160
431
  GIF the worker honours this but real-world size reduction is typically small.
161
432
  metadata:
162
433
  type: enum
163
- values: [all]
434
+ values: [all, keep]
164
435
  default: all
436
+ per_value_availability:
437
+ keep: { availability: planned }
438
+ honored_on: [same_format]
165
439
  description: >-
166
- Metadata handling. `all` = strip all EXIF/IPTC/XMP — the only supported
167
- behaviour (the compress worker always strips; preservation is not
168
- currently available).
440
+ Metadata handling. `all` = strip all EXIF/IPTC/XMP (default, the only
441
+ live behaviour — the compress worker hardcodes keep_metadata=false).
442
+ `keep` = preserve metadata — `planned` (the worker cannot preserve it
443
+ yet; un-hardcoding keep_metadata is the Phase 1 keep/strip toggle).
444
+ Optimiser (same_format) route — the format-change transcoder has no
445
+ metadata-preservation control today.
169
446
  output_format:
170
447
  type: enum
171
448
  values: [original, webp]
@@ -175,6 +452,33 @@ operation:
175
452
  WebP — the one live compress+format target (proven on staging). Other format
176
453
  changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
177
454
  See FORMAT.md.
455
+ width:
456
+ type: integer
457
+ min: 1
458
+ max: 16384
459
+ honored_on: [same_format, format_change]
460
+ description: >-
461
+ Resize-inside-Output: target width in pixels (1-16384; width*height <=
462
+ max_output_pixels). Resize the image as part of Output (replace semantics,
463
+ ONE transformed output) using the proven image resize engine (Lanczos,
464
+ shared with thumbnail-images) — it is NOT the derivative `thumbnail` op.
465
+ Optional; omit to keep the source dimensions.
466
+ height:
467
+ type: integer
468
+ min: 1
469
+ max: 16384
470
+ honored_on: [same_format, format_change]
471
+ description: "Resize-inside-Output: target height in pixels (1-16384; width*height <= max_output_pixels). Resize replaces the image (one output). Optional — see `width`."
472
+ fit:
473
+ type: enum
474
+ values: [max, crop, scale]
475
+ default: max
476
+ depends_on: { width: set, height: set, logic: or }
477
+ honored_on: [same_format, format_change]
478
+ description: >-
479
+ Resize mode. max = fit within bounds (preserves aspect ratio, no crop),
480
+ crop/scale = exact dimensions. Applies only when width or height is set,
481
+ on whichever Output route runs.
178
482
 
179
483
  audio:
180
484
  mimes:
@@ -461,36 +765,48 @@ operation:
461
765
  document_pdf:
462
766
  mimes:
463
767
  - application/pdf
464
- # DOCUMENT-COMPRESS HONESTY (2026-06-20): the worker reads ONLY `quality`
465
- # and maps it to a Ghostscript preset (76-100=/prepress, 51-75=/printer,
466
- # 26-50=/ebook, 0-25=/screen) + a DPI-analysis fallback (compression-documents
467
- # pdf.rs, lambdas-confirmed). The per-format options (profile/colorspace/
468
- # pages/flatten_forms) are spec-defined but NOT yet read by the worker, so
469
- # they are tagged `availability: planned` (advertised-ahead; FE hides them
470
- # per the bare-planned-hide rule) rather than pruned — preserving the
471
- # designed feature set for a future build (hub ruling). Per ADR-0001 §1.4.
768
+ # DOCUMENT-COMPRESS (2026-06-22, Lw1LseYr): the worker honors `quality`
769
+ # (→ Ghostscript preset: 76-100=/prepress, 51-75=/printer, 26-50=/ebook,
770
+ # 0-25=/screen + a DPI-analysis fallback) PLUS three Acrobat-Pro PDF
771
+ # controls proven live on staging — `profile` (pins the GS preset),
772
+ # `grayscale` (force grayscale images), `image_dpi` (downsample images to a
773
+ # target DPI; worker rejects out-of-range as invalid_options). The
774
+ # detect-and-route behaviour (forms→qpdf preserve, signed→byte-identity
775
+ # passthrough) is internal — no contract surface. The remaining per-format
776
+ # options (`colorspace`/`pages`/`flatten_forms`) are spec-defined but NOT
777
+ # yet read by the worker, so they stay `availability: planned`
778
+ # (advertised-ahead; FE hides them per the bare-planned-hide rule) per
779
+ # ADR-0001 §1.4.
472
780
  options:
473
781
  quality:
474
782
  type: integer
475
783
  min: 1
476
784
  max: 100
477
785
  default: 50
478
- description: "Compression quality (1 = smallest, 100 = best). Maps to a document compression preset (the only worker-honored document option today)."
786
+ description: "Compression quality (1 = smallest, 100 = best). Maps to a Ghostscript preset. Overridden by `profile` when that is set."
479
787
  profile:
480
788
  type: enum
481
- values: [web, print, archive, max]
482
- default: web
483
- availability: planned
789
+ values: [screen, ebook, printer, prepress]
484
790
  description: >-
485
- Optimization profile. web = aggressive (downsample images, strip
486
- metadata), print = preserve quality, archive = PDF/A compliance,
487
- max = smallest file. `planned` — not yet read by the worker (use `quality`).
791
+ Ghostscript optimization preset, pinned directly (overrides the
792
+ quality→preset mapping). screen = lowest-res / smallest, ebook = mid,
793
+ printer = 300dpi, prepress = print-production. Optional — omit to let
794
+ `quality` drive the preset.
795
+ grayscale:
796
+ type: boolean
797
+ default: false
798
+ description: "Convert all images to grayscale (smaller output; discards colour). Worker-honored."
799
+ image_dpi:
800
+ type: integer
801
+ min: 72
802
+ max: 600
803
+ description: "Downsample images above this DPI (72–600 inclusive). Omit to keep the worker's DPI analysis. Out-of-range is rejected as invalid_options."
488
804
  colorspace:
489
805
  type: enum
490
806
  values: [unchanged, rgb, cmyk, grayscale]
491
807
  default: unchanged
492
808
  availability: planned
493
- description: "Output color space. `planned` — not yet read by the worker."
809
+ description: "Output color space. `planned` — not yet read by the worker (use `grayscale` for grayscale conversion)."
494
810
  pages:
495
811
  type: string
496
812
  availability: planned
@@ -26,6 +26,13 @@ operation:
26
26
  # (avif is also a valid OUTPUT via output_format — ravif encode.)
27
27
  image/avif: { availability: beta }
28
28
  image/heic: { availability: beta }
29
+ # convert.image is the TRANSCODER leg of the route-aware image "Output"
30
+ # model (FORMAT.md §"Route-aware Output model"): a format_change Output
31
+ # route (output_format != input) runs here. Its options carry
32
+ # `honored_on: [format_change]` so the merged per-(media, route,
33
+ # output_format) projection (accepted-options/image-output-routes.json)
34
+ # attributes them to the transcoder path — `background` is the canonical
35
+ # transparency→JPEG fill on format-change-to-jpeg, already live + stable.
29
36
  options:
30
37
  output_format:
31
38
  type: enum
@@ -38,11 +45,13 @@ operation:
38
45
  max: 100
39
46
  default: 85
40
47
  depends_on: { output_format: [jpeg, webp, avif] }
48
+ honored_on: [format_change]
41
49
  description: "Output quality for lossy formats"
42
50
  background:
43
51
  type: string
44
52
  depends_on: { output_format: jpeg }
45
- description: "Background colour (hex, e.g. '#ffffff') for transparent images converted to JPEG"
53
+ honored_on: [format_change]
54
+ description: "Background colour (hex, e.g. '#ffffff') for transparent images converted to JPEG (the format-change→JPEG alpha-flatten — Output's transparency fill control)."
46
55
 
47
56
  video:
48
57
  mimes:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@giveitsmaller/contracts",
3
- "version": "0.32.0",
3
+ "version": "0.34.0",
4
4
  "description": "Generated contract types for GISL (Give It Smaller)",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -27,6 +27,7 @@
27
27
  "./asyncapi/events.yaml": "./asyncapi/events.yaml",
28
28
  "./availability/availability.json": "./availability/availability.json",
29
29
  "./accepted-options/accepted-options.json": "./accepted-options/accepted-options.json",
30
+ "./accepted-options/image-output-routes.json": "./accepted-options/image-output-routes.json",
30
31
  "./operation-capabilities/operation-capabilities.json": "./operation-capabilities/operation-capabilities.json",
31
32
  "./operations/schemas/archive.yaml": "./operations/schemas/archive.yaml",
32
33
  "./operations/schemas/audio_overlay.yaml": "./operations/schemas/audio_overlay.yaml",
@@ -52,6 +53,7 @@
52
53
  "operations/schemas/",
53
54
  "availability/availability.json",
54
55
  "accepted-options/accepted-options.json",
56
+ "accepted-options/image-output-routes.json",
55
57
  "operation-capabilities/operation-capabilities.json"
56
58
  ],
57
59
  "scripts": {