@giveitsmaller/contracts 0.70.0 → 0.73.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 (540) 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 +1 -1
  4. package/asyncapi/events.yaml +133 -69
  5. package/availability/availability.json +33 -45
  6. package/code-builder/code-builder-metadata.json +55 -66
  7. package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
  8. package/dist/openapi/models/AccountLimitEntry.js +1 -1
  9. package/dist/openapi/models/AccountLimits.d.ts +1 -1
  10. package/dist/openapi/models/AccountLimits.js +1 -1
  11. package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
  12. package/dist/openapi/models/AccountLimitsLimits.js +1 -1
  13. package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
  14. package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
  15. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  16. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  17. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  18. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  19. package/dist/openapi/models/AuthErrorResponse.d.ts +3 -2
  20. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  21. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  22. package/dist/openapi/models/AuthErrorType.js +1 -1
  23. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
  24. package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
  25. package/dist/openapi/models/AuthenticatedIdentity.d.ts +1 -1
  26. package/dist/openapi/models/AuthenticatedIdentity.js +1 -1
  27. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  28. package/dist/openapi/models/AvailabilityValue.js +1 -1
  29. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +3 -2
  30. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  31. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  32. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  33. package/dist/openapi/models/BillingCheckoutRequest.d.ts +1 -1
  34. package/dist/openapi/models/BillingCheckoutRequest.js +1 -1
  35. package/dist/openapi/models/BillingCheckoutSession.d.ts +1 -1
  36. package/dist/openapi/models/BillingCheckoutSession.js +1 -1
  37. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +1 -1
  38. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +1 -1
  39. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  40. package/dist/openapi/models/CallbackEventType.js +1 -1
  41. package/dist/openapi/models/CancelAccountDeletion200Response.d.ts +1 -1
  42. package/dist/openapi/models/CancelAccountDeletion200Response.js +1 -1
  43. package/dist/openapi/models/CancelAccountDeletion200ResponseData.d.ts +1 -1
  44. package/dist/openapi/models/CancelAccountDeletion200ResponseData.js +1 -1
  45. package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
  46. package/dist/openapi/models/CapabilityCondition.js +1 -1
  47. package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
  48. package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
  49. package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
  50. package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
  51. package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
  52. package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
  53. package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
  54. package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
  55. package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
  56. package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
  57. package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
  58. package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
  59. package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
  60. package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
  61. package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
  62. package/dist/openapi/models/CapabilityConstraint.js +1 -1
  63. package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
  64. package/dist/openapi/models/CapabilityInputSpec.js +1 -1
  65. package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
  66. package/dist/openapi/models/CapabilityProduces.js +1 -1
  67. package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
  68. package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
  69. package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
  70. package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
  71. package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
  72. package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
  73. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  74. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  75. package/dist/openapi/models/CodegenSource.d.ts +1 -1
  76. package/dist/openapi/models/CodegenSource.js +1 -1
  77. package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
  78. package/dist/openapi/models/CodegenSourceInput.js +1 -1
  79. package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
  80. package/dist/openapi/models/CodegenSourceJob.js +1 -1
  81. package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
  82. package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
  83. package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
  84. package/dist/openapi/models/CodegenSourceOperation.js +1 -1
  85. package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
  86. package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
  87. package/dist/openapi/models/CompositionPlan.d.ts +1 -1
  88. package/dist/openapi/models/CompositionPlan.js +1 -1
  89. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  90. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  91. package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
  92. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  93. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  94. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  95. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  96. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  97. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  98. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  99. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  100. package/dist/openapi/models/ConnectionSource.js +1 -1
  101. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  102. package/dist/openapi/models/ContactRequest.js +1 -1
  103. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  104. package/dist/openapi/models/ContactSubject.js +1 -1
  105. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  106. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  107. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  108. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  109. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  110. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  111. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  112. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  113. package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +1 -1
  114. package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +1 -1
  115. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  116. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  117. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  118. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  119. package/dist/openapi/models/CreateWorkflow401Response.d.ts +3 -2
  120. package/dist/openapi/models/CreateWorkflow401Response.js +1 -1
  121. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  122. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  123. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  124. package/dist/openapi/models/CreditTransaction.js +1 -1
  125. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  126. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  127. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  128. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  129. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  130. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  131. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  132. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  133. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  134. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  135. package/dist/openapi/models/Delivery.d.ts +1 -1
  136. package/dist/openapi/models/Delivery.js +1 -1
  137. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  138. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  139. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  140. package/dist/openapi/models/DeliveryPlan.js +1 -1
  141. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  142. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  143. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  144. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  145. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  146. package/dist/openapi/models/DeliverySelection.js +1 -1
  147. package/dist/openapi/models/DownloadBundle.d.ts +1 -1
  148. package/dist/openapi/models/DownloadBundle.js +1 -1
  149. package/dist/openapi/models/DroppedOption.d.ts +1 -1
  150. package/dist/openapi/models/DroppedOption.js +1 -1
  151. package/dist/openapi/models/EmailNotify.d.ts +1 -1
  152. package/dist/openapi/models/EmailNotify.js +1 -1
  153. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  154. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  155. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  156. package/dist/openapi/models/EndpointProjection.js +1 -1
  157. package/dist/openapi/models/EndpointProjectionServersInner.d.ts +1 -1
  158. package/dist/openapi/models/EndpointProjectionServersInner.js +1 -1
  159. package/dist/openapi/models/ErrorEnvelope.d.ts +3 -2
  160. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  161. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  162. package/dist/openapi/models/EstimateQuality.js +1 -1
  163. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  164. package/dist/openapi/models/EstimateRange.js +1 -1
  165. package/dist/openapi/models/ExportAccountData200Response.d.ts +1 -1
  166. package/dist/openapi/models/ExportAccountData200Response.js +1 -1
  167. package/dist/openapi/models/ExportAccountData200ResponseData.d.ts +1 -1
  168. package/dist/openapi/models/ExportAccountData200ResponseData.js +1 -1
  169. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  170. package/dist/openapi/models/ExternalDestination.js +1 -1
  171. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  172. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  173. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  174. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  175. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  176. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  177. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  178. package/dist/openapi/models/ExternalImportToken.js +1 -1
  179. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  180. package/dist/openapi/models/ExternalSource.js +1 -1
  181. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +3 -2
  182. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  183. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +3 -2
  184. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  185. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  186. package/dist/openapi/models/FeatureViolation.js +1 -1
  187. package/dist/openapi/models/GetProfile200Response.d.ts +1 -1
  188. package/dist/openapi/models/GetProfile200Response.js +1 -1
  189. package/dist/openapi/models/GetProfile200ResponseData.d.ts +1 -1
  190. package/dist/openapi/models/GetProfile200ResponseData.js +1 -1
  191. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  192. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  193. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  194. package/dist/openapi/models/JobDefinition.js +1 -1
  195. package/dist/openapi/models/JobDownload.d.ts +1 -1
  196. package/dist/openapi/models/JobDownload.js +1 -1
  197. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  198. package/dist/openapi/models/JobInputV2.js +1 -1
  199. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  200. package/dist/openapi/models/JobMediaClass.js +1 -1
  201. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  202. package/dist/openapi/models/JobOutputSource.js +1 -1
  203. package/dist/openapi/models/JobResponse.d.ts +1 -1
  204. package/dist/openapi/models/JobResponse.js +1 -1
  205. package/dist/openapi/models/JobStatus.d.ts +1 -1
  206. package/dist/openapi/models/JobStatus.js +1 -1
  207. package/dist/openapi/models/JobType.d.ts +1 -1
  208. package/dist/openapi/models/JobType.js +1 -1
  209. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  210. package/dist/openapi/models/LivenessResponse.js +1 -1
  211. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  212. package/dist/openapi/models/LoginUser200Response.js +1 -1
  213. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  214. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  215. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  216. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  217. package/dist/openapi/models/LoginUser401Response.d.ts +3 -2
  218. package/dist/openapi/models/LoginUser401Response.js +1 -1
  219. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  220. package/dist/openapi/models/LoginUserRequest.js +1 -1
  221. package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +8 -4
  222. package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
  223. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
  224. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
  225. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  226. package/dist/openapi/models/MetadataResponse.js +1 -1
  227. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  228. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  229. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  230. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  231. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  232. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  233. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  234. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  235. package/dist/openapi/models/MimeGroupSchema.d.ts +26 -13
  236. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  237. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  238. package/dist/openapi/models/MultiInputSource.js +1 -1
  239. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  240. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  241. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  242. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  243. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  244. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  245. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  246. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  247. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  248. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  249. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  250. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  251. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  252. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  253. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  254. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  255. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  256. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  257. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  258. package/dist/openapi/models/MultipartPartListing.js +1 -1
  259. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  260. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  261. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  262. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  263. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  264. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  265. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  266. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  267. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  268. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  269. package/dist/openapi/models/NotifyConfig.d.ts +1 -1
  270. package/dist/openapi/models/NotifyConfig.js +1 -1
  271. package/dist/openapi/models/OperationCapability.d.ts +1 -1
  272. package/dist/openapi/models/OperationCapability.js +1 -1
  273. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  274. package/dist/openapi/models/OperationDefinition.js +1 -1
  275. package/dist/openapi/models/OperationDownload.d.ts +1 -1
  276. package/dist/openapi/models/OperationDownload.js +1 -1
  277. package/dist/openapi/models/OperationInputModel.d.ts +1 -1
  278. package/dist/openapi/models/OperationInputModel.js +1 -1
  279. package/dist/openapi/models/OperationResponse.d.ts +1 -1
  280. package/dist/openapi/models/OperationResponse.js +1 -1
  281. package/dist/openapi/models/OperationResult.d.ts +1 -1
  282. package/dist/openapi/models/OperationResult.js +1 -1
  283. package/dist/openapi/models/OperationResultMetadata.d.ts +1 -1
  284. package/dist/openapi/models/OperationResultMetadata.js +1 -1
  285. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  286. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  287. package/dist/openapi/models/OperationSchemaDefinition.d.ts +4 -3
  288. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  289. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  290. package/dist/openapi/models/OperationStatus.js +1 -1
  291. package/dist/openapi/models/OperationType.d.ts +5 -5
  292. package/dist/openapi/models/OperationType.js +5 -5
  293. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  294. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  295. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  296. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  297. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  298. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  299. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  300. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  301. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  302. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  303. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +1 -1
  304. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +1 -1
  305. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  306. package/dist/openapi/models/OptionSchema.js +1 -1
  307. package/dist/openapi/models/OutputProperties.d.ts +1 -1
  308. package/dist/openapi/models/OutputProperties.js +1 -1
  309. package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
  310. package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
  311. package/dist/openapi/models/PerClassAvailabilityEntry.d.ts +1 -1
  312. package/dist/openapi/models/PerClassAvailabilityEntry.js +1 -1
  313. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  314. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  315. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  316. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  317. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  318. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  319. package/dist/openapi/models/ProbePendingResponse.d.ts +3 -2
  320. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  321. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  322. package/dist/openapi/models/ProcessingClass.js +1 -1
  323. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  324. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  325. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  326. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  327. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  328. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  329. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +3 -2
  330. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  331. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  332. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  333. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  334. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  335. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  336. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  337. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  338. package/dist/openapi/models/ProcessingPlan.js +1 -1
  339. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  340. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  341. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  342. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  343. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  344. package/dist/openapi/models/ReadinessResponse.js +1 -1
  345. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  346. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  347. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  348. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  349. package/dist/openapi/models/RequestAccountDeletion200Response.d.ts +1 -1
  350. package/dist/openapi/models/RequestAccountDeletion200Response.js +1 -1
  351. package/dist/openapi/models/RequestAccountDeletion200ResponseData.d.ts +1 -1
  352. package/dist/openapi/models/RequestAccountDeletion200ResponseData.js +1 -1
  353. package/dist/openapi/models/RequestAccountDeletionRequest.d.ts +1 -1
  354. package/dist/openapi/models/RequestAccountDeletionRequest.js +1 -1
  355. package/dist/openapi/models/ResendVerificationEmailRequest.d.ts +1 -1
  356. package/dist/openapi/models/ResendVerificationEmailRequest.js +1 -1
  357. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  358. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  359. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  360. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  361. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  362. package/dist/openapi/models/RetryResponse.js +1 -1
  363. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  364. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  365. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  366. package/dist/openapi/models/SseCompletionBase.js +1 -1
  367. package/dist/openapi/models/SseConnectionLimitResponse.d.ts +174 -0
  368. package/dist/openapi/models/SseConnectionLimitResponse.js +65 -0
  369. package/dist/openapi/models/SseEventType.d.ts +1 -1
  370. package/dist/openapi/models/SseEventType.js +1 -1
  371. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  372. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  373. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  374. package/dist/openapi/models/SseJobFailedData.js +1 -1
  375. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  376. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  377. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  378. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  379. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  380. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  381. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  382. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  383. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  384. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  385. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  386. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  387. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  388. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  389. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  390. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  391. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  392. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  393. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  394. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  395. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  396. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  397. package/dist/openapi/models/TierRestrictionResponse.d.ts +3 -2
  398. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  399. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  400. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  401. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  402. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  403. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  404. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  405. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  406. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  407. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  408. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  409. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +3 -2
  410. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  411. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  412. package/dist/openapi/models/UploadFile403Response.js +1 -1
  413. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  414. package/dist/openapi/models/UploadFile422Response.js +1 -1
  415. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  416. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  417. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +7 -4
  418. package/dist/openapi/models/UploadProbeProcessingClass.js +7 -4
  419. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  420. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  421. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  422. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  423. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  424. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  425. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  426. package/dist/openapi/models/UploadResponse.js +1 -1
  427. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +3 -2
  428. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  429. package/dist/openapi/models/UploadSource.d.ts +1 -1
  430. package/dist/openapi/models/UploadSource.js +1 -1
  431. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  432. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  433. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  434. package/dist/openapi/models/UploadThresholds.js +1 -1
  435. package/dist/openapi/models/UserTier.d.ts +1 -1
  436. package/dist/openapi/models/UserTier.js +1 -1
  437. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  438. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  439. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  440. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  441. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  442. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  443. package/dist/openapi/models/WarningType.d.ts +1 -1
  444. package/dist/openapi/models/WarningType.js +1 -1
  445. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  446. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  447. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  448. package/dist/openapi/models/WebhookPayload.js +1 -1
  449. package/dist/openapi/models/WorkflowArchiveResponse.d.ts +1 -1
  450. package/dist/openapi/models/WorkflowArchiveResponse.js +1 -1
  451. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.d.ts +1 -1
  452. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.js +1 -1
  453. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  454. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  455. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  456. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  457. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  458. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  459. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  460. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  461. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  462. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  463. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  464. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  465. package/dist/openapi/models/WorkflowCreditSummary.d.ts +1 -1
  466. package/dist/openapi/models/WorkflowCreditSummary.js +1 -1
  467. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  468. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  469. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  470. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  471. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  472. package/dist/openapi/models/WorkflowEdge.js +1 -1
  473. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +3 -2
  474. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  475. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  476. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  477. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  478. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  479. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  480. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  481. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  482. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  483. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  484. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  485. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  486. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  487. package/dist/openapi/models/WorkflowRestoreResponse.d.ts +1 -1
  488. package/dist/openapi/models/WorkflowRestoreResponse.js +1 -1
  489. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.d.ts +1 -1
  490. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.js +1 -1
  491. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  492. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  493. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  494. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  495. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  496. package/dist/openapi/models/WorkflowSource.js +1 -1
  497. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  498. package/dist/openapi/models/WorkflowStatus.js +1 -1
  499. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  500. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  501. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  502. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  503. package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
  504. package/dist/openapi/models/WorkflowSummary.js +1 -1
  505. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  506. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  507. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  508. package/dist/openapi/models/WorkflowWarning.js +1 -1
  509. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  510. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  511. package/dist/openapi/models/index.d.ts +1 -0
  512. package/dist/openapi/models/index.js +1 -0
  513. package/dist/openapi/runtime.d.ts +1 -1
  514. package/dist/openapi/runtime.js +1 -1
  515. package/dist/operations/audio_overlay.metadata.js +0 -2
  516. package/dist/operations/audio_to_video.metadata.js +1 -1
  517. package/dist/operations/compress.metadata.js +0 -1
  518. package/dist/operations/convert.metadata.js +0 -1
  519. package/dist/operations/custom_luma.metadata.js +0 -3
  520. package/dist/operations/merge.metadata.js +0 -1
  521. package/dist/operations/split.metadata.js +0 -1
  522. package/dist/operations/thumbnail.metadata.js +0 -1
  523. package/dist/operations/transform.metadata.js +0 -1
  524. package/dist/operations/video_text_watermark.metadata.js +0 -1
  525. package/dist/operations/video_watermark.metadata.js +2 -3
  526. package/openapi/README.md +1 -1
  527. package/openapi/api.yaml +229 -64
  528. package/operation-capabilities/operation-capabilities.json +3 -3
  529. package/operations/schemas/audio_overlay.yaml +2 -4
  530. package/operations/schemas/audio_to_video.yaml +25 -5
  531. package/operations/schemas/compress.yaml +9 -2
  532. package/operations/schemas/convert.yaml +1 -2
  533. package/operations/schemas/custom_luma.yaml +5 -7
  534. package/operations/schemas/merge.yaml +1 -2
  535. package/operations/schemas/split.yaml +154 -2
  536. package/operations/schemas/thumbnail.yaml +1 -2
  537. package/operations/schemas/transform.yaml +1 -2
  538. package/operations/schemas/video_text_watermark.yaml +72 -12
  539. package/operations/schemas/video_watermark.yaml +61 -24
  540. package/package.json +3 -3
