@giveitsmaller/contracts 0.40.0 → 0.42.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 (435) hide show
  1. package/accepted-options/accepted-options.json +77 -7
  2. package/accepted-options/image-output-routes.json +13 -13
  3. package/availability/availability.json +539 -150
  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 +24 -1
  195. package/dist/openapi/models/OperationDownload.js +5 -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 +3 -3
  211. package/dist/openapi/models/OperationType.js +3 -3
  212. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  213. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  214. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  215. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  216. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  217. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  218. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  219. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  220. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  221. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  222. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  223. package/dist/openapi/models/OptionSchema.js +1 -1
  224. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  225. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  226. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  227. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  228. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  229. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  230. package/dist/openapi/models/ProbePendingResponse.d.ts +1 -1
  231. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  232. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  233. package/dist/openapi/models/ProcessingClass.js +1 -1
  234. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  235. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  236. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  237. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  238. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  239. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  240. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  241. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  242. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  243. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  244. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  245. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  246. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  247. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  248. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  249. package/dist/openapi/models/ProcessingPlan.js +1 -1
  250. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  251. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  252. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  253. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  254. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  255. package/dist/openapi/models/ReadinessResponse.js +1 -1
  256. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  257. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  258. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  259. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  260. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  261. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  262. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  263. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  264. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  265. package/dist/openapi/models/RetryResponse.js +1 -1
  266. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  267. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  268. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  269. package/dist/openapi/models/SseCompletionBase.js +1 -1
  270. package/dist/openapi/models/SseEventType.d.ts +1 -1
  271. package/dist/openapi/models/SseEventType.js +1 -1
  272. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  273. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  274. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  275. package/dist/openapi/models/SseJobFailedData.js +1 -1
  276. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  277. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  278. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  279. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  280. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  281. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  282. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  283. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  284. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  285. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  286. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  287. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  288. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  289. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  290. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  291. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  292. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  293. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  294. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  295. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  296. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  297. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  298. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  299. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  300. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  301. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  302. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  303. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  304. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  305. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  306. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  307. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  308. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  309. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  310. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  311. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  312. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  313. package/dist/openapi/models/UploadFile403Response.js +1 -1
  314. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  315. package/dist/openapi/models/UploadFile422Response.js +1 -1
  316. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  317. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  318. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  319. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  320. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  321. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  322. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  323. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  324. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  325. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  326. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  327. package/dist/openapi/models/UploadResponse.js +1 -1
  328. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  329. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  330. package/dist/openapi/models/UploadSource.d.ts +1 -1
  331. package/dist/openapi/models/UploadSource.js +1 -1
  332. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  333. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  334. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  335. package/dist/openapi/models/UploadThresholds.js +1 -1
  336. package/dist/openapi/models/UserTier.d.ts +1 -1
  337. package/dist/openapi/models/UserTier.js +1 -1
  338. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  339. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  340. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  341. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  342. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  343. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  344. package/dist/openapi/models/WarningType.d.ts +1 -1
  345. package/dist/openapi/models/WarningType.js +1 -1
  346. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  347. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  348. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  349. package/dist/openapi/models/WebhookPayload.js +1 -1
  350. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  351. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  352. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  353. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  354. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  355. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  356. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  357. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  358. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  359. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  360. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  361. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  362. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  363. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  364. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  365. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  366. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  367. package/dist/openapi/models/WorkflowEdge.js +1 -1
  368. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  369. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  370. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  371. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  372. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  373. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  374. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  375. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  376. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  377. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  378. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  379. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  380. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  381. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  382. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  383. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  384. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  385. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  386. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  387. package/dist/openapi/models/WorkflowSource.js +1 -1
  388. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  389. package/dist/openapi/models/WorkflowStatus.js +1 -1
  390. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  391. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  392. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  393. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  394. package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
  395. package/dist/openapi/models/WorkflowSummary.js +1 -1
  396. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  397. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  398. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  399. package/dist/openapi/models/WorkflowWarning.js +1 -1
  400. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  401. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  402. package/dist/openapi/runtime.d.ts +1 -1
  403. package/dist/openapi/runtime.js +1 -1
  404. package/dist/operations/audio_overlay.metadata.js +2 -2
  405. package/dist/operations/compress.metadata.js +0 -5
  406. package/dist/operations/convert.metadata.js +0 -2
  407. package/dist/operations/image_watermark.d.ts +36 -0
  408. package/dist/operations/image_watermark.js +24 -0
  409. package/dist/operations/image_watermark.metadata.js +47 -1
  410. package/dist/operations/split.metadata.js +1 -1
  411. package/dist/operations/text_watermark.d.ts +62 -0
  412. package/dist/operations/text_watermark.js +42 -0
  413. package/dist/operations/text_watermark.metadata.js +82 -0
  414. package/dist/operations/thumbnail.d.ts +19 -0
  415. package/dist/operations/thumbnail.js +12 -0
  416. package/dist/operations/thumbnail.metadata.js +29 -0
  417. package/dist/operations/video_watermark.metadata.js +1 -1
  418. package/openapi/api.yaml +22 -3
  419. package/operation-capabilities/operation-capabilities.json +1 -1
  420. package/operations/schemas/archive.yaml +1 -1
  421. package/operations/schemas/audio_overlay.yaml +9 -11
  422. package/operations/schemas/audio_to_video.yaml +7 -11
  423. package/operations/schemas/audio_watermark.yaml +1 -5
  424. package/operations/schemas/compress.yaml +322 -399
  425. package/operations/schemas/convert.yaml +68 -83
  426. package/operations/schemas/custom_luma.yaml +6 -11
  427. package/operations/schemas/image_watermark.yaml +166 -14
  428. package/operations/schemas/merge.yaml +5 -5
  429. package/operations/schemas/passthrough.yaml +4 -4
  430. package/operations/schemas/split.yaml +22 -31
  431. package/operations/schemas/text_watermark.yaml +262 -4
  432. package/operations/schemas/thumbnail.yaml +73 -3
  433. package/operations/schemas/video_text_watermark.yaml +9 -13
  434. package/operations/schemas/video_watermark.yaml +16 -21
  435. package/package.json +1 -1
@@ -81,12 +81,9 @@ operation:
81
81
  honored_on: [format_change]
82
82
  description: >-
83
83
  Background colour as a 6-digit hex (`#RRGGBB`, e.g. `#ffffff`) for
84
- transparent images converted to JPEG (the format-change→JPEG
85
- alpha-flatten — Output's transparency fill control). HEX ONLY: the
86
- worker honours only `#RRGGBB` and silently drops a CSS named colour
87
- (e.g. `magenta`) to the white default, so the `pattern` rejects a
88
- non-hex value as `invalid_options` rather than advertising an inert
89
- free-form string (e2e staging-verified 2026-06-22).
84
+ transparent images converted to JPEG (the alpha-flatten fill colour
85
+ when converting to JPEG). HEX ONLY: a non-hex value (e.g. a CSS named
86
+ colour) is rejected rather than silently falling back.
90
87
  metadata:
91
88
  type: enum
92
89
  values: [strip, keep]
@@ -94,32 +91,26 @@ operation:
94
91
  availability: planned
95
92
  honored_on: [format_change]
96
93
  description: >-
97
- Metadata handling on the format-change (convert/transcoder) route.
98
- `strip` = remove all EXIF/IPTC/XMP (default), `keep` = preserve. `planned`
99
- — the convert worker re-encodes from pixels and does not yet preserve
100
- metadata across a format change, so the API returns feature_not_available
101
- (rather than "Unknown option" on a format-change request — e2e/api flagged
102
- 2026-06-23). This is a new (planned) surface, so it carries no deprecated
103
- `all` alias — unlike compress.image.metadata, which keeps `all` for its
104
- existing callers. Stable-flip gated on lambdas proving convert-route
105
- metadata preservation; the honoured target subset may narrow (avif/heic
106
- targets re-encode and cannot keep).
94
+ Metadata handling across a format change. `strip` = remove all
95
+ EXIF/IPTC/XMP (default), `keep` = preserve. `planned` — metadata is not
96
+ yet preserved across a format change. The honoured target subset may
97
+ narrow (avif/heic targets are re-encoded and cannot keep metadata).
107
98
  width:
108
99
  type: integer
109
100
  min: 1
110
101
  max: 16384
111
102
  honored_on: [format_change]
112
103
  description: >-
113
- Resize-inside-Output: target width in pixels (1-16384; width*height <=
114
- max_output_pixels). The convert worker resizes (Lanczos) before encode;
115
- single transformed output. NOT honored for SVG input (the worker
116
- rejects svg resize). Input-gated — see the resize comment above.
104
+ Target width in pixels (1-16384; width × height must not exceed the
105
+ group's maximum output area). Resizes the image before encoding (one
106
+ transformed output). NOT honored for SVG input. Optional; omit to keep
107
+ the source dimensions.
117
108
  height:
118
109
  type: integer
119
110
  min: 1
120
111
  max: 16384
121
112
  honored_on: [format_change]
122
- description: "Resize-inside-Output: target height in pixels (1-16384; width*height <= max_output_pixels). Not honored for SVG input. See `width`."
113
+ description: "Target height in pixels (1-16384; width × height must not exceed the group's maximum output area). Not honored for SVG input. See `width`."
123
114
  fit:
124
115
  type: enum
125
116
  values: [max, crop, scale]
@@ -127,11 +118,11 @@ operation:
127
118
  depends_on: { width: set, height: set, logic: or }
128
119
  honored_on: [format_change]
129
120
  description: >-
130
- Resize mode. `max` (default) = fit within bounds, preserving aspect ratio
131
- and NEVER upscaling — it caps at the source dimensions. This IS the
132
- "no-enlarge" behaviour (there is no separate `no_enlarge` flag — the
133
- worker has no such key). `crop`/`scale` = exact dimensions (`scale`
134
- deliberately enlarges past source). Applies only when width or height is set.
121
+ Resize mode. `max` (default) = fit within the given bounds, preserving
122
+ aspect ratio and never upscaling (caps at the source dimensions — this is
123
+ the "no-enlarge" behaviour). `crop`/`scale` = exact dimensions (`scale`
124
+ deliberately enlarges past the source). Applies only when width or height
125
+ is set.
135
126
  color_profile:
136
127
  type: enum
137
128
  values: [keep, srgb, strip]
@@ -139,22 +130,21 @@ operation:
139
130
  availability: planned
140
131
  honored_on: [format_change]
141
132
  description: >-
142
- ICC colour-profile handling on the transcoder (format-change) route —
143
- mirrors compress.image.color_profile (its own control, decoupled from
144
- metadata). `keep` (default) = preserve; `srgb` = convert to sRGB
145
- (incl. CMYK→sRGB); `strip` = drop. `planned` — the convert worker
146
- re-encodes from pixels and does not yet preserve/convert the profile.
147
- Declared HERE so the API re-validates the rewritten Output convert op.
133
+ Colour-profile handling — a dedicated control, separate from `metadata`
134
+ so that stripping metadata never silently shifts colours. `keep`
135
+ (default) = preserve the embedded colour profile; `srgb` = convert to
136
+ sRGB (also handles CMYK → sRGB); `strip` = drop the profile. `planned` —
137
+ not yet supported.
148
138
  auto_orient:
149
139
  type: boolean
150
140
  default: true
151
- availability: planned
152
141
  honored_on: [format_change]
153
142
  description: >-
154
- Bake EXIF orientation into the pixels on the transcoder (format-change)
155
- route — mirrors compress.image.auto_orient. `planned` — the convert worker
156
- does not yet apply the orientation transform. Declared HERE so the API
157
- re-validates the rewritten Output convert op.
143
+ Bake EXIF orientation into the pixels (honour the camera/device rotation
144
+ tag) so the output displays upright everywhere, then drop the
145
+ now-redundant orientation tag. Default `true`; no-op for inputs without
146
+ an orientation tag. The format-change re-encodes from pixels, so other
147
+ (non-orientation) metadata is not carried across.
158
148
 
159
149
  # svg is VECTOR: it converts (rasterises) to a raster format, but CANNOT be
160
150
  # raster-resized — the convert worker rejects svg resize. Split out of
@@ -186,8 +176,8 @@ operation:
186
176
  honored_on: [format_change]
187
177
  description: >-
188
178
  Background colour as a 6-digit hex (`#RRGGBB`) for transparent SVG
189
- rasterised to JPEG (alpha-flatten). HEX ONLY — non-hex is rejected as
190
- `invalid_options` (see convert.image.background).
179
+ rasterised to JPEG (alpha-flatten). HEX ONLY — a non-hex value is
180
+ rejected (see convert.image.background).
191
181
 
192
182
  # gif is animated raster: it converts to a STILL image (first frame / rasterise —
193
183
  # the existing image targets, stable) AND — NEW, planned — to VIDEO (mp4/webm):
@@ -215,12 +205,10 @@ operation:
215
205
  Target format. The still-image targets (jpeg/png/webp/avif/gif/tiff) take
216
206
  the first frame / rasterise. `mp4` / `webm` are the GIF→VIDEO transcode
217
207
  targets — the animated GIF becomes a muted, play-once video (`mp4` =
218
- H.264 / yuv420p / +faststart, plays everywhere; `webm` = VP9, smaller).
219
- STABLE — worker-proven on staging (lambdas PR #268, deployed git-6783cb9:
220
- gif→mp4 ~70% smaller / gif→webm ~84% smaller, valid containers +
221
- worker-set Content-Type, real decode-every-frame transcode). GIFs are
222
- silent (no audio stream); the GIF infinite-loop becomes a playback
223
- attribute (`<video loop>`) the player sets, NOT baked into the file.
208
+ H.264, plays everywhere; `webm` = VP9, smaller), typically far smaller
209
+ than the original GIF. GIFs are silent (no audio stream); the GIF
210
+ infinite-loop becomes a playback attribute (`<video loop>`) the player
211
+ sets, NOT baked into the file.
224
212
  quality:
225
213
  type: integer
226
214
  min: 1
@@ -231,7 +219,7 @@ operation:
231
219
  description: >-
232
220
  Output quality for the lossy STILL-IMAGE targets (jpeg/webp/avif). The
233
221
  video targets (mp4/webm) use a sensible default encode quality in v1 —
234
- there is no exposed CRF knob yet (planned-first; may be added later).
222
+ there is no exposed CRF knob yet (may be added later).
235
223
  background:
236
224
  type: string
237
225
  pattern: "^#[0-9a-fA-F]{6}$"
@@ -239,8 +227,8 @@ operation:
239
227
  honored_on: [format_change]
240
228
  description: >-
241
229
  Background colour as a 6-digit hex (`#RRGGBB`) for a transparent GIF
242
- flattened to JPEG (alpha-flatten). HEX ONLY — non-hex is rejected as
243
- `invalid_options` (see convert.image.background).
230
+ flattened to JPEG (alpha-flatten). HEX ONLY — a non-hex value is
231
+ rejected (see convert.image.background).
244
232
  metadata:
245
233
  type: enum
246
234
  values: [strip, keep]
@@ -248,25 +236,27 @@ operation:
248
236
  availability: planned
249
237
  honored_on: [format_change]
250
238
  description: >-
251
- Metadata handling on the format-change route (still-image targets).
252
- `planned` — mirrors convert.image.metadata (the convert worker does not
253
- yet preserve metadata across a format change). The video targets carry no
239
+ Metadata handling for the still-image targets. `planned` — metadata is
240
+ not yet preserved across a format change. The video targets carry no
254
241
  EXIF/IPTC/XMP.
