@giveitsmaller/contracts 0.76.0 → 0.79.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 (559) hide show
  1. package/README.md +2 -2
  2. package/accepted-options/accepted-options.json +1 -1
  3. package/accepted-options/image-output-routes.json +16 -2
  4. package/asyncapi/README.md +1 -1
  5. package/asyncapi/events.yaml +153 -28
  6. package/availability/availability.json +74 -9
  7. package/code-builder/code-builder-metadata.json +74 -9
  8. package/dist/asyncapi/AnonymousSchema_217.d.ts +6 -0
  9. package/dist/asyncapi/AnonymousSchema_217.js +7 -0
  10. package/dist/asyncapi/Failure.d.ts +1 -0
  11. package/dist/asyncapi/MultiOutputCompletion.d.ts +1 -0
  12. package/dist/asyncapi/SingleOutputCompletion.d.ts +1 -0
  13. package/dist/asyncapi/UploadProbeMediaMetadata.d.ts +14 -0
  14. package/dist/asyncapi/index.d.ts +1 -0
  15. package/dist/asyncapi/index.js +1 -0
  16. package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
  17. package/dist/openapi/models/AccountLimitEntry.js +1 -1
  18. package/dist/openapi/models/AccountLimits.d.ts +1 -1
  19. package/dist/openapi/models/AccountLimits.js +1 -1
  20. package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
  21. package/dist/openapi/models/AccountLimitsLimits.js +1 -1
  22. package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
  23. package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
  24. package/dist/openapi/models/AnonymousOperationNotAllowedResponse.d.ts +145 -0
  25. package/dist/openapi/models/AnonymousOperationNotAllowedResponse.js +82 -0
  26. package/dist/openapi/models/AnonymousQuotaExhaustedResponse.d.ts +131 -0
  27. package/dist/openapi/models/AnonymousQuotaExhaustedResponse.js +77 -0
  28. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  29. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  30. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  31. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  32. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  33. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  34. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  35. package/dist/openapi/models/AuthErrorType.js +1 -1
  36. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
  37. package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
  38. package/dist/openapi/models/AuthenticatedIdentity.d.ts +1 -1
  39. package/dist/openapi/models/AuthenticatedIdentity.js +1 -1
  40. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  41. package/dist/openapi/models/AvailabilityValue.js +1 -1
  42. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  43. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  44. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  45. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  46. package/dist/openapi/models/BillingCheckoutRequest.d.ts +1 -1
  47. package/dist/openapi/models/BillingCheckoutRequest.js +1 -1
  48. package/dist/openapi/models/BillingCheckoutSession.d.ts +1 -1
  49. package/dist/openapi/models/BillingCheckoutSession.js +1 -1
  50. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +1 -1
  51. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +1 -1
  52. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  53. package/dist/openapi/models/CallbackEventType.js +1 -1
  54. package/dist/openapi/models/CancelAccountDeletion200Response.d.ts +1 -1
  55. package/dist/openapi/models/CancelAccountDeletion200Response.js +1 -1
  56. package/dist/openapi/models/CancelAccountDeletion200ResponseData.d.ts +1 -1
  57. package/dist/openapi/models/CancelAccountDeletion200ResponseData.js +1 -1
  58. package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
  59. package/dist/openapi/models/CapabilityCondition.js +1 -1
  60. package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
  61. package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
  62. package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
  63. package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
  64. package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
  65. package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
  66. package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
  67. package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
  68. package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
  69. package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
  70. package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
  71. package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
  72. package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
  73. package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
  74. package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
  75. package/dist/openapi/models/CapabilityConstraint.js +1 -1
  76. package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
  77. package/dist/openapi/models/CapabilityInputSpec.js +1 -1
  78. package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
  79. package/dist/openapi/models/CapabilityProduces.js +1 -1
  80. package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
  81. package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
  82. package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
  83. package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
  84. package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
  85. package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
  86. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  87. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  88. package/dist/openapi/models/CheckoutSessionStatusResponse.d.ts +1 -1
  89. package/dist/openapi/models/CheckoutSessionStatusResponse.js +1 -1
  90. package/dist/openapi/models/CheckoutSessionStatusResponseData.d.ts +1 -1
  91. package/dist/openapi/models/CheckoutSessionStatusResponseData.js +1 -1
  92. package/dist/openapi/models/CodegenSource.d.ts +1 -1
  93. package/dist/openapi/models/CodegenSource.js +1 -1
  94. package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
  95. package/dist/openapi/models/CodegenSourceInput.js +1 -1
  96. package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
  97. package/dist/openapi/models/CodegenSourceJob.js +1 -1
  98. package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
  99. package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
  100. package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
  101. package/dist/openapi/models/CodegenSourceOperation.js +1 -1
  102. package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
  103. package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
  104. package/dist/openapi/models/CompositionPlan.d.ts +1 -1
  105. package/dist/openapi/models/CompositionPlan.js +1 -1
  106. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  107. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  108. package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
  109. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  110. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  111. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  112. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  113. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  114. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  115. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  116. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  117. package/dist/openapi/models/ConnectionSource.js +1 -1
  118. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  119. package/dist/openapi/models/ContactRequest.js +1 -1
  120. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  121. package/dist/openapi/models/ContactSubject.js +1 -1
  122. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  123. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  124. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  125. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  126. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  127. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  128. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  129. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  130. package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +1 -1
  131. package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +1 -1
  132. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  133. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  134. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  135. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  136. package/dist/openapi/models/CreateWorkflow401Response.d.ts +1 -1
  137. package/dist/openapi/models/CreateWorkflow401Response.js +1 -1
  138. package/dist/openapi/models/CreateWorkflow403Response.d.ts +33 -0
  139. package/dist/openapi/models/CreateWorkflow403Response.js +57 -0
  140. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  141. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  142. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  143. package/dist/openapi/models/CreditTransaction.js +1 -1
  144. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  145. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  146. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  147. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  148. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  149. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  150. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  151. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  152. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  153. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  154. package/dist/openapi/models/Delivery.d.ts +1 -1
  155. package/dist/openapi/models/Delivery.js +1 -1
  156. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  157. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  158. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  159. package/dist/openapi/models/DeliveryPlan.js +1 -1
  160. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  161. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  162. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  163. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  164. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  165. package/dist/openapi/models/DeliverySelection.js +1 -1
  166. package/dist/openapi/models/DownloadBundle.d.ts +1 -1
  167. package/dist/openapi/models/DownloadBundle.js +1 -1
  168. package/dist/openapi/models/DroppedOption.d.ts +1 -1
  169. package/dist/openapi/models/DroppedOption.js +1 -1
  170. package/dist/openapi/models/EmailNotify.d.ts +1 -1
  171. package/dist/openapi/models/EmailNotify.js +1 -1
  172. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  173. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  174. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  175. package/dist/openapi/models/EndpointProjection.js +1 -1
  176. package/dist/openapi/models/EndpointProjectionServersInner.d.ts +1 -1
  177. package/dist/openapi/models/EndpointProjectionServersInner.js +1 -1
  178. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  179. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  180. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  181. package/dist/openapi/models/EstimateQuality.js +1 -1
  182. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  183. package/dist/openapi/models/EstimateRange.js +1 -1
  184. package/dist/openapi/models/ExportAccountData200Response.d.ts +1 -1
  185. package/dist/openapi/models/ExportAccountData200Response.js +1 -1
  186. package/dist/openapi/models/ExportAccountData200ResponseData.d.ts +4 -3
  187. package/dist/openapi/models/ExportAccountData200ResponseData.js +4 -3
  188. package/dist/openapi/models/ExportAccountData200ResponseDataBilling.d.ts +36 -0
  189. package/dist/openapi/models/ExportAccountData200ResponseDataBilling.js +42 -0
  190. package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.d.ts +58 -0
  191. package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.js +62 -0
  192. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  193. package/dist/openapi/models/ExternalDestination.js +1 -1
  194. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  195. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  196. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  197. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  198. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  199. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  200. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  201. package/dist/openapi/models/ExternalImportToken.js +1 -1
  202. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  203. package/dist/openapi/models/ExternalSource.js +1 -1
  204. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  205. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  206. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  207. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  208. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  209. package/dist/openapi/models/FeatureViolation.js +1 -1
  210. package/dist/openapi/models/GetProfile200Response.d.ts +1 -1
  211. package/dist/openapi/models/GetProfile200Response.js +1 -1
  212. package/dist/openapi/models/GetProfile200ResponseData.d.ts +1 -1
  213. package/dist/openapi/models/GetProfile200ResponseData.js +1 -1
  214. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  215. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  216. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  217. package/dist/openapi/models/JobDefinition.js +1 -1
  218. package/dist/openapi/models/JobDownload.d.ts +1 -1
  219. package/dist/openapi/models/JobDownload.js +1 -1
  220. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  221. package/dist/openapi/models/JobInputV2.js +1 -1
  222. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  223. package/dist/openapi/models/JobMediaClass.js +1 -1
  224. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  225. package/dist/openapi/models/JobOutputSource.js +1 -1
  226. package/dist/openapi/models/JobResponse.d.ts +1 -1
  227. package/dist/openapi/models/JobResponse.js +1 -1
  228. package/dist/openapi/models/JobStatus.d.ts +1 -1
  229. package/dist/openapi/models/JobStatus.js +1 -1
  230. package/dist/openapi/models/JobType.d.ts +1 -1
  231. package/dist/openapi/models/JobType.js +1 -1
  232. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  233. package/dist/openapi/models/LivenessResponse.js +1 -1
  234. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  235. package/dist/openapi/models/LoginUser200Response.js +1 -1
  236. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  237. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  238. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  239. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  240. package/dist/openapi/models/LoginUser401Response.d.ts +1 -1
  241. package/dist/openapi/models/LoginUser401Response.js +1 -1
  242. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  243. package/dist/openapi/models/LoginUserRequest.js +1 -1
  244. package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
  245. package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
  246. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
  247. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
  248. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  249. package/dist/openapi/models/MetadataResponse.js +1 -1
  250. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  251. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  252. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  253. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  254. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  255. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  256. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  257. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  258. package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
  259. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  260. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  261. package/dist/openapi/models/MultiInputSource.js +1 -1
  262. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  263. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  264. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  265. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  266. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  267. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  268. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  269. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  270. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  271. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  272. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  273. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  274. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  275. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  276. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  277. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  278. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  279. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  280. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  281. package/dist/openapi/models/MultipartPartListing.js +1 -1
  282. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  283. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  284. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  285. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  286. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  287. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  288. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  289. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  290. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  291. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  292. package/dist/openapi/models/NotifyConfig.d.ts +1 -1
  293. package/dist/openapi/models/NotifyConfig.js +1 -1
  294. package/dist/openapi/models/OperationCapability.d.ts +1 -1
  295. package/dist/openapi/models/OperationCapability.js +1 -1
  296. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  297. package/dist/openapi/models/OperationDefinition.js +1 -1
  298. package/dist/openapi/models/OperationDownload.d.ts +5 -1
  299. package/dist/openapi/models/OperationDownload.js +1 -1
  300. package/dist/openapi/models/OperationInputModel.d.ts +1 -1
  301. package/dist/openapi/models/OperationInputModel.js +1 -1
  302. package/dist/openapi/models/OperationMessageParamsValue.d.ts +1 -1
  303. package/dist/openapi/models/OperationMessageParamsValue.js +1 -1
  304. package/dist/openapi/models/OperationResponse.d.ts +1 -1
  305. package/dist/openapi/models/OperationResponse.js +1 -1
  306. package/dist/openapi/models/OperationResult.d.ts +1 -1
  307. package/dist/openapi/models/OperationResult.js +1 -1
  308. package/dist/openapi/models/OperationResultMetadata.d.ts +1 -1
  309. package/dist/openapi/models/OperationResultMetadata.js +1 -1
  310. package/dist/openapi/models/OperationResultMetrics.d.ts +3 -3
  311. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  312. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  313. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  314. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  315. package/dist/openapi/models/OperationStatus.js +1 -1
  316. package/dist/openapi/models/OperationType.d.ts +1 -1
  317. package/dist/openapi/models/OperationType.js +1 -1
  318. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  319. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  320. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  321. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  322. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  323. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  324. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  325. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  326. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  327. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  328. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +1 -1
  329. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +1 -1
  330. package/dist/openapi/models/OptionSchema.d.ts +5 -2
  331. package/dist/openapi/models/OptionSchema.js +1 -1
  332. package/dist/openapi/models/OutputProperties.d.ts +1 -1
  333. package/dist/openapi/models/OutputProperties.js +1 -1
  334. package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
  335. package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
  336. package/dist/openapi/models/PerClassAvailabilityEntry.d.ts +1 -1
  337. package/dist/openapi/models/PerClassAvailabilityEntry.js +1 -1
  338. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  339. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  340. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  341. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  342. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  343. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  344. package/dist/openapi/models/ProbePendingResponse.d.ts +1 -1
  345. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  346. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  347. package/dist/openapi/models/ProcessingClass.js +1 -1
  348. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +30 -11
  349. package/dist/openapi/models/ProcessingClassBandViolation.js +4 -1
  350. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  351. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  352. package/dist/openapi/models/ProcessingClassEntry.d.ts +15 -1
  353. package/dist/openapi/models/ProcessingClassEntry.js +7 -1
  354. package/dist/openapi/models/ProcessingClassEntryInputUniformity.d.ts +65 -0
  355. package/dist/openapi/models/ProcessingClassEntryInputUniformity.js +57 -0
  356. package/dist/openapi/models/ProcessingClassEntryResolutionBands.d.ts +66 -0
  357. package/dist/openapi/models/ProcessingClassEntryResolutionBands.js +56 -0
  358. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  359. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  360. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  361. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  362. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  363. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  364. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +26 -4
  365. package/dist/openapi/models/ProcessingClassRejectReason.js +27 -5
  366. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  367. package/dist/openapi/models/ProcessingPlan.js +1 -1
  368. package/dist/openapi/models/ProcessingPlanJob.d.ts +14 -1
  369. package/dist/openapi/models/ProcessingPlanJob.js +4 -1
  370. package/dist/openapi/models/ReEncodeDecision.d.ts +18 -7
  371. package/dist/openapi/models/ReEncodeDecision.js +18 -7
  372. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  373. package/dist/openapi/models/ReadinessResponse.js +1 -1
  374. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  375. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  376. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  377. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  378. package/dist/openapi/models/RequestAccountDeletion200Response.d.ts +1 -1
  379. package/dist/openapi/models/RequestAccountDeletion200Response.js +1 -1
  380. package/dist/openapi/models/RequestAccountDeletion200ResponseData.d.ts +1 -1
  381. package/dist/openapi/models/RequestAccountDeletion200ResponseData.js +1 -1
  382. package/dist/openapi/models/RequestAccountDeletionRequest.d.ts +1 -1
  383. package/dist/openapi/models/RequestAccountDeletionRequest.js +1 -1
  384. package/dist/openapi/models/ResendVerificationEmailRequest.d.ts +1 -1
  385. package/dist/openapi/models/ResendVerificationEmailRequest.js +1 -1
  386. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  387. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  388. package/dist/openapi/models/ResolutionBand.d.ts +44 -0
  389. package/dist/openapi/models/ResolutionBand.js +62 -0
  390. package/dist/openapi/models/ResolutionBandCeiling.d.ts +68 -0
  391. package/dist/openapi/models/ResolutionBandCeiling.js +57 -0
  392. package/dist/openapi/models/ResolutionBandCeilingConstraints.d.ts +32 -0
  393. package/dist/openapi/models/ResolutionBandCeilingConstraints.js +41 -0
  394. package/dist/openapi/models/ResolutionBandCeilingDerivation.d.ts +48 -0
  395. package/dist/openapi/models/ResolutionBandCeilingDerivation.js +51 -0
  396. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  397. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  398. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  399. package/dist/openapi/models/RetryResponse.js +1 -1
  400. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  401. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  402. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  403. package/dist/openapi/models/SseCompletionBase.js +1 -1
  404. package/dist/openapi/models/SseConnectionLimitResponse.d.ts +1 -1
  405. package/dist/openapi/models/SseConnectionLimitResponse.js +1 -1
  406. package/dist/openapi/models/SseEventType.d.ts +1 -1
  407. package/dist/openapi/models/SseEventType.js +1 -1
  408. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  409. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  410. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  411. package/dist/openapi/models/SseJobFailedData.js +1 -1
  412. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  413. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  414. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  415. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  416. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  417. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  418. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +5 -1
  419. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  420. package/dist/openapi/models/SseOperationCompletedData.d.ts +16 -1
  421. package/dist/openapi/models/SseOperationCompletedData.js +4 -1
  422. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  423. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  424. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  425. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  426. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  427. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  428. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  429. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  430. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  431. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  432. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  433. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  434. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  435. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  436. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  437. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  438. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  439. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  440. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  441. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  442. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  443. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  444. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  445. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  446. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  447. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  448. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  449. package/dist/openapi/models/UploadFile403Response.js +1 -1
  450. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  451. package/dist/openapi/models/UploadFile422Response.js +1 -1
  452. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +106 -1
  453. package/dist/openapi/models/UploadProbeMediaMetadata.js +35 -1
  454. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  455. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  456. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  457. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  458. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  459. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  460. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  461. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  462. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  463. package/dist/openapi/models/UploadResponse.js +1 -1
  464. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  465. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  466. package/dist/openapi/models/UploadSource.d.ts +1 -1
  467. package/dist/openapi/models/UploadSource.js +1 -1
  468. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  469. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  470. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  471. package/dist/openapi/models/UploadThresholds.js +1 -1
  472. package/dist/openapi/models/UserTier.d.ts +1 -1
  473. package/dist/openapi/models/UserTier.js +1 -1
  474. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  475. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  476. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  477. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  478. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  479. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  480. package/dist/openapi/models/WarningType.d.ts +1 -1
  481. package/dist/openapi/models/WarningType.js +1 -1
  482. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  483. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  484. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  485. package/dist/openapi/models/WebhookPayload.js +1 -1
  486. package/dist/openapi/models/WorkflowArchiveResponse.d.ts +1 -1
  487. package/dist/openapi/models/WorkflowArchiveResponse.js +1 -1
  488. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.d.ts +1 -1
  489. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.js +1 -1
  490. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  491. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  492. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  493. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  494. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  495. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  496. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  497. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  498. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  499. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  500. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  501. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  502. package/dist/openapi/models/WorkflowCreditSummary.d.ts +1 -1
  503. package/dist/openapi/models/WorkflowCreditSummary.js +1 -1
  504. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  505. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  506. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  507. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  508. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  509. package/dist/openapi/models/WorkflowEdge.js +1 -1
  510. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  511. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  512. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  513. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  514. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  515. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  516. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +17 -5
  517. package/dist/openapi/models/WorkflowPauseRequiredAction.js +18 -6
  518. package/dist/openapi/models/WorkflowPausedDetail.d.ts +5 -4
  519. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  520. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +6 -4
  521. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  522. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  523. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  524. package/dist/openapi/models/WorkflowRestoreResponse.d.ts +1 -1
  525. package/dist/openapi/models/WorkflowRestoreResponse.js +1 -1
  526. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.d.ts +1 -1
  527. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.js +1 -1
  528. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  529. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  530. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  531. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  532. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  533. package/dist/openapi/models/WorkflowSource.js +1 -1
  534. package/dist/openapi/models/WorkflowStatus.d.ts +9 -4
  535. package/dist/openapi/models/WorkflowStatus.js +9 -4
  536. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  537. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  538. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  539. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  540. package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
  541. package/dist/openapi/models/WorkflowSummary.js +1 -1
  542. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  543. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  544. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  545. package/dist/openapi/models/WorkflowWarning.js +1 -1
  546. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  547. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  548. package/dist/openapi/models/index.d.ts +11 -0
  549. package/dist/openapi/models/index.js +11 -0
  550. package/dist/openapi/runtime.d.ts +1 -1
  551. package/dist/openapi/runtime.js +1 -1
  552. package/openapi/README.md +1 -1
  553. package/openapi/api.yaml +625 -46
  554. package/operation-capabilities/operation-capabilities.json +129 -1
  555. package/operations/schemas/compress.yaml +39 -14
  556. package/operations/schemas/merge.yaml +28 -0
  557. package/operations/schemas/split.yaml +11 -5
  558. package/operations/schemas/video_text_watermark.yaml +55 -0
  559. package/package.json +3 -3