package/openapi/api.yaml CHANGED
@@ -89,7 +89,7 @@ info:
89
89
  of truth instead of hardcoding magic numbers. A runtime
90
90
  `GET /api/uploads/limits` endpoint for dynamic discovery
91
91
  (per-tier / per-environment overrides) is a deferred follow-up.
92
- version: 2.201.0
92
+ version: 2.208.0
93
93
  contact:
94
94
  name: API Support
95
95
 
@@ -1044,10 +1044,12 @@ paths:
1044
1044
 
1045
1045
  **Tier scoping.** The probe respects the caller's tier — the
1046
1046
  `processing_class_pre_assignment` reflects the same logic
1047
- F8.1 upload-side gating uses (per ticket I15-CONS), so a
1048
- free-tier caller probing a 30-minute video sees
1049
- `blocked` rather than the long-form pre-assignment a
1050
- pro-tier caller would see.
1047
+ F8.1 upload-side gating uses (per ticket I15-CONS), which
1048
+ honours a class's `required_tier`. **Since 2026-09-23 no callable
1049
+ video class carries one** (decision 26, `jLuZvlJe`; only the
1050
+ `planned` `audio_watermark` keeps `enterprise`), so for every
1051
+ callable class the pre-assignment depends on the file's duration
1052
+ and size, not on the caller's tier.
1051
1053
 