255
242
  width:
256
243
  type: integer
257
244
  min: 1
258
245
  max: 16384
246
+ depends_on: { output_format: [jpeg, png, webp, avif, gif, tiff] }
259
247
  honored_on: [format_change]
260
248
  description: >-
261
- Resize-inside-Output: target width in pixels (1-16384; width*height <=
262
- max_output_pixels). Applies to the still-image targets; for the planned
263
- mp4/webm video targets, resize applicability is settled at the worker flip.
249
+ Target width in pixels (1-16384; width × height must not exceed the
250
+ group's maximum output area). Scoped to the STILL-IMAGE targets only —
251
+ resizing while transcoding to the mp4/webm video targets is not yet
252
+ supported, so width/height are not accepted for the video targets.
264
253
  height:
265
254
  type: integer
266
255
  min: 1
267
256
  max: 16384
257
+ depends_on: { output_format: [jpeg, png, webp, avif, gif, tiff] }
268
258
  honored_on: [format_change]
269
- description: "Resize-inside-Output: target height in pixels (1-16384; width*height <= max_output_pixels). See `width`."
259
+ description: "Target height in pixels (1-16384; width × height must not exceed the group's maximum output area). Scoped to the still-image targets — see `width`."
270
260
  fit:
271
261
  type: enum
272
262
  values: [max, crop, scale]
@@ -276,7 +266,8 @@ operation:
276
266
  description: >-
277
267
  Resize mode. `max` (default) = fit within bounds, preserving aspect ratio
278
268
  and never upscaling; `crop`/`scale` = exact dimensions. Applies only when
279
- width or height is set.
269
+ width or height is set — and width/height are still-image-only here, so fit
270
+ is transitively unreachable for the mp4/webm video targets.
280
271
  color_profile:
281
272
  type: enum
282
273
  values: [keep, srgb, strip]
@@ -285,23 +276,22 @@ operation:
285
276
  depends_on: { output_format: [jpeg, png, webp, avif, gif, tiff] }
286
277
  honored_on: [format_change]
287
278
  description: >-
288
- ICC colour-profile handling (format-change route) — mirrors
289
- compress.image.color_profile. `keep` (default)/`srgb`/`strip`. `planned`.
290
- SCOPED via depends_on to the STILL-IMAGE targets only — the video targets
291
- (mp4/webm) carry no ICC, so color_profile is not accepted for a gif→video
292
- output (it would be inert). Declared HERE so the API re-validates the
293
- rewritten Output op.
279
+ Colour-profile handling — `keep` (default) = preserve the embedded colour
280
+ profile; `srgb` = convert to sRGB; `strip` = drop the profile. `planned`
281
+ — not yet supported. Scoped to the STILL-IMAGE targets only — the video
282
+ targets (mp4/webm) carry no colour profile, so this is not accepted for a
283
+ gif→video output.
294
284
  auto_orient:
295
285
  type: boolean
296
286
  default: true
297
- availability: planned
298
287
  depends_on: { output_format: [jpeg, png, webp, avif, gif, tiff] }
299
288
  honored_on: [format_change]
300
289
  description: >-
301
- Bake EXIF orientation into the pixels (format-change route) — mirrors
302
- compress.image.auto_orient. `planned`. SCOPED via depends_on to the
290
+ Bake EXIF orientation into the pixels so the output displays upright
291
+ everywhere. Default `true`; no-op for inputs without an orientation tag
292
+ (a GIF carries none, so this is a no-op for GIF input). Scoped to the
303
293
  STILL-IMAGE targets only — the video targets (mp4/webm) carry no EXIF
304
- orientation. Declared HERE so the API re-validates the rewritten Output op.
294
+ orientation.
305
295
 
306
296
  video:
307
297
  mimes:
@@ -365,11 +355,10 @@ operation:
365
355
  # compress.video/compress.audio (planned) + merge per_input trim (float
366
356
  # SECONDS, "from beginning / from end") — NO cross-op divergence.
367
357
  description: >
368
- Trim from beginning in seconds (absent = from the start). The
369
- convert-video worker cuts the clip before transcoding — the user's
370
- "trim a video then make a GIF" path. The kept clip is
371
- [`trim_start`, input_duration − `trim_end`]. Live for all video
372
- outputs (gif/mp4/webm/ogg).
358
+ Trim from beginning in seconds (absent = from the start). The clip
359
+ is cut before transcoding — the user's "trim a video then make a GIF"
360
+ path. The kept clip is [`trim_start`, input_duration − `trim_end`]. Live
361
+ for all video outputs (gif/mp4/webm/ogg).
373
362
  trim_end:
374
363
  type: float
375
364
  min: 0
@@ -395,8 +384,8 @@ operation:
395
384
  default: 15
396
385
  depends_on: { output_format: gif }
397
386
  description: >
398
- Output frame rate for video → GIF (ffmpeg `fps` filter). Lower = fewer
399
- frames = smaller file. Video → GIF only.
387
+ Output frame rate for video → GIF. Lower = fewer frames = smaller file.
388
+ Video → GIF only.
400
389
  width:
401
390
  type: integer
402
391
  min: 1
@@ -413,7 +402,7 @@ operation:
413
402
  default: 256
414
403
  depends_on: { output_format: gif }
415
404
  description: >
416
- GIF palette size (ffmpeg `palettegen` max_colors). Fewer colors = smaller file.
405
+ GIF palette size (the palette generation max colours). Fewer colors = smaller file.
417
406
  loop:
418
407
  type: integer
419
408
  min: -1
@@ -427,7 +416,7 @@ operation:
427
416
  default: bayer
428
417
  depends_on: { output_format: gif }
429
418
  description: >
430
- GIF dithering method (ffmpeg `paletteuse`). `bayer` is a good size/quality
419
+ GIF dithering method. `bayer` is a good size/quality
431
420
  balance; `none` is smallest (may band).
432
421
 
433
422
  audio:
@@ -472,16 +461,12 @@ operation:
472
461
  Page selection (e.g. '1-5,8'). Each resolved page produces a
473
462
  separate output file. **Maximum 200 resolved entries per
474
463
  request** — aligns with the `OperationResult.outputs[]`
475
- `maxItems: 200` cap per ADR-0009 §D5
476
- (`docs/decisions/0009-multi-output-result-envelope.md`).
477
- Expressions resolving to more than 200 entries (e.g.
478
- `'1-201'`, `'1-100,102-205'`) are out of contract.
479
- Duplicate or overlapping entries (e.g. `'1,1'`,
464
+ `maxItems: 200` cap. Expressions resolving to more than 200
465
+ entries (e.g. `'1-201'`, `'1-100,102-205'`) are out of
466
+ contract. Duplicate or overlapping entries (e.g. `'1,1'`,
480
467
  `'1-100,50-150'`) are counted toward the cap as parsed;
481
468
  deduplication, if any, is a runtime concern and is NOT part
482
- of this contract. Enforcement at the API edge validator and
483
- the Lambda runtime is tracked under WgCqnMRa follow-ups
484
- (cross-repo: API + Lambdas `bFlEXizR`).
469
+ of this contract.
485
470
  dpi:
486
471
  type: integer
487
472
  min: 72
@@ -10,28 +10,23 @@ operation:
10
10
  by Cloudinary's deprecated luma-matte custom transitions and
11
11
  intended as a paid-tier (`pro`+) creative feature.
12
12
 
13
- **NOT** related to FFmpeg's `xfade=custom` filter (which is an
14
- expression-mode parameter on the same `xfade` filter). The
15
- `merge.transition.custom` value is tagged `planned` as an advisory
16
- that points callers at this dedicated operation for caller-uploaded
17
- luma-matte transitions.
13
+ **NOT** related to the `xfade=custom` expression-mode transition
14
+ parameter. The `merge.transition.custom` value is tagged `planned`
15
+ as an advisory that points callers at this dedicated operation for
16
+ caller-uploaded luma-matte transitions.
18
17
 
19
18
  Multi-input: exactly one input with `role: base` (the source
20
19
  video being transitioned) + exactly one input with
21
20
  `role: transition_mask` (the luma matte — a video whose pixel
22
21
  luminance drives the transition reveal — bright = revealed,
23
- dark = held). Each input is a `MultiInputSource` — imported
22
+ dark = held). Each input is imported
24
23
  externally, referenced from a vault connection, or an upstream
