@giveitsmaller/contracts 0.57.0 → 0.59.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 (497) hide show
  1. package/accepted-options/accepted-options.json +15 -1
  2. package/accepted-options/image-output-routes.json +1 -1
  3. package/asyncapi/events.yaml +17 -9
  4. package/availability/availability.json +123 -7
  5. package/code-builder/code-builder-metadata.json +128 -8
  6. package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
  7. package/dist/openapi/models/AccountLimitEntry.js +1 -1
  8. package/dist/openapi/models/AccountLimits.d.ts +1 -1
  9. package/dist/openapi/models/AccountLimits.js +1 -1
  10. package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
  11. package/dist/openapi/models/AccountLimitsLimits.js +1 -1
  12. package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
  13. package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
  14. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  15. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  16. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  17. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  18. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  19. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  20. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  21. package/dist/openapi/models/AuthErrorType.js +1 -1
  22. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
  23. package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
  24. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  25. package/dist/openapi/models/AvailabilityValue.js +1 -1
  26. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  27. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  28. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  29. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  30. package/dist/openapi/models/BillingCheckoutRequest.d.ts +1 -1
  31. package/dist/openapi/models/BillingCheckoutRequest.js +1 -1
  32. package/dist/openapi/models/BillingCheckoutSession.d.ts +1 -1
  33. package/dist/openapi/models/BillingCheckoutSession.js +1 -1
  34. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +1 -1
  35. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +1 -1
  36. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  37. package/dist/openapi/models/CallbackEventType.js +1 -1
  38. package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
  39. package/dist/openapi/models/CapabilityCondition.js +1 -1
  40. package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
  41. package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
  42. package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
  43. package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
  44. package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
  45. package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
  46. package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
  47. package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
  48. package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
  49. package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
  50. package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
  51. package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
  52. package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
  53. package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
  54. package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
  55. package/dist/openapi/models/CapabilityConstraint.js +1 -1
  56. package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
  57. package/dist/openapi/models/CapabilityInputSpec.js +1 -1
  58. package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
  59. package/dist/openapi/models/CapabilityProduces.js +1 -1
  60. package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
  61. package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
  62. package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
  63. package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
  64. package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
  65. package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
  66. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  67. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  68. package/dist/openapi/models/CodegenSource.d.ts +1 -1
  69. package/dist/openapi/models/CodegenSource.js +1 -1
  70. package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
  71. package/dist/openapi/models/CodegenSourceInput.js +1 -1
  72. package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
  73. package/dist/openapi/models/CodegenSourceJob.js +1 -1
  74. package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
  75. package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
  76. package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
  77. package/dist/openapi/models/CodegenSourceOperation.js +1 -1
  78. package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
  79. package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
  80. package/dist/openapi/models/CompositionPlan.d.ts +1 -1
  81. package/dist/openapi/models/CompositionPlan.js +1 -1
  82. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  83. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  84. package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
  85. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  86. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  87. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  88. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  89. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  90. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  91. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  92. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  93. package/dist/openapi/models/ConnectionSource.js +1 -1
  94. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  95. package/dist/openapi/models/ContactRequest.js +1 -1
  96. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  97. package/dist/openapi/models/ContactSubject.js +1 -1
  98. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  99. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  100. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  101. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  102. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  103. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  104. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  105. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  106. package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +1 -1
  107. package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +1 -1
  108. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  109. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  110. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  111. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  112. package/dist/openapi/models/CreateWorkflow401Response.d.ts +1 -1
  113. package/dist/openapi/models/CreateWorkflow401Response.js +1 -1
  114. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  115. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  116. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  117. package/dist/openapi/models/CreditTransaction.js +1 -1
  118. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  119. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  120. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  121. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  122. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  123. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  124. package/dist/openapi/models/CreditsUsageResponse.d.ts +43 -1
  125. package/dist/openapi/models/CreditsUsageResponse.js +5 -1
  126. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  127. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  128. package/dist/openapi/models/Delivery.d.ts +1 -1
  129. package/dist/openapi/models/Delivery.js +1 -1
  130. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  131. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  132. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  133. package/dist/openapi/models/DeliveryPlan.js +1 -1
  134. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  135. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  136. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  137. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  138. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  139. package/dist/openapi/models/DeliverySelection.js +1 -1
  140. package/dist/openapi/models/DownloadBundle.d.ts +1 -1
  141. package/dist/openapi/models/DownloadBundle.js +1 -1
  142. package/dist/openapi/models/EmailNotify.d.ts +1 -1
  143. package/dist/openapi/models/EmailNotify.js +1 -1
  144. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  145. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  146. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  147. package/dist/openapi/models/EndpointProjection.js +1 -1
  148. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  149. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  150. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  151. package/dist/openapi/models/EstimateQuality.js +1 -1
  152. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  153. package/dist/openapi/models/EstimateRange.js +1 -1
  154. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  155. package/dist/openapi/models/ExternalDestination.js +1 -1
  156. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  157. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  158. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  159. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  160. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  161. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  162. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  163. package/dist/openapi/models/ExternalImportToken.js +1 -1
  164. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  165. package/dist/openapi/models/ExternalSource.js +1 -1
  166. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  167. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  168. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  169. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  170. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  171. package/dist/openapi/models/FeatureViolation.js +1 -1
  172. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  173. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  174. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  175. package/dist/openapi/models/JobDefinition.js +1 -1
  176. package/dist/openapi/models/JobDownload.d.ts +1 -1
  177. package/dist/openapi/models/JobDownload.js +1 -1
  178. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  179. package/dist/openapi/models/JobInputV2.js +1 -1
  180. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  181. package/dist/openapi/models/JobMediaClass.js +1 -1
  182. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  183. package/dist/openapi/models/JobOutputSource.js +1 -1
  184. package/dist/openapi/models/JobResponse.d.ts +31 -7
  185. package/dist/openapi/models/JobResponse.js +3 -1
  186. package/dist/openapi/models/JobStatus.d.ts +1 -1
  187. package/dist/openapi/models/JobStatus.js +1 -1
  188. package/dist/openapi/models/JobType.d.ts +1 -1
  189. package/dist/openapi/models/JobType.js +1 -1
  190. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  191. package/dist/openapi/models/LivenessResponse.js +1 -1
  192. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  193. package/dist/openapi/models/LoginUser200Response.js +1 -1
  194. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  195. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  196. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  197. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  198. package/dist/openapi/models/LoginUser401Response.d.ts +1 -1
  199. package/dist/openapi/models/LoginUser401Response.js +1 -1
  200. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  201. package/dist/openapi/models/LoginUserRequest.js +1 -1
  202. package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
  203. package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
  204. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
  205. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
  206. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  207. package/dist/openapi/models/MetadataResponse.js +1 -1
  208. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  209. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  210. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  211. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  212. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  213. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  214. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  215. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  216. package/dist/openapi/models/MimeGroupSchema.d.ts +38 -1
  217. package/dist/openapi/models/MimeGroupSchema.js +5 -1
  218. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  219. package/dist/openapi/models/MultiInputSource.js +1 -1
  220. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  221. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  222. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  223. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  224. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  225. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  226. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  227. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  228. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  229. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  230. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  231. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  232. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  233. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  234. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  235. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  236. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  237. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  238. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  239. package/dist/openapi/models/MultipartPartListing.js +1 -1
  240. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  241. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  242. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  243. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  244. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  245. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  246. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  247. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  248. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  249. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  250. package/dist/openapi/models/NotifyConfig.d.ts +1 -1
  251. package/dist/openapi/models/NotifyConfig.js +1 -1
  252. package/dist/openapi/models/OperationCapability.d.ts +1 -1
  253. package/dist/openapi/models/OperationCapability.js +1 -1
  254. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  255. package/dist/openapi/models/OperationDefinition.js +1 -1
  256. package/dist/openapi/models/OperationDownload.d.ts +103 -5
  257. package/dist/openapi/models/OperationDownload.js +1 -1
  258. package/dist/openapi/models/OperationInputModel.d.ts +1 -1
  259. package/dist/openapi/models/OperationInputModel.js +1 -1
  260. package/dist/openapi/models/OperationResponse.d.ts +1 -1
  261. package/dist/openapi/models/OperationResponse.js +1 -1
  262. package/dist/openapi/models/OperationResult.d.ts +1 -1
  263. package/dist/openapi/models/OperationResult.js +1 -1
  264. package/dist/openapi/models/OperationResultMetadata.d.ts +1 -1
  265. package/dist/openapi/models/OperationResultMetadata.js +1 -1
  266. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  267. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  268. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  269. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  270. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  271. package/dist/openapi/models/OperationStatus.js +1 -1
  272. package/dist/openapi/models/OperationType.d.ts +1 -1
  273. package/dist/openapi/models/OperationType.js +1 -1
  274. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  275. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  276. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +10 -1
  277. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +4 -1
  278. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  279. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  280. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  281. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  282. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  283. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  284. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +33 -0
  285. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +42 -0
  286. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  287. package/dist/openapi/models/OptionSchema.js +1 -1
  288. package/dist/openapi/models/OutputProperties.d.ts +1 -1
  289. package/dist/openapi/models/OutputProperties.js +1 -1
  290. package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
  291. package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
  292. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  293. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  294. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  295. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  296. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  297. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  298. package/dist/openapi/models/ProbePendingResponse.d.ts +1 -1
  299. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  300. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  301. package/dist/openapi/models/ProcessingClass.js +1 -1
  302. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  303. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  304. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  305. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  306. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  307. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  308. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  309. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  310. package/dist/openapi/models/ProcessingClassHint.d.ts +23 -6
  311. package/dist/openapi/models/ProcessingClassHint.js +23 -6
  312. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  313. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  314. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  315. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  316. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  317. package/dist/openapi/models/ProcessingPlan.js +1 -1
  318. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  319. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  320. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  321. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  322. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  323. package/dist/openapi/models/ReadinessResponse.js +1 -1
  324. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  325. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  326. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  327. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  328. package/dist/openapi/models/ResendVerificationEmailRequest.d.ts +1 -1
  329. package/dist/openapi/models/ResendVerificationEmailRequest.js +1 -1
  330. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  331. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  332. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  333. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  334. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  335. package/dist/openapi/models/RetryResponse.js +1 -1
  336. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  337. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  338. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  339. package/dist/openapi/models/SseCompletionBase.js +1 -1
  340. package/dist/openapi/models/SseEventType.d.ts +1 -1
  341. package/dist/openapi/models/SseEventType.js +1 -1
  342. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  343. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  344. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  345. package/dist/openapi/models/SseJobFailedData.js +1 -1
  346. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  347. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  348. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  349. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  350. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  351. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  352. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +9 -4
  353. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  354. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  355. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  356. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  357. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  358. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  359. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  360. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  361. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  362. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  363. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  364. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  365. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  366. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  367. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  368. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  369. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  370. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  371. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  372. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  373. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  374. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  375. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  376. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  377. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  378. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  379. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  380. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  381. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  382. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  383. package/dist/openapi/models/UploadFile403Response.js +1 -1
  384. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  385. package/dist/openapi/models/UploadFile422Response.js +1 -1
  386. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  387. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  388. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  389. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  390. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  391. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  392. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  393. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  394. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  395. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  396. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  397. package/dist/openapi/models/UploadResponse.js +1 -1
  398. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  399. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  400. package/dist/openapi/models/UploadSource.d.ts +1 -19
  401. package/dist/openapi/models/UploadSource.js +1 -3
  402. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  403. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  404. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  405. package/dist/openapi/models/UploadThresholds.js +1 -1
  406. package/dist/openapi/models/UserTier.d.ts +1 -1
  407. package/dist/openapi/models/UserTier.js +1 -1
  408. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  409. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  410. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  411. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  412. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  413. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  414. package/dist/openapi/models/WarningType.d.ts +1 -1
  415. package/dist/openapi/models/WarningType.js +1 -1
  416. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  417. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  418. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  419. package/dist/openapi/models/WebhookPayload.js +1 -1
  420. package/dist/openapi/models/WorkflowArchiveResponse.d.ts +81 -0
  421. package/dist/openapi/models/WorkflowArchiveResponse.js +71 -0
  422. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.d.ts +46 -0
  423. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.js +54 -0
  424. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  425. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  426. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  427. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  428. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  429. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  430. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  431. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  432. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  433. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  434. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  435. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  436. package/dist/openapi/models/WorkflowCreditSummary.d.ts +1 -1
  437. package/dist/openapi/models/WorkflowCreditSummary.js +1 -1
  438. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  439. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  440. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  441. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  442. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  443. package/dist/openapi/models/WorkflowEdge.js +1 -1
  444. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  445. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  446. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  447. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  448. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  449. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  450. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  451. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  452. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  453. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  454. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  455. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  456. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  457. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  458. package/dist/openapi/models/WorkflowRestoreResponse.d.ts +60 -0
  459. package/dist/openapi/models/WorkflowRestoreResponse.js +58 -0
  460. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.d.ts +46 -0
  461. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.js +54 -0
  462. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  463. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  464. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  465. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  466. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  467. package/dist/openapi/models/WorkflowSource.js +1 -1
  468. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  469. package/dist/openapi/models/WorkflowStatus.js +1 -1
  470. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  471. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  472. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  473. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  474. package/dist/openapi/models/WorkflowSummary.d.ts +24 -1
  475. package/dist/openapi/models/WorkflowSummary.js +5 -1
  476. package/dist/openapi/models/WorkflowSummaryJob.d.ts +18 -9
  477. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  478. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  479. package/dist/openapi/models/WorkflowWarning.js +1 -1
  480. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  481. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  482. package/dist/openapi/models/index.d.ts +5 -0
  483. package/dist/openapi/models/index.js +5 -0
  484. package/dist/openapi/runtime.d.ts +1 -1
  485. package/dist/openapi/runtime.js +1 -1
  486. package/dist/operations/compress.metadata.js +3 -0
  487. package/dist/operations/thumbnail.d.ts +23 -0
  488. package/dist/operations/thumbnail.js +17 -0
  489. package/dist/operations/thumbnail.metadata.js +29 -0
  490. package/openapi/api.yaml +608 -54
  491. package/operation-capabilities/operation-capabilities.json +1 -1
  492. package/operations/schemas/audio_to_video.yaml +1 -0
  493. package/operations/schemas/compress.yaml +52 -2
  494. package/operations/schemas/convert.yaml +6 -1
  495. package/operations/schemas/split.yaml +13 -3
  496. package/operations/schemas/thumbnail.yaml +143 -2
  497. package/package.json +1 -1
