@giveitsmaller/contracts 0.82.0 → 0.84.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 +1 -1
  4. package/anonymous-policy.yaml +55 -18
  5. package/asyncapi/README.md +1 -1
  6. package/asyncapi/events.yaml +121 -31
  7. package/availability/availability.json +6 -6
  8. package/code-builder/code-builder-metadata.json +7 -7
  9. package/dist/asyncapi/AnonymousSchema_286.d.ts +4 -0
  10. package/dist/asyncapi/AnonymousSchema_286.js +5 -0
  11. package/dist/asyncapi/LongFormProcessingClass.d.ts +2 -1
  12. package/dist/asyncapi/LongFormProcessingClass.js +1 -0
  13. package/dist/asyncapi/OperationMetrics.d.ts +2 -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/AnonymousLimitExceededResponse.d.ts +157 -0
  25. package/dist/openapi/models/AnonymousLimitExceededResponse.js +95 -0
  26. package/dist/openapi/models/AnonymousOperationNotAllowedResponse.d.ts +1 -1
  27. package/dist/openapi/models/AnonymousOperationNotAllowedResponse.js +1 -1
  28. package/dist/openapi/models/AnonymousQuotaExhaustedResponse.d.ts +42 -7
  29. package/dist/openapi/models/AnonymousQuotaExhaustedResponse.js +13 -1
  30. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  31. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  32. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  33. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  34. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  35. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  36. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  37. package/dist/openapi/models/AuthErrorType.js +1 -1
  38. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
  39. package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
  40. package/dist/openapi/models/AuthenticatedIdentity.d.ts +1 -1
  41. package/dist/openapi/models/AuthenticatedIdentity.js +1 -1
  42. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  43. package/dist/openapi/models/AvailabilityValue.js +1 -1
  44. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  45. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  46. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  47. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  48. package/dist/openapi/models/BillingCheckoutRequest.d.ts +1 -1
  49. package/dist/openapi/models/BillingCheckoutRequest.js +1 -1
  50. package/dist/openapi/models/BillingCheckoutSession.d.ts +1 -1
  51. package/dist/openapi/models/BillingCheckoutSession.js +1 -1
  52. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +1 -1
  53. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +1 -1
  54. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  55. package/dist/openapi/models/CallbackEventType.js +1 -1
  56. package/dist/openapi/models/CancelAccountDeletion200Response.d.ts +1 -1
  57. package/dist/openapi/models/CancelAccountDeletion200Response.js +1 -1
  58. package/dist/openapi/models/CancelAccountDeletion200ResponseData.d.ts +1 -1
  59. package/dist/openapi/models/CancelAccountDeletion200ResponseData.js +1 -1
  60. package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
  61. package/dist/openapi/models/CapabilityCondition.js +1 -1
  62. package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
  63. package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
  64. package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
  65. package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
  66. package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
  67. package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
  68. package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
  69. package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
  70. package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
  71. package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
  72. package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
  73. package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
  74. package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
  75. package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
  76. package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
  77. package/dist/openapi/models/CapabilityConstraint.js +1 -1
  78. package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
  79. package/dist/openapi/models/CapabilityInputSpec.js +1 -1
  80. package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
  81. package/dist/openapi/models/CapabilityProduces.js +1 -1
  82. package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
  83. package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
  84. package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
  85. package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
  86. package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
  87. package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
  88. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  89. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  90. package/dist/openapi/models/CheckoutSessionStatusResponse.d.ts +1 -1
  91. package/dist/openapi/models/CheckoutSessionStatusResponse.js +1 -1
  92. package/dist/openapi/models/CheckoutSessionStatusResponseData.d.ts +1 -1
  93. package/dist/openapi/models/CheckoutSessionStatusResponseData.js +1 -1
  94. package/dist/openapi/models/CodegenSource.d.ts +1 -1
  95. package/dist/openapi/models/CodegenSource.js +1 -1
  96. package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
  97. package/dist/openapi/models/CodegenSourceInput.js +1 -1
  98. package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
  99. package/dist/openapi/models/CodegenSourceJob.js +1 -1
  100. package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
  101. package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
  102. package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
  103. package/dist/openapi/models/CodegenSourceOperation.js +1 -1
  104. package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
  105. package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
  106. package/dist/openapi/models/CompositionPlan.d.ts +1 -1
  107. package/dist/openapi/models/CompositionPlan.js +1 -1
  108. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  109. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  110. package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
  111. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  112. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  113. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  114. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  115. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  116. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  117. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  118. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  119. package/dist/openapi/models/ConnectionSource.js +1 -1
  120. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  121. package/dist/openapi/models/ContactRequest.js +1 -1
  122. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  123. package/dist/openapi/models/ContactSubject.js +1 -1
  124. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  125. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  126. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  127. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  128. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  129. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  130. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  131. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  132. package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +1 -1
  133. package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +1 -1
  134. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  135. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  136. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  137. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  138. package/dist/openapi/models/CreateWorkflow401Response.d.ts +1 -1
  139. package/dist/openapi/models/CreateWorkflow401Response.js +1 -1
  140. package/dist/openapi/models/CreateWorkflow403Response.d.ts +4 -1
  141. package/dist/openapi/models/CreateWorkflow403Response.js +6 -1
  142. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  143. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  144. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  145. package/dist/openapi/models/CreditTransaction.js +1 -1
  146. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  147. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  148. package/dist/openapi/models/CreditsBalanceResponse.d.ts +2 -2
  149. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  150. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  151. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  152. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  153. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  154. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  155. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  156. package/dist/openapi/models/Delivery.d.ts +1 -1
  157. package/dist/openapi/models/Delivery.js +1 -1
  158. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  159. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  160. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  161. package/dist/openapi/models/DeliveryPlan.js +1 -1
  162. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  163. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  164. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  165. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  166. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  167. package/dist/openapi/models/DeliverySelection.js +1 -1
  168. package/dist/openapi/models/DownloadBundle.d.ts +1 -1
  169. package/dist/openapi/models/DownloadBundle.js +1 -1
  170. package/dist/openapi/models/DroppedOption.d.ts +22 -2
  171. package/dist/openapi/models/DroppedOption.js +3 -1
  172. package/dist/openapi/models/EmailNotify.d.ts +1 -1
  173. package/dist/openapi/models/EmailNotify.js +1 -1
  174. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  175. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  176. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  177. package/dist/openapi/models/EndpointProjection.js +1 -1
  178. package/dist/openapi/models/EndpointProjectionServersInner.d.ts +1 -1
  179. package/dist/openapi/models/EndpointProjectionServersInner.js +1 -1
  180. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  181. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  182. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  183. package/dist/openapi/models/EstimateQuality.js +1 -1
  184. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  185. package/dist/openapi/models/EstimateRange.js +1 -1
  186. package/dist/openapi/models/ExportAccountData200Response.d.ts +1 -1
  187. package/dist/openapi/models/ExportAccountData200Response.js +1 -1
  188. package/dist/openapi/models/ExportAccountData200ResponseData.d.ts +1 -1
  189. package/dist/openapi/models/ExportAccountData200ResponseData.js +1 -1
  190. package/dist/openapi/models/ExportAccountData200ResponseDataBilling.d.ts +1 -1
  191. package/dist/openapi/models/ExportAccountData200ResponseDataBilling.js +1 -1
  192. package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.d.ts +1 -1
  193. package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.js +1 -1
  194. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  195. package/dist/openapi/models/ExternalDestination.js +1 -1
  196. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  197. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  198. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  199. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  200. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  201. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  202. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  203. package/dist/openapi/models/ExternalImportToken.js +1 -1
  204. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  205. package/dist/openapi/models/ExternalSource.js +1 -1
  206. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  207. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  208. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  209. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  210. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  211. package/dist/openapi/models/FeatureViolation.js +1 -1
  212. package/dist/openapi/models/GetProfile200Response.d.ts +1 -1
  213. package/dist/openapi/models/GetProfile200Response.js +1 -1
  214. package/dist/openapi/models/GetProfile200ResponseData.d.ts +1 -1
  215. package/dist/openapi/models/GetProfile200ResponseData.js +1 -1
  216. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  217. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  218. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  219. package/dist/openapi/models/JobDefinition.js +1 -1
  220. package/dist/openapi/models/JobDownload.d.ts +1 -1
  221. package/dist/openapi/models/JobDownload.js +1 -1
  222. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  223. package/dist/openapi/models/JobInputV2.js +1 -1
  224. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  225. package/dist/openapi/models/JobMediaClass.js +1 -1
  226. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  227. package/dist/openapi/models/JobOutputSource.js +1 -1
  228. package/dist/openapi/models/JobResponse.d.ts +41 -1
  229. package/dist/openapi/models/JobResponse.js +7 -1
  230. package/dist/openapi/models/JobStatus.d.ts +1 -1
  231. package/dist/openapi/models/JobStatus.js +1 -1
  232. package/dist/openapi/models/JobType.d.ts +1 -1
  233. package/dist/openapi/models/JobType.js +1 -1
  234. package/dist/openapi/models/LivenessResponse.d.ts +13 -1
  235. package/dist/openapi/models/LivenessResponse.js +3 -1
  236. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  237. package/dist/openapi/models/LoginUser200Response.js +1 -1
  238. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  239. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  240. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  241. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  242. package/dist/openapi/models/LoginUser401Response.d.ts +1 -1
  243. package/dist/openapi/models/LoginUser401Response.js +1 -1
  244. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  245. package/dist/openapi/models/LoginUserRequest.js +1 -1
  246. package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
  247. package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
  248. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
  249. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
  250. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  251. package/dist/openapi/models/MetadataResponse.js +1 -1
  252. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  253. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  254. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  255. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  256. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  257. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  258. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  259. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  260. package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
  261. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  262. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  263. package/dist/openapi/models/MultiInputSource.js +1 -1
  264. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  265. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  266. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  267. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  268. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  269. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  270. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  271. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  272. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  273. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  274. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  275. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  276. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  277. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  278. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  279. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  280. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  281. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  282. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  283. package/dist/openapi/models/MultipartPartListing.js +1 -1
  284. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  285. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  286. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  287. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  288. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  289. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  290. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  291. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  292. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  293. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  294. package/dist/openapi/models/NotifyConfig.d.ts +1 -1
  295. package/dist/openapi/models/NotifyConfig.js +1 -1
  296. package/dist/openapi/models/OperationCapability.d.ts +1 -1
  297. package/dist/openapi/models/OperationCapability.js +1 -1
  298. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  299. package/dist/openapi/models/OperationDefinition.js +1 -1
  300. package/dist/openapi/models/OperationDownload.d.ts +1 -1
  301. package/dist/openapi/models/OperationDownload.js +1 -1
  302. package/dist/openapi/models/OperationInputModel.d.ts +1 -1
  303. package/dist/openapi/models/OperationInputModel.js +1 -1
  304. package/dist/openapi/models/OperationMessageParamsValue.d.ts +1 -1
  305. package/dist/openapi/models/OperationMessageParamsValue.js +1 -1
  306. package/dist/openapi/models/OperationResponse.d.ts +4 -2
  307. package/dist/openapi/models/OperationResponse.js +1 -1
  308. package/dist/openapi/models/OperationResult.d.ts +1 -1
  309. package/dist/openapi/models/OperationResult.js +1 -1
  310. package/dist/openapi/models/OperationResultMetadata.d.ts +37 -1
  311. package/dist/openapi/models/OperationResultMetadata.js +9 -1
  312. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  313. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  314. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  315. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  316. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  317. package/dist/openapi/models/OperationStatus.js +1 -1
  318. package/dist/openapi/models/OperationType.d.ts +1 -1
  319. package/dist/openapi/models/OperationType.js +1 -1
  320. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  321. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  322. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  323. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  324. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  325. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  326. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  327. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  328. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  329. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  330. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +1 -1
  331. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +1 -1
  332. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  333. package/dist/openapi/models/OptionSchema.js +1 -1
  334. package/dist/openapi/models/OutputProperties.d.ts +1 -1
  335. package/dist/openapi/models/OutputProperties.js +1 -1
  336. package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
  337. package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
  338. package/dist/openapi/models/PerClassAvailabilityEntry.d.ts +1 -1
  339. package/dist/openapi/models/PerClassAvailabilityEntry.js +1 -1
  340. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  341. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  342. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  343. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  344. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  345. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  346. package/dist/openapi/models/ProbePendingResponse.d.ts +7 -2
  347. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  348. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  349. package/dist/openapi/models/ProcessingClass.js +1 -1
  350. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  351. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  352. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  353. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  354. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  355. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  356. package/dist/openapi/models/ProcessingClassEntryInputUniformity.d.ts +1 -1
  357. package/dist/openapi/models/ProcessingClassEntryInputUniformity.js +1 -1
  358. package/dist/openapi/models/ProcessingClassEntryResolutionBands.d.ts +1 -1
  359. package/dist/openapi/models/ProcessingClassEntryResolutionBands.js +1 -1
  360. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  361. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  362. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  363. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  364. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  365. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  366. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  367. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  368. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  369. package/dist/openapi/models/ProcessingPlan.js +1 -1
  370. package/dist/openapi/models/ProcessingPlanJob.d.ts +11 -8
  371. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  372. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  373. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  374. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  375. package/dist/openapi/models/ReadinessResponse.js +1 -1
  376. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  377. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  378. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  379. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  380. package/dist/openapi/models/RequestAccountDeletion200Response.d.ts +1 -1
  381. package/dist/openapi/models/RequestAccountDeletion200Response.js +1 -1
  382. package/dist/openapi/models/RequestAccountDeletion200ResponseData.d.ts +1 -1
  383. package/dist/openapi/models/RequestAccountDeletion200ResponseData.js +1 -1
  384. package/dist/openapi/models/RequestAccountDeletionRequest.d.ts +1 -1
  385. package/dist/openapi/models/RequestAccountDeletionRequest.js +1 -1
  386. package/dist/openapi/models/ResendVerificationEmailRequest.d.ts +1 -1
  387. package/dist/openapi/models/ResendVerificationEmailRequest.js +1 -1
  388. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  389. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  390. package/dist/openapi/models/ResolutionBand.d.ts +1 -1
  391. package/dist/openapi/models/ResolutionBand.js +1 -1
  392. package/dist/openapi/models/ResolutionBandCeiling.d.ts +1 -1
  393. package/dist/openapi/models/ResolutionBandCeiling.js +1 -1
  394. package/dist/openapi/models/ResolutionBandCeilingConstraints.d.ts +1 -1
  395. package/dist/openapi/models/ResolutionBandCeilingConstraints.js +1 -1
  396. package/dist/openapi/models/ResolutionBandCeilingDerivation.d.ts +1 -1
  397. package/dist/openapi/models/ResolutionBandCeilingDerivation.js +1 -1
  398. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  399. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  400. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  401. package/dist/openapi/models/RetryResponse.js +1 -1
  402. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  403. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  404. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  405. package/dist/openapi/models/SseCompletionBase.js +1 -1
  406. package/dist/openapi/models/SseConnectionLimitResponse.d.ts +1 -1
  407. package/dist/openapi/models/SseConnectionLimitResponse.js +1 -1
  408. package/dist/openapi/models/SseEventType.d.ts +1 -1
  409. package/dist/openapi/models/SseEventType.js +1 -1
  410. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  411. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  412. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  413. package/dist/openapi/models/SseJobFailedData.js +1 -1
  414. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  415. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  416. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  417. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  418. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  419. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  420. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  421. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  422. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  423. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  424. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  425. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  426. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  427. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  428. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  429. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  430. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  431. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  432. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  433. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  434. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  435. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  436. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  437. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  438. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  439. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  440. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  441. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  442. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  443. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  444. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  445. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  446. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  447. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  448. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  449. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  450. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  451. package/dist/openapi/models/UploadFile403Response.js +1 -1
  452. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  453. package/dist/openapi/models/UploadFile422Response.js +1 -1
  454. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  455. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  456. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  457. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  458. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  459. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  460. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  461. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  462. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  463. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  464. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  465. package/dist/openapi/models/UploadResponse.js +1 -1
  466. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  467. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  468. package/dist/openapi/models/UploadSource.d.ts +1 -1
  469. package/dist/openapi/models/UploadSource.js +1 -1
  470. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  471. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  472. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  473. package/dist/openapi/models/UploadThresholds.js +1 -1
  474. package/dist/openapi/models/UserTier.d.ts +1 -1
  475. package/dist/openapi/models/UserTier.js +1 -1
  476. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  477. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  478. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  479. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  480. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  481. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  482. package/dist/openapi/models/WarningType.d.ts +1 -1
  483. package/dist/openapi/models/WarningType.js +1 -1
  484. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  485. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  486. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  487. package/dist/openapi/models/WebhookPayload.js +1 -1
  488. package/dist/openapi/models/WorkflowArchiveResponse.d.ts +1 -1
  489. package/dist/openapi/models/WorkflowArchiveResponse.js +1 -1
  490. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.d.ts +1 -1
  491. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.js +1 -1
  492. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  493. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  494. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  495. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  496. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  497. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  498. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  499. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  500. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  501. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  502. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  503. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  504. package/dist/openapi/models/WorkflowCreditSummary.d.ts +1 -1
  505. package/dist/openapi/models/WorkflowCreditSummary.js +1 -1
  506. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  507. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  508. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  509. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  510. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  511. package/dist/openapi/models/WorkflowEdge.js +1 -1
  512. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  513. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  514. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  515. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  516. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  517. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  518. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  519. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  520. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  521. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  522. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  523. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  524. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  525. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  526. package/dist/openapi/models/WorkflowRestoreResponse.d.ts +1 -1
  527. package/dist/openapi/models/WorkflowRestoreResponse.js +1 -1
  528. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.d.ts +1 -1
  529. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.js +1 -1
  530. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  531. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  532. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  533. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  534. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  535. package/dist/openapi/models/WorkflowSource.js +1 -1
  536. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  537. package/dist/openapi/models/WorkflowStatus.js +1 -1
  538. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  539. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  540. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  541. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  542. package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
  543. package/dist/openapi/models/WorkflowSummary.js +1 -1
  544. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  545. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  546. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  547. package/dist/openapi/models/WorkflowWarning.js +1 -1
  548. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  549. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  550. package/dist/openapi/models/index.d.ts +1 -0
  551. package/dist/openapi/models/index.js +1 -0
  552. package/dist/openapi/runtime.d.ts +1 -1
  553. package/dist/openapi/runtime.js +1 -1
  554. package/openapi/README.md +1 -1
  555. package/openapi/api.yaml +363 -38
  556. package/operation-capabilities/operation-capabilities.json +1 -2
  557. package/operations/schemas/compress.yaml +16 -11
  558. package/package.json +6 -4
  559. package/pricing-policy.yaml +82 -0
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.217.0
106
+ version: 2.219.0
107
107
  contact:
108
108
  name: API Support
109
109
 
@@ -1472,9 +1472,20 @@ paths:
1472
1472
  immutable ledger transaction is written in the same DB
1473
1473
  transaction as the workflow row; the response's
1474
1474
  `processing_plan` reflects the same estimate the reservation
1475
- was sized against. Refunds (e.g. on terminal failure that the
1476
- server policy refunds) are emitted as separate ledger rows
1477
- referencing the reservation via `reference_id`. The
1475
+ was sized against. **Callers pay only for successful results,
1476
+ per job** (owner decisions 610(4) and 635; the policy is data in
1477
+ `schemas/pricing-policy.yaml`). Each job that completes is charged;
1478
+ a job that fails after its retries is refunded, as is cancelled
1479
+ work (a workflow paused for credits has its reservation released at
1480
+ the pause and reserved again on resume), so a `partially_failed`
1481
+ workflow is charged for the jobs that completed. A long-form fan-out is settled
1482
+ at what it actually used and the difference is refunded. Uploading
1483
+ is free; an operation on a larger input costs more, through the
1484
+ size surcharge in that file. Refunds are separate ledger rows
1485
+ referencing the reservation via `reference_id`. ⚠️ **Contract-first:**
1486
+ until api ships the per-job change, the API refunds the WHOLE
1487
+ reservation when any job fails, so a `partially_failed` workflow is
1488
+ charged nothing (`pricing-policy.yaml` `charge.api_today`). The
1478
1489
  idempotency-key wire shape for retried reservation attempts
1479
1490
  is deferred per ADR-0001 §1.7 row 5.
1480
1491
  operationId: createWorkflow
@@ -1580,7 +1591,11 @@ paths:
1580
1591
  - type: compress
1581
1592
  responses:
1582
1593
  '201':
1583
- description: Workflow created
1594
+ description: |
1595
+ Workflow created. A long video `compress` that the API runs as an
1596
+ internal fan-out appears as ONE job with ONE `compress` operation
1597
+ whose id is the one `/status` and SSE report; see **LONG-FORM
1598
+ FAN-OUT: ONE PUBLIC ROW** on `GET /api/workflows/{id}/events`.
1584
1599
  content:
1585
1600
  application/json:
1586
1601
  schema:
@@ -1813,13 +1828,31 @@ paths:
1813
1828
  credential) requested an operation outside the anonymous
1814
1829
  allow-list. `operation` names the first such operation.
1815
1830
  A register-wall: signing in is the remedy, not upgrading.
1816
- - `anonymous_quota_exhausted`: an anonymous caller has used
1817
- its per-IP workflow allowance for the rolling 24 hours.
1818
- Also a register-wall.
1819
-
1820
- Both anonymous walls are checked BEFORE the workflow is
1821
- built, and neither consumes the caller's anonymous
1822
- allowance. An authenticated caller never receives either.
1831
+ - `anonymous_quota_exhausted`: this create would cost more
1832
+ credits than the caller's per-IP allowance has left in the
1833
+ rolling 24 hours (`schemas/anonymous-policy.yaml`
1834
+ `allowance`). Also a register-wall. Carries `allowance`,
1835
+ `remaining` and `cost`, and `Retry-After` unless the request
1836
+ costs more than the whole allowance.
1837
+ - `anonymous_limit_exceeded`: an anonymous caller's input
1838
+ exceeds a guest-only limit (today: video duration). Also a
1839
+ register-wall.
1840
+
1841
+ The anonymous walls are checked BEFORE the workflow is
1842
+ built, and none consumes the caller's anonymous
1843
+ allowance. An authenticated caller never receives any.
1844
+ headers:
1845
+ Retry-After:
1846
+ required: false
1847
+ description: |
1848
+ Present only on `anonymous_quota_exhausted`, and only when
1849
+ the request's `cost` fits the `allowance` at all: seconds
1850
+ until enough of the caller's rolling 24 h credit window
1851
+ frees up for it. Delta-seconds (RFC 9110). Signing in
1852
+ remains the immediate remedy.
1853
+ schema:
1854
+ type: integer
1855
+ minimum: 0
1823
1856
  content:
1824
1857
  application/json:
1825
1858
  schema:
@@ -1828,6 +1861,7 @@ paths:
1828
1861
  - $ref: '#/components/schemas/FeatureTierRestrictedResponse'
1829
1862
  - $ref: '#/components/schemas/AnonymousOperationNotAllowedResponse'
1830
1863
  - $ref: '#/components/schemas/AnonymousQuotaExhaustedResponse'
1864
+ - $ref: '#/components/schemas/AnonymousLimitExceededResponse'
1831
1865
  discriminator:
1832
1866
  propertyName: error_type
1833
1867
  mapping:
@@ -1835,6 +1869,7 @@ paths:
1835
1869
  feature_tier_restricted: '#/components/schemas/FeatureTierRestrictedResponse'
1836
1870
  anonymous_operation_not_allowed: '#/components/schemas/AnonymousOperationNotAllowedResponse'
1837
1871
  anonymous_quota_exhausted: '#/components/schemas/AnonymousQuotaExhaustedResponse'
1872
+ anonymous_limit_exceeded: '#/components/schemas/AnonymousLimitExceededResponse'
1838
1873
  examples:
1839
1874
  feature_tier_restricted:
1840
1875
  summary: Free tier referencing a Pro-tier operation
@@ -1866,6 +1901,21 @@ paths:
1866
1901
  message: "Sign up to keep compressing."
1867
1902
  message_key: "error.anonymous_quota_exhausted"
1868
1903
  locale: "en-GB"
1904
+ allowance: 30
1905
+ remaining: 2
1906
+ cost: 5
1907
+ anonymous_limit_exceeded:
1908
+ summary: Anonymous caller's video is longer than the guest cap
1909
+ value:
1910
+ success: false
1911
+ error: "ANONYMOUS_LIMIT_EXCEEDED"
1912
+ error_type: "anonymous_limit_exceeded"
1913
+ message: "Sign up to process videos longer than a minute."
1914
+ message_key: "error.anonymous_limit_exceeded"
1915
+ locale: "en-GB"
1916
+ limit: "video_duration_seconds"
1917
+ actual: 95
1918
+ maximum: 60
1869
1919
  '402':
1870
1920
  description: |
1871
1921
  Credit reservation failed (per ticket
@@ -2069,7 +2119,12 @@ paths:
2069
2119
  Optional, best-effort. Present only on the
2070
2120
  `probe_pending` branch — suggested seconds to wait
2071
2121
  before re-polling the upload probe and retrying the
2072
- workflow. Delta-seconds (RFC 9110), mirroring the 429
2122
+ workflow. **A guest (no credential) cannot poll the probe**
2123
+ (`POST /api/uploads/{id}/probe` requires sign-in): it retries
2124
+ the create itself. A `probe_pending` refusal does not count
2125
+ against the guest per-minute create limit and reserves no
2126
+ guest allowance credits (`schemas/anonymous-policy.yaml`
2127
+ `video`). Delta-seconds (RFC 9110), mirroring the 429
2073
2128
  login path's `Retry-After` convention. Absent until the
2074
2129
  server-side probe-staleness bound (API `e1Idv6UL`)
2075
2130
  lands; consumers MUST treat absence as "retry on your
@@ -2292,6 +2347,12 @@ paths:
2292
2347
  Retrieve the current status of a workflow with nested job and operation breakdown.
2293
2348
  Each operation includes its current progress and, when completed, its result
2294
2349
  (download URL, size, metrics).
2350
+
2351
+ A long video `compress` that the API runs as an internal fan-out
2352
+ (split, segments, concat) appears here as ONE job with ONE `compress`
2353
+ operation. See **LONG-FORM FAN-OUT: ONE PUBLIC ROW** on
2354
+ `GET /api/workflows/{id}/events`, which is normative for this
2355
+ endpoint too.
2295
2356
  operationId: getWorkflowStatus
2296
2357
  security: [{}, {bearerAuth: []}, {sessionAuth: []}] # optional (anon-OK; identity-scoped to workflow owner)
2297
2358
  x-identity-scoped: true # workflow-ownership-scoped per ADR-0016 D3
@@ -2538,6 +2599,15 @@ paths:
2538
2599
  schema:
2539
2600
  $ref: '#/components/schemas/ErrorEnvelope'
2540
2601
 
2602
+ # LONG-FORM FAN-OUT fold (section in the description below), read from
2603
+ # compression_api main 2a8dd8d5, paths under compression/src/Jobs/:
2604
+ # fold + public ids: Domain/Service/FanOutClusterFolder.php:22-47,218-239,332-354,452-545
2605
+ # ids: Domain/Service/FanOutNodeIdFactory.php:82-94,176-196
2606
+ # public op shape: Domain/ValueObject/FanOutPublicOperation.php:45,85-87
2607
+ # SSE frames: Application/Service/WorkflowSseService.php:333-350,563-671
2608
+ # create 201 row: Presentation/Http/Controller/WorkflowController.php:543-589,725-740
2609
+ # fallback path: Application/Service/LongFormFanOutBuilder.php:784-830
2610
+ # concat auto-retry: Infrastructure/Messaging/Handler/OperationResultHandler.php:712-730
2541
2611
  /api/workflows/{id}/events:
2542
2612
  get:
2543
2613
  summary: Stream workflow events (SSE)
@@ -2845,6 +2915,80 @@ paths:
2845
2915
  (the `id:` and `event:` lines) is transport-level and intentionally
2846
2916
  **not** schema-described.
2847
2917
 
2918
+ ### LONG-FORM FAN-OUT: ONE PUBLIC ROW
2919
+
2920
+ This section is normative for **every read surface**; the `/status`
2921
+ and create-201 descriptions point here rather than restate it.
2922
+
2923
+ The API may run a long video `compress` as an internal fan-out: one
2924
+ `split` job, then N parallel segment `compress` jobs, then a
2925
+ stream-copy concat (`merge`). It applies only to a root job holding a
2926
+ single `compress`, and only one such job per workflow. Today the API
2927
+ also requires that no other job depends on it; a client must not rely
2928
+ on that: if a fanned-out job has dependants, they read the joined
2929
+ output, exactly as they would read the job's output unsplit.
2930
+ **Clients never see the fan-out.** The API folds it into
2931
+ ONE public job with ONE public operation on the create 201,
2932
+ `GET /status` and this stream, and into ONE job row on
2933
+ `GET /api/workflows` (whose rows carry no operations; read the
2934
+ operation from `/status`). On `GET /downloads` the joined file is
2935
+ listed under the original `job_ref` with operation `compress`, when
2936
+ it is delivered at all: only once it is complete, only if the
2937
+ delivery selection includes that job, and only while retained. The
2938
+ internal jobs and operations do not appear on any surface, and this
2939
+ stream sends no frame for them.
2940
+
2941
+ | field | value |
2942
+ |---|---|
2943
+ | `job_ref` / `ref` | the client's **original** job ref, on every surface and every path below |
2944
+ | `job_id` | one server-chosen id for the public job, the same before and after the split expands |
2945
+ | `operation_id` / `operations[0].id` | one server-chosen id, the same on the 201, `/status` and this stream, before and after the split expands (exceptions below) |
2946
+ | `type` | `compress` (never `split` or `merge`), including the output-name marker |
2947
+ | `processing_class` (`/status`, `processing_plan`) | `long_form` |
2948
+ | `depends_on` | `[]` |
2949
+ | outputs | exactly one: the joined file |
2950
+
2951
+ **On this stream** the public operation gets zero or more
2952
+ `operation.progress` frames, then ONE `operation.completed` or ONE
2953
+ `operation.failed`, then ONE `job.completed` or `job.failed` for the
2954
+ public job. A failure can arrive with no progress frame before it,
2955
+ so the terminal frame may be the first one. These frames
2956
+ carry **no `id:` line**. `operation.completed` carries no
2957
+ `result_metadata`, and its `result` stays optional as on every
2958
+ `SseOperationCompletedData`: when it is absent, read the output from
2959
+ `GET /downloads`. `job.failed` can arrive in a later frame batch
2960
+ than `operation.failed`.
2961
+
2962
+ **Progress** is weighted by phase: split 10, segments 80 (shared
2963
+ equally), concat 10. Until the split finishes and the segments exist,
2964
+ it **stays at or below 10**: a long bar at 10% is the split running,
2965
+ not a stall. On this stream it never decreases within one connection.
2966
+ `GET /status` reads a snapshot per poll and can dip briefly between
2967
+ polls. Clients that must not show a backwards bar hold their own
2968
+ maximum per `job_ref`.
2969
+
2970
+ **Failure.** Any failed segment fails the whole public operation. The
2971
+ reported `error_code` is the causing failure; a `never_started`
2972
+ collateral code is reported only when there is no causing one.
2973
+
2974
+ **The operation id is NOT stable in two cases. Key the row on
2975
+ `job_ref`, which is.**
2976
+ 1. **Unsplittable input.** When the split finds the file cannot be
2977
+ split, the API runs one plain long-form `compress` instead. It has
2978
+ a **new** `job_id` and `operation_id`, under the same `job_ref`.
2979
+ The first id gets no terminal frame. Its progress starts again
2980
+ from 0, so a bar keyed on `job_ref` goes back from 10 to 0 once.
2981
+ 2. **Automatic retry of the concat step.** The retry is a new
2982
+ operation with a new id, and the public row then shows that id.
2983
+ User retries (`POST /api/operations/{id}/retry`) are refused for
2984
+ the internal operations.
2985
+
2986
+ **Downloads.** Before the split finishes the public job's
2987
+ `/downloads` row lists no files; while segments run it can be
2988
+ absent; it lists the one output once the concat completes. On the
2989
+ unsplittable path there is no concat: the fallback `compress` job
2990
+ is an ordinary row and lists its output when it completes.
2991
+
2848
2992
  ### AUTH ON THE STREAM HOST: the CREDENTIAL decides, not the caller
2849
2993
 
2850
2994
  **Two axes, and conflating them is what made two earlier versions of this
@@ -6193,12 +6337,12 @@ paths:
6193
6337
  value:
6194
6338
  success: true
6195
6339
  data:
6196
- monthly_balance: 1200
6340
+ monthly_balance: 800
6197
6341
  purchased_balance: 5000
6198
- overdraft_limit: 500
6342
+ overdraft_limit: 200
6199
6343
  overdraft_debt: 0
6200
- available_credits: 6700
6201
- monthly_allowance: 2000
6344
+ available_credits: 6000
6345
+ monthly_allowance: 1000
6202
6346
  tier: pro
6203
6347
  pro_overdrafted:
6204
6348
  summary: Pro tier in overdraft (monthly + purchased exhausted)
@@ -6207,10 +6351,10 @@ paths:
6207
6351
  data:
6208
6352
  monthly_balance: 0
6209
6353
  purchased_balance: 0
6210
- overdraft_limit: 500
6211
- overdraft_debt: 350
6212
- available_credits: 150
6213
- monthly_allowance: 2000
6354
+ overdraft_limit: 200
6355
+ overdraft_debt: 150
6356
+ available_credits: 50
6357
+ monthly_allowance: 1000
6214
6358
  tier: pro
6215
6359
  '401':
6216
6360
  description: Authentication required.
@@ -8251,7 +8395,10 @@ components:
8251
8395
  overdraft_debt:
8252
8396
  type: integer
8253
8397
  minimum: 0
8254
- description: Credits currently owed against the overdraft pool.
8398
+ description: >-
8399
+ Credits currently owed against the overdraft pool. Repaid one
8400
+ credit for one credit from the next monthly grant, on every
8401
+ plan (`schemas/pricing-policy.yaml` `overdraft.repayment_ratio`).
8255
8402
  available_credits:
8256
8403
  type: integer
8257
8404
  description: |
@@ -9773,19 +9920,36 @@ components:
9773
9920
  AnonymousQuotaExhaustedResponse:
9774
9921
  description: |
9775
9922
  403 from `POST /api/workflows` when an ANONYMOUS caller (no
9776
- credential) has used its per-IP workflow allowance for the
9777
- rolling 24 hours. A register-wall, distinct from the generic
9778
- `429`: the remedy is signing in, not waiting.
9923
+ credential) asks for a workflow that would cost more CREDITS than
9924
+ its per-IP allowance has left in the rolling 24 hours
9925
+ (`schemas/anonymous-policy.yaml` `allowance`, priced with the same
9926
+ operation weights as a signed-in caller). The request is refused
9927
+ whole; nothing runs. A register-wall, distinct from the generic
9928
+ `429`: the remedy is signing in.
9929
+
9930
+ The recovery figures are REQUIRED fields of this envelope, not
9931
+ localisation parameters (`ErrorEnvelope.message_params` excludes
9932
+ cost numbers): `allowance`, `remaining` and `cost`, in credits.
9933
+
9934
+ Two cases, told apart by `cost` against `allowance`:
9935
+ - `cost <= allowance`: waiting helps. The response carries
9936
+ `Retry-After`, the seconds until enough of the window frees up.
9937
+ - `cost > allowance`: the request can NEVER fit a guest window
9938
+ (the body is not bounded to the allowance). No `Retry-After`;
9939
+ only signing in, or a smaller request, helps.
9779
9940
 
9780
9941
  Mirrors `compression_api`'s `WorkflowController` register-wall
9781
- (`JobsErrorCode::AnonymousQuotaExhausted`). The allowance is only
9782
- consumed by a workflow that is actually created, so a refused
9783
- request does not use it up.
9942
+ (`JobsErrorCode::AnonymousQuotaExhausted`). Credits are charged
9943
+ only by a workflow that is actually created, and released on
9944
+ failure, so a refused request does not use any up.
9784
9945
  allOf:
9785
9946
  - $ref: '#/components/schemas/ErrorEnvelope'
9786
9947
  - type: object
9787
9948
  required:
9788
9949
  - error_type
9950
+ - allowance
9951
+ - remaining
9952
+ - cost
9789
9953
  properties:
9790
9954
  error:
9791
9955
  enum:
@@ -9795,6 +9959,64 @@ components:
9795
9959
  type: string
9796
9960
  enum:
9797
9961
  - anonymous_quota_exhausted
9962
+ allowance:
9963
+ type: integer
9964
+ minimum: 0
9965
+ description: Credits per rolling 24 h for this IP (the policy value).
9966
+ remaining:
9967
+ type: integer
9968
+ minimum: 0
9969
+ description: Credits left in the window when the request was refused.
9970
+ cost:
9971
+ type: integer
9972
+ minimum: 1
9973
+ description: |
9974
+ What this request would have charged. When it exceeds
9975
+ `allowance`, the request can never fit and `Retry-After`
9976
+ is absent.
9977
+ AnonymousLimitExceededResponse:
9978
+ description: |
9979
+ 403 from `POST /api/workflows` when an ANONYMOUS caller's input
9980
+ exceeds a guest-only limit declared in
9981
+ `schemas/anonymous-policy.yaml`. Today the one such limit is the
9982
+ video duration cap (`video.max_duration_seconds`), measured on the
9983
+ upload probe's duration; the create waits for the probe first. A
9984
+ register-wall: signing in lifts the guest limit (the signed-in
9985
+ caller's ordinary class ceilings then apply). Not a
9986
+ processing-class refusal: no class or tier ceiling is involved.
9987
+ allOf:
9988
+ - $ref: '#/components/schemas/ErrorEnvelope'
9989
+ - type: object
9990
+ required:
9991
+ - error_type
9992
+ - limit
9993
+ - actual
9994
+ - maximum
9995
+ properties:
9996
+ error:
9997
+ enum:
9998
+ - ANONYMOUS_LIMIT_EXCEEDED
9999
+ error_type:
10000
+ description: Discriminator for the 403 oneOf. Always `anonymous_limit_exceeded` for this envelope.
10001
+ type: string
10002
+ enum:
10003
+ - anonymous_limit_exceeded
10004
+ limit:
10005
+ description: |
10006
+ Which guest limit was exceeded. OPEN: a consumer that does
10007
+ not know a value shows the envelope's localised message.
10008
+ type: string
10009
+ x-enum-openness: open
10010
+ enum:
10011
+ - video_duration_seconds
10012
+ actual:
10013
+ type: integer
10014
+ minimum: 0
10015
+ description: The input's value, in the unit `limit` names (seconds, rounded up).
10016
+ maximum:
10017
+ type: integer
10018
+ minimum: 0
10019
+ description: The guest limit, from `schemas/anonymous-policy.yaml`.
9798
10020
  FeatureViolation:
9799
10021
  type: object
9800
10022
  description: |
@@ -9914,7 +10136,12 @@ components:
9914
10136
  (`ok` → re-`POST /api/workflows` the same request; `corrupt` /
9915
10137
  `unsupported_codec` → surface the probe error, do not retry).
9916
10138
  The `Retry-After` response header (when present) carries the
9917
- suggested delay in seconds before the next poll/retry.
10139
+ suggested delay in seconds before the next poll/retry. **A guest
10140
+ (no credential) cannot poll**: the probe endpoint requires
10141
+ sign-in, so a guest re-`POST`s the same create on `Retry-After`
10142
+ or its own backoff; the refusal does not count against its
10143
+ per-minute create limit or allowance
10144
+ (`schemas/anonymous-policy.yaml` `video`).
9918
10145
 
9919
10146
  Delivered alongside `ValidationErrorEnvelope`,
9920
10147
  `FeatureNotAvailableResponse`, and
@@ -12372,13 +12599,16 @@ components:
12372
12599
  dropped_options:
12373
12600
  type: array
12374
12601
  description: |
12375
- Options the SERVER supplied on the caller's behalf and then
12376
- REMOVED, because the resolved execution path cannot honour
12377
- them. **Never contains a value the caller sent explicitly** —
12378
- an explicit option the path cannot honour is refused with
12379
- `422 feature_not_available`, not silently dropped. That
12380
- split is the whole rule: a caller who asked for nothing is
12381
- not punished for our default; a caller who asked for
12602
+ Options holding their DEFAULT (supplied by the server, or
12603
+ sent by the client equal to the schema default, which reads as
12604
+ defaulted — `schemas/FORMAT.md` "Container-conditional
12605
+ defaults") that were then REMOVED or SUBSTITUTED, because the
12606
+ resolved execution path or output container cannot honour
12607
+ them. **Never contains a caller's choice** — a value that
12608
+ differs from the default and cannot be honoured is refused
12609
+ (`422 feature_not_available` / `invalid_options`), not
12610
+ dropped. That split is the whole rule: a caller who asked for
12611
+ nothing is not punished for our default; a caller who asked for
12382
12612
  something is told.
12383
12613
 
12384
12614
  **Why this field exists at all.** Dropping a defaulted
@@ -12400,7 +12630,8 @@ components:
12400
12630
  DroppedOption:
12401
12631
  type: object
12402
12632
  description: |
12403
- One server-supplied option removed from a job before dispatch.
12633
+ One defaulted option (server-supplied, or sent equal to its
12634
+ schema default) removed or substituted before dispatch.
12404
12635
  **Names the THING, the WHY and the PATH** — the three parts a
12405
12636
  caller needs to act, and the three a single interpolated string
12406
12637
  would fuse into something unparseable.
@@ -12447,12 +12678,29 @@ components:
12447
12678
  caller on a guessed class is the same error as asserting
12448
12679
  a measurement never taken**, so an unmeasured basis
12449
12680
  degrades to a drop and never to a 422.
12681
+ - `container_incompatible_default` — the option held its
12682
+ schema default (omitted, or sent equal to the default),
12683
+ and the output container cannot carry that value, so the
12684
+ container's own default was applied instead; the applied
12685
+ value is in `resolved_value` (e.g. `codec` `h264` on a
12686
+ WebM output → `vp9`; `audio_codec` `copy` of AAC into
12687
+ WebM → `opus`). See `schemas/FORMAT.md`
12688
+ "Container-conditional defaults". Contract-first (api
12689
+ `PSJ1vBC7`).
12450
12690
 
12451
12691
  The class token is deliberately NOT interpolated into this
12452
12692
  string: the reason and the path are separate fields because
12453
12693
  a fused `not_available_on_<class>` is unparseable and
12454
12694
  duplicates `processing_class`.
12455
12695
  example: unavailable_on_processing_class
12696
+ resolved_value:
12697
+ type: string
12698
+ description: |
12699
+ OPTIONAL. The value the server applied in place of the
12700
+ dropped one, when it substituted a value rather than
12701
+ removing the option (`reason: container_incompatible_default`).
12702
+ Absent for a plain drop.
12703
+ example: vp9
12456
12704
 
12457
12705
  ProcessingPlan:
12458
12706
  type: object
@@ -13958,6 +14206,43 @@ components:
13958
14206
  `input_filename`. Ticket [`j2s6T2qf`](https://trello.com/c/j2s6T2qf)
13959
14207
  (FE before→after size, workflow-view launch ask).
13960
14208
  example: 491520
14209
+ input_uploaded_at:
14210
+ type: string
14211
+ format: date-time
14212
+ description: |
14213
+ OPTIONAL. When the server finished receiving the job's input
14214
+ upload: a single-shot upload's accept, or a multipart
14215
+ `complete`. For a job with several uploaded inputs (e.g. a
14216
+ merge), the LATEST of them, since the job cannot start before
14217
+ its last input arrives; inputs that are not uploads (another
14218
+ job's output, an import) are ignored. Absent when the job has no
14219
+ uploaded input, and until the API records it. Card
14220
+ [`6EOlMAz4`](https://trello.com/c/6EOlMAz4) (e2e performance
14221
+ baseline, owner decisions 630/635): with `started_at` and
14222
+ `completed_at` it separates upload, queue and processing time on
14223
+ the server clock. Contract-first: api populates it in a
14224
+ follow-up; a client must treat absence as "not recorded".
14225
+ example: "2026-09-29T21:00:00Z"
14226
+ started_at:
14227
+ type: string
14228
+ format: date-time
14229
+ description: |
14230
+ OPTIONAL. When the job's first operation started processing (the
14231
+ first progress report from a worker). Absent while the job is
14232
+ queued, and for a job that never started. Server clock. See
14233
+ `input_uploaded_at`.
14234
+ example: "2026-09-29T21:00:04Z"
14235
+ completed_at:
14236
+ type: string
14237
+ format: date-time
14238
+ description: |
14239
+ OPTIONAL. When the job reached a terminal `JobStatus`
14240
+ (`completed` or `failed`), on the server clock. Absent while
14241
+ the job is not terminal.
14242
+ `completed_at - started_at` is the job's EXECUTION SPAN: for a
14243
+ chain of operations it includes any wait between them, so it is
14244
+ not pure processing time. See `input_uploaded_at`.
14245
+ example: "2026-09-29T21:00:19Z"
13961
14246
  processing_class:
13962
14247
  $ref: '#/components/schemas/ProcessingClass'
13963
14248
  description: |
@@ -14067,7 +14352,9 @@ components:
14067
14352
  `invalid_format` (input type unsupported),
14068
14353
  `format_mismatch` (declared MIME ≠ content),
14069
14354
  `decode_failed` (input unreadable/corrupt),
14070
- `output_too_large` (output exceeded the size limit),
14355
+ `output_too_large` (output exceeded the size limit; NOT for a
14356
+ same-format `compress`, which returns the original with
14357
+ `already_optimal` instead — owner decision 645(4)),
14071
14358
  `missing_source` (source not found — fail-fast),
14072
14359
  `invalid_key` (storage key invalid),
14073
14360
  `processing_failed` (non-specific processing failure),
@@ -14166,7 +14453,35 @@ components:
14166
14453
  "already optimised", not as "same size". On an ordinary result it
14167
14454
  is absent or `false`; treat the two the same. Projected by the API from the wire
14168
14455
  `OperationMetrics.already_optimal` (ticket `roNRMilt`).
14456
+ **Charged nothing** (owner decision 645(4),
14457
+ `schemas/pricing-policy.yaml` `charge.not_charged`): the
14458
+ operation's cost is refunded; other operations in the job are
14459
+ charged as usual. Applies to a completed `compress` on the
14460
+ resolved `same_format` route (`output_format` original, absent, or
14461
+ equal to the input's format; not the format-change facade, where
14462
+ the original is not what was asked for). A same-format compress
14463
+ that cannot shrink the file returns this, never `output_too_large`.
14464
+ ⚠️ **Today this holds for SHORT-FORM compress only.** Long-form
14465
+ compress still fails `output_too_large` until lambdas ships its
14466
+ long-form copy path; do not promise "already optimised" or "no
14467
+ charge" for a long-form file before then. Contract-first: until api
14468
+ ships, the operation is charged (`charge.not_charged_api_today`).
14469
+ `already_optimal_kind` says which kind of "already optimised" it
14470
+ was.
14169
14471
  example: true
14472
+ already_optimal_kind:
14473
+ type: string
14474
+ enum: [not_smaller]
14475
+ description: |
14476
+ OPTIONAL, only with `already_optimal: true`: WHY the original was
14477
+ returned. `not_smaller` — the file was compressed and the result
14478
+ was not smaller, so there is no quality trade-off to explain. It
14479
+ is the only kind any worker produces today (no production path
14480
+ declines to encode an efficient source). Absent, or a value you do
14481
+ not know: show neutral "already optimised" copy.
14482
+ Contract-first (card `cDZuuyg8`): projected from the wire
14483
+ `OperationMetrics.already_optimal_kind` once workers emit it.
14484
+ example: not_smaller
14170
14485
  estimated_saving_pct:
14171
14486
  type: number
14172
14487
  minimum: 0
@@ -17057,6 +17372,16 @@ components:
17057
17372
  app:
17058
17373
  type: boolean
17059
17374
  description: Application is running
17375
+ build:
17376
+ type: string
17377
+ description: |
17378
+ OPTIONAL. The release the running image was built as (the API's
17379
+ `APP_VERSION`, e.g. `1.15.2-rc.1`; `dev` for a local build;
17380
+ `unknown` when unset). Unauthenticated on purpose: a timing run
17381
+ reads it before and after, so a code-only deploy in the middle
17382
+ of the run is detectable (card `6EOlMAz4`, e2e performance
17383
+ baseline). Opaque: compare for equality, do not parse.
17384
+ example: "1.15.2-rc.1"
17060
17385
 
17061
17386
  ReadinessResponse:
17062
17387
  type: object
@@ -253,7 +253,6 @@
253
253
  {
254
254
  "field": "compress.codec",
255
255
  "in": [
256
- "h264",
257
256
  "h265"
258
257
  ]
259
258
  }
@@ -860,5 +859,5 @@
860
859
  "isAnimated": "maybe"
861
860
  }
862
861
  },
863
- "schema_version": "2.217.0"
862
+ "schema_version": "2.219.0"
864
863
  }
@@ -1217,9 +1217,10 @@ operation:
1217
1217
  Output container. original = keep the input container (default, same-format
1218
1218
  compression). Other values change the container as part of the same job, keeping
1219
1219
  the size cap. When set, the RESOLVED target container determines the valid
1220
- codec/audio_codec/faststart sets — an absent/default codec resolves to a
1221
- container-valid one (e.g. webm -> vp9) and is never rejected; only a
1222
- caller-EXPLICIT incompatible value is rejected.
1220
+ codec/audio_codec/faststart sets — an absent or default-equal value (sent equal
1221
+ to its default counts as the default) resolves to a container-valid one (e.g.
1222
+ webm -> vp9), is never rejected, and is reported in dropped_options; only a
1223
+ NON-default incompatible value is rejected.
1223
1224
  codec:
1224
1225
  type: enum
1225
1226
  values: [h264, h265, vp9, av1]
@@ -1241,8 +1242,10 @@ operation:
1241
1242
  the input container): for a container that cannot carry it (e.g. WebM, which
1242
1243
  carries VP8/VP9/AV1) the server resolves a container-valid codec (WebM -> vp9).
1243
1244
  A DEFAULT value is never rejected — including an explicit `output_format: webm`
1244
- left at the default `h264` (resolves to vp9, not rejected); only a
1245
- caller-EXPLICIT incompatible codec is rejected.
1245
+ left at the default `h264` (resolves to vp9, not rejected). A value equal to the
1246
+ default counts as the default even when sent, and the substitution is reported
1247
+ in dropped_options. Only a NON-default codec the container cannot carry is
1248
+ rejected (e.g. h265 on WebM).
1246
1249
  encoding_mode:
1247
1250
  type: enum
1248
1251
  values: [crf, target_size]
@@ -1395,9 +1398,9 @@ operation:
1395
1398
  Move the MP4/MOV moov atom to the front so the file starts playing before it is
1396
1399
  fully downloaded (progressive web playback). MP4/MOV only. CONTAINER-CONDITIONAL
1397
1400
  against the RESOLVED output container (the explicit `output_format` if set, else
1398
- the input): the default (true) is silently inapplicable for a container with no
1399
- moov atom (e.g. WebM) — that is NOT a rejection. Only a caller-EXPLICIT
1400
- faststart:true on such a container is rejected.
1401
+ the input): on a container with no moov atom (e.g. WebM) the default (true),
1402
+ omitted or sent, is dropped and reported in dropped_options — never a rejection.
1403
+ false there asks for nothing and is accepted.
1401
1404
  audio_codec:
1402
1405
  type: enum
1403
1406
  values: [aac, opus, vorbis, copy]
@@ -1422,9 +1425,11 @@ operation:
1422
1425
  the container, an absent/default audio_codec resolves to a container-valid codec
1423
1426
  via the facade (e.g. webm -> opus), NOT a blind copy of an incompatible stream —
1424
1427
  a DEFAULT is never rejected (the exact per-container resolution, incl. ogg
1425
- vorbis-vs-opus, is an output_format stable-flip prerequisite). A caller-EXPLICIT
1426
- codec the resolved container cannot carry (e.g. aac on a webm target) is
1427
- rejected.
1428
+ vorbis-vs-opus, is an output_format stable-flip prerequisite). `copy` sent
1429
+ explicitly counts as the default: if the source audio cannot be copied into the
1430
+ target container it is re-encoded to the container default (webm -> opus) and
1431
+ reported in dropped_options. A NON-default codec the resolved container cannot
1432
+ carry (e.g. aac on a webm target) is rejected.
1428
1433
  audio_bitrate:
1429
1434
  type: enum
1430
1435
  value_type: integer