25
24
  `job_output` (uploads are NOT referenced directly inside inputs[]).
26
25
  An uploaded base or mask enters via a `passthrough` source job
27
26
  referenced by `{ type: job_output, from: <id> }` (per ticket
28
27
  4som89Uh).
29
28
 
30
- Per ADR-0001 §1.3 (Tension 1 — `planned` operations return
31
- `feature_not_available` HTTP 422 until Lambda support ships).
32
- Per ADR-0004 §"V2 JobDefinition" + plan v5 §F4 round 6
33
- (codex-corrected — `xfade=custom` is an expression, not a
34
- transition; this operation is the deliberate alternative).
29
+ `planned` — not yet supported.
35
30
  default: false
36
31
  input_model: multi
37
32
  sole_op: true # bypasses V1 chain validation — must be the only operation in its job (ADR-0025)
@@ -6,7 +6,7 @@ operation:
6
6
  Apply an image overlay onto a base media
7
7
  asset. Multi-input: exactly one input with role: base (the source
8
8
  asset) + exactly one with role: overlay (the watermark). Each input
9
- is a `MultiInputSource` — an external_import handle, a vault
9
+ is an external_import handle, a vault
10
10
  connection, or an upstream `job_output` (uploads are NOT referenced
11
11
  directly inside inputs[]). To use an uploaded base or overlay, feed
