@giveitsmaller/contracts 0.76.0 → 0.78.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 +12 -1
  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 +1 -1
  365. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  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 +1 -1
  421. package/dist/openapi/models/SseOperationCompletedData.js +1 -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 +559 -33
  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.213.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: |
@@ -9758,6 +10009,13 @@ components:
9758
10009
  description: |
9759
10010
  The class whose ceiling was exceeded — typically `long_form`
9760
10011
  or `long_form_re_encode`.
10012
+ resolution_band:
10013
+ $ref: '#/components/schemas/ResolutionBand'
10014
+ description: |
10015
+ The band whose ceiling `ceiling` is, when the class declares
10016
+ `resolution_bands`; omitted otherwise. `unknown` means the
10017
+ resolution could not be determined — a different customer
10018
+ action from a known-resolution overflow.
9761
10019
  actual:
9762
10020
  type: integer
9763
10021
  minimum: 0
@@ -10011,9 +10269,14 @@ components:
10011
10269
  - `failed`: All jobs finished, at least one failed, none succeeded.
10012
10270
  - `partially_failed`: Some jobs succeeded, some failed.
10013
10271
  - `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.
10272
+ stage boundary because it no longer holds a credit
10273
+ reservation. The API reserves the FULL estimated cost at
10274
+ create (a 402 there if the balance is short), so a normal run
10275
+ never pauses; this is a defence for a workflow whose
10276
+ reservation was released mid-flight (e.g. by an orphan
10277
+ clean-up). There is no per-stage reservation (ticket
10278
+ `mNA2uv3y`). Pause occurs at boundaries only — never
10279
+ mid-stream within a running operation.
10017
10280
  Resumable via `POST /api/workflows/{id}/resume` once the
10018
10281
  caller tops up; expires after a 7-day TTL by default.
10019
10282
  - `cancelled`: Caller-initiated termination via
@@ -12026,6 +12289,15 @@ components:
12026
12289
  $ref: '#/components/schemas/EstimateQuality'
12027
12290
  reason:
12028
12291
  $ref: '#/components/schemas/ProcessingClassReason'
12292
+ resolution_band:
12293
+ $ref: '#/components/schemas/ResolutionBand'
12294
+ description: |
12295
+ The resolution band whose ceiling the class decision was taken
12296
+ against, when the operation's classes declare
12297
+ `resolution_bands`; omitted otherwise. `unknown` says the
12298
+ resolution could not be determined, so `reason` (which names the
12299
+ AXIS, e.g. `input_duration_exceeds_short_form`) was judged against
12300
+ the `unknown` band's ceiling.
12029
12301
  dropped_options:
12030
12302
  type: array
12031
12303
  description: |
@@ -12564,6 +12836,84 @@ components:
12564
12836
  contract on the OpenAPI side; the prober reports the
12565
12837
  page-1 horizontal DPI when the document declares it,
12566
12838
  otherwise omits the field.
12839
+ # STREAM TOPOLOGY + CONCAT ATTRIBUTES (lGeDDi4V, for MjzzPCWt): what the
12840
+ # API needs to refuse a non-concat-uniform long-form merge at create.
12841
+ # Defined with the SAME semantics as compression_lambdas' merge gate
12842
+ # (re_encode.rs TopologyCounts / classify_non_uniform), or the
12843
+ # create-time refusal and the worker gate would disagree. All OPTIONAL:
12844
+ # a prober that has not emitted them yet simply omits them.
12845
+ video_stream_count:
12846
+ type: integer
12847
+ minimum: 0
12848
+ description: Streams whose ffprobe `codec_type` is `video`.
12849
+ audio_stream_count:
12850
+ type: integer
12851
+ minimum: 0
12852
+ description: Streams whose ffprobe `codec_type` is `audio`.
12853
+ other_stream_count:
12854
+ type: integer
12855
+ minimum: 0
12856
+ description: |
12857
+ Every other stream: `codec_type` subtitle, data, attachment,
12858
+ or unknown — the worker gate's `other` bucket.
12859
+ stream_order:
12860
+ type: array
12861
+ items:
12862
+ type: string
12863
+ enum: [video, audio, other]
12864
+ description: |
12865
+ Per stream index, in container order, its kind (`other` as
12866
+ above). Two inputs are order-compatible iff these are equal.
12867
+ r_frame_rate:
12868
+ type: string
12869
+ pattern: '^[0-9]+/[0-9]+$'
12870
+ description: |
12871
+ ffprobe `r_frame_rate` of the video stream, raw (`30000/1001`;
12872
+ ffprobe's `0/0` is carried as-is and means UNUSABLE). NOT the
12873
+ average rate in `fps`, which drifts between concat-uniform
12874
+ clips. **The worker's frame-rate rule, which a create-time
12875
+ comparison must reproduce exactly:** (1) `r_frame_rate` and
12876
+ `avg_frame_rate` must each be present on all inputs or absent
12877
+ on all (else `input_metadata_inconsistent`); (2) if every
12878
+ input has a usable `r_frame_rate`, compare those as parsed
12879
+ rationals; (3) otherwise compare `avg_frame_rate` as parsed
12880
+ rationals. Both comparisons are by VALUE (`60/2` equals `30/1`),
12881
+ never by string.
12882
+ avg_frame_rate:
12883
+ type: string
12884
+ pattern: '^[0-9]+/[0-9]+$'
12885
+ description: |
12886
+ ffprobe `avg_frame_rate` of the video stream, raw rational.
12887
+ Presence-checked always; compared only as the fallback in the
12888
+ `r_frame_rate` rule. `fps` is its lossy numeric form.
12889
+ pix_fmt:
12890
+ type: string
12891
+ x-string-vocabulary: none
12892
+ description: ffprobe `pix_fmt` of the video stream (e.g. `yuv420p`).
12893
+ sar:
12894
+ type: string
12895
+ pattern: '^[0-9]+:[0-9]+$'
12896
+ description: Sample aspect ratio of the video stream (`1:1`).
12897
+ video_time_base:
12898
+ type: string
12899
+ pattern: '^[0-9]+/[0-9]+$'
12900
+ description: ffprobe `time_base` of the video stream (`1/30000`).
12901
+ audio_time_base:
12902
+ type: string
12903
+ pattern: '^[0-9]+/[0-9]+$'
12904
+ description: ffprobe `time_base` of the audio stream (`1/48000`).
12905
+ codec_tag:
12906
+ type: string
12907
+ x-string-vocabulary: none
12908
+ description: ffprobe `codec_tag_string` of the video stream (e.g. `avc1`).
12909
+ profile:
12910
+ type: string
12911
+ x-string-vocabulary: none
12912
+ description: ffprobe `profile` of the video stream (e.g. `High`).
12913
+ sample_fmt:
12914
+ type: string
12915
+ x-string-vocabulary: none
12916
+ description: ffprobe `sample_fmt` of the audio stream (e.g. `fltp`).
12567
12917
  probed_at:
12568
12918
  type: string
12569
12919
  format: date-time
@@ -13871,8 +14221,8 @@ components:
13871
14221
  x-string-vocabulary: advisory
13872
14222
  description: |
13873
14223
  Advisory explanation for `re_encode_decision` (e.g.
13874
- `all_inputs_compatible`, `explicit_always_mode`,
13875
- `input_codec_mismatch`, `input_framerate_mismatch`).
14224
+ `compatible_inputs`, `always_mode_forces_re_encode`,
14225
+ `input_video_codec_mismatch`, `long_form_stream_copy`).
13876
14226
  Free-form string — not an enum — so the Lambda can emit
13877
14227
  human-readable diagnostics that evolve without contract
13878
14228
  changes. Mirrors `OperationMetrics.re_encode_reason`.
@@ -14184,6 +14534,10 @@ components:
14184
14534
  is gapless ONLY for a full conversion, not for a sparse selection.
14185
14535
  NOT the download `filename` suffix (that is a 0-based array
14186
14536
  position — see `OperationDownload.filename`). Mutually exclusive with `position`.
14537
+ For a `split` of a PDF with `mode: page_groups`, each output holds
14538
+ a GROUP of pages and `page_index` is the group's FIRST source
14539
+ page; the group covers `page_index` .. `page_index + page_groups
14540
+ - 1`, and the last group ends at the document's last page.
14187
14541
  Normative semantics: ADR-0009 §D2.
14188
14542
  Absent on non-indexed (single-output) downloads. Mirrors
14189
14543
  `OperationResultOutputEntry.page_index`. Per ADR-0009 §D2.
@@ -14629,6 +14983,10 @@ components:
14629
14983
  is gapless ONLY for a full conversion, not for a sparse selection.
14630
14984
  NOT the download `filename` suffix (that is a 0-based array
14631
14985
  position — see `OperationDownload.filename`). Mutually exclusive with `position`.
14986
+ For a `split` of a PDF with `mode: page_groups`, each output holds
14987
+ a GROUP of pages and `page_index` is the group's FIRST source
14988
+ page; the group covers `page_index` .. `page_index + page_groups
14989
+ - 1`, and the last group ends at the document's last page.
14632
14990
  Normative semantics: ADR-0009 §D2.
14633
14991
  Absent on non-indexed outputs. Mirrors
14634
14992
  `OperationResultOutputEntry.page_index`. Per ADR-0009 §D2.
@@ -16025,7 +16383,10 @@ components:
16025
16383
  on the optimiser path (e.g. JPEG `progressive`); `[format_change]`
16026
16384
  only on the transcoder path (e.g. `background` alpha-flatten to JPEG).
16027
16385
  ABSENT ≡ honored on every route the option's `depends_on` already
16028
- admits (back-compat — existing options need no tag). Orthogonal to
16386
+ admits (back-compat — existing options need no tag). An EMPTY
16387
+ list `[]` ≡ ACCEPTED BUT INERT: the option is still accepted on
16388
+ the wire but no route honours it, so it is never visible and
16389
+ never in `honored_options` (card `Nqd3TdC6`). Orthogonal to
16029
16390
  `availability`: a `planned` option still declares the route it WILL
16030
16391
  be honoured on. Consumers derive option visibility from
16031
16392
  `honored_on` ∩ active-route ∩ (availability != planned) ∩ depends_on.
@@ -16119,6 +16480,69 @@ components:
16119
16480
  Baseline caps for the lowest tier this class's
16120
16481
  `required_tier` permits. Overlaid per-caller by
16121
16482
  `per_tier_constraints` (see below).
16483
+ input_uniformity:
16484
+ type: object
16485
+ additionalProperties: false
16486
+ description: |
16487
+ Present on a class that CONCATENATES inputs without normalising
16488
+ them (today `merge.video.long_form_re_encode`, ticket `MjzzPCWt`):
16489
+ every input must share its stream layout (`structural`, a
16490
+ permanent requirement) and its stream attributes (`attributes`,
16491
+ until the heterogeneous re-encode ships). The names are the
16492
+ worker gate's reason vocabulary. A request that breaks it is
16493
+ refused at create with the `refusal` code where the API's upload
16494
+ probe can see the difference; the worker gate refuses the rest.
16495
+ required: [refusal, structural, attributes]
16496
+ properties:
16497
+ refusal:
16498
+ type: string
16499
+ enum: [INPUTS_NOT_CONCAT_UNIFORM]
16500
+ description: The `ErrorEnvelope.error` code of the create-time refusal.
16501
+ structural:
16502
+ type: array
16503
+ items: {type: string}
16504
+ description: Permanent stream-layout requirements (worker gate reason names).
16505
+ attributes:
16506
+ type: object
16507
+ additionalProperties:
16508
+ type: array
16509
+ items: {type: string}
16510
+ description: |
16511
+ Per stream kind (`video`, `audio`), the attributes every input
16512
+ must share until the heterogeneous re-encode ships; plus
16513
+ `field_presence`: a video/audio stream field present on one
16514
+ input and absent on another.
16515
+ resolution_bands:
16516
+ type: object
16517
+ description: |
16518
+ Optional per-resolution ceilings for this class (ticket
16519
+ [`GxQPL4IY`](https://trello.com/c/GxQPL4IY)). Keys are EVERY
16520
+ `ResolutionBand` value — each band in
16521
+ `schemas/resolution-bands.yaml` plus `unknown` — so when the
16522
+ block is present a consumer never has to invent a ceiling.
16523
+ An input is placed in a band by its probe's frame pixels
16524
+ (width x height); `unknown` applies when the probe has no
16525
+ width or height. A band only TIGHTENS `constraints` (after
16526
+ the `per_tier_constraints` overlay): the effective ceiling on
16527
+ an axis is the smaller of the two, and an axis the band omits
16528
+ falls through to the class. An input over its band's ceiling
16529
+ exceeds this class, exactly as one over `constraints` does.
16530
+ Absent = no resolution axis; `constraints` binds at every
16531
+ resolution. CI-checked by `scripts/check-resolution-bands.py`.
16532
+ See `schemas/FORMAT.md` §`resolution_bands`.
16533
+ # Every band is REQUIRED: a consumer must never invent a ceiling. The
16534
+ # property names are the `ResolutionBand` enum, held equal by a test.
16535
+ additionalProperties: false
16536
+ required: [le_720p, p1080, gt_1080p, unknown]
16537
+ properties:
16538
+ le_720p:
16539
+ $ref: '#/components/schemas/ResolutionBandCeiling'
16540
+ p1080:
16541
+ $ref: '#/components/schemas/ResolutionBandCeiling'
16542
+ gt_1080p:
16543
+ $ref: '#/components/schemas/ResolutionBandCeiling'
16544
+ unknown:
16545
+ $ref: '#/components/schemas/ResolutionBandCeiling'
16122
16546
  per_tier_constraints:
16123
16547
  type: object
16124
16548
  description: |
@@ -16137,6 +16561,108 @@ components:
16137
16561
  additionalProperties:
16138
16562
  $ref: '#/components/schemas/ProcessingClassConstraints'
16139
16563
 
16564
+ ResolutionBand:
16565
+ type: string
16566
+ description: |
16567
+ A resolution band (ticket [`GxQPL4IY`](https://trello.com/c/GxQPL4IY)).
16568
+ The band names and their frame-pixel bounds are declared ONCE in
16569
+ `schemas/resolution-bands.yaml`; this enum is those names plus the
16570
+ `unknown` band, held equal by a test.
16571
+
16572
+ - `le_720p`, `p1080`, `gt_1080p`: ascending frame-pixel bands
16573
+ (width x height). Their bounds are `max_frame_pixels` in
16574
+ `schemas/resolution-bands.yaml` and are deliberately not
16575
+ restated here.
16576
+ - `unknown`: the upload probe reported no width or no height, so the
16577
+ resolution could not be determined. A refusal or escalation under
16578
+ this band means "we could not tell this file's resolution", which
16579
+ calls for a different action (re-upload, wait for the probe,
16580
+ contact us) than "your file is too long".
16581
+
16582
+ Pixels, not height: a portrait clip lands in the same band as its
16583
+ landscape twin.
16584
+ # CLOSED. The band a consumer computes decides which ceiling it enforces;
16585
+ # an unrecognised band cannot be mapped to a ceiling safely in either
16586
+ # direction, so a new band is a contract event consumers must learn.
16587
+ x-enum-openness: closed
16588
+ enum:
16589
+ - le_720p
16590
+ - p1080
16591
+ - gt_1080p
16592
+ - unknown
16593
+
16594
+ ResolutionBandCeiling:
16595
+ type: object
16596
+ additionalProperties: false
16597
+ description: |
16598
+ One band's ceiling within `ProcessingClassEntry.resolution_bands`.
16599
+ `basis` is REQUIRED so no consumer inherits a default for a band
16600
+ nobody measured. `not_served` carries neither `constraints` nor
16601
+ `derivation`; `measured` carries both; `ruled` carries
16602
+ `constraints` only.
16603
+ required:
16604
+ - basis
16605
+ allOf:
16606
+ - if:
16607
+ properties: {basis: {const: not_served}}
16608
+ then:
16609
+ not:
16610
+ anyOf:
16611
+ - required: [constraints]
16612
+ - required: [derivation]
16613
+ else:
16614
+ required: [constraints]
16615
+ - if:
16616
+ properties: {basis: {const: measured}}
16617
+ then:
16618
+ required: [derivation]
16619
+ else:
16620
+ not:
16621
+ required: [derivation]
16622
+ properties:
16623
+ basis:
16624
+ type: string
16625
+ description: |
16626
+ - `measured`: the ceiling is derived from measured encode time;
16627
+ `derivation` carries the line it was solved from.
16628
+ - `ruled`: a policy value, not a measurement (today: the
16629
+ `unknown` band, which takes the `le_720p` ceiling).
16630
+ - `not_served`: this class does not serve inputs in this band.
16631
+ No `constraints`; an input in this band exceeds the class
16632
+ (for `short_form`: it escalates to `long_form`, or is refused
16633
+ where `long_form` is not available).
16634
+ # CLOSED: each value changes what a consumer enforces.
16635
+ x-enum-openness: closed
16636
+ enum: [measured, ruled, not_served]
16637
+ constraints:
16638
+ type: object
16639
+ additionalProperties: false
16640
+ description: Present unless `basis` is `not_served`.
16641
+ minProperties: 1
16642
+ properties:
16643
+ max_input_duration:
16644
+ type: string
16645
+ description: ISO-8601 duration; the band's input duration ceiling.
16646
+ example: "PT4M35S"
16647
+ derivation:
16648
+ type: object
16649
+ additionalProperties: false
16650
+ description: |
16651
+ Present only when `basis` is `measured`. Encode time was measured
16652
+ as a line, `slope_s_per_s x duration + intercept_s`; the ceiling is
16653
+ that line solved for `cap_s` and FLOORED, so it never promises a
16654
+ duration that crosses the cap. CI recomputes the ceiling from these.
16655
+ required: [slope_s_per_s, intercept_s, cap_s]
16656
+ properties:
16657
+ slope_s_per_s:
16658
+ type: number
16659
+ exclusiveMinimum: 0
16660
+ intercept_s:
16661
+ type: number
16662
+ cap_s:
16663
+ type: number
16664
+ exclusiveMinimum: 0
16665
+
16140
16666
  # ============================================
16141
16667
  # RETRY SCHEMAS
16142
16668
  # ============================================