package/openapi/api.yaml CHANGED
@@ -103,7 +103,7 @@ info:
103
103
  of truth instead of hardcoding magic numbers. A runtime
104
104
  `GET /api/uploads/limits` endpoint for dynamic discovery
105
105
  (per-tier / per-environment overrides) is a deferred follow-up.
106
- version: 2.211.0
106
+ version: 2.214.0
107
107
  contact:
108
108
  name: API Support
109
109
 
@@ -1782,17 +1782,32 @@ paths:
1782
1782
  more operations / mime_groups / options gated by a higher
1783
1783
  subscription tier than the caller has. Each violation is
1784
1784
  listed in `violations[]` with `required_tier` populated.
1785
+ - `anonymous_operation_not_allowed`: an ANONYMOUS caller (no
1786
+ credential) requested an operation outside the anonymous
1787
+ allow-list. `operation` names the first such operation.
1788
+ A register-wall: signing in is the remedy, not upgrading.
1789
+ - `anonymous_quota_exhausted`: an anonymous caller has used
1790
+ its per-IP workflow allowance for the rolling 24 hours.
1791
+ Also a register-wall.
1792
+
1793
+ Both anonymous walls are checked BEFORE the workflow is
1794
+ built, and neither consumes the caller's anonymous
1795
+ allowance. An authenticated caller never receives either.
1785
1796
  content:
1786
1797
  application/json:
1787
1798
  schema:
1788
1799
  oneOf:
1789
1800
  - $ref: '#/components/schemas/TierRestrictionResponse'
1790
1801
  - $ref: '#/components/schemas/FeatureTierRestrictedResponse'
1802
+ - $ref: '#/components/schemas/AnonymousOperationNotAllowedResponse'
1803
+ - $ref: '#/components/schemas/AnonymousQuotaExhaustedResponse'
1791
1804
  discriminator:
1792
1805
  propertyName: error_type
1793
1806
  mapping:
1794
1807
  tier_restriction: '#/components/schemas/TierRestrictionResponse'
1795
1808
  feature_tier_restricted: '#/components/schemas/FeatureTierRestrictedResponse'
1809
+ anonymous_operation_not_allowed: '#/components/schemas/AnonymousOperationNotAllowedResponse'
1810
+ anonymous_quota_exhausted: '#/components/schemas/AnonymousQuotaExhaustedResponse'
1796
1811
  examples:
1797
1812
  feature_tier_restricted:
1798
1813
  summary: Free tier referencing a Pro-tier operation
@@ -1805,6 +1820,25 @@ paths:
1805
1820
  availability: "stable"
1806
1821
  required_tier: "pro"
1807
1822
  documentation_url: "https://docs.giveitsmaller.com/operations/image_watermark"
1823
+ anonymous_operation_not_allowed:
1824
+ summary: Anonymous caller requesting an operation outside the allow-list
1825
+ value:
1826
+ success: false
1827
+ error: "ANONYMOUS_OPERATION_NOT_ALLOWED"
1828
+ error_type: "anonymous_operation_not_allowed"
1829
+ message: "Sign up to use the 'text_watermark' operation."
1830
+ message_key: "error.anonymous_operation_not_allowed"
1831
+ locale: "en-GB"
1832
+ operation: "text_watermark"
1833
+ anonymous_quota_exhausted:
1834
+ summary: Anonymous caller past its rolling-24h allowance
1835
+ value:
1836
+ success: false
1837
+ error: "ANONYMOUS_QUOTA_EXHAUSTED"
1838
+ error_type: "anonymous_quota_exhausted"
1839
+ message: "Sign up to keep compressing."
1840
+ message_key: "error.anonymous_quota_exhausted"
1841
+ locale: "en-GB"
1808
1842
  '402':
1809
1843
  description: |
1810
1844
  Credit reservation failed (per ticket
@@ -1939,6 +1973,37 @@ paths:
1939
1973
  Caller resolves by switching to `re_encode_mode: auto`
1940
1974
  or `always`. The compatibility-probe algorithm is
1941
1975
  server-side and deliberately opaque per plan v5 §F8.2.
1976
+ - Inputs not concat-uniform (ticket `MjzzPCWt`). Returned for a
1977
+ job that routes to a processing class declaring
1978
+ `input_uniformity` (today `merge.video.long_form_re_encode`)
1979
+ when its inputs differ in stream layout or in a listed
1980
+ attribute. `ValidationErrorEnvelope` with `error:
1981
+ "INPUTS_NOT_CONCAT_UNIFORM"`; `details[]` entries are shaped
1982
+ `{operation: "merge", field: "inputs[i].<attribute> vs
1983
+ inputs[j].<attribute>", message: "..."}`, one per difference.
1984
+ **Coverage rule:** the API refuses every difference its upload
1985
+ probe can see WITH THE WORKER GATE'S SEMANTICS (audio present
1986
+ on one input and not another; video codec, resolution; audio
1987
+ codec, layout, channels, sample rate). NOT frame rate: the
1988
+ probe's `fps` is the AVERAGE rate, which legitimately drifts
1989
+ between concat-uniform clips, while the worker compares
1990
+ `r_frame_rate`, so comparing `fps` would refuse valid merges.
1991
+ Differences the probe does not carry with the worker's
1992
+ semantics yet (frame rate as `r_frame_rate`, stream counts
1993
+ beyond one video / one audio, stream order, pix_fmt, SAR,
1994
+ timebase, codec_tag, profile, sample_fmt) are
1995
+ refused by the worker after acceptance until the upload prober
1996
+ emits them; the probe schema declares them
1997
+ (`UploadProbeMediaMetadata`, card `lGeDDi4V`), and once a probe
1998
+ carries one, the API refuses that difference at create too. **An input whose probe has not
1999
+ completed is ADMITTED**, and the worker gate is its only
2000
+ check, the same as **an input that is an upstream job's
2001
+ output** (which has no upload probe). It does NOT get the
2002
+ `probe_pending` branch: a probe that never lands cannot be
2003
+ told apart from one still running, so refusing until it
2004
+ lands could make a create that never succeeds (ruled
2005
+ 2026-09-24 on api's `nmYdwHAH`, matching api's disabled
2006
+ single-operation probe gate).
1942
2007
 
1943
2008
  **Branch dispatch via the `error_type` discriminator** (per
1944
2009
  [ADR-0018](../docs/decisions/0018-universal-422-error-type-discriminator.md)).
@@ -2086,6 +2151,16 @@ paths:
2086
2151
  actual: 54000
2087
2152
  ceiling: 43200
2088
2153
  required_tier: "enterprise"
2154
+ inputs_not_concat_uniform:
2155
+ summary: merge.video long_form_re_encode with one input lacking audio (MjzzPCWt)
2156
+ value:
2157
+ success: false
2158
+ error_type: "validation_error"
2159
+ error: "INPUTS_NOT_CONCAT_UNIFORM"
2160
+ details:
2161
+ - operation: "merge"
2162
+ field: "inputs[0].audio vs inputs[1].audio"
2163
+ message: "Input 1 has no audio track and input 0 has one; long-form merge needs every input to share the same streams."
2089
2164
  requires_reencode:
2090
2165
  summary: merge.video re_encode_mode=never with incompatible inputs (I16-CONS)
2091
2166
  value:
@@ -3323,7 +3398,9 @@ paths:
3323
3398
  Per ticket [I24 `e50uXLcl`](https://trello.com/c/e50uXLcl).
3324
3399
 
3325
3400
  Resume succeeds only when the caller's `available_credits`
3326
- cover the next reservation the server would attempt. If the
3401
+ cover the reservation the server re-takes for the workflow's
3402
+ remaining work (the same estimate `WorkflowPausedDetail`'s
3403
+ `required_action: resume` is computed from). If the
3327
3404
  balance is still insufficient, the response is 402
3328
3405
  `BalanceExhaustedResponse` (mirroring the workflow-create
3329
3406
  flow per ticket I23) and the workflow remains
@@ -5127,6 +5204,33 @@ paths:
5127
5204
  type: object
5128
5205
  billing:
5129
5206
  type: object
5207
+ properties:
5208
+ checkout_sessions:
5209
+ type: array
5210
+ description: |
5211
+ Every checkout session the account started that
5212
+ the API recorded (ticket `JHrV4MUg`). Sessions
5213
+ created before that record existed are absent.
5214
+ items:
5215
+ type: object
5216
+ required: [session_id, mode, created_at, fulfilled_at]
5217
+ properties:
5218
+ session_id:
5219
+ type: string
5220
+ mode:
5221
+ type: string
5222
+ description: The checkout mode (`payment` for a credit pack, `subscription`).
5223
+ # OPEN: the provider's checkout mode, recorded as created; a
5224
+ # new mode is informational in an export, not a decision input.
5225
+ x-enum-openness: open
5226
+ enum: [payment, subscription]
5227
+ created_at:
5228
+ type: string
5229
+ format: date-time
5230
+ fulfilled_at:
5231
+ type: ['string', 'null']
5232
+ format: date-time
5233
+ description: When the purchase was applied; `null` while it has not been.
5130
5234
  '401':
5131
5235
  description: No authenticated principal.
5132
5236
  content:
@@ -6627,20 +6731,24 @@ paths:
6627
6731
  headers.
6628
6732
  headers:
6629
6733
  X-RateLimit-Limit:
6630
- required: false
6734
+ required: true
6631
6735
  description: Requests permitted in the current window.
6632
6736
  schema:
6633
6737
  type: integer
6634
6738
  minimum: 0
6635
6739
  X-RateLimit-Remaining:
6636
- required: false
6740
+ required: true
6637
6741
  description: Requests remaining in the current window.
6638
6742
  schema:
6639
6743
  type: integer
6640
6744
  minimum: 0
6641
6745
  X-RateLimit-Reset:
6642
- required: false
6643
- description: Unix epoch seconds when the current window resets.
6746
+ required: true
6747
+ description: |
6748
+ SECONDS UNTIL the current window resets (a delay, not a
6749
+ timestamp). This said "Unix epoch seconds" until 2026-09-25;
6750
+ api has always sent the delay, and both SDKs parse it as one
6751
+ (card `KqPDtD9J`).
6644
6752
  schema:
6645
6753
  type: integer
6646
6754
  minimum: 0
@@ -6684,9 +6792,17 @@ paths:
6684
6792
 
6685
6793
  | `status` | meaning |
6686
6794
  |---|---|
6687
- | `paid` | the purchase this session was for has been applied to the caller's account — for a credit **pack**, a credit transaction referencing this session exists; for a **subscription**, the subscription it started is active on the caller's account |
6795
+ | `paid` | the purchase this session was for has been applied to the caller's account — for a credit **pack**, a credit transaction referencing this session exists; for a **subscription**, the subscription it started is still linked to the caller's billing account (see below) |
6688
6796
  | `pending` | the session is recorded as created BY THE CALLER and its purchase has not been applied yet — **not a failure** |
6689
- | `unknown` | anything else |
6797
+ | `unknown` | anything else, including a session created before this endpoint shipped (nothing recorded it) |
6798
+
6799
+ **Subscription `paid` means LINKED, not IN GOOD STANDING** (ruled
6800
+ 2026-09-25 on api's `JHrV4MUg`). It holds while the subscription the
6801
+ session started is still linked to the caller's billing account; a
6802
+ `past_due` or `incomplete` subscription that is still linked reads
6803
+ `paid`. It becomes `unknown` once the provider reports the
6804
+ subscription deleted. A stricter meaning needs the subscription's
6805
+ status recorded, which the API does not do today.
6690
6806
 
6691
6807
  🔴 **`unknown` DELIBERATELY COLLAPSES "not yours" WITH "never
6692
6808
  existed". This is a decision, not missing detail.** Telling them
@@ -6722,9 +6838,12 @@ paths:
6722
6838
  '200':
6723
6839
  description: |
6724
6840
  The session's status for this caller. **Once implemented, always
6725
- 200 for an authenticated caller**, whatever the session id —
6726
- `unknown` is the answer for anything not provably the caller's (see
6727
- the collapse rationale above). While the endpoint is `planned` it
6841
+ 200 for an authenticated caller, for any session id the router
6842
+ accepts** — `unknown` is the answer for anything not provably the
6843
+ caller's (see the collapse rationale above). An id the router
6844
+ cannot route (for example invalid UTF-8 such as `cs_%FF`) is a
6845
+ `404` before this endpoint runs; that answer is the same for
6846
+ every caller and every session, so it reveals nothing. While the endpoint is `planned` it
6728
6847
  answers `422 feature_not_available` instead.
6729
6848
  content:
6730
6849
  application/json:
@@ -6758,6 +6877,16 @@ paths:
6758
6877
  application/json:
6759
6878
  schema:
6760
6879
  $ref: '#/components/schemas/ErrorEnvelope'
6880
+ '404':
6881
+ description: |
6882
+ The ROUTER could not route the path (for example a session id
6883
+ with invalid UTF-8). Returned before this endpoint runs, the same
6884
+ for every caller and every session id, so it says nothing about
6885
+ any session.
6886
+ content:
6887
+ application/json:
6888
+ schema:
6889
+ $ref: '#/components/schemas/ErrorEnvelope'
6761
6890
  '422':
6762
6891
  description: |
6763
6892
  `feature_not_available` while this endpoint is `planned`.
@@ -6765,6 +6894,40 @@ paths:
6765
6894
  application/json:
6766
6895
  schema:
6767
6896
  $ref: '#/components/schemas/FeatureNotAvailableResponse'
6897
+ '429':
6898
+ description: |
6899
+ Rate limit exceeded. This endpoint is limited as a STATUS POLL
6900
+ (the same family as the other polling reads), independently of
6901
+ `POST /api/billing/checkout`, so polling a pending session never
6902
+ spends the caller's checkout-creation budget. `error:
6903
+ TOO_MANY_REQUESTS`. No `Retry-After`; back off by
6904
+ `X-RateLimit-Reset`.
6905
+ headers:
6906
+ X-RateLimit-Limit:
6907
+ required: true
6908
+ description: Requests permitted in the most constrained window.
6909
+ schema:
6910
+ type: integer
6911
+ minimum: 0
6912
+ X-RateLimit-Remaining:
6913
+ required: true
6914
+ description: Requests remaining in that window.
6915
+ schema:
6916
+ type: integer
6917
+ minimum: 0
6918
+ X-RateLimit-Reset:
6919
+ required: true
6920
+ description: |
6921
+ SECONDS UNTIL that window resets (a delay, not a
6922
+ timestamp) — what api's limiter sends
6923
+ (`TieredRateLimiterService`: retry-after timestamp minus now).
6924
+ schema:
6925
+ type: integer
6926
+ minimum: 0
6927
+ content:
6928
+ application/json:
6929
+ schema:
6930
+ $ref: '#/components/schemas/ErrorEnvelope'
6768
6931
 
6769
6932
  # ============================================
6770
6933
  # CONTACT ENDPOINT
@@ -7306,12 +7469,23 @@ components:
7306
7469
  ReEncodeDecision:
7307
7470
  type: string
7308
7471
  description: |
7309
- Path chosen for `merge.video` when `re_encode_mode=auto`.
7310
- Server reports the actual path so callers can see why
7311
- `auto` took the slow path. Absent for non-`merge.video`
7312
- operations and for `merge.video` when `re_encode_mode` is
7313
- `always` or `never` (path was caller-fixed). Per ticket
7314
- I16-CONS (Trello 7nCZXEru).
7472
+ Path the worker actually took for a SUCCESSFUL `merge.video`,
7473
+ reported in EVERY `re_encode_mode`: `always` reports `re_encode`;
7474
+ `never` reports `stream_copy`; `auto` reports whichever path it
7475
+ chose. Absent for non-`merge.video` operations and on any failed
7476
+ operation, even one that carries other metrics such as sizes or
7477
+ cost figures (for example a `never`
7478
+ request whose inputs need a re-encode, or a long-form merge the
7479
+ uniformity gate refuses before the path is decided). Per ticket I16-CONS (Trello
7480
+ 7nCZXEru).
7481
+
7482
+ ⚠️ An earlier revision said the field was ABSENT under `always` /
7483
+ `never`. The worker never behaved that way (it reports the path
7484
+ in every mode), and the same contract listed an `always`-mode
7485
+ reason as an example, so the text contradicted itself. The
7486
+ worker's behaviour is the canonical one (ruled 2026-09-24 on
7487
+ compression_e2e's report); a consumer MUST NOT assert absence
7488
+ on a successful merge under a caller-fixed mode.
7315
7489
 
7316
7490
  Mirrors the AsyncAPI `ReEncodeDecision` (and
7317
7491
  `OperationMetrics.re_encode_decision`); exposed on the REST
@@ -9043,15 +9217,28 @@ components:
9043
9217
 
9044
9218
  WorkflowPauseRequiredAction:
9045
9219
  type: string
9220
+ x-enum-openness: open
9046
9221
  description: |
9047
- Action the caller must take to resume a paused workflow.
9048
- Same enum as `BalanceExhaustedResponse.required_action` —
9049
- the pause cause is always insufficient credits, so the
9050
- resolution affordances align.
9222
+ Action the caller must take to resume a paused workflow. The
9223
+ first three match `BalanceExhaustedResponse.required_action`.
9224
+ `resume` (ticket `xNatWWpO`, api #747): the account can afford
9225
+ the resume NOW, so the only action is to resume: call the
9226
+ `resumeWorkflow` operation (`POST /api/workflows/{id}/resume`).
9227
+ `links.resume`, when present, is a UI deep link, not the API
9228
+ call. The
9229
+ API emits it when the balance, plus this month's pending grant
9230
+ for the base tier, covers the same cost estimate the resume
9231
+ handler reserves — so `/status` and resume agree. A UI must not
9232
+ offer a top-up, upgrade or pack for it.
9233
+ **Open enum:** handle an unknown value as the generic case.
9234
+ ⚠️ Rollout order, because a strict SDK deserialiser throws on an
9235
+ unknown value: SDKs tolerate unknown values and are published
9236
+ first, and only then does the API emit `resume`.
9051
9237
  enum:
9052
9238
  - add_credits
9053
9239
  - upgrade_plan
9054
9240
  - wait_for_renewal
9241
+ - resume
9055
9242
 
9056
9243
  # ============================================
9057
9244
  # WORKFLOW ADVISORY WARNINGS (per ticket I25)
@@ -9202,9 +9389,10 @@ components:
9202
9389
 
9203
9390
  SDK + frontend gate UI on `required_action` to render the
9204
9391
  appropriate "Top up to resume" / "Upgrade plan to resume" /
9205
- "Wait for renewal" affordance, with `links.resume` enabling
9206
- a one-click POST to `/api/workflows/{id}/resume` once the
9207
- balance is sufficient.
9392
+ "Wait for renewal" affordance — or, for `resume`, only the
9393
+ resume action. The resume itself is the `resumeWorkflow`
9394
+ operation (`POST /api/workflows/{id}/resume`); `links.resume` is
9395
+ the frontend page where a user can do it, not that API call.
9208
9396
  required:
9209
9397
  - paused_at
9210
9398
  - expires_at
@@ -9252,9 +9440,11 @@ components:
9252
9440
  type: string
9253
9441
  format: uri
9254
9442
  description: |
9255
- Deep link to the resume action — typically
9256
- `POST /api/workflows/{id}/resume` exposed via the
9257
- frontend's "resume" UI.
9443
+ URL of the frontend page for this workflow (e.g.
9444
+ `{frontend}/{locale}/profile/workflows/{id}`), where the
9445
+ user can resume it. **NOT the API call:** a client resumes
9446
+ with the `resumeWorkflow` operation
9447
+ (`POST /api/workflows/{id}/resume`).
9258
9448
  top_up:
9259
9449
  type: string
9260
9450
  format: uri
@@ -9515,6 +9705,67 @@ components:
9515
9705
  # FEATURE AVAILABILITY ENVELOPES
9516
9706
  # ============================================
9517
9707
 
9708
+ AnonymousOperationNotAllowedResponse:
9709
+ description: |
9710
+ 403 from `POST /api/workflows` when an ANONYMOUS caller (no
9711
+ credential) requests an operation outside the anonymous
9712
+ allow-list. A register-wall: the frontend renders a sign-up
9713
+ prompt, since no tier upgrade applies to a caller without an
9714
+ account.
9715
+
9716
+ Mirrors `compression_api`'s `WorkflowController` register-wall
9717
+ (`JobsErrorCode::AnonymousOperationNotAllowed`), which checks
9718
+ every operation in the body and names the FIRST disallowed one.
9719
+
9720
+ ⚠️ **The allow-list itself is NOT yet declared in this contract**
9721
+ (ticket [`UQ7zROTr`](https://trello.com/c/UQ7zROTr)), so a client
9722
+ can parse this refusal but cannot yet predict it. Do not hard-code
9723
+ the list from this description: it deliberately names none.
9724
+ allOf:
9725
+ - $ref: '#/components/schemas/ErrorEnvelope'
9726
+ - type: object
9727
+ required:
9728
+ - error_type
9729
+ - operation
9730
+ properties:
9731
+ error:
9732
+ enum:
9733
+ - ANONYMOUS_OPERATION_NOT_ALLOWED
9734
+ error_type:
9735
+ description: Discriminator for the 403 oneOf. Always `anonymous_operation_not_allowed` for this envelope.
9736
+ type: string
9737
+ enum:
9738
+ - anonymous_operation_not_allowed
9739
+ operation:
9740
+ description: |
9741
+ The first operation in the request body that an anonymous
9742
+ caller may not run.
9743
+ $ref: '#/components/schemas/OperationType'
9744
+ AnonymousQuotaExhaustedResponse:
9745
+ description: |
9746
+ 403 from `POST /api/workflows` when an ANONYMOUS caller (no
9747
+ credential) has used its per-IP workflow allowance for the
9748
+ rolling 24 hours. A register-wall, distinct from the generic
9749
+ `429`: the remedy is signing in, not waiting.
9750
+
9751
+ Mirrors `compression_api`'s `WorkflowController` register-wall
9752
+ (`JobsErrorCode::AnonymousQuotaExhausted`). The allowance is only
9753
+ consumed by a workflow that is actually created, so a refused
9754
+ request does not use it up.
9755
+ allOf:
9756
+ - $ref: '#/components/schemas/ErrorEnvelope'
9757
+ - type: object
9758
+ required:
9759
+ - error_type
9760
+ properties:
9761
+ error:
9762
+ enum:
9763
+ - ANONYMOUS_QUOTA_EXHAUSTED
9764
+ error_type:
9765
+ description: Discriminator for the 403 oneOf. Always `anonymous_quota_exhausted` for this envelope.
9766
+ type: string
9767
+ enum:
9768
+ - anonymous_quota_exhausted
9518
9769
  FeatureViolation:
9519
9770
  type: object
9520
9771
  description: |
@@ -9671,9 +9922,11 @@ components:
9671
9922
  ProcessingClassRejectReason:
9672
9923
  type: string
9673
9924
  description: |
9674
- Why a job cannot be classified — input size/duration exceeds
9675
- the `long_form` (or `long_form_re_encode`) ceiling under the
9676
- caller's effective per-tier caps (per
9925
+ Why a job cannot be classified: an input exceeds the ceiling of
9926
+ the last class it could reach — the `long_form` (or
9927
+ `long_form_re_encode`) ceiling, or the `short_form` ceiling when
9928
+ `long_form` is not available — or its resolution band is not
9929
+ served. Ceilings are the caller's effective per-tier caps (per
9677
9930
  [ADR-0011](../docs/decisions/0011-per-tier-processing-class-constraints.md)
9678
9931
  `per_tier_constraints`). Distinct from `ProcessingClassReason`
9679
9932
  (which describes WHY a job got its assigned class — success-
@@ -9697,11 +9950,35 @@ components:
9697
9950
  (`max_total_input_size_bytes` / `max_total_duration`).
9698
9951
  Applies to operations whose `processing_class.<class>.
9699
9952
  constraints` carries `max_total_*` — merge today.
9953
+ - `input_size_exceeds_short_form_no_long_form` /
9954
+ `input_duration_exceeds_short_form_no_long_form`: a single input exceeds the
9955
+ `short_form` ceiling (the band's, when the class declares
9956
+ `resolution_bands`) AND the job cannot escalate to `long_form`
9957
+ because that class is not available. `processing_class` on the
9958
+ violation is `short_form`. Added 2026-09-25 for api `nslA1V1S`;
9959
+ before, such a refusal had to borrow a `*_long_form` reason.
9960
+ The `_no_long_form` suffix keeps these distinct from
9961
+ `ProcessingClassReason`'s `*_exceeds_short_form`, which means
9962
+ the job ESCALATED (the two enums are kept disjoint on purpose).
9963
+ - `resolution_band_not_served`: the input's resolution band is
9964
+ `basis: not_served` on the class (FORMAT.md §`resolution_bands`),
9965
+ so no duration or size fits. `actual` is the input's FRAME
9966
+ PIXELS (width x height) and `ceiling` is the `max_frame_pixels`
9967
+ of the highest band the class DOES serve; `resolution_band`
9968
+ names the band. The `unknown` band is never `not_served` (CI),
9969
+ so this reason always has a measured `actual`.
9970
+ # OPEN: a new reason is a new refusal cause. A consumer that does not know
9971
+ # one shows the envelope's localised message; `actual` / `ceiling` stay
9972
+ # integers in the unit the reason names.
9973
+ x-enum-openness: open
9700
9974
  enum:
9701
9975
  - input_size_exceeds_long_form
9702
9976
  - input_duration_exceeds_long_form
9703
9977
  - combined_size_exceeds_long_form
9704
9978
  - combined_duration_exceeds_long_form
9979
+ - input_size_exceeds_short_form_no_long_form
9980
+ - input_duration_exceeds_short_form_no_long_form
9981
+ - resolution_band_not_served
9705
9982
 
9706
9983
  ProcessingClassBandViolation:
9707
9984
  type: object
@@ -9717,6 +9994,14 @@ components:
9717
9994
  fail-all violations back to the offending job in multi-job
9718
9995
  workflows and (b) render "X exceeded by Y" without re-deriving
9719
9996
  caps from the per-tier overlay.
9997
+ # A not_served refusal names the band it refused (codex #606).
9998
+ if:
9999
+ properties:
10000
+ reason:
10001
+ const: resolution_band_not_served
10002
+ required: [reason]
10003
+ then:
10004
+ required: [resolution_band]
9720
10005
  required:
9721
10006
  - reason
9722
10007
  - job_ref
@@ -9745,10 +10030,11 @@ components:
9745
10030
  description: |
9746
10031
  0-based ordinal into `JobDefinition.inputs[]` identifying
9747
10032
  the specific input that violated the per-input ceiling.
9748
- Set ONLY on `input_*_exceeds_long_form` reasons for
9749
- multi-input operations; omitted on single-input
9750
- operations (no positional ambiguity) and on
9751
- `combined_*_exceeds_long_form` reasons (whole-job
10033
+ Set on every PER-INPUT reason (`input_*_exceeds_long_form`,
10034
+ `input_*_exceeds_short_form_no_long_form`,
10035
+ `resolution_band_not_served`) for multi-input operations;
10036
+ omitted on single-input operations (no positional ambiguity)
10037
+ and on `combined_*_exceeds_long_form` reasons (whole-job
9752
10038
  violation across all inputs).
9753
10039
  operation:
9754
10040
  $ref: '#/components/schemas/OperationType'
@@ -9756,15 +10042,27 @@ components:
9756
10042
  processing_class:
9757
10043
  $ref: '#/components/schemas/ProcessingClass'
9758
10044
  description: |
9759
- The class whose ceiling was exceeded — typically `long_form`
9760
- or `long_form_re_encode`.
10045
+ The class whose ceiling was exceeded: `long_form` /
10046
+ `long_form_re_encode`, or `short_form` for the
10047
+ `*_exceeds_short_form_no_long_form` reasons and for a
10048
+ `not_served` band on short_form.
10049
+ resolution_band:
10050
+ $ref: '#/components/schemas/ResolutionBand'
10051
+ description: |
10052
+ The band whose ceiling `ceiling` is, when the class declares
10053
+ `resolution_bands`; omitted otherwise. EXCEPTION: for
10054
+ `resolution_band_not_served` it names the INPUT's (unserved)
10055
+ band, and `ceiling` is the highest served band's
10056
+ `max_frame_pixels`, not this band's. `unknown` means the
10057
+ resolution could not be determined — a different customer
10058
+ action from a known-resolution overflow.
9761
10059
  actual:
9762
10060
  type: integer
9763
10061
  minimum: 0
9764
10062
  description: |
9765
- Observed value. Bytes for `*_size_exceeds_long_form`
9766
- reasons; whole seconds for `*_duration_exceeds_long_form`
9767
- reasons.
10063
+ Observed value. Bytes for `*_size_exceeds_*` reasons; whole
10064
+ seconds for `*_duration_exceeds_*` reasons; frame pixels
10065
+ (width x height) for `resolution_band_not_served`.
9768
10066
  ceiling:
9769
10067
  type: integer
9770
10068
  minimum: 0
@@ -9772,7 +10070,9 @@ components:
9772
10070
  Effective per-tier ceiling for this caller (same units as
9773
10071
  `actual`). The binding cap after `per_tier_constraints`
9774
10072
  overlay; lets consumers render "X exceeded by Y" without
9775
- re-deriving caps from the per-tier overlay.
10073
+ re-deriving caps from the per-tier overlay. EXCEPTION: for
10074
+ `resolution_band_not_served` it is the highest served band's
10075
+ `max_frame_pixels` (a resolution bound, not a per-tier cap).
9776
10076
  required_tier:
9777
10077
  description: |
9778
10078
  Optional. When a HIGHER tier exists whose
@@ -10011,9 +10311,14 @@ components:
10011
10311
  - `failed`: All jobs finished, at least one failed, none succeeded.
10012
10312
  - `partially_failed`: Some jobs succeeded, some failed.
10013
10313
  - `paused_insufficient_credits`: Workflow paused at a job/
10014
- stage boundary because the next reservation exceeded the
10015
- caller's available credits. Pause occurs at boundaries
10016
- only — never mid-stream within a running operation.
10314
+ stage boundary because it no longer holds a credit
10315
+ reservation. The API reserves the FULL estimated cost at
10316
+ create (a 402 there if the balance is short), so a normal run
10317
+ never pauses; this is a defence for a workflow whose
10318
+ reservation was released mid-flight (e.g. by an orphan
10319
+ clean-up). There is no per-stage reservation (ticket
10320
+ `mNA2uv3y`). Pause occurs at boundaries only — never
10321
+ mid-stream within a running operation.
10017
10322
  Resumable via `POST /api/workflows/{id}/resume` once the
10018
10323
  caller tops up; expires after a 7-day TTL by default.
10019
10324
  - `cancelled`: Caller-initiated termination via
@@ -12026,6 +12331,15 @@ components:
12026
12331
  $ref: '#/components/schemas/EstimateQuality'
12027
12332
  reason:
12028
12333
  $ref: '#/components/schemas/ProcessingClassReason'
12334
+ resolution_band:
12335
+ $ref: '#/components/schemas/ResolutionBand'
12336
+ description: |
12337
+ The resolution band whose ceiling the class decision was taken
12338
+ against, when the operation's classes declare
12339
+ `resolution_bands`; omitted otherwise. `unknown` says the
12340
+ resolution could not be determined, so `reason` (which names the
12341
+ AXIS, e.g. `input_duration_exceeds_short_form`) was judged against
12342
+ the `unknown` band's ceiling.
12029
12343
  dropped_options:
12030
12344
  type: array
12031
12345
  description: |
@@ -12564,6 +12878,84 @@ components:
12564
12878
  contract on the OpenAPI side; the prober reports the
12565
12879
  page-1 horizontal DPI when the document declares it,
12566
12880
  otherwise omits the field.
12881
+ # STREAM TOPOLOGY + CONCAT ATTRIBUTES (lGeDDi4V, for MjzzPCWt): what the
12882
+ # API needs to refuse a non-concat-uniform long-form merge at create.
12883
+ # Defined with the SAME semantics as compression_lambdas' merge gate
12884
+ # (re_encode.rs TopologyCounts / classify_non_uniform), or the
12885
+ # create-time refusal and the worker gate would disagree. All OPTIONAL:
12886
+ # a prober that has not emitted them yet simply omits them.
12887
+ video_stream_count:
12888
+ type: integer
12889
+ minimum: 0
12890
+ description: Streams whose ffprobe `codec_type` is `video`.
12891
+ audio_stream_count:
12892
+ type: integer
12893
+ minimum: 0
12894
+ description: Streams whose ffprobe `codec_type` is `audio`.
12895
+ other_stream_count:
12896
+ type: integer
12897
+ minimum: 0
12898
+ description: |
12899
+ Every other stream: `codec_type` subtitle, data, attachment,
12900
+ or unknown — the worker gate's `other` bucket.
12901
+ stream_order:
12902
+ type: array
12903
+ items:
12904
+ type: string
12905
+ enum: [video, audio, other]
12906
+ description: |
12907
+ Per stream index, in container order, its kind (`other` as
12908
+ above). Two inputs are order-compatible iff these are equal.
12909
+ r_frame_rate:
12910
+ type: string
12911
+ pattern: '^[0-9]+/[0-9]+$'
12912
+ description: |
12913
+ ffprobe `r_frame_rate` of the video stream, raw (`30000/1001`;
12914
+ ffprobe's `0/0` is carried as-is and means UNUSABLE). NOT the
12915
+ average rate in `fps`, which drifts between concat-uniform
12916
+ clips. **The worker's frame-rate rule, which a create-time
12917
+ comparison must reproduce exactly:** (1) `r_frame_rate` and
12918
+ `avg_frame_rate` must each be present on all inputs or absent
12919
+ on all (else `input_metadata_inconsistent`); (2) if every
12920
+ input has a usable `r_frame_rate`, compare those as parsed
12921
+ rationals; (3) otherwise compare `avg_frame_rate` as parsed
12922
+ rationals. Both comparisons are by VALUE (`60/2` equals `30/1`),
12923
+ never by string.
12924
+ avg_frame_rate:
12925
+ type: string
12926
+ pattern: '^[0-9]+/[0-9]+$'
12927
+ description: |
12928
+ ffprobe `avg_frame_rate` of the video stream, raw rational.
12929
+ Presence-checked always; compared only as the fallback in the
12930
+ `r_frame_rate` rule. `fps` is its lossy numeric form.
12931
+ pix_fmt:
12932
+ type: string
12933
+ x-string-vocabulary: none
12934
+ description: ffprobe `pix_fmt` of the video stream (e.g. `yuv420p`).
12935
+ sar:
12936
+ type: string
12937
+ pattern: '^[0-9]+:[0-9]+$'
12938
+ description: Sample aspect ratio of the video stream (`1:1`).
12939
+ video_time_base:
12940
+ type: string
12941
+ pattern: '^[0-9]+/[0-9]+$'
12942
+ description: ffprobe `time_base` of the video stream (`1/30000`).
12943
+ audio_time_base:
12944
+ type: string
12945
+ pattern: '^[0-9]+/[0-9]+$'
12946
+ description: ffprobe `time_base` of the audio stream (`1/48000`).
12947
+ codec_tag:
12948
+ type: string
12949
+ x-string-vocabulary: none
12950
+ description: ffprobe `codec_tag_string` of the video stream (e.g. `avc1`).
12951
+ profile:
12952
+ type: string
12953
+ x-string-vocabulary: none
12954
+ description: ffprobe `profile` of the video stream (e.g. `High`).
12955
+ sample_fmt:
12956
+ type: string
12957
+ x-string-vocabulary: none
12958
+ description: ffprobe `sample_fmt` of the audio stream (e.g. `fltp`).
12567
12959
  probed_at:
12568
12960
  type: string
12569
12961
  format: date-time
@@ -13871,8 +14263,8 @@ components:
13871
14263
  x-string-vocabulary: advisory
13872
14264
  description: |
13873
14265
  Advisory explanation for `re_encode_decision` (e.g.
13874
- `all_inputs_compatible`, `explicit_always_mode`,
13875
- `input_codec_mismatch`, `input_framerate_mismatch`).
14266
+ `compatible_inputs`, `always_mode_forces_re_encode`,
14267
+ `input_video_codec_mismatch`, `long_form_stream_copy`).
13876
14268
  Free-form string — not an enum — so the Lambda can emit
13877
14269
  human-readable diagnostics that evolve without contract
13878
14270
  changes. Mirrors `OperationMetrics.re_encode_reason`.
@@ -14184,6 +14576,10 @@ components:
14184
14576
  is gapless ONLY for a full conversion, not for a sparse selection.
14185
14577
  NOT the download `filename` suffix (that is a 0-based array
14186
14578
  position — see `OperationDownload.filename`). Mutually exclusive with `position`.
14579
+ For a `split` of a PDF with `mode: page_groups`, each output holds
14580
+ a GROUP of pages and `page_index` is the group's FIRST source
14581
+ page; the group covers `page_index` .. `page_index + page_groups
14582
+ - 1`, and the last group ends at the document's last page.
14187
14583
  Normative semantics: ADR-0009 §D2.
14188
14584
  Absent on non-indexed (single-output) downloads. Mirrors
14189
14585
  `OperationResultOutputEntry.page_index`. Per ADR-0009 §D2.
@@ -14355,6 +14751,17 @@ components:
14355
14751
  const: 100
14356
14752
  result:
14357
14753
  $ref: '#/components/schemas/SseOperationCompletionResult'
14754
+ result_metadata:
14755
+ $ref: '#/components/schemas/OperationResultMetadata'
14756
+ description: |
14757
+ OPTIONAL. The same whitelisted per-operation metadata the REST
14758
+ operation object serves as `result_metadata` (a sibling of
14759
+ `result` there too): `already_optimal`, `estimated_saving_pct`,
14760
+ `watermark_id`. It lets the completion frame say "already
14761
+ optimal" without a follow-up read. Absent means the frame does
14762
+ not carry it, NOT that the operation has no metadata; a consumer
14763
+ that needs it falls back to the REST read. Card `Fu372Ze7`
14764
+ (api), contracts `DIDOPiZQ`.
14358
14765
 
14359
14766
  SseOperationCompletionResult:
14360
14767
  description: |
@@ -14629,6 +15036,10 @@ components:
14629
15036
  is gapless ONLY for a full conversion, not for a sparse selection.
14630
15037
  NOT the download `filename` suffix (that is a 0-based array
14631
15038
  position — see `OperationDownload.filename`). Mutually exclusive with `position`.
15039
+ For a `split` of a PDF with `mode: page_groups`, each output holds
15040
+ a GROUP of pages and `page_index` is the group's FIRST source
15041
+ page; the group covers `page_index` .. `page_index + page_groups
15042
+ - 1`, and the last group ends at the document's last page.
14632
15043
  Normative semantics: ADR-0009 §D2.
14633
15044
  Absent on non-indexed outputs. Mirrors
14634
15045
  `OperationResultOutputEntry.page_index`. Per ADR-0009 §D2.
@@ -16025,7 +16436,10 @@ components:
16025
16436
  on the optimiser path (e.g. JPEG `progressive`); `[format_change]`
16026
16437
  only on the transcoder path (e.g. `background` alpha-flatten to JPEG).
16027
16438
  ABSENT ≡ honored on every route the option's `depends_on` already
16028
- admits (back-compat — existing options need no tag). Orthogonal to
16439
+ admits (back-compat — existing options need no tag). An EMPTY
16440
+ list `[]` ≡ ACCEPTED BUT INERT: the option is still accepted on
16441
+ the wire but no route honours it, so it is never visible and
16442
+ never in `honored_options` (card `Nqd3TdC6`). Orthogonal to
16029
16443
  `availability`: a `planned` option still declares the route it WILL
16030
16444
  be honoured on. Consumers derive option visibility from
16031
16445
  `honored_on` ∩ active-route ∩ (availability != planned) ∩ depends_on.
@@ -16119,6 +16533,69 @@ components:
16119
16533
  Baseline caps for the lowest tier this class's
16120
16534
  `required_tier` permits. Overlaid per-caller by
16121
16535
  `per_tier_constraints` (see below).
16536
+ input_uniformity:
16537
+ type: object
16538
+ additionalProperties: false
16539
+ description: |
16540
+ Present on a class that CONCATENATES inputs without normalising
16541
+ them (today `merge.video.long_form_re_encode`, ticket `MjzzPCWt`):
16542
+ every input must share its stream layout (`structural`, a
16543
+ permanent requirement) and its stream attributes (`attributes`,
16544
+ until the heterogeneous re-encode ships). The names are the
16545
+ worker gate's reason vocabulary. A request that breaks it is
16546
+ refused at create with the `refusal` code where the API's upload
16547
+ probe can see the difference; the worker gate refuses the rest.
16548
+ required: [refusal, structural, attributes]
16549
+ properties:
16550
+ refusal:
16551
+ type: string
16552
+ enum: [INPUTS_NOT_CONCAT_UNIFORM]
16553
+ description: The `ErrorEnvelope.error` code of the create-time refusal.
16554
+ structural:
16555
+ type: array
16556
+ items: {type: string}
16557
+ description: Permanent stream-layout requirements (worker gate reason names).
16558
+ attributes:
16559
+ type: object
16560
+ additionalProperties:
16561
+ type: array
16562
+ items: {type: string}
16563
+ description: |
16564
+ Per stream kind (`video`, `audio`), the attributes every input
16565
+ must share until the heterogeneous re-encode ships; plus
16566
+ `field_presence`: a video/audio stream field present on one
16567
+ input and absent on another.
16568
+ resolution_bands:
16569
+ type: object
16570
+ description: |
16571
+ Optional per-resolution ceilings for this class (ticket
16572
+ [`GxQPL4IY`](https://trello.com/c/GxQPL4IY)). Keys are EVERY
16573
+ `ResolutionBand` value — each band in
16574
+ `schemas/resolution-bands.yaml` plus `unknown` — so when the
16575
+ block is present a consumer never has to invent a ceiling.
16576
+ An input is placed in a band by its probe's frame pixels
16577
+ (width x height); `unknown` applies when the probe has no
16578
+ width or height. A band only TIGHTENS `constraints` (after
16579
+ the `per_tier_constraints` overlay): the effective ceiling on
16580
+ an axis is the smaller of the two, and an axis the band omits
16581
+ falls through to the class. An input over its band's ceiling
16582
+ exceeds this class, exactly as one over `constraints` does.
16583
+ Absent = no resolution axis; `constraints` binds at every
16584
+ resolution. CI-checked by `scripts/check-resolution-bands.py`.
16585
+ See `schemas/FORMAT.md` §`resolution_bands`.
16586
+ # Every band is REQUIRED: a consumer must never invent a ceiling. The
16587
+ # property names are the `ResolutionBand` enum, held equal by a test.
16588
+ additionalProperties: false
16589
+ required: [le_720p, p1080, gt_1080p, unknown]
16590
+ properties:
16591
+ le_720p:
16592
+ $ref: '#/components/schemas/ResolutionBandCeiling'
16593
+ p1080:
16594
+ $ref: '#/components/schemas/ResolutionBandCeiling'
16595
+ gt_1080p:
16596
+ $ref: '#/components/schemas/ResolutionBandCeiling'
16597
+ unknown:
16598
+ $ref: '#/components/schemas/ResolutionBandCeiling'
16122
16599
  per_tier_constraints:
16123
16600
  type: object
16124
16601
  description: |
@@ -16137,6 +16614,108 @@ components:
16137
16614
  additionalProperties:
16138
16615
  $ref: '#/components/schemas/ProcessingClassConstraints'
16139
16616
 
16617
+ ResolutionBand:
16618
+ type: string
16619
+ description: |
16620
+ A resolution band (ticket [`GxQPL4IY`](https://trello.com/c/GxQPL4IY)).
16621
+ The band names and their frame-pixel bounds are declared ONCE in
16622
+ `schemas/resolution-bands.yaml`; this enum is those names plus the
16623
+ `unknown` band, held equal by a test.
16624
+
16625
+ - `le_720p`, `p1080`, `gt_1080p`: ascending frame-pixel bands
16626
+ (width x height). Their bounds are `max_frame_pixels` in
16627
+ `schemas/resolution-bands.yaml` and are deliberately not
16628
+ restated here.
16629
+ - `unknown`: the upload probe reported no width or no height, so the
16630
+ resolution could not be determined. A refusal or escalation under
16631
+ this band means "we could not tell this file's resolution", which
16632
+ calls for a different action (re-upload, wait for the probe,
16633
+ contact us) than "your file is too long".
16634
+
16635
+ Pixels, not height: a portrait clip lands in the same band as its
16636
+ landscape twin.
16637
+ # CLOSED. The band a consumer computes decides which ceiling it enforces;
16638
+ # an unrecognised band cannot be mapped to a ceiling safely in either
16639
+ # direction, so a new band is a contract event consumers must learn.
16640
+ x-enum-openness: closed
16641
+ enum:
16642
+ - le_720p
16643
+ - p1080
16644
+ - gt_1080p
16645
+ - unknown
16646
+
16647
+ ResolutionBandCeiling:
16648
+ type: object
16649
+ additionalProperties: false
16650
+ description: |
16651
+ One band's ceiling within `ProcessingClassEntry.resolution_bands`.
16652
+ `basis` is REQUIRED so no consumer inherits a default for a band
16653
+ nobody measured. `not_served` carries neither `constraints` nor
16654
+ `derivation`; `measured` carries both; `ruled` carries
16655
+ `constraints` only.
16656
+ required:
16657
+ - basis
16658
+ allOf:
16659
+ - if:
16660
+ properties: {basis: {const: not_served}}
16661
+ then:
16662
+ not:
16663
+ anyOf:
16664
+ - required: [constraints]
16665
+ - required: [derivation]
16666
+ else:
16667
+ required: [constraints]
16668
+ - if:
16669
+ properties: {basis: {const: measured}}
16670
+ then:
16671
+ required: [derivation]
16672
+ else:
16673
+ not:
16674
+ required: [derivation]
16675
+ properties:
16676
+ basis:
16677
+ type: string
16678
+ description: |
16679
+ - `measured`: the ceiling is derived from measured encode time;
16680
+ `derivation` carries the line it was solved from.
16681
+ - `ruled`: a policy value, not a measurement (today: the
16682
+ `unknown` band, which takes the `le_720p` ceiling).
16683
+ - `not_served`: this class does not serve inputs in this band.
16684
+ No `constraints`; an input in this band exceeds the class
16685
+ (for `short_form`: it escalates to `long_form`, or is refused
16686
+ where `long_form` is not available).
16687
+ # CLOSED: each value changes what a consumer enforces.
16688
+ x-enum-openness: closed
16689
+ enum: [measured, ruled, not_served]
16690
+ constraints:
16691
+ type: object
16692
+ additionalProperties: false
16693
+ description: Present unless `basis` is `not_served`.
16694
+ minProperties: 1
16695
+ properties:
16696
+ max_input_duration:
16697
+ type: string
16698
+ description: ISO-8601 duration; the band's input duration ceiling.
16699
+ example: "PT4M35S"
16700
+ derivation:
16701
+ type: object
16702
+ additionalProperties: false
16703
+ description: |
16704
+ Present only when `basis` is `measured`. Encode time was measured
16705
+ as a line, `slope_s_per_s x duration + intercept_s`; the ceiling is
16706
+ that line solved for `cap_s` and FLOORED, so it never promises a
16707
+ duration that crosses the cap. CI recomputes the ceiling from these.
16708
+ required: [slope_s_per_s, intercept_s, cap_s]
16709
+ properties:
16710
+ slope_s_per_s:
16711
+ type: number
16712
+ exclusiveMinimum: 0
16713
+ intercept_s:
16714
+ type: number
16715
+ cap_s:
16716
+ type: number
16717
+ exclusiveMinimum: 0
16718
+
16140
16719
  # ============================================
16141
16720
  # RETRY SCHEMAS
16142
16721
  # ============================================