1052
1054
  **Idempotent.** Probing the same file_id twice returns the
1053
1055
  same `probed_at` timestamp + result (cached server-side per
@@ -1138,22 +1140,6 @@ paths:
1138
1140
  container: "mov"
1139
1141
  probed_at: "2026-04-26T13:50:00Z"
1140
1142
  processing_class_pre_assignment: "blocked"
1141
- blocked_by_tier:
1142
- summary: Free-tier caller probes a long-form clip
1143
- value:
1144
- success: true
1145
- data:
1146
- file_id: "019539ab-1111-7000-8000-000000000005"
1147
- probe_status: "ok"
1148
- media_metadata:
1149
- duration_seconds: 5400
1150
- width: 1920
1151
- height: 1080
1152
- codec: "h264"
1153
- container: "mp4"
1154
- audio_layout: "stereo"
1155
- probed_at: "2026-04-26T13:50:00Z"
1156
- processing_class_pre_assignment: "blocked"
1157
1143
  '401':
1158
1144
  description: Authentication required.
1159
1145
  content:
@@ -1810,8 +1796,8 @@ paths:
1810
1796
  required_action: "add_credits"
1811
1797
  links:
1812
1798
  top_up: "https://giveitsmaller.com/account/billing/top-up"
1813
- upgrade_plan_free_long_form:
1814
- summary: Free tier; long-form requires pro upgrade
1799
+ upgrade_plan_free_tier:
1800
+ summary: Free tier; the API judged the tier allowance too small for this workload (a balance outcome, not a capability gate)
1815
1801
  value:
1816
1802
  success: false
1817
1803
  error: "Workflow requires more credits than the free tier provides."
@@ -2080,8 +2066,10 @@ paths:
2080
2066
 
2081
2067
  1. **Long-form concurrency cap** — the caller already holds the
2082
2068
  maximum number of concurrent in-flight long-form (Fargate)
2083
- workflows their tier permits (Pro 2 / Max 5; Enterprise +
2084
- Free uncapped). Body is `LongFormConcurrencyLimitResponse`:
2069
+ workflows their tier permits (per-tier values are the API's
2070
+ `UserTier.maxConcurrentLongFormJobs` and are not restated
2071
+ here — the restated copy said Free was uncapped while the
2072
+ API capped it). Body is `LongFormConcurrencyLimitResponse`:
2085
2073
  `error: LONG_FORM_CONCURRENCY_LIMIT_EXCEEDED`, `message_key:
2086
2074
  job.long_form_concurrency_exceeded`, a `links.upgrade` CTA,
2087
2075
  and **no `Retry-After`** — the limit clears when an in-flight
@@ -2889,19 +2877,105 @@ paths:
2889
2877
  went too fast; a caller who has opened nothing and is refused
2890
2878
  because the pool is full has not, and sending them to a slow-down
2891
2879
  remedy is a lie. That case is `503`.
2880
+
2881
+ 🔴 **THE LIMIT: 5 OPEN STREAMS PER CALLER** (owner ruling
2882
+ 2026-09-23, tickets [`2nZAmfxH`](https://trello.com/c/2nZAmfxH) /
2883
+ [`rLCBjojv`](https://trello.com/c/rLCBjojv)).
2884
+
2885
+ - **Who "the caller" is.** An authenticated user — every stream
2886
+ that user holds counts, across sessions and API keys. An
2887
+ anonymous caller is counted per anonymous session.
2888
+ ⛔ **The anonymous key MUST be server-derived, never from
2889
+ client-supplied state** (a cookie or header the reader can drop
2890
+ or rotate) — otherwise a capability-only reader mints fresh
2891
+ slots per connection and the limit does not exist for anonymous
2892
+ callers.
2893
+ ⚠️ **What that key is TODAY: the verified capability, i.e. per
2894
+ anonymous WORKFLOW.** An anonymous workflow persists only its
2895
+ capability-token hash, not the session that created it, so "per
2896
+ anonymous session" cannot yet be derived server-side. An
2897
+ anonymous caller with several workflows therefore holds up to
2898
+ the limit on EACH; the start-rate limiter and the global `503`
2899
+ still bound the total. The key widens to the anonymous session
2900
+ when the API persists an anonymous principal at create — that is
2901
+ an API change, not a contract one.
2902
+ - **What counts.** A stream occupies a slot from the moment it is
2903
+ accepted (`200`) until it closes, for any reason. Streams are
2904
+ counted, not starts — this is the limit `events_stream`'s start
2905
+ RATE cannot express (see `503`).
2906
+ - **Admission is an ATOMIC check-and-reserve, before the `200`.**
2907
+ Checking the count and incrementing it as separate steps lets a
2908
+ burst of concurrent requests all observe free capacity and open
2909
+ more than the limit. A reservation whose stream then fails to
2910
+ start MUST be released.
2911
+ - **What is refused.** The request that would open the sixth
2912
+ stream. **A held stream is never evicted to make room** — the
2913
+ caller's existing streams are unaffected.
2914
+ - **A crash cannot lock a caller out.** Slots are held in a shared
2915
+ counter whose entries EXPIRE: a slot whose stream died without
2916
+ closing cleanly is released at the latest when its entry
2917
+ expires. The expiry is the server's to choose; it is the
2918
+ longest a caller can be refused for streams that no longer
2919
+ exist.
2920
+ - ⛔ **An entry MUST NOT expire while its stream is still open.**
2921
+ Either the expiry is at least the stream's maximum lifetime (the
2922
+ server's stream deadline), or the holder refreshes the entry
2923
+ while it streams. Otherwise a caller holding streams past the
2924
+ expiry regains slots it is still using, and the limit silently
2925
+ becomes "5 per expiry window" instead of "5 open".
2926
+
2927
+ ⚠️ **Refusal ends the ATTEMPT, never the workflow.** The workflow
2928
+ keeps running and `/status` keeps answering; a caller refused a
2929
+ stream loses only the push channel, not the result.
2930
+
2931
+ 📌 **TWO `429`s SHARE THIS STATUS, discriminated by `error`:**
2932
+ `SSE_CONNECTION_LIMIT_EXCEEDED` (the open-stream limit above,
2933
+ carrying `open_streams` / `max_streams`) and the generic
2934
+ `TOO_MANY_REQUESTS` from the `events_stream` start-RATE limiter — a
2935
+ plain `ErrorEnvelope`, which validates against the same schema
2936
+ because the two count fields are required only on the first. Both
2937
+ carry `Retry-After` and the same obligation below.
2938
+
2939
+ 🔴 **A BROWSER CANNOT READ `Retry-After` UNLESS IT IS EXPOSED.**
2940
+ It is not a CORS-safelisted response header (Fetch Standard,
2941
+ §CORS-safelisted response-header name), and the stream hosts are
2942
+ cross-origin to the frontend. ⇒ **Every refusal on this endpoint
2943
+ (`429` and `503`), as delivered to a browser, MUST carry the same
2944
+ CORS headers as a `200` from that host AND
2945
+ `Access-Control-Expose-Headers: Retry-After`.** Without the first
2946
+ the browser cannot read the status; without the second it reads
2947
+ the status and not the delay — and the consumer obligation below
2948
+ becomes impossible to meet. The obligation is on whatever layer
2949
+ sets CORS for the stream host, not only on the application.
2892
2950
  headers:
2893
2951
  Retry-After:
2894
- description: Seconds to wait. Delta-seconds, not an HTTP-date.
2952
+ required: true
2953
+ description: |
2954
+ Seconds to wait. Delta-seconds, not an HTTP-date. **Always
2955
+ sent on this status**, and exposed to browsers (see
2956
+ `Access-Control-Expose-Headers` above).
2957
+
2958
+ **CONSUMER OBLIGATION** ([`rLCBjojv`](https://trello.com/c/rLCBjojv)):
2959
+ a client receiving this status **MUST NOT** request another
2960
+ stream for this caller before `Retry-After` has elapsed, and
2961
+ **MUST NOT** treat it as a transport error to be retried on
2962
+ its own schedule — it is a deliberate refusal. The client
2963
+ **MAY** follow the workflow over `/status` meanwhile; that
2964
+ endpoint's own rate limits govern it, and `Retry-After` here
2965
+ governs only the next stream request.
2895
2966
  schema:
2896
2967
  type: integer
2968
+ minimum: 0
2897
2969
  content:
2898
2970
  application/json:
2899
2971
  schema:
2900
- $ref: '#/components/schemas/ErrorEnvelope'
2972
+ $ref: '#/components/schemas/SseConnectionLimitResponse'
2901
2973
  example:
2902
2974
  success: false
2903
2975
  error: SSE_CONNECTION_LIMIT_EXCEEDED
2904
2976
  message: Too many open event streams for this caller.
2977
+ open_streams: 5
2978
+ max_streams: 5
2905
2979
  '503':
2906
2980
  description: |
2907
2981
  **Global stream capacity is exhausted — nothing about this caller.**
@@ -2989,13 +3063,17 @@ paths:
2989
3063
  read "not a storm" out of this section; it says the per-client cost
2990
3064
  is bounded and says nothing about the fleet.**
2991
3065
 
2992
- 📌 **WHAT A REFUSED `fetch` CLIENT SHOULD DO INSTEAD IS NOT YET
2993
- SPECIFIED** — including whether `Retry-After` governs a fallback
2994
- poll interval and not only a reconnect. Falling back to polling
2995
- is also load, merely cheaper. Open on
2996
- [`rLCBjojv`](https://trello.com/c/rLCBjojv); **this block states the
2997
- measured behaviour and deliberately does not invent the
2998
- obligation.**
3066
+ 📌 **WHAT A REFUSED CLIENT MUST DO IS NOW SPECIFIED** — on the
3067
+ `Retry-After` header of this status and of `429`
3068
+ ([`rLCBjojv`](https://trello.com/c/rLCBjojv), decided with the
3069
+ owner's stream-cap ruling of 2026-09-23): no further stream request
3070
+ before `Retry-After` elapses, never retried as a transport error,
3071
+ and `/status` polling permitted under that endpoint's own limits.
3072
+ ⚠️ **`Retry-After` governs the next STREAM request, not a poll
3073
+ interval.** Falling back to polling is still load, merely cheaper,
3074
+ and the measured behaviour above is what a client does TODAY; a
3075
+ client that treats refusal as a transport error does not yet meet
3076
+ the obligation.
2999
3077
 
3000
3078
  📌 **THE POPULATIONS SPLIT BY READER KIND, NOT BY
3001
3079
  BROWSER-VERSUS-NOT.** The WHATWG rule covers **native
@@ -3018,11 +3096,19 @@ paths:
3018
3096
  endpoint would not notice.
3019
3097
  headers:
3020
3098
  Retry-After:
3099
+ required: true
3021
3100
  description: |
3022
3101
  Seconds to wait before retrying. Delta-seconds, not an
3023
- HTTP-date. **Also unreadable by `EventSource`** — see above.
3102
+ HTTP-date. **Always sent on this status. Also unreadable by a native `EventSource`** — see
3103
+ above; a `fetch`-based reader can read it.
3104
+
3105
+ **CONSUMER OBLIGATION** — the same as on `429`: no further
3106
+ stream request before `Retry-After` has elapsed, never retried
3107
+ as a transport error; `/status` polling permitted under that
3108
+ endpoint's own limits.
3024
3109
  schema:
3025
3110
  type: integer
3111
+ minimum: 0
3026
3112
  content:
3027
3113
  application/json:
3028
3114
  schema:
@@ -6780,7 +6866,8 @@ components:
6780
6866
  404 response + ADR-0016 Amendment.
6781
6867
  - `LONG_FORM_CONCURRENCY_LIMIT_EXCEEDED` (429) — caller already
6782
6868
  holds the maximum concurrent in-flight long-form workflows
6783
- their tier permits (Pro 2 / Max 5; Enterprise uncapped).
6869
+ their tier permits (values: the API's
6870
+ `UserTier.maxConcurrentLongFormJobs`, not restated here).
6784
6871
  DISTINCT from an infra rate-limit 429: carries no
6785
6872
  `Retry-After` (it clears on workflow completion) and adds a
6786
6873
  `links.upgrade` CTA. `message_key:
@@ -7221,6 +7308,14 @@ components:
7221
7308
  PerMimeAvailability:
7222
7309
  type: object
7223
7310
  description: |
7311
+ **CLOSED TO NEW DECLARATIONS since 2026-09-18** ([`DquOfy7f`](https://trello.com/c/DquOfy7f)).
7312
+ Retained for compatibility only: no cell declares it, and
7313
+ `scripts/check-per-mime-availability.py` fails on any
7314
+ declaration. The API does not enforce it and the SDKs do not
7315
+ gate on it, so a differentiated MIME MUST use a parallel
7316
+ mime_group instead. The description below records what the
7317
+ field meant when it was open.
7318
+
7224
7319
  Map of MIME-type → `PerValueAvailabilityEntry`. Attached to a
7225
7320
  mime_group's `per_mime_availability` field when individual
7226
7321
  MIMEs within the same `mimes:` list ship at different
@@ -7240,8 +7335,9 @@ components:
7240
7335
  remains the right tool when the differentiated subset has
7241
7336
  materially different option shape (animated GIF
7242
7337
  watermarking, video-base watermarking, etc.). This
7243
- primitive is for pure availability differentiation within
7244
- an otherwise-homogeneous mime list.
7338
+ primitive WAS for pure availability differentiation within
7339
+ an otherwise-homogeneous mime list; since the closure above,
7340
+ that case uses a parallel mime_group too.
7245
7341
  additionalProperties:
7246
7342
  $ref: '#/components/schemas/PerValueAvailabilityEntry'
7247
7343
 
@@ -8378,14 +8474,64 @@ components:
8378
8474
  format: uri
8379
8475
  description: Top-up deep link.
8380
8476
 
8477
+ SseConnectionLimitResponse:
8478
+ type: object
8479
+ description: |
8480
+ `429` body for `GET /api/workflows/{id}/events` when the caller already
8481
+ holds the maximum number of open event streams
8482
+ (`SSE_CONNECTION_LIMIT_EXCEEDED`). The limit, who counts as the caller,
8483
+ and the consumer obligation are on that response. Carries the two
8484
+ counts the SDK taxonomy's `metadataSchema` names (`openStreams` /
8485
+ `maxStreams` after camelCase lowering), so a client can say "5 of 5
8486
+ streams open" without restating the limit.
8487
+
8488
+ **Both count fields are REQUIRED when `error` is
8489
+ `SSE_CONNECTION_LIMIT_EXCEEDED` and absent otherwise**, enforced by the
8490
+ `if`/`then`/`else` branch below rather than a plain `required` list,
8491
+ because the endpoint's other `429` — `TOO_MANY_REQUESTS` from the
8492
+ start-rate limiter — is the plain `ErrorEnvelope` subset of this shape
8493
+ and must validate against it too.
8494
+ allOf:
8495
+ - $ref: '#/components/schemas/ErrorEnvelope'
8496
+ - type: object
8497
+ properties:
8498
+ open_streams:
8499
+ type: integer
8500
+ minimum: 0
8501
+ description: Streams this caller holds open at the moment of refusal.
8502
+ max_streams:
8503
+ type: integer
8504
+ minimum: 1
8505
+ description: |
8506
+ The caller's open-stream limit. **Read the limit from here,
8507
+ not from prose** — it is the server's value at refusal time.
8508
+ # The two 429 branches, machine-enforced (codex, #515 round 4): the
8509
+ # counts are REQUIRED on the stream-limit refusal and FORBIDDEN on any
8510
+ # other code (the start-rate limiter's plain TOO_MANY_REQUESTS).
8511
+ - if:
8512
+ required: [error]
8513
+ properties:
8514
+ error:
8515
+ const: SSE_CONNECTION_LIMIT_EXCEEDED
8516
+ then:
8517
+ required: [open_streams, max_streams]
8518
+ else:
8519
+ not:
8520
+ anyOf:
8521
+ - required: [open_streams]
8522
+ - required: [max_streams]
8523
+
8381
8524
  LongFormConcurrencyLimitResponse:
8382
8525
  type: object
8383
8526
  description: |
8384
8527
  `429` response body for `POST /api/workflows` when the caller
8385
8528
  already holds the maximum number of concurrent in-flight
8386
8529
  long-form (Fargate) workflows their tier permits
8387
- (`UserTier.maxConcurrentLongFormJobs`: Pro 2 / Max 5; Enterprise
8388
- + Free uncapped — Free has no long-form access at all). Carried
8530
+ (`UserTier.maxConcurrentLongFormJobs`, owned by the API and not
8531
+ restated here: an earlier copy said Free was uncapped and had no
8532
+ long-form access, while the API capped Free at a value of its own
8533
+ — and since 2026-09-23 every tier reaches long-form, decision 26,
8534
+ `jLuZvlJe`). Carried
8389
8535
  on a `429` but DISTINCT from an infrastructure rate-limit `429`:
8390
8536
 
8391
8537
  - `error` is the stable code `LONG_FORM_CONCURRENCY_LIMIT_EXCEEDED`
@@ -9714,12 +9860,12 @@ components:
9714
9860
  - merge: Concatenate/combine multiple files into one (images, video, audio). Multi-input. Image inputs merge into animated GIF or slideshow video; image collage/grid and PDF concatenation are not supported by the V1 Lambda.
9715
9861
  - archive: Bundle files into ZIP/tar.gz (all types). Multi-input.
9716
9862
  - convert: Change file format (all types)
9717
- - custom_luma: Apply a caller-uploaded luma matte to a base video for a custom luma-matte transition effect. Multi-input (`role: base` + `role: transition_mask`). `availability: planned` + `required_tier: pro`; dispatch returns `feature_not_available` (422) until Lambda ships. Distinct from FFmpeg `xfade=custom` (which is an expression, not an operation). Per ticket I29 (Trello EPUE5Vs1).
9863
+ - custom_luma: Apply a caller-uploaded luma matte to a base video for a custom luma-matte transition effect. Multi-input (`role: base` + `role: transition_mask`). `availability: planned` (no tier gate); dispatch returns `feature_not_available` (422) until Lambda ships. Distinct from FFmpeg `xfade=custom` (which is an expression, not an operation). Per ticket I29 (Trello EPUE5Vs1).
9718
9864
  - audio_overlay: Mix a secondary audio asset over a primary audio or video base (DJ tags, podcast intros/outros, station IDs, jingles). Multi-input (`role: base` + `role: overlay`). `availability: planned`; dispatch returns `feature_not_available` (422) until Lambda ships. **NOT** the same as `audio_watermark` — that operation is steganographic (imperceptible identifier embedded for ownership tracking), tracked separately by I20. Per ticket I19 (Trello Xr3Z4GBF).
9719
9865
  - audio_watermark: Embed a steganographic forensic watermark into an audio asset (or a video's audio track) — Cinavia / Resemble PerTh territory. Single-input. `availability: planned` + `required_tier: enterprise`; dispatch returns `feature_not_available` (422) until Lambda ships. Pairs with `POST /api/audio-watermark/decode` for own-watermarks-only extraction. Per ticket I20 (Trello omiCq7Vn).
9720
- - audio_to_video: Produce a video from an audio input plus an OPTIONAL still image overlay. Multi-input role-based with the first OPTIONAL role on the contract (`role: base` audio required, `role: overlay` image 0..1 — see `per_role_cardinality`). When overlay is omitted, the video uses a solid background colour. `availability: beta` (Wave A — Lambda backend live; opt-in, MUST NOT return `feature_not_available`; may change with notice). Per ticket [`SlluxMBN`](https://trello.com/c/SlluxMBN) + ADR-0015 (introduces `per_role_cardinality` vocab).
9721
- - video_watermark: Apply an image overlay onto a base video via FFmpeg's `overlay` filter. Multi-input role-based (`role: base` video + `role: overlay` image, exactly one of each per `per_role_cardinality`). Re-encode required; audio stream-copy passthrough. Distinct from `image_watermark` (pure-Rust/image-only). `availability: beta` (Wave A — Lambda backend live; opt-in, MUST NOT 422; `short_form` is beta, `long_form` stays `planned` — no live Fargate worker; `multi_overlay_stack` stays `planned`). Per ticket [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) + ADR-0013.
9722
- - video_text_watermark: Render a text overlay onto a base video via FFmpeg's `drawtext` filter. Single-input — text and styling in options. Same `watermark_mode` (single/tiled), anchor + margin vocab as `text_watermark`. Re-encode required; audio stream-copy passthrough. `availability: planned`; dispatch returns `feature_not_available` (422) until Lambda ships. Per ticket [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) + ADR-0013.
9866
+ - audio_to_video: Produce a video from an audio input plus an OPTIONAL still image overlay. Multi-input role-based with the first OPTIONAL role on the contract (`role: base` audio required, `role: overlay` image 0..1 — see `per_role_cardinality`). When overlay is omitted, the video uses a solid background colour. `availability: planned` — WITHDRAWN 2026-09-15: measured 0.300 s of encode per second of output PLUS A 7 s FIXED COST, so the advertised PT2H needs 2167 s against a 900 s platform maximum (0.300 x 7200 alone is 2160 — the intercept is what makes the figure 2167, and a consumer dividing 600 by 0.300 gets a 2000 s in-flight boundary where the real one is 1976 s). Returns `feature_not_available` (422) at workflow-create. An already-accepted workflow is not cancelled (availability is checked at create) and fails only when its output duration exceeds ~1976 s ON THE INPUT THE RATE WAS MEASURED WITH (a real photographic 1080p still plus looped real audio), where 0.300 s per second plus a 7 s fixed cost reaches the worker's 600 s cap — the 60 s and 120 s measured cells both COMPLETED. The driver is the STILL'S RESOLUTION, not duration alone: a 4K still is roughly 4x the rate (unmeasured), which would put the boundary near a quarter of that, and this schema places no constraint on the overlay's resolution. Per ticket [`SlluxMBN`](https://trello.com/c/SlluxMBN) + ADR-0015 (introduces `per_role_cardinality` vocab).
9867
+ - video_watermark: Apply an image overlay onto a base video via FFmpeg's `overlay` filter. Multi-input role-based (`role: base` video + `role: overlay` image, exactly one of each per `per_role_cardinality`). Re-encode required; audio stream-copy passthrough. Distinct from `image_watermark` (pure-Rust/image-only). `availability: planned` — WITHDRAWN 2026-09-15, operation AND `short_form`: a real 1080p source at the advertised PT5M / 500 MB was killed at 606 s by the worker's 600 s encode cap, no output. Returns `feature_not_available` (422) at workflow-create; an already-accepted workflow is not cancelled and fails only if it exceeds that cap; the 606 s kill is ONE measured point and nothing measured says where the boundary is. `long_form` and `multi_overlay_stack` were already `planned`. Per ticket [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) + ADR-0013.
9868
+ - video_text_watermark: Render a text overlay onto a base video via FFmpeg's `drawtext` filter. Single-input — text and styling in options. Same `watermark_mode` (single/tiled), anchor + margin vocab as `text_watermark`. Re-encode required; audio stream-copy passthrough. `availability: planned` — WITHDRAWN 2026-09-15, operation AND `short_form`: a real 1080p source at the advertised PT5M was killed at 604 s by the worker's 600 s encode cap. Returns `feature_not_available` (422) at workflow-create. ⚠️ This entry previously read "until Lambda ships", which was wrong in a way that mattered: the worker SHIPPED and runs — it is the CEILING that cannot be served. Per ticket [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) + ADR-0013.
9723
9869
  - split: Fan one input file into N outputs across GIF / PDF / audio / video MIME families. Single-input per-mime-group catalog (mirrors merge/convert): GIF uses `frame_range` (REQUIRED) + `output_format`; PDF uses `page_range` OR `page_groups` (mutually exclusive); audio + video use a `mode` discriminator (interval/count/cut_points) + numeric-seconds wire format + `precision` flag (fast/exact). 200-output hard cap per ADR-0009 §D5 with per-mode preflight math; output naming `output-001..output-200`. Long-form video routes to a separate `split-video-fargate` worker via `processing_class`. `availability: beta` for the `audio` and `video` mime_groups (workers live on staging — shape-stable + opt-in, MUST NOT 422); video activates BOTH classes (`video.processing_class.short_form: beta` AND `long_form: beta` — `split-video-fargate` deployed + wired on staging but NOT yet proven end-to-end per [`rcwvUKhI`](https://trello.com/c/rcwvUKhI); the first customer-path soak has not completed, the 4GB+ speed-up is unmeasured, and the long-form fan-out is flag-gated dark). The `image_gif` and `document_pdf` mime_groups stay `availability: planned` and dispatch returns `feature_not_available` (422) until their workers ship. Per ticket [`vKI0CFDu`](https://trello.com/c/vKI0CFDu) + ADR-0014.
9724
9870
  - passthrough: Inert lossless source operation. A single-input source job whose SOLE operation is `passthrough` emits its source bytes UNCHANGED — no compression, no Lambda. The API self-completes the job at publish (terminal output = the upload `{bucket, key}` unchanged). Its purpose is to feed an uploaded file into a multi-input operation LOSSLESSLY: because `JobInputV2.source` is narrowed to exclude upload-direct, an upload that must enter a `merge` / `archive` / `image_watermark` op enters via a `passthrough` source job referenced downstream by `{type: job_output, from: <id>}` — preserving billing / DAG / lineage. Distinct from `operations: []` (which keeps its implicit-compress meaning on a single-input upload job); `passthrough` is the EXPLICIT lossless path via the "non-empty `operations[]` without `compress` = compression opt-out" rule. Media-agnostic; no options. `availability: beta` — activated (the inputs[]-narrowing + passthrough self-complete mechanism is deployed API-side); workflow-create accepts `passthrough` source jobs and MUST NOT return `feature_not_available`. **Never published to SNS** — deliberately absent from the AsyncAPI routing enums (API self-completes; no `ops-passthrough` queue). Per ticket [`4som89Uh`](https://trello.com/c/4som89Uh) + ADR-0004 (planned→beta flip).
9725
9871
 
@@ -10950,9 +11096,11 @@ components:
10950
11096
  planned` so workflow-create returns 422 until Lambda
10951
11097
  ships), `audio_overlay` (joined via ticket
10952
11098
  [I19](https://trello.com/c/Xr3Z4GBF) — same `planned`
10953
- gating), and `audio_to_video` + `video_watermark` (joined
10954
- via Wave A [`c3uthIP4`](https://trello.com/c/c3uthIP4) —
10955
- `availability: beta`, backends live). The multi-input
11099
+ gating), and `audio_to_video` + `video_watermark`
11100
+ (WITHDRAWN 2026-09-15 — `availability: planned`; the backends
11101
+ are live but cannot serve the advertised ceilings, so
11102
+ workflow-create returns `feature_not_available` 422). The
11103
+ multi-input
10956
11104
  shape is contract-defined for all entries.
10957
11105
  - if:
10958
11106
  properties:
@@ -12016,9 +12164,12 @@ components:
12016
12164
  gating (per ticket I15-CONS) — reflects what the server
12017
12165
  would route this file to under the caller's current tier.
12018
12166
  `blocked` is emitted when no tier-permitted pool exists for
12019
- the file (e.g. free-tier caller probing a long-form clip,
12020
- or any caller probing a `corrupt` / `unsupported_codec`
12021
- file).
12167
+ the file — any caller probing a `corrupt` /
12168
+ `unsupported_codec` file, or a caller below a class's
12169
+ `required_tier`. Since 2026-09-23 (decision 26) the only
12170
+ video classes still carrying one are `audio_watermark`'s
12171
+ (`enterprise`, both `planned`), so the tier branch is
12172
+ unreachable for every callable video class.
12022
12173
  # CLOSED. It GATES AN AFFORDANCE: `blocked` is a hard stop and the others
12023
12174
  # predict routing. An unrecognised class cannot be safely treated as routable —
12024
12175
  # a consumer guessing would offer an upload the server will refuse. A new
@@ -15103,9 +15254,10 @@ components:
15103
15254
  Operation-level minimum subscription tier. Optional — when
15104
15255
  absent, the operation is available to all callers regardless
15105
15256
  of tier. Per ADR-0001 §1.3 (tier and availability are
15106
- orthogonal axes). First operation-level consumer is
15257
+ orthogonal axes). First operation-level consumer was
15107
15258
  `custom_luma` (`required_tier: pro`) per
15108
- [I29 `EPUE5Vs1`](https://trello.com/c/EPUE5Vs1). SDK + frontend
15259
+ [I29 `EPUE5Vs1`](https://trello.com/c/EPUE5Vs1); that gate was
15260
+ dropped 2026-09-23 under decision 26 (owner ruling, `jLuZvlJe`). SDK + frontend
15109
15261
  consumers gate UI on this value alongside `availability` to
15110
15262
  hide higher-tier features for lower-tier callers; the
15111
15263
  runtime returns `feature_tier_restricted` (403) on
@@ -15226,18 +15378,31 @@ components:
15226
15378
  per_mime_availability:
15227
15379
  $ref: '#/components/schemas/PerMimeAvailability'
15228
15380
  description: |
15229
- Optional per-MIME availability map per ticket
15230
- [`YXYOo6gg`](https://trello.com/c/YXYOo6gg). Keys MUST be
15231
- a subset of `mimes[]` (CI-checked by
15232
- `scripts/check-per-mime-availability.py`); absent keys
15233
- default to `availability: stable`. Use this when
15234
- individual MIMEs within an otherwise-homogeneous mime
15235
- list ship at different availability levels (e.g.
15236
- `image/avif: beta, image/heic: planned` alongside
15237
- `image/jpeg: stable`). Runtime emission lands with
15238
- [I3](https://trello.com/c/eCWIpug8); until then the
15239
- contract advertises the field shape but the endpoint
15240
- does not yet surface the field.
15381
+ CLOSED TO NEW DECLARATIONS since 2026-09-18, ticket
15382
+ [`DquOfy7f`](https://trello.com/c/DquOfy7f). No mime_group
15383
+ declares this field and none may:
15384
+ `scripts/check-per-mime-availability.py` REFUSES any
15385
+ declaration, anywhere, at any depth. Expect this map to be
15386
+ absent or empty on every group.
15387
+
15388
+ USE A PARALLEL `mime_group` INSTEAD. A group-level
15389
+ `planned` is enforced at create by the API's 422 gate;
15390
+ this map is NOT enforced anywhere. `compression_api`
15391
+ round-trips it raw; the SDK generators parse and publish
15392
+ it but nothing gates on it (`sdk_exposure` composes
15393
+ op/group/option/value and has no per-MIME level); only the
15394
+ frontend UI resolves it. So a declared value would be
15395
+ served by the API, published to SDK consumers as metadata
15396
+ their own gating ignores, and honoured only in one UI.
15397
+
15398
+ The field itself is RETAINED, not removed: the shape is
15399
+ already published and deleting it would break the four
15400
+ consuming repos. Keys, if any were ever present, MUST be a
15401
+ subset of `mimes[]`, and absent keys mean
15402
+ `availability: stable`. Runtime emission was to land with
15403
+ [I3](https://trello.com/c/eCWIpug8); that roadmap is
15404
+ closed. See `schemas/FORMAT.md`
15405
+ §`per_mime_availability`.
15241
15406
  max_input_size_bytes:
15242
15407
  type: integer
15243
15408
  format: int64
@@ -51,7 +51,7 @@
51
51
  "accepts": [
52
52
  "audio"
53
53
  ],
54
- "availability": "stable",
54
+ "availability": "planned",
55
55
  "input": {
56
56
  "max": 2,
57
57
  "min": 1,
@@ -638,7 +638,7 @@
638
638
  "accepts": [
639
639
  "video"
640
640
  ],
641
- "availability": "stable",
641
+ "availability": "planned",
642
642
  "input": {
643
643
  "max": 2,
644
644
  "min": 2,
@@ -732,5 +732,5 @@
732
732
  "isAnimated": "maybe"
733
733
  }
734
734
  },
735
- "schema_version": "2.201.0"
735
+ "schema_version": "2.208.0"
736
736
  }
@@ -96,8 +96,7 @@ operation:
96
96
  # Stays planned (CON-1 flips only compress.video.long_form +
97
97
  # merge.video.long_form_re_encode). Per-tier caps per ADR-0011.
98
98
  availability: planned
99
- required_tier: pro
100
- constraints: # baseline = Pro
99
+ constraints: # baseline = every tier without a per_tier_constraints override
101
100
  max_input_duration: "PT12H"
102
101
  max_input_size_bytes: 5000000000 # 5 GB (Pro)
103
102
  max_output_size_bytes: 5000000000
@@ -282,8 +281,7 @@ operation:
282
281
  # Stays planned (CON-1 flips only compress.video.long_form +
283
282
  # merge.video.long_form_re_encode). Per-tier caps per ADR-0011.
284
283
  availability: planned
285
- required_tier: pro
286
- constraints: # baseline = Pro
284
+ constraints: # baseline = every tier without a per_tier_constraints override
287
285
  max_input_duration: "PT12H"
288
286
  max_input_size_bytes: 5000000000 # 5 GB (Pro)
289
287
  max_output_size_bytes: 5000000000
@@ -2,7 +2,7 @@ schema_version: "2.0.0"
2
2
 
3
3
  operation:
4
4
  type: audio_to_video
5
- availability: stable
5
+ availability: planned
6
6
  description: |
7
7
  Produce a video from an audio input plus an OPTIONAL still image
8
8
  overlay. Use cases: podcast → YouTube uploads, audio-only tracks
@@ -26,10 +26,30 @@ operation:
26
26
  A lower framerate plus still-image tuning keeps file size tiny
27
27
  when the overlay is a still image (the common case).
28
28
 
29
- Activated to `availability: beta`: the backend is live (API
30
- accepts + publishes), so this is shape-stable + opt-in for callers
31
- and MUST NOT return `feature_not_available` — it may still change
32
- with notice while beta.
29
+ `availability: planned` — withdrawn 2026-09-15. Measured encode cost is
30
+ 0.300 s per second of output PLUS A 7 s FIXED COST, so the advertised PT2H
31
+ needs 2167 s against a 900 s platform maximum. ⚠️ The 7 s is not a rounding
32
+ detail: 0.300 x 7200 alone is 2160, and a consumer dividing 600 by 0.300
33
+ derives a 2000 s in-flight boundary where the real one is ~1976 s. Workflow-create returns `feature_not_available` (422).
34
+
35
+ ⚠️ An already-accepted workflow is NOT cancelled — availability is checked at
36
+ create — and it is NOT thereby doomed. ⛔ DO NOT READ THIS AS "in-flight work
37
+ fails": the 60 s and 120 s cells behind this withdrawal both COMPLETED WITH
38
+ OUTPUT, which is precisely why the evidence is arithmetic rather than a kill.
39
+ What fails is an accepted workflow whose OUTPUT DURATION exceeds ~1976 s
40
+ ⚠️ ON THE INPUT THE RATE WAS MEASURED WITH — a real photographic 1080p STILL
41
+ plus looped real audio — the point at which 0.300 s/s plus the 7 s fixed cost
42
+ reaches the 600 s cap. ⛔ THE DRIVER IS THE STILL'S RESOLUTION, NOT THE
43
+ DURATION ALONE: a 4K still is roughly 4x the rate (recorded as UNMEASURED),
44
+ which would put the boundary near a quarter of that figure, and this schema
45
+ places NO constraint on the overlay's resolution. Other still resolutions and
46
+ other output settings are likewise unmeasured, and the contract does not
47
+ claim which direction they move —
48
+ and what the caller then sees is NOT SETTLED — see the CHANGELOG entry for
49
+ 2.203.0; this contract does not pin a worker's error classification. Measured figures and the conditions for re-listing are in the
50
+ CHANGELOG entry for 2.203.0 — the only one of the two records that is
51
+ PUBLISHED (`schemas/manifest-divergence-register.yaml` is working material
52
+ for the drift gate and is not in the npm tarball).
33
53
 
34
54
  default: false
35
55
  input_model: multi
@@ -1041,9 +1041,16 @@ operation:
1041
1041
  # (pure 300s duration + 256MiB size floor), and the eligibility gate
1042
1042
  # treats beta==stable (only `planned` differs) — API-confirmed.
1043
1043
  # Per-tier caps per D3.
1044
+ #
1045
+ # NO `required_tier` (owner ruling 2026-09-23, jLuZvlJe, under
1046
+ # decision 26): capability is limited by quota and credits, never by
1047
+ # hiding it. The `pro` gate this carried was never enforced by the API
1048
+ # and outlived the decision that opened every file type to every tier.
1049
+ # A lower tier's per-account upload cap
1050
+ # (`limits.max_upload_size_bytes`) still refuses first — that is the
1051
+ # quota, and it is a separate, request-level limit.
1044
1052
  availability: stable
1045
- required_tier: pro
1046
- constraints: # baseline = Pro (lowest permitted tier)
1053
+ constraints: # baseline = every tier without a per_tier_constraints override
1047
1054
  max_input_duration: "PT12H"
1048
1055
  max_input_size_bytes: 5000000000 # 5 GB (Pro)
1049
1056
  max_output_size_bytes: 5000000000
@@ -307,8 +307,7 @@ operation:
307
307
  # merge.video.long_form_re_encode). Per-tier caps per ADR-0011 —
308
308
  # advertised shape; availability gates execution off (422).
309
309
  availability: planned
310
- required_tier: pro
311
- constraints: # baseline = Pro
310
+ constraints: # baseline = every tier without a per_tier_constraints override
312
311
  max_input_duration: "PT12H"
313
312
  max_input_size_bytes: 5000000000 # 5 GB (Pro)
314
313
  max_output_size_bytes: 5000000000
@@ -3,12 +3,12 @@ schema_version: "2.0.0"
3
3
  operation:
4
4
  type: custom_luma
5
5
  availability: planned
6
- required_tier: pro
7
6
  description: |
8
7
  Apply a caller-uploaded luma matte (transition-mask) over a base
9
8
  video to produce a custom luma-matte transition effect. Inspired
10
9
  by Cloudinary's deprecated luma-matte custom transitions and
11
- intended as a paid-tier (`pro`+) creative feature.
10
+ intended as a creative feature, metered by credits like every
11
+ other operation (no tier gate — decision 26, 2026-09-23).
12
12
 
13
13
  **NOT** related to the `xfade=custom` expression-mode transition
14
14
  parameter. The `merge.transition.custom` value is tagged `planned`
@@ -52,13 +52,12 @@ operation:
52
52
  - video/webm
53
53
  processing_class:
54
54
  # F8 long-form video tier (per ticket I15-CONS). custom_luma
55
- # is itself `availability: planned` + `required_tier: pro`
56
- # at the operation level; the per-class shape lands now to
55
+ # is itself `availability: planned` at the operation level
56
+ # (no tier gate — decision 26, owner ruling 2026-09-23); the per-class shape lands now to
57
57
  # keep SDK/sidecar shape forward-compatible when the operation
58
58
  # ships.
59
59
  short_form:
60
60
  availability: planned
61
- required_tier: pro
62
61
  constraints:
63
62
  max_input_duration: "PT5M"
64
63
  max_input_size_bytes: 524288000
@@ -68,8 +67,7 @@ operation:
68
67
  # merge.video.long_form_re_encode). Per-tier caps per ADR-0011 —
69
68
  # advertised shape; availability gates execution off (422).
70
69
  availability: planned
71
- required_tier: pro
72
- constraints: # baseline = Pro
70
+ constraints: # baseline = every tier without a per_tier_constraints override
73
71
  max_input_duration: "PT12H"
74
72
  max_input_size_bytes: 5000000000 # 5 GB (Pro)
75
73
  max_output_size_bytes: 5000000000
@@ -190,8 +190,7 @@ operation:
190
190
  # max_total_duration (24h single-pass budget, SPIKE-0); size is the
191
191
  # per-tier secondary cap.
192
192
  availability: stable
193
- required_tier: pro
194
- constraints: # baseline = Pro (lowest permitted)
193
+ constraints: # baseline = every tier without a per_tier_constraints override
195
194
  max_total_duration: "PT24H" # 24h (was PT12H) — binding Enterprise ceiling
196
195
  max_total_input_size_bytes: 5000000000 # 5 GB combined (Pro)
197
196
  per_tier_constraints: