@giveitsmaller/contracts 0.33.0 → 0.35.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 +74 -8
  2. package/accepted-options/image-output-routes.json +183 -0
  3. package/availability/availability.json +360 -23
  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 +47 -1
  223. package/dist/openapi/models/OptionSchema.js +12 -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 +74 -3
  405. package/dist/operations/compress.js +52 -0
  406. package/dist/operations/compress.metadata.js +87 -4
  407. package/openapi/api.yaml +39 -1
  408. package/operation-capabilities/operation-capabilities.json +28 -1
  409. package/operations/schemas/compress.yaml +325 -36
  410. package/operations/schemas/convert.yaml +18 -1
  411. package/package.json +3 -1
@@ -33,28 +33,66 @@ 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
+ # STABLE on the optimiser (same_format) route (all worker-proven 2026-06-23):
56
+ # lossless (jpeg/webp) — worker honours the `lossless` bool, API emits it.
57
+ # metadata: keep — preserve EXIF/ICC/XMP (libcaesium; lambdas PR #260). keep
58
+ # is honored on libcaesium (jpeg/png/webp/gif/tiff) ONLY; AVIF (ravif) +
59
+ # SVG (SVGO) re-encode from pixels so `keep` is NOT in their enum (worker
60
+ # would reject it). metadata `all` (strip) is the universal default.
61
+ #
62
+ # Still availability:planned (ANTI-REGRESSION — no stable-flip until worker-
63
+ # proven; plan §2.5):
64
+ # lossy (png) -> palette quantization (pngquant/imagequant-class); planned +
65
+ # licensing-gated by the lambdas spike — do NOT stable-flip until that
66
+ # confirms a permissive path.
36
67
  image_jpeg:
37
68
  mimes:
38
69
  - image/jpeg
70
+ # Resize-inside-Output (planned) shares thumbnail-image's 16MP output-area
71
+ # wall — the per-axis 16384 cap can't express it (FORMAT.md §max_output_pixels).
72
+ max_output_pixels: 16000000
39
73
  options:
40
74
  quality:
41
75
  type: integer
42
76
  min: 1
43
77
  max: 100
44
78
  default: 80
79
+ honored_on: [same_format]
45
80
  description: "Compression quality (1 = smallest file, 100 = best quality)."
46
81
  metadata:
47
82
  type: enum
48
- values: [all]
83
+ values: [all, keep]
49
84
  default: all
85
+ honored_on: [same_format]
50
86
  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).
87
+ Metadata handling (optimiser/same_format route). `all` = strip all
88
+ EXIF/IPTC/XMP (default). `keep` = preserve EXIF/ICC/XMP — STABLE
89
+ (worker-proven, libcaesium; lambdas PR #260, staging round-trip +
90
+ unit test). Any other value is rejected as invalid_options.
54
91
  progressive:
55
92
  type: boolean
56
93
  default: true
57
- description: "Enable progressive JPEG rendering (a low-quality preview renders first, then refines). JPEG only."
94
+ honored_on: [same_format]
95
+ description: "Enable progressive JPEG rendering (a low-quality preview renders first, then refines). JPEG only — the optimiser (same_format) route."
58
96
  output_format:
59
97
  type: enum
60
98
  values: [original, webp]
@@ -64,31 +102,73 @@ operation:
64
102
  WebP — the one live compress+format target (proven on staging). Other format
65
103
  changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
66
104
  See FORMAT.md.
105
+ lossless:
106
+ type: boolean
107
+ default: false
108
+ honored_on: [same_format]
109
+ description: >-
110
+ Lossless JPEG re-optimisation (optimiser path): optimises the Huffman
111
+ tables WITHOUT re-encoding pixels — bit-preserving on the pixel data,
112
+ no quality loss (it cannot recover detail a lossy JPEG already lost).
113
+ STABLE — the compress-image worker honours the `lossless` bool
114
+ (un-parked 2026-06-23). Optimiser (same_format) route only.
115
+ width:
116
+ type: integer
117
+ min: 1
118
+ max: 16384
119
+ honored_on: [same_format, format_change]
120
+ description: >-
121
+ Resize-inside-Output: target width in pixels (1-16384; width*height <=
122
+ 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.
125
+ Optional; omit to keep the source dimensions.
126
+ height:
127
+ type: integer
128
+ min: 1
129
+ max: 16384
130
+ honored_on: [same_format, format_change]
131
+ description: "Resize-inside-Output: target height in pixels (1-16384; width*height <= max_output_pixels). Resize replaces the image (one output). Optional — see `width`."
132
+ fit:
133
+ type: enum
134
+ values: [max, crop, scale]
135
+ default: max
136
+ depends_on: { width: set, height: set, logic: or }
137
+ honored_on: [same_format, format_change]
138
+ 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.
67
142
 
68
143
  image_png:
69
144
  mimes:
70
145
  - image/png
146
+ max_output_pixels: 16000000
71
147
  options:
72
148
  quality:
73
149
  type: integer
74
150
  min: 1
75
151
  max: 100
76
152
  default: 80
153
+ honored_on: [same_format]
77
154
  description: "Compression quality (1 = smallest file, 100 = best quality)."
78
155
  metadata:
79
156
  type: enum
80
- values: [all]
157
+ values: [all, keep]
81
158
  default: all
159
+ honored_on: [same_format]
82
160
  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).
161
+ Metadata handling (optimiser/same_format route). `all` = strip all
162
+ EXIF/IPTC/XMP (default). `keep` = preserve EXIF/ICC/XMP — STABLE
163
+ (worker-proven, libcaesium; lambdas PR #260, staging round-trip +
164
+ unit test). Any other value is rejected as invalid_options.
86
165
  optimization_level:
87
166
  type: integer
88
167
  min: 0
89
168
  max: 6
90
169
  default: 3
91
- description: "PNG optimization effort (0-6, oxipng). Higher = smaller file, slower encode. Default 3."
170
+ honored_on: [same_format]
171
+ description: "PNG optimization effort (0-6, oxipng). Higher = smaller file, slower encode. Default 3. Optimiser (same_format) route."
92
172
  output_format:
93
173
  type: enum
94
174
  values: [original, webp]
@@ -98,6 +178,44 @@ operation:
98
178
  WebP — the one live compress+format target (proven on staging). Other format
99
179
  changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
100
180
  See FORMAT.md.
181
+ lossy:
182
+ type: boolean
183
+ default: false
184
+ availability: planned
185
+ honored_on: [same_format]
186
+ description: >-
187
+ Lossy PNG palette quantization (pngquant/imagequant-class) — a large
188
+ saving for flat-colour PNGs. `planned` AND LICENSING-GATED: do not
189
+ stable-flip until the lambdas licensing spike confirms a permissive
190
+ quantizer path (libimagequant/pngquant is GPL-or-commercial). Optimiser
191
+ (same_format) route only.
192
+ width:
193
+ type: integer
194
+ min: 1
195
+ max: 16384
196
+ honored_on: [same_format, format_change]
197
+ description: >-
198
+ Resize-inside-Output: target width in pixels (1-16384; width*height <=
199
+ 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.
202
+ Optional; omit to keep the source dimensions.
203
+ height:
204
+ type: integer
205
+ min: 1
206
+ max: 16384
207
+ honored_on: [same_format, format_change]
208
+ description: "Resize-inside-Output: target height in pixels (1-16384; width*height <= max_output_pixels). Resize replaces the image (one output). Optional — see `width`."
209
+ fit:
210
+ type: enum
211
+ values: [max, crop, scale]
212
+ default: max
213
+ depends_on: { width: set, height: set, logic: or }
214
+ honored_on: [same_format, format_change]
215
+ 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.
101
219
 
102
220
  image_avif:
103
221
  availability: beta
@@ -112,27 +230,32 @@ operation:
112
230
  # contract vocab today; tracked for the image-size-cap mechanism (F3).
113
231
  mimes:
114
232
  - image/avif
233
+ max_output_pixels: 16000000
115
234
  options:
116
235
  quality:
117
236
  type: integer
118
237
  min: 1
119
238
  max: 100
120
239
  default: 80
240
+ honored_on: [same_format]
121
241
  description: "Compression quality (1 = smallest file, 100 = best quality)."
122
242
  metadata:
123
243
  type: enum
124
244
  values: [all]
125
245
  default: all
246
+ honored_on: [same_format]
126
247
  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).