12
12
  it through a `passthrough` source job and reference that job via
@@ -15,23 +15,32 @@ operation:
15
15
  Stable today for static-image bases (image/jpeg, image/png,
16
16
  image/webp); animated GIF bases are advertised as `planned` via
17
17
  the parallel `image_gif` mime_group — schema is contract-defined,
18
- dispatch returns `feature_not_available` (422) until Lambda
19
- support ships. Per Tension 1 (ADR-0001) + plan v5 §F4 round 6.
18
+ dispatch returns `feature_not_available` (422) until backend
19
+ support ships.
20
+
21
+ TIFF (image/tiff) and BMP (image/bmp) bases are likewise advertised
22
+ as `planned` via the parallel `image_tiff` / `image_bmp` mime_groups.
23
+ Both formats are already decodable and the worker's encode arms are a
24
+ cheap add (shared `image`-crate encoders), so each flips to `stable`
25
+ once its arm ships and is proven. Because watermark output mirrors the
26
+ input format (`produces: same_as_input`), advertising a base format is
27
+ only honest when the worker can both decode AND encode it — which
28
+ holds for TIFF/BMP but not for HEIC/AVIF (no encoder) or SVG (cannot
29
+ re-emit svg from a rasterised composite); those stay out of scope.
20
30
 
21
31
  **Video bases are NOT supported by `image_watermark`.** Use the
22
32
  dedicated `video_watermark` operation
23
- (`schemas/operations/video_watermark.yaml`) which routes through
24
- FFmpeg overlay + re-encode. Per ADR-0013.
33
+ (`schemas/operations/video_watermark.yaml`), which overlays and
34
+ re-encodes the video.
25
35
 
26
36
  **Audio is explicitly NOT supported.** For audio overlay (DJ tags,
27
37
  podcast intros, jingles), use the `audio_overlay` operation
28
38
  (declared in schemas/operations/audio_overlay.yaml at
29
39
  `availability: planned`).
30
40
 
31
- Source capped at 100 megapixels for image bases (raised from 25MP —
32
- lambdas #250, proven on the 45.9MP report case); per-frame caps for
33
- animated GIF bases will be defined when the corresponding Lambda
34
- support ships. Per ADR-0004 §"V2 JobDefinition" + plan v5 §F1.
41
+ Source capped at 100 megapixels for image bases; per-frame caps for
42
+ animated GIF bases will be defined when the corresponding backend
43
+ support ships.
35
44
  default: false
36
45
  input_model: multi
37
46
  sole_op: true # bypasses V1 chain validation — must be the only operation in its job (ADR-0025)
@@ -55,11 +64,11 @@ operation:
55
64
  availability: planned
56
65
  description: |
57
66
  Allow up to 8 overlay inputs per job (currently capped at 1
58
- overlay). Per-overlay placement via JobInputV2.per_input_options.
59
- Lambda-side support not yet confirmed; tagged planned per
60
- ADR-0001 §1.4. Scope is image-base only at the time this feature
61
- was specified; extension to GIF / video bases tracks alongside
62
- the corresponding mime_group `planned` → `stable` flips.
67
+ overlay). Per-overlay placement via per-input placement options.
68
+ Backend support not yet confirmed; tagged planned. Scope is
69
+ image-base only at the time this feature was specified; extension
70
+ to GIF / video bases tracks alongside the corresponding mime_group
71
+ `planned` → `stable` flips.
63
72
 
64
73
  mime_groups:
65
74
  image:
@@ -208,6 +217,149 @@ operation:
208
217
  width. Aspect ratio preserved. Omit to use the original
209
218
  overlay size.
210
219
 
220
+ # TIFF base — separate group because backend support ships in its own
221
+ # wave: the format is already decodable, but the encode arm (shared
222
+ # `image`-crate TiffEncoder) is pending. Tagged `planned` until the arm
223
+ # ships and is proven, then flips to `stable` (cross-repo UANjD38A).
224
+ image_tiff:
225
+ availability: planned
226
+ mimes:
227
+ - image/tiff
228
+ options:
229
+ anchor:
230
+ type: enum
231
+ values:
232
+ - top_left
233
+ - top_center
234
+ - top_right
235
+ - center_left
236
+ - center
237
+ - center_right
238
+ - bottom_left
239
+ - bottom_center
240
+ - bottom_right
241
+ default: bottom_right
242
+ description: |
243
+ 9-grid anchor position on the base image. Combined with
244
+ margin_x and margin_y for fine-grained offset from the
245
+ anchor point.
246
+
247
+ margin_x:
248
+ type: string
249
+ pattern: '^\d+(\.\d+)?(px|%)$'
250
+ default: "0px"
251
+ description: |
252
+ Horizontal offset from the anchor in pixels or percentage of
253
+ base width. Anchor-relative; positive moves toward the image
254
+ centre.
255
+
256
+ **`anchor: center` exception.** Same rejection rule as the
257
+ `image` mime_group — non-zero `margin_x` with
258
+ `anchor: center` is rejected by the API at workflow-create
259
+ time as `invalid_options` (HTTP 422).
260
+
261
+ margin_y:
262
+ type: string
263
+ pattern: '^\d+(\.\d+)?(px|%)$'
264
+ default: "0px"
265
+ description: |
266
+ Vertical offset from the anchor in pixels or percentage of
267
+ base height. Anchor-relative; positive moves toward the image
268
+ centre.
269
+
270
+ **`anchor: center` exception.** Same rejection rule as the
271
+ `image` mime_group — non-zero `margin_y` with
272
+ `anchor: center` is rejected by the API at workflow-create
273
+ time as `invalid_options` (HTTP 422).
274
+
275
+ opacity:
276
+ type: float
277
+ min: 0.0
278
+ max: 1.0
279
+ default: 0.5
280
+ description: |
281
+ Overlay opacity (0 = fully transparent, 1 = fully opaque).
282
+ Clamped to range.
283
+
284
+ overlay_width:
285
+ type: string
286
+ pattern: '^\d+(\.\d+)?(px|%)$'
287
+ description: |
288
+ Optional overlay width as pixels or percentage of base
289
+ width. Aspect ratio preserved. Omit to use the original
290
+ overlay size.
291
+
292
+ # BMP base — separate group for the same reason as image_tiff: decode
293
+ # is ready, the encode arm (shared `image`-crate BmpEncoder) is pending.
294
+ # Tagged `planned` until the arm ships and is proven (cross-repo UANjD38A).
295
+ image_bmp:
296
+ availability: planned
297
+ mimes:
298
+ - image/bmp
299
+ options:
300
+ anchor:
301
+ type: enum
302
+ values:
303
+ - top_left
304
+ - top_center
305
+ - top_right
306
+ - center_left
307
+ - center
308
+ - center_right
309
+ - bottom_left
310
+ - bottom_center
311
+ - bottom_right
312
+ default: bottom_right
313
+ description: |
314
+ 9-grid anchor position on the base image. Combined with
315
+ margin_x and margin_y for fine-grained offset from the
316
+ anchor point.
317
+
318
+ margin_x:
319
+ type: string
320
+ pattern: '^\d+(\.\d+)?(px|%)$'
321
+ default: "0px"
322
+ description: |
323
+ Horizontal offset from the anchor in pixels or percentage of
324
+ base width. Anchor-relative; positive moves toward the image
325
+ centre.
326
+
327
+ **`anchor: center` exception.** Same rejection rule as the
328
+ `image` mime_group — non-zero `margin_x` with
329
+ `anchor: center` is rejected by the API at workflow-create
330
+ time as `invalid_options` (HTTP 422).
331
+
332
+ margin_y:
333
+ type: string
334
+ pattern: '^\d+(\.\d+)?(px|%)$'
335
+ default: "0px"
336
+ description: |
337
+ Vertical offset from the anchor in pixels or percentage of
338
+ base height. Anchor-relative; positive moves toward the image
339
+ centre.
340
+
341
+ **`anchor: center` exception.** Same rejection rule as the
342
+ `image` mime_group — non-zero `margin_y` with
343
+ `anchor: center` is rejected by the API at workflow-create
344
+ time as `invalid_options` (HTTP 422).
345
+
346
+ opacity:
347
+ type: float
348
+ min: 0.0
349
+ max: 1.0
350
+ default: 0.5
351
+ description: |
352
+ Overlay opacity (0 = fully transparent, 1 = fully opaque).
353
+ Clamped to range.
354
+
355
+ overlay_width:
356
+ type: string
357
+ pattern: '^\d+(\.\d+)?(px|%)$'
358
+ description: |
359
+ Optional overlay width as pixels or percentage of base
360
+ width. Aspect ratio preserved. Omit to use the original
361
+ overlay size.
362
+
211
363
  # Video base mime_group REMOVED per ADR-0013 — video watermarking