package/openapi/api.yaml CHANGED
@@ -89,7 +89,7 @@ info:
89
89
  of truth instead of hardcoding magic numbers. A runtime
90
90
  `GET /api/uploads/limits` endpoint for dynamic discovery
91
91
  (per-tier / per-environment overrides) is a deferred follow-up.
92
- version: 2.170.0
92
+ version: 2.180.0
93
93
  contact:
94
94
  name: API Support
95
95
 
@@ -221,18 +221,38 @@ paths:
221
221
  required_tier: "enterprise"
222
222
  '413':
223
223
  description: |
224
- File exceeds the absolute maximum upload size (across all
225
- tiers). For tier-specific size caps below this absolute
226
- limit, the server returns 403 with
227
- `error_type: tier_restriction, restriction_kind: file_size`
228
- instead.
224
+ The upload is too large. Two rejection cases, discriminated by the
225
+ `ErrorEnvelope.error` code:
226
+
227
+ - **Byte size** — the file exceeds the absolute maximum upload size
228
+ (across all tiers). For tier-specific size caps below this
229
+ absolute limit, the server returns 403 with `error_type:
230
+ tier_restriction, restriction_kind: file_size` instead.
231
+ - **Pixel dimensions** (`error: IMAGE_DIMENSIONS_TOO_LARGE`) — a
232
+ decodable raster image whose `width × height` exceeds the
233
+ configured pixel ceiling (`UPLOAD_MAX_IMAGE_PIXELS`, default
234
+ 16 MP). The server reads dimensions from the file **header** (no
235
+ full-bitmap decode) and rejects **before** decoding, so a
236
+ within-byte-limit but huge-dimension image (e.g. a few-KB 26 MP
237
+ PNG that would decode to ~100 MB) is rejected up front rather than
238
+ exhausting memory. Non-decoded raster types (TIFF/BMP/ICO) and
239
+ non-images are unaffected.
229
240
  content:
230
241
  application/json:
231
242
  schema:
232
243
  $ref: '#/components/schemas/ErrorEnvelope'
233
- example:
234
- success: false
235
- error: "File size exceeds maximum allowed (100 GiB)"
244
+ examples:
245
+ file_too_large:
246
+ summary: File exceeds the absolute maximum byte size
247
+ value:
248
+ success: false
249
+ error: "File size exceeds maximum allowed (100 GiB)"
250
+ image_dimensions_too_large:
251
+ summary: Decodable raster exceeds the pixel-dimension ceiling
252
+ value:
253
+ success: false
254
+ error: "IMAGE_DIMENSIONS_TOO_LARGE"
255
+ message: "Image dimensions exceed the maximum allowed (16 MP)."
236
256
  '415':
237
257
  description: |
238
258
  Unsupported file type at the contract level (no tier permits
@@ -1172,6 +1192,28 @@ paths:
1172
1192
  minimum: 1
1173
1193
  maximum: 100
1174
1194
  default: 20
1195
+ - name: archived
1196
+ in: query
1197
+ required: false
1198
+ description: |
1199
+ Archived-row filter (ticket
1200
+ [`j2s6T2qf`](https://trello.com/c/j2s6T2qf)). **Default `false`**:
1201
+ archived workflows are EXCLUDED, so archiving declutters the
1202
+ default view. **`true`**: list ONLY archived workflows (the
1203
+ "archive" view, for review or recovery via
1204
+ `POST /api/workflows/{id}/restore`).
1205
+
1206
+ Archiving is a **recoverable declutter, NOT a delete** — an
1207
+ archived workflow keeps every record and stays fully readable via
1208
+ `GET /api/workflows/{id}/status` and its downloads; only this list
1209
+ hides it by default. Archive an individual workflow via
1210
+ `POST /api/workflows/{id}/archive`, restore it via
1211
+ `POST /api/workflows/{id}/restore`. (A future "show both" view, if
1212
+ needed, would be a separate additive parameter — this boolean
1213
+ stays exclude-vs-archived-only.)
1214
+ schema:
1215
+ type: boolean
1216
+ default: false
1175
1217
  responses:
1176
1218
  '200':
1177
1219
  description: Cursor-paginated summary list of the caller's workflows.
@@ -2493,6 +2535,186 @@ paths:
2493
2535
  schema:
2494
2536
  $ref: '#/components/schemas/ErrorEnvelope'
2495
2537
 
2538
+ /api/workflows/{id}/archive:
2539
+ post:
2540
+ summary: Archive a workflow
2541
+ description: |
2542
+ Archive a terminal workflow so it drops out of the caller's default
2543
+ workflow list. **Recoverable declutter, NOT a delete** — the workflow,
2544
+ its jobs, its operations, and its outputs are all retained and stay
2545
+ fully readable: `GET /api/workflows/{id}/status` and every download
2546
+ link keep working unchanged. Archiving only hides the row from the
2547
+ default `GET /api/workflows` view; `?archived=true` lists archived
2548
+ rows, and `POST /api/workflows/{id}/restore` brings one back.
2549
+
2550
+ Archive sets a dedicated `archived` flag that is **distinct from
2551
+ deletion** — it is the Gmail-style "archive" (reversible, user-owned),
2552
+ not the admin-only hard delete, and it does NOT set any soft-delete /
2553
+ `deleted_at` state. Hard deletion is not exposed to callers.
2554
+
2555
+ Owner-scoped. Idempotent — archiving an already-archived workflow
2556
+ returns 200 with the same shape (`archived_at` reflects the FIRST
2557
+ archive instant, unchanged by a re-archive).
2558
+
2559
+ **Terminal workflows only.** Archive is allowed only once the workflow
2560
+ has reached a terminal status (`completed`, `failed`,
2561
+ `partially_failed`, `cancelled`, `expired`). Archiving an active
2562
+ workflow (`pending`, `in_progress`, `paused_insufficient_credits`) is
2563
+ a **409** — cancel it first (`POST /api/workflows/{id}/cancel`) or wait
2564
+ for it to finish. Archiving does NOT change the workflow's status; it
2565
+ stays terminal and the response echoes it unchanged.
2566
+ operationId: archiveWorkflow
2567
+ security: [{bearerAuth: []}, {sessionAuth: []}] # required (explicit 401 in response set)
2568
+ x-identity-scoped: true # workflow-ownership-scoped per ADR-0016 D3
2569
+ tags:
2570
+ - Workflow
2571
+ parameters:
2572
+ - name: id
2573
+ in: path
2574
+ required: true
2575
+ description: Workflow ID (UUID v7)
2576
+ schema:
2577
+ $ref: '#/components/schemas/UuidV7'
2578
+ responses:
2579
+ '200':
2580
+ description: Workflow archived (or already archived — idempotent).
2581
+ content:
2582
+ application/json:
2583
+ schema:
2584
+ $ref: '#/components/schemas/WorkflowArchiveSuccessEnvelope'
2585
+ examples:
2586
+ archived:
2587
+ summary: Archive a completed workflow
2588
+ value:
2589
+ success: true
2590
+ data:
2591
+ workflow_id: "019539ac-2222-7000-8000-000000000001"
2592
+ status: "completed"
2593
+ archived: true
2594
+ archived_at: "2026-07-17T20:15:00Z"
2595
+ idempotent_rearchive:
2596
+ summary: Archiving an already-archived workflow
2597
+ value:
2598
+ success: true
2599
+ data:
2600
+ workflow_id: "019539ac-2222-7000-8000-000000000002"
2601
+ status: "failed"
2602
+ archived: true
2603
+ archived_at: "2026-07-17T19:55:00Z"
2604
+ '401':
2605
+ description: Authentication required.
2606
+ content:
2607
+ application/json:
2608
+ schema:
2609
+ $ref: '#/components/schemas/ErrorEnvelope'
2610
+ '404':
2611
+ description: Workflow not found OR not owned by the caller (same shape — no ownership leak).
2612
+ content:
2613
+ application/json:
2614
+ schema:
2615
+ $ref: '#/components/schemas/ErrorEnvelope'
2616
+ '409':
2617
+ description: |
2618
+ Workflow is in a non-terminal state (`pending`, `in_progress`,
2619
+ `paused_insufficient_credits`) and cannot be archived yet — only
2620
+ terminal workflows are archivable. Cancel it first
2621
+ (`POST /api/workflows/{id}/cancel`) or wait for it to finish, then
2622
+ retry. Check status via `GET /api/workflows/{id}/status`.
2623
+ content:
2624
+ application/json:
2625
+ schema:
2626
+ $ref: '#/components/schemas/ErrorEnvelope'
2627
+ '429':
2628
+ description: Rate limit exceeded
2629
+ content:
2630
+ application/json:
2631
+ schema:
2632
+ $ref: '#/components/schemas/ErrorEnvelope'
2633
+ '500':
2634
+ description: Internal server error
2635
+ content:
2636
+ application/json:
2637
+ schema:
2638
+ $ref: '#/components/schemas/ErrorEnvelope'
2639
+
2640
+ /api/workflows/{id}/restore:
2641
+ post:
2642
+ summary: Restore (un-archive) a workflow
2643
+ description: |
2644
+ Restore a previously-archived workflow so it reappears in the caller's
2645
+ default `GET /api/workflows` list. The exact inverse of
2646
+ `POST /api/workflows/{id}/archive` — it clears the `archived` flag and
2647
+ nothing else. Status, jobs, operations, outputs, and download links are
2648
+ untouched (archiving never hid or changed any of those; it only hid the
2649
+ list row).
2650
+
2651
+ Owner-scoped. Idempotent — restoring a workflow that is not archived
2652
+ is a harmless no-op that returns 200 with `archived: false`. Because a
2653
+ non-archived workflow can be in any lifecycle state, the echoed
2654
+ `status` is the workflow's unchanged status (any `WorkflowStatus`
2655
+ value), not a fixed terminal subset. There is no 409: un-archiving is
2656
+ always safe.
2657
+ operationId: restoreWorkflow
2658
+ security: [{bearerAuth: []}, {sessionAuth: []}] # required (explicit 401 in response set)
2659
+ x-identity-scoped: true # workflow-ownership-scoped per ADR-0016 D3
2660
+ tags:
2661
+ - Workflow
2662
+ parameters:
2663
+ - name: id
2664
+ in: path
2665
+ required: true
2666
+ description: Workflow ID (UUID v7)
2667
+ schema:
2668
+ $ref: '#/components/schemas/UuidV7'
2669
+ responses:
2670
+ '200':
2671
+ description: Workflow restored (or was already not archived — idempotent).
2672
+ content:
2673
+ application/json:
2674
+ schema:
2675
+ $ref: '#/components/schemas/WorkflowRestoreSuccessEnvelope'
2676
+ examples:
2677
+ restored:
2678
+ summary: Restore an archived workflow
2679
+ value:
2680
+ success: true
2681
+ data:
2682
+ workflow_id: "019539ac-2222-7000-8000-000000000001"
2683
+ status: "completed"
2684
+ archived: false
2685
+ idempotent_restore:
2686
+ summary: Restoring a workflow that was not archived
2687
+ value:
2688
+ success: true
2689
+ data:
2690
+ workflow_id: "019539ac-2222-7000-8000-000000000002"
2691
+ status: "in_progress"
2692
+ archived: false
2693
+ '401':
2694
+ description: Authentication required.
2695
+ content:
2696
+ application/json:
2697
+ schema:
2698
+ $ref: '#/components/schemas/ErrorEnvelope'
2699
+ '404':
2700
+ description: Workflow not found OR not owned by the caller (same shape — no ownership leak).
2701
+ content:
2702
+ application/json:
2703
+ schema:
2704
+ $ref: '#/components/schemas/ErrorEnvelope'
2705
+ '429':
2706
+ description: Rate limit exceeded
2707
+ content:
2708
+ application/json:
2709
+ schema:
2710
+ $ref: '#/components/schemas/ErrorEnvelope'
2711
+ '500':
2712
+ description: Internal server error
2713
+ content:
2714
+ application/json:
2715
+ schema:
2716
+ $ref: '#/components/schemas/ErrorEnvelope'
2717
+
2496
2718
  # ============================================
2497
2719
  # OPERATIONS ENDPOINTS
2498
2720
  # ============================================
@@ -5706,25 +5928,6 @@ components:
5706
5928
  const: upload
5707
5929
  file_id:
5708
5930
  $ref: '#/components/schemas/UuidV7'
5709
- declared_duration_seconds:
5710
- type:
5711
- - number
5712
- - "null"
5713
- minimum: 0
5714
- description: |
5715
- OPTIONAL client-declared media duration in seconds, measured on the
5716
- client **before** upload (e.g. the browser's
5717
- `HTMLVideoElement.duration`). A **routing hint** for long-form
5718
- classification only ([`frlwBuQ5`](https://trello.com/c/frlwBuQ5)):
5719
- the server prefers its own authoritative media probe and falls back
5720
- to this value **only when the async probe duration is null** (e.g.
5721
- the probe has not completed at classification time). It never
5722
- overrides a successful probe, and is not billed against — duration
5723
- billing uses the probed value. Omit (or `null`) when unknown —
5724
- **absent behaves exactly as today** (probe-only). Ignored for
5725
- non-timed media. Only meaningful on an `upload` source (the one the
5726
- client measured locally); other source leaves do not carry it.
5727
- example: 187.5
5728
5931
 
5729
5932
  JobOutputSource:
5730
5933
  type: object
@@ -6541,6 +6744,44 @@ components:
6541
6744
  offset:
6542
6745
  type: integer
6543
6746
  minimum: 0
6747
+ current_cycle_net_spent:
6748
+ type: integer
6749
+ minimum: 0
6750
+ description: |
6751
+ OPTIONAL/additive. Net credits the caller has spent in the CURRENT
6752
+ billing cycle — the monthly-grant period (ledger rows with
6753
+ `created_at` >= the current cycle start). Integer credit units, same
6754
+ as `CreditTransaction.amount` and the balance fields.
6755
+
6756
+ **"Net" = credits actually consumed**, i.e. reservation debits minus
6757
+ the credit-returns that give credits back:
6758
+
6759
+ net = Σ |workflow-reservation debits|
6760
+ − Σ |credit-return rows|
6761
+
6762
+ Rows are identified by **`reference_type`, NOT `type`** — there is
6763
+ no `type: refund` row. The debit is
6764
+ `reference_type: workflow_reservation` (a negative `amount`); the
6765
+ credit-return family is `reference_type` ∈ {`workflow_settle_refund`,
6766
+ `workflow_reservation_release`, `workflow_pause_release`,
6767
+ `workflow_expiry_release`} (positive amounts). This nets a fully
6768
+ released / cancelled / expired reservation to ~0 and a settled one to
6769
+ its non-refundable consumed portion — so it reflects credits ACTUALLY
6770
+ consumed, not gross reservations (a raw settled-sum would overstate
6771
+ spend, since the returns are separate positive rows). Mirrors the
6772
+ reserved-minus-refunded semantics of the API's authoritative
6773
+ `WorkflowCreditSummary` reads. **Absent** for legacy/unsupported
6774
+ reads — treat as unknown, not `0`. Per ticket
6775
+ [`5aXGShPy`](https://trello.com/c/5aXGShPy).
6776
+ lifetime_net_spent:
6777
+ type: integer
6778
+ minimum: 0
6779
+ description: |
6780
+ OPTIONAL/additive. Same net-of-credit-returns formula as
6781
+ `current_cycle_net_spent`, but ALL-TIME (no cycle window) — the
6782
+ caller's total credits ever consumed. Integer credit units.
6783
+ **Absent** for legacy/unsupported reads — treat as unknown, not `0`.
6784
+ Per ticket [`5aXGShPy`](https://trello.com/c/5aXGShPy).
6544
6785
 
6545
6786
  CreditsUsageSuccessEnvelope:
6546
6787
  type: object
@@ -6797,6 +7038,99 @@ components:
6797
7038
  data:
6798
7039
  $ref: '#/components/schemas/WorkflowResumeResponse'
6799
7040
 
7041
+ WorkflowArchiveResponse:
7042
+ type: object
7043
+ description: |
7044
+ Response body for `POST /api/workflows/{id}/archive` (ticket
7045
+ [`j2s6T2qf`](https://trello.com/c/j2s6T2qf)). Archiving sets the
7046
+ `archived` flag so the row drops from the default workflow list; it
7047
+ does NOT change the workflow's status, delete anything, or hide it from
7048
+ `GET /api/workflows/{id}/status` or its downloads. Reversible via
7049
+ `POST /api/workflows/{id}/restore`.
7050
+ required:
7051
+ - workflow_id
7052
+ - status
7053
+ - archived
7054
+ - archived_at
7055
+ properties:
7056
+ workflow_id:
7057
+ $ref: '#/components/schemas/UuidV7'
7058
+ status:
7059
+ type: string
7060
+ enum:
7061
+ - completed
7062
+ - failed
7063
+ - partially_failed
7064
+ - cancelled
7065
+ - expired
7066
+ description: |
7067
+ The workflow's UNCHANGED terminal status — archive never mutates
7068
+ status, only sets the archived flag. Constrained to the terminal
7069
+ subset of `WorkflowStatus` (the only archivable states); an active
7070
+ workflow is a 409, never a 200.
7071
+ archived:
7072
+ type: boolean
7073
+ enum: [true]
7074
+ description: Always `true` on a 200 — the workflow is archived.
7075
+ archived_at:
7076
+ type: string
7077
+ format: date-time
7078
+ description: |
7079
+ ISO-8601 timestamp the workflow was FIRST archived. Idempotent —
7080
+ a re-archive of an already-archived workflow returns the original
7081
+ `archived_at`, unchanged.
7082
+
7083
+ WorkflowArchiveSuccessEnvelope:
7084
+ type: object
7085
+ additionalProperties: false
7086
+ required:
7087
+ - success
7088
+ - data
7089
+ properties:
7090
+ success:
7091
+ type: boolean
7092
+ enum: [true]
7093
+ data:
7094
+ $ref: '#/components/schemas/WorkflowArchiveResponse'
7095
+
7096
+ WorkflowRestoreResponse:
7097
+ type: object
7098
+ description: |
7099
+ Response body for `POST /api/workflows/{id}/restore` (ticket
7100
+ [`j2s6T2qf`](https://trello.com/c/j2s6T2qf)). Restoring clears the
7101
+ `archived` flag so the workflow reappears in the default list. The
7102
+ inverse of archive — status, jobs, outputs, and downloads are
7103
+ untouched.
7104
+ required:
7105
+ - workflow_id
7106
+ - status
7107
+ - archived
7108
+ properties:
7109
+ workflow_id:
7110
+ $ref: '#/components/schemas/UuidV7'
7111
+ status:
7112
+ $ref: '#/components/schemas/WorkflowStatus'
7113
+ archived:
7114
+ type: boolean
7115
+ enum: [false]
7116
+ description: |
7117
+ Always `false` on a 200 — the workflow is no longer archived
7118
+ (or was never archived; restore is an idempotent no-op there).
7119
+ No `archived_at` is returned once restored.
7120
+
7121
+ WorkflowRestoreSuccessEnvelope:
7122
+ type: object
7123
+ additionalProperties: false
7124
+ required:
7125
+ - success
7126
+ - data
7127
+ properties:
7128
+ success:
7129
+ type: boolean
7130
+ enum: [true]
7131
+ data:
7132
+ $ref: '#/components/schemas/WorkflowRestoreResponse'
7133
+
6800
7134
  WorkflowExpiredResponse:
6801
7135
  allOf:
6802
7136
  - $ref: '#/components/schemas/ErrorEnvelope'
@@ -9373,12 +9707,29 @@ components:
9373
9707
  description: |
9374
9708
  Caller-supplied logical-policy hint on `WorkflowCreateRequest`.
9375
9709
  NOT a backend selector — server is final authority on routing.
9710
+
9711
+ `auto` is the only committed value; the other three are
9712
+ `planned` — the API runtime returns `422 feature_not_available`
9713
+ for any non-`auto` value until they ship. Value availability is
9714
+ carried by `per_value_availability` below and promoted to the
9715
+ authoritative sidecar as
9716
+ `workflow_features.processing.class_hint` (keyed by request-shape
9717
+ path, mirroring `workflow_features.delivery.mode`; the decorative
9718
+ `x-availability`/openapi is not authoritative — consumers read the
9719
+ runtime endpoint / sidecar).
9720
+
9376
9721
  - `auto` (default): server routes safely.
9377
- - `short_form_only`: fail fast (422 with `reason:
9378
- tier_policy`) if any job would require `long_form`.
9379
- - `long_form_allowed`: caller accepts slower queue/runtime
9380
- semantics.
9381
- - `long_form_preferred`: prefer `long_form` pool when
9722
+ - `short_form_only` (planned): once shipped, fails fast when any
9723
+ job would require `long_form`. The dedicated fail-fast reject
9724
+ envelope is defined at graduation (co-design with the API
9725
+ handler); while planned the reject is the standard
9726
+ `feature_not_available`. NOTE: `tier_policy` is a success-path
9727
+ advisory reason on `ProcessingClassReason` (why an honored
9728
+ hint drove classification), NOT a 422 reject reason —
9729
+ `ProcessingClassRejectReason` stays ceiling-reasons only.
9730
+ - `long_form_allowed` (planned): caller accepts slower
9731
+ queue/runtime semantics.
9732
+ - `long_form_preferred` (planned): prefer `long_form` pool when
9382
9733
  eligible (test/isolation use cases).
9383
9734
  enum:
9384
9735
  - auto
@@ -9386,6 +9737,11 @@ components:
9386
9737
  - long_form_allowed
9387
9738
  - long_form_preferred
9388
9739
  default: auto
9740
+ per_value_availability:
9741
+ auto: { availability: stable }
9742
+ short_form_only: { availability: planned }
9743
+ long_form_allowed: { availability: planned }
9744
+ long_form_preferred: { availability: planned }
9389
9745
 
9390
9746
  EstimateQuality:
9391
9747
  type: string
@@ -10404,10 +10760,13 @@ components:
10404
10760
  minimum: 0
10405
10761
  description: |
10406
10762
  OPTIONAL. Original input size in bytes — the left side of the
10407
- list-row savings readout. For multi-input jobs, the combined
10408
- size of all source inputs. Pair with `output_size_bytes` to
10409
- render "1.2 MB → 480 KB (↓60%)" without a drill-in. Absent when
10410
- not yet known or not applicable.
10763
+ list-row savings readout. This is the job's DIRECT / base
10764
+ originating-upload size (a single base input), **not** a recursive
10765
+ sum of all source inputs; it is omitted for jobs whose input is an
10766
+ upstream `job_output` (merge / derived jobs). Pair with
10767
+ `output_size_bytes` to render "1.2 MB → 480 KB (↓60%)" without a
10768
+ drill-in — a non-authoritative at-a-glance summary. Absent when not
10769
+ yet known or not applicable.
10411
10770
  example: 1258291
10412
10771
  output_size_bytes:
10413
10772
  type: integer
@@ -10415,10 +10774,16 @@ components:
10415
10774
  minimum: 0
10416
10775
  description: |
10417
10776
  OPTIONAL. Final job output size in bytes — the right side of the
10418
- savings readout. The aggregate deliverable size for the job (the
10419
- authoritative per-output sizes remain on
10420
- `GET /{id}/downloads`). Absent until the job completes / when not
10421
- applicable.
10777
+ before→after savings readout. The **main/terminal deliverable's**
10778
+ size: the **highest-position completed non-thumbnail** operation's
10779
+ output — **NOT a sum across the job's operations** (a thumbnail's
10780
+ size is excluded; for a compress+thumbnail job this is the compressed
10781
+ output). Authoritative per-output sizes remain on
10782
+ `GET /{id}/downloads`. Populated from the highest-position COMPLETED
10783
+ op, so it is **PROVISIONAL while the job is still running** (a
10784
+ later-completing op can become the main deliverable and change this
10785
+ value) and final only once the job reaches a **terminal** status.
10786
+ Absent until a non-thumbnail op has completed with a recorded size.
10422
10787
  example: 491520
10423
10788
  operation_types:
10424
10789
  type: array
@@ -10483,6 +10848,24 @@ components:
10483
10848
  oneOf:
10484
10849
  - $ref: '#/components/schemas/WorkflowCreditSummary'
10485
10850
  - type: 'null'
10851
+ archived:
10852
+ type: boolean
10853
+ description: |
10854
+ Whether this workflow is archived (hidden from the default list;
10855
+ surfaced only via `?archived=true`). Set by
10856
+ `POST /api/workflows/{id}/archive`, cleared by
10857
+ `POST /api/workflows/{id}/restore`. Archiving is a recoverable
10858
+ declutter — it does NOT delete the workflow or hide it from
10859
+ `GET /api/workflows/{id}/status` or its downloads. **OPTIONAL
10860
+ (additive)** — absent is treated as `false` (not archived),
10861
+ covering legacy rows written before this field existed. Per ticket
10862
+ [`j2s6T2qf`](https://trello.com/c/j2s6T2qf).
10863
+ archived_at:
10864
+ type: string
10865
+ format: date-time
10866
+ description: |
10867
+ ISO-8601 timestamp the workflow was archived. Present only when
10868
+ `archived: true`; absent otherwise. Additive/optional.
10486
10869
 
10487
10870
  WorkflowCreditSummary:
10488
10871
  type: object
@@ -10755,13 +11138,37 @@ components:
10755
11138
  format: int64
10756
11139
  minimum: 0
10757
11140
  description: |
10758
- OPTIONAL. Original input size in bytes for this job (combined
10759
- source size for multi-input jobs). The drill-in mirror of
10760
- `WorkflowSummaryJob.input_size_bytes`; the input side of the
10761
- savings readout (output sizes remain on the per-operation
10762
- `OperationResult.size_bytes` / `GET /{id}/downloads`). OPTIONAL
10763
- for the same webhook-payload reason as `input_filename`.
11141
+ OPTIONAL. Original input size in bytes for this job — the job's
11142
+ DIRECT / base originating-upload size (a single base input),
11143
+ **not** a recursive sum of all source inputs; omitted for jobs
11144
+ whose input is an upstream `job_output` (merge / derived). The
11145
+ drill-in mirror of `WorkflowSummaryJob.input_size_bytes`; the input
11146
+ side of the savings readout (output sizes remain on the
11147
+ per-operation `OperationResult.size_bytes` / `GET /{id}/downloads`).
11148
+ OPTIONAL for the same webhook-payload reason as `input_filename`.
10764
11149
  example: 1258291
11150
+ output_size_bytes:
11151
+ type: integer
11152
+ format: int64
11153
+ minimum: 0
11154
+ description: |
11155
+ OPTIONAL. Final job output size in bytes — the **right** side of the
11156
+ before→after savings readout. The **main/terminal deliverable's**
11157
+ size: the **highest-position completed non-thumbnail** operation's
11158
+ output — **NOT a sum across the job's operations** (a thumbnail's
11159
+ size is excluded; for a compress+thumbnail job this is the compressed
11160
+ output). Authoritative per-output sizes remain on
11161
+ `GET /{id}/downloads`. The drill-in mirror of
11162
+ `WorkflowSummaryJob.output_size_bytes` (same semantics); pairs with
11163
+ `input_size_bytes` above. Populated from the highest-position
11164
+ COMPLETED op, so it is **PROVISIONAL while the job is still running**
11165
+ (a later-completing op can become the main deliverable and change
11166
+ this value) and final only once the job reaches a **terminal**
11167
+ status. Absent until a non-thumbnail op has completed with a recorded
11168
+ size, and OPTIONAL for the same webhook-payload reason as
11169
+ `input_filename`. Ticket [`j2s6T2qf`](https://trello.com/c/j2s6T2qf)
11170
+ (FE before→after size, workflow-view launch ask).
11171
+ example: 491520
10765
11172
  processing_class:
10766
11173
  $ref: '#/components/schemas/ProcessingClass'
10767
11174
  description: |
@@ -11165,7 +11572,100 @@ components:
11165
11572
  $ref: '#/components/schemas/UuidV7'
11166
11573
  filename:
11167
11574
  type: string
11168
- description: Output filename
11575
+ description: |
11576
+ The **download filename** the API synthesises for this output — a
11577
+ human-friendly, extension-bearing name. This is a DIFFERENT surface
11578
+ from the S3 object key (an opaque UUID/`output-NNN` leaf governed by
11579
+ ADR-0014 §D9); the two are independent by design. Composed as
11580
+ `<stem><marker><suffix><.ext>`:
11581
+
11582
+ - **stem** — derived from the originating upload's `original_name`
11583
+ (a chained job resolves through its upstream to the original
11584
+ upload; path separators, control characters and quotes stripped);
11585
+ collapses to `download` if the sanitised stem is empty. When there
11586
+ is **no** original name at all (a `job_output`-sourced job with no
11587
+ upstream upload, or an unrecorded/purged name — rare), the whole
11588
+ field falls back to the S3-key basename **as-is, unmarked**; the
11589
+ per-op marker below applies only to the `original_name`-derived
11590
+ stem, so that fallback path is the one unlabelled case and is
11591
+ outside this map's scope.
11592
+ - **marker** — a per-operation label so **every** processed output
11593
+ is self-describing: it names what the output IS and disambiguates
11594
+ the different operations of a job from each other and from the
11595
+ original (ticket [`50obWMbm`](https://trello.com/c/50obWMbm), user
11596
+ launch feedback — the user hit a watermarked-main + thumbnail
11597
+ collision within one job). **Scope:** the marker resolves
11598
+ within-job and vs-original ambiguity, NOT workflow-wide uniqueness
11599
+ — two SEPARATE jobs running the same op on the same-named upload
11600
+ still produce the same name (a rarer case a job/node identifier
11601
+ would address; out of scope for this label map). **Invariant, with
11602
+ two explicit exceptions:** every op below **except `passthrough`**
11603
+ carries a non-empty marker, so a terminal deliverable **derived
11604
+ from an `original_name`** never falls back to a bare, op-less stem
11605
+ (the bug this fixes). The two exceptions are inline: `passthrough`
11606
+ (the identity op — its output IS the original) and the
11607
+ no-`original_name` S3-key fallback described under **stem** above. The
11608
+ canonical marker is keyed on the **public (masked) operation
11609
+ type** — a long-form concat surfaces as `compress` and carries its
11610
+ marker:
11611
+ - `compress` → `-compressed`
11612
+ - `thumbnail` (and the `thumbnail_image` / `thumbnail_video` /
11613
+ `thumbnail_document` / `thumbnail_office` sub-types, which all
11614
+ surface publicly as `thumbnail`) → `-thumbnail`
11615
+ - `image_watermark` / `text_watermark` / `video_watermark` /
11616
+ `video_text_watermark` / `audio_watermark` → `-watermarked`
11617
+ - `convert` → `-converted` (the extension changes too, but the
11618
+ marker keeps naming consistent — no operation is a special case)
11619
+ - `merge` → `-merged`
11620
+ - `transform` → `-transformed`
11621
+ - `custom_luma` → `-graded`
11622
+ - `audio_overlay` → `-overlay`
11623
+ - `audio_to_video` → `-video`
11624
+ - `render_variants` → `-variant`
11625
+ - `split` → `-part`, plus the `-<n>` piece suffix (below) when
11626
+ the run yields more than one piece. The word-marker is required
11627
+ because a split can legally produce a SINGLE output (e.g.
11628
+ `frame_range: "5-5"`, a one-page PDF range, or an interval that
11629
+ exceeds the media duration) — without it a single-piece split
11630
+ would fall back to the bare original stem.
11631
+ - `archive` → `-archive` (the archive OPERATION's output). Note:
11632
+ the workflow `delivery.bundle` path names its zip from
11633
+ `delivery.bundle_filename` instead — that is a separate surface
11634
+ and takes precedence when a bundle is requested.
11635
+ - `passthrough` → **none, by design** — it emits the input
11636
+ UNCHANGED (it is the identity/plumbing op), so its output IS the
11637
+ original file and carries the original name. It is normally
11638
+ consumed by a downstream job (not a terminal deliverable); when
11639
+ it is a leaf, returning the original name is correct, not a
11640
+ mislabel.
11641
+ **This whole map is co-owned with `compression_api`'s
11642
+ `DownloadFilenameComputer`** (as the `MIME_EXTENSION` table is) —
11643
+ api implements it; contracts is the normative source.
11644
+ - **suffix** — `-<n>` **only** when the operation produced more than
11645
+ one output. `<n>` is the output's **0-based position in the
11646
+ producer's `outputs[]` array** — a uniqueness key. It is
11647
+ **INDEPENDENT of `page_index` and must NOT be read as a page
11648
+ number**: a `pages: '5-7'` PDF fan-out emits
11649
+ `{ filename: "report-converted-0.png", page_index: 5 }` (PDF→PNG is a
11650
+ `convert`, hence `-converted`) — the `-0` is the
11651
+ array position, `5` is the source page. Reconciling them is a bug.
11652
+ - **.ext** — the extension of the **actual produced format**, never
11653
+ the input's and never guessed. Resolved from the worker-reported
11654
+ `output_file_type` (AsyncAPI `OperationResult.output_file_type`,
11655
+ ADR-0022) when present — authoritative for formats the API cannot
11656
+ infer (e.g. `compress.output_format` ∈ `{auto, smallest}`) — else
11657
+ derived from the operation chain. The chain additionally
11658
+ disambiguates a MIME→extension collision even when the MIME is
11659
+ known (`audio/ogg` → `.ogg` for Vorbis vs `.opus` for Opus). When
11660
+ the produced format is
11661
+ genuinely unknown at download time the name is emitted with **no
11662
+ extension** rather than a wrong one. `split` and `audio_to_video`
11663
+ derive to no format, so their extension comes **only** from
11664
+ `output_file_type`.
11665
+
11666
+ Sanitised for JSON (Unicode-safe); the `Content-Disposition` header
11667
+ on the presigned `download_url` is ASCII-sanitised separately, so
11668
+ the two user-visible names may legitimately differ.
11169
11669
  example: "photo.jpg"
11170
11670
  size_bytes:
11171
11671
  type: integer
@@ -11218,9 +11718,14 @@ components:
11218
11718
  type: integer
11219
11719
  minimum: 1
11220
11720
  description: |
11221
- 1-based page number for PDF-page fan-out outputs (convert
11222
- PDF->image). Gapless within an operation (an N-page conversion
11223
- emits `page_index` 1..N). Mutually exclusive with `position`.
11721
+ 1-based **literal source page number** for PDF-page fan-out
11722
+ outputs (convert PDF->image) — the actual page from the input PDF.
11723
+ A full conversion emits `1..N`; a sparse `pages` selection (e.g.
11724
+ `'1-5,8'`) emits exactly the selected pages (`1,2,3,4,5,8`), so it
11725
+ is gapless ONLY for a full conversion, not for a sparse selection.
11726
+ NOT the download `filename` suffix (that is a 0-based array
11727
+ position — see `OperationDownload.filename`). Mutually exclusive with `position`.
11728
+ Normative semantics: ADR-0009 §D2.
11224
11729
  Absent on non-indexed (single-output) downloads. Mirrors
11225
11730
  `OperationResultOutputEntry.page_index`. Per ADR-0009 §D2.
11226
11731
  example: 1
@@ -11656,9 +12161,14 @@ components:
11656
12161
  type: integer
11657
12162
  minimum: 1
11658
12163
  description: |
11659
- 1-based page number for PDF-page fan-out outputs (convert
11660
- PDF->image). Gapless within an operation (an N-page conversion
11661
- emits `page_index` 1..N). Mutually exclusive with `position`.
12164
+ 1-based **literal source page number** for PDF-page fan-out
12165
+ outputs (convert PDF->image) — the actual page from the input PDF.
12166
+ A full conversion emits `1..N`; a sparse `pages` selection (e.g.
12167
+ `'1-5,8'`) emits exactly the selected pages (`1,2,3,4,5,8`), so it
12168
+ is gapless ONLY for a full conversion, not for a sparse selection.
12169
+ NOT the download `filename` suffix (that is a 0-based array
12170
+ position — see `OperationDownload.filename`). Mutually exclusive with `position`.
12171
+ Normative semantics: ADR-0009 §D2.
11662
12172
  Absent on non-indexed outputs. Mirrors
11663
12173
  `OperationResultOutputEntry.page_index`. Per ADR-0009 §D2.
11664
12174
  example: 1
@@ -11917,6 +12427,8 @@ components:
11917
12427
  schema)
11918
12428
  - `delivery.selection.type.per_value_availability` (from the
11919
12429
  `DeliverySelection.type` schema)
12430
+ - `processing.class_hint.per_value_availability` (from the
12431
+ `ProcessingClassHint` enum — ticket `tK81wZKJ`)
11920
12432
 
11921
12433
  Closes the co0CERtJ (v2.19.0) authority-hierarchy gap: those
11922
12434
  `planned` downgrades lived only in the (decorative per ADR-0001
@@ -11946,6 +12458,14 @@ components:
11946
12458
  properties:
11947
12459
  per_value_availability:
11948
12460
  $ref: '#/components/schemas/PerValueAvailability'
12461
+ processing:
12462
+ type: object
12463
+ properties:
12464
+ class_hint:
12465
+ type: object
12466
+ properties:
12467
+ per_value_availability:
12468
+ $ref: '#/components/schemas/PerValueAvailability'
11949
12469
  image_encode_capabilities:
11950
12470
  description: |
11951
12471
  Pre-flight image-encode capability matrix
@@ -12521,6 +13041,40 @@ components:
12521
13041
  [I3](https://trello.com/c/eCWIpug8); until then the
12522
13042
  contract advertises the field shape but the endpoint
12523
13043
  does not yet surface the field.
13044
+ max_input_size_bytes:
13045
+ type: integer
13046
+ format: int64
13047
+ minimum: 1
13048
+ description: |
13049
+ Optional mime-group-level INPUT-file size ceiling in BYTES
13050
+ (ticket [`uKsFzORi`](https://trello.com/c/uKsFzORi)). Sibling of
13051
+ `max_output_pixels`. **Applies to the enclosing operation's input** —
13052
+ currently authored on `compress` image/document groups (the API
13053
+ enforces it on compress input only: AVIF 20 MiB, other images 500 MiB,
13054
+ office/ODF/EPUB 100 MiB). A consumer MUST scope it to the operation
13055
+ whose schema carries it and MUST NOT assume it applies to other
13056
+ operations. An oversize input is rejected at create-time (ADR-0012
13057
+ band-ceiling 422 family).
13058
+
13059
+ **XOR with `processing_class` caps (ADR-0011):** a group carries this
13060
+ group-level cap ONLY when it has NO `processing_class` band. Banded
13061
+ media (e.g. `video`) put input caps in
13062
+ `processing_class.<class>.constraints.max_input_size_bytes` instead —
13063
+ never both, so the input ceiling lives in exactly one place per group.
13064
+ CI-enforced by `scripts/check-per-tier-constraints.py`.
13065
+ max_input_duration:
13066
+ type: string
13067
+ description: |
13068
+ Optional mime-group-level INPUT duration ceiling as an ISO-8601
13069
+ duration string (ticket [`KzrquIX7`](https://trello.com/c/KzrquIX7)) —
13070
+ e.g. `"PT2H"`. Sibling of `max_output_pixels`; same
13071
+ XOR-with-`processing_class` rule as `max_input_size_bytes`
13072
+ (group-level ONLY where no `processing_class` band; banded media use
13073
+ `processing_class.<class>.constraints.max_input_duration`). Currently
13074
+ authored on `audio_to_video.audio` (2h input cap, mirroring the
13075
+ worker's audio-duration limit). Over-cap inputs are rejected at
13076
+ create-time.
13077
+ example: "PT2H"
12524
13078
  processing_class:
12525
13079
  type: object
12526
13080
  description: |