248
+ Metadata handling. `all` = strip all EXIF/IPTC/XMP (the only supported
249
+ value). `keep` is NOT offered for AVIF — ravif re-encodes from pixels
250
+ and cannot preserve metadata (the worker rejects `keep` as
251
+ invalid_options).
130
252
  avif_speed:
131
253
  type: integer
132
254
  min: 1
133
255
  max: 10
134
256
  default: 4
135
- description: "AVIF encode speed (1-10, ravif). Lower = smaller file, slower encode; higher = faster, larger. Default 4."
257
+ honored_on: [same_format]
258
+ description: "AVIF encode speed (1-10, ravif). Lower = smaller file, slower encode; higher = faster, larger. Default 4. Optimiser (same_format) route."
136
259
  output_format:
137
260
  type: enum
138
261
  values: [original, webp]
@@ -142,30 +265,164 @@ operation:
142
265
  WebP — the one live compress+format target (proven on staging). Other format
143
266
  changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
144
267
  See FORMAT.md.
268
+ width:
269
+ type: integer
270
+ min: 1
271
+ max: 16384
272
+ honored_on: [same_format, format_change]
273
+ description: >-
274
+ Resize-inside-Output: target width in pixels (1-16384; width*height <=
275
+ 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.
278
+ Optional; omit to keep the source dimensions.
279
+ height:
280
+ type: integer
281
+ min: 1
282
+ max: 16384
283
+ honored_on: [same_format, format_change]
284
+ description: "Resize-inside-Output: target height in pixels (1-16384; width*height <= max_output_pixels). Resize replaces the image (one output). Optional — see `width`."
285
+ fit:
286
+ type: enum
287
+ values: [max, crop, scale]
288
+ default: max
289
+ depends_on: { width: set, height: set, logic: or }
290
+ honored_on: [same_format, format_change]
291
+ 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.
145
295
 
146
- image:
296
+ # webp split out of the former bundled image group: it is the one input that
297
+ # carries BOTH Resize (raster, proven in thumbnail-images) AND the optimiser
298
+ # `lossless` knob. gif/tiff (below) resize but have no lossless; svg is vector
299
+ # (no raster resize, no lossless) — see image_svg.
300
+ image_webp:
147
301
  mimes:
148
302
  - image/webp
149
- - image/gif
303
+ max_output_pixels: 16000000
304
+ options:
305
+ quality:
306
+ type: integer
307
+ min: 1
308
+ max: 100
309
+ default: 80
310
+ honored_on: [same_format]
311
+ description: "Compression quality (1 = smallest file, 100 = best quality)."
312
+ metadata:
313
+ type: enum
314
+ values: [all, keep]
315
+ default: all
316
+ honored_on: [same_format]
317
+ description: >-
318
+ Metadata handling (optimiser/same_format route). `all` = strip all
319
+ EXIF/IPTC/XMP (default). `keep` = preserve EXIF/ICC/XMP — STABLE
320
+ (worker-proven, libcaesium; lambdas PR #260, staging round-trip +
321
+ unit test). Any other value is rejected as invalid_options.
322
+ output_format:
323
+ type: enum
324
+ values: [original, webp]
325
+ default: original
326
+ description: >-
327
+ Output format. original = keep input format (default); webp = recompress to
328
+ WebP — the one live compress+format target (proven on staging). Other format
329
+ changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
330
+ See FORMAT.md.
331
+ lossless:
332
+ type: boolean
333
+ default: false
334
+ honored_on: [same_format]
335
+ description: >-
336
+ Encode WebP losslessly (optimiser path): a genuine lossless WebP encode.
337
+ STABLE — the compress-image worker honours the `lossless` bool (un-parked
338
+ 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.
340
+ width:
341
+ type: integer
342
+ min: 1
343
+ max: 16384
344
+ honored_on: [same_format, format_change]
345
+ description: >-
346
+ Resize-inside-Output: target width in pixels (1-16384; width*height <=
347
+ 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.
350
+ Optional; omit to keep the source dimensions.
351
+ height:
352
+ type: integer
353
+ min: 1
354
+ max: 16384
355
+ honored_on: [same_format, format_change]
356
+ description: "Resize-inside-Output: target height in pixels (1-16384; width*height <= max_output_pixels). Resize replaces the image (one output). Optional — see `width`."
357
+ fit:
358
+ type: enum
359
+ values: [max, crop, scale]
360
+ default: max
361
+ depends_on: { width: set, height: set, logic: or }
362
+ honored_on: [same_format, format_change]
363
+ 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.
367
+
368
+ # svg is VECTOR: no raster resize (thumbnail-images does not list svg), and the
369
+ # optimiser `lossless` knob does not apply. SVG compression is SVGO; only
370
+ # quality/metadata/output_format carry. NO Resize / lossless / area cap here.
371
+ image_svg:
372
+ mimes:
150
373
  - image/svg+xml
374
+ options:
375
+ quality:
376
+ type: integer
377
+ min: 1
378
+ max: 100
379
+ default: 80
380
+ honored_on: [same_format]
381
+ description: "Compression quality (1 = smallest file, 100 = best quality)."
382
+ metadata:
383
+ type: enum
384
+ values: [all]
385
+ default: all
386
+ honored_on: [same_format]
387
+ description: >-
388
+ Metadata handling. `all` = strip all metadata (the only supported value).
389
+ `keep` is NOT offered for SVG — SVGO optimises the markup and cannot
390
+ preserve a metadata block (the worker rejects `keep` as invalid_options).
391
+ output_format:
392
+ type: enum
393
+ values: [original, webp]
394
+ default: original
395
+ description: >-
396
+ Output format. original = keep input format (default); webp = recompress to
397
+ WebP. Other format changes are the convert operation's job. See FORMAT.md.
398
+
399
+ # gif/tiff: raster Resize is engine-proven (both are in thumbnail-images), but
400
+ # the optimiser `lossless` knob is WebP-only — not advertised here.
401
+ image:
402
+ mimes:
403
+ - image/gif
151
404
  - image/tiff
405
+ max_output_pixels: 16000000
152
406
  options:
153
407
  quality:
154
408
  type: integer
155
409
  min: 1
156
410
  max: 100
157
411
  default: 80
412
+ honored_on: [same_format]
158
413
  description: >-
159
414
  Compression quality (1 = smallest file, 100 = best quality). For animated
160
415
  GIF the worker honours this but real-world size reduction is typically small.
161
416
  metadata:
162
417
  type: enum
163
- values: [all]
418
+ values: [all, keep]
164
419
  default: all
420
+ honored_on: [same_format]
165
421
  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).
422
+ Metadata handling (optimiser/same_format route). `all` = strip all
423
+ EXIF/IPTC/XMP (default). `keep` = preserve EXIF/ICC/XMP — STABLE
424
+ (worker-proven, libcaesium; lambdas PR #260, staging round-trip +
425
+ unit test). Any other value is rejected as invalid_options.
169
426
  output_format:
170
427
  type: enum
171
428
  values: [original, webp]
@@ -175,6 +432,33 @@ operation:
175
432
  WebP — the one live compress+format target (proven on staging). Other format
176
433
  changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
177
434
  See FORMAT.md.
435
+ width:
436
+ type: integer
437
+ min: 1
438
+ max: 16384
439
+ honored_on: [same_format, format_change]
440
+ description: >-
441
+ Resize-inside-Output: target width in pixels (1-16384; width*height <=
442
+ 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.
445
+ Optional; omit to keep the source dimensions.
446
+ height:
447
+ type: integer
448
+ min: 1
449
+ max: 16384
450
+ honored_on: [same_format, format_change]
451
+ description: "Resize-inside-Output: target height in pixels (1-16384; width*height <= max_output_pixels). Resize replaces the image (one output). Optional — see `width`."
452
+ fit:
453
+ type: enum
454
+ values: [max, crop, scale]
455
+ default: max
456
+ depends_on: { width: set, height: set, logic: or }
457
+ honored_on: [same_format, format_change]
458
+ 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.
178
462
 
179
463
  audio:
180
464
  mimes:
@@ -238,18 +522,19 @@ operation:
238
522
  trim_start:
239
523
  type: float
240
524
  min: 0
241
- availability: planned
242
525
  description: >
243
- Trim from beginning in seconds. Gated `planned` (qZI5EK9j):
244
- no compression worker implements per-clip trim yet, so the
245
- server returns `feature_not_available` rather than accepting
246
- and silently ignoring it. Flips to `stable` when a worker
247
- lands; to trim today, chain a `split` op.
526
+ Trim from beginning in seconds (absent = from the start). STABLE
527
+ (qZI5EK9j) — the compress-audio worker cuts the clip before encoding
528
+ (input-side ffmpeg `-ss`/`-t`; lambdas PR #259), SAME FROM-END
529
+ semantic as compress.video / convert / merge: the kept clip is
530
+ [`trim_start`, input_duration − `trim_end`].
248
531
  trim_end:
249
532
  type: float
250
533
  min: 0
251
- availability: planned
252
- description: "Trim from end in seconds. Gated `planned` (qZI5EK9j) — see `trim_start`."
534
+ description: >
535
+ Trim from end in seconds (absent = to the end). Removes this many
536
+ seconds from the end; with `trim_start` the kept clip is
537
+ [`trim_start`, input_duration − `trim_end`]. STABLE — see `trim_start`.
253
538
 
254
539
  video:
255
540
  mimes:
@@ -445,18 +730,22 @@ operation:
445
730
  trim_start:
446
731
  type: float
447
732
  min: 0
448
- availability: planned
449
733
  description: >
450
- Trim from beginning in seconds. Gated `planned` (qZI5EK9j):
451
- no compression worker implements per-clip trim yet, so the
452
- server returns `feature_not_available` rather than accepting
453
- and silently ignoring it. Flips to `stable` when a worker
454
- lands; to trim today, chain a `split` op.
734
+ Trim from beginning in seconds (absent = from the start). STABLE
735
+ (qZI5EK9j) — the compress-video worker cuts the clip before encoding
736
+ (input-side ffmpeg `-ss`/`-t`; lambdas PR #258), SAME FROM-END
737
+ semantic as convert/merge: the kept clip is [`trim_start`,
738
+ input_duration − `trim_end`]. SHORT-FORM only — for long-form video
739
+ the server returns `feature_not_available` (trim a short clip, or
740
+ chain a `split`); see the compress.video.trim.longform constraint.
455
741
  trim_end:
456
742
  type: float
457
743
  min: 0
458
- availability: planned
459
- description: "Trim from end in seconds. Gated `planned` (qZI5EK9j) — see `trim_start`."
744
+ description: >
745
+ Trim from end in seconds (absent = to the end). Removes this many
746
+ seconds from the end; with `trim_start` the kept clip is
747
+ [`trim_start`, input_duration − `trim_end`]. STABLE — see
748
+ `trim_start` (short-form only; long-form → `feature_not_available`).
460
749
 
461
750
  document_pdf:
462
751
  mimes:
@@ -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,21 @@ 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
52
+ pattern: "^#[0-9a-fA-F]{6}$"
44
53
  depends_on: { output_format: jpeg }
45
- description: "Background colour (hex, e.g. '#ffffff') for transparent images converted to JPEG"
54
+ honored_on: [format_change]
55
+ description: >-
56
+ Background colour as a 6-digit hex (`#RRGGBB`, e.g. `#ffffff`) for
57
+ transparent images converted to JPEG (the format-change→JPEG
58
+ alpha-flatten — Output's transparency fill control). HEX ONLY: the
59
+ worker honours only `#RRGGBB` and silently drops a CSS named colour
60
+ (e.g. `magenta`) to the white default, so the `pattern` rejects a
61
+ non-hex value as `invalid_options` rather than advertising an inert
62
+ free-form string (e2e staging-verified 2026-06-22).
46
63
 
47
64
  video:
48
65
  mimes:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@giveitsmaller/contracts",
3
- "version": "0.33.0",
3
+ "version": "0.35.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": {