212
364
  # is now owned by the dedicated `video_watermark` operation
213
365
  # (`schemas/operations/video_watermark.yaml`). The previous
@@ -33,7 +33,7 @@ operation:
33
33
  type: enum
34
34
  values: [gif, video]
35
35
  required: true
36
- description: "Result format: animated GIF or slideshow video. No default — caller must pick explicitly (image/collage and document/PDF concat are not supported by the V1 merge Lambda)."
36
+ description: "Result format: animated GIF or slideshow video. No default — caller must pick explicitly (image/collage and document/PDF concat are not supported by V1 merge)."
37
37
  # --- Options for output_type: gif ---
38
38
  delay:
39
39
  type: integer
@@ -397,7 +397,7 @@ operation:
397
397
  Trim from beginning in seconds (per-input). Applied to this
398
398
  input BEFORE any transition/crossfade. Matches the
399
399
  `compress` trim semantic. No `max` — the upper bound is the
400
- input's own duration, enforced by the worker, not statically
400
+ input's own duration, enforced at processing time, not statically
401
401
  bounded here.
402
402
  trim_end:
403
403
  type: float
@@ -406,7 +406,7 @@ operation:
406
406
  Trim from end in seconds (per-input). Applied to this input
407
407
  BEFORE any transition/crossfade. Matches the `compress` trim
408
408
  semantic. No `max` — the upper bound is the input's own
409
- duration, enforced by the worker, not statically bounded
409
+ duration, enforced at processing time, not statically bounded
410
410
  here.
411
411
 
412
412
  audio:
@@ -491,7 +491,7 @@ operation:
491
491
  Trim from beginning in seconds (per-input). Applied to this
492
492
  input BEFORE any transition/crossfade. Matches the
493
493
  `compress` trim semantic. No `max` — the upper bound is the
494
- input's own duration, enforced by the worker, not statically
494
+ input's own duration, enforced at processing time, not statically
495
495
  bounded here.
496
496
  trim_end:
497
497
  type: float
@@ -500,5 +500,5 @@ operation:
500
500
  Trim from end in seconds (per-input). Applied to this input
501
501
  BEFORE any transition/crossfade. Matches the `compress` trim
502
502
  semantic. No `max` — the upper bound is the input's own
503
- duration, enforced by the worker, not statically bounded
503
+ duration, enforced at processing time, not statically bounded
504
504
  here.
@@ -6,13 +6,13 @@ operation:
6
6
  description: |
7
7
  Inert lossless source operation. A single-input source job whose
8
8
  SOLE operation is `passthrough` emits its source bytes UNCHANGED —
9
- no compression, no transformation, no Lambda dispatch. The API
9
+ no compression, no transformation, no backend dispatch. The API
10
10
  self-completes the job at workflow-create/publish time: the job's
11
11
  terminal output IS the upload's `{bucket, key}` unchanged.
12
12
 
13
13
  **Purpose.** Lets an uploaded file enter a multi-input operation
14
14
  (`merge` / `archive` / `image_watermark` / etc.) LOSSLESSLY. Since
15
- V2 narrows `JobInputV2.source` to exclude upload-direct (`MultiInputSource`
15
+ V2 narrows the input source to exclude upload-direct (a multi-input source
16
16
  — job_output / external_import / connection only), an upload that
17
17
  must feed a multi-input op enters via a `passthrough` source job
18
18
  referenced downstream by `{ type: job_output, from: <id> }`. This
@@ -38,8 +38,8 @@ operation:
38
38
  inputs[]-narrowing + passthrough self-complete mechanism is deployed),
39
39
  so workflow-create accepts `passthrough` source jobs and MUST NOT
40
40
  return `feature_not_available`. Activated per ticket
41
- [`4som89Uh`](https://trello.com/c/4som89Uh) + ADR-0004 (planned→beta
42
- flip; self-complete code deployed API-side).
41
+ [`4som89Uh`](https://trello.com/c/4som89Uh) (planned→beta flip;
42
+ self-complete code deployed API-side).
43
43
  default: false
44
44
  input_model: single
45
45