@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/README.md CHANGED
@@ -5,8 +5,8 @@
5
5
 
6
6
  | | |
7
7
  |---|---|
8
- | Package version | `0.82.0` |
9
- | Generated from spec | **`v2.217.0`** |
8
+ | Package version | `0.84.0` |
9
+ | Generated from spec | **`v2.219.0`** |
10
10
 
11
11
  ## Two version lines, and they are not comparable
12
12
 
@@ -1214,5 +1214,5 @@
1214
1214
  }
1215
1215
  }
1216
1216
  },
1217
- "schema_version": "2.217.0"
1217
+ "schema_version": "2.219.0"
1218
1218
  }
@@ -260,5 +260,5 @@
260
260
  "source_op": "compress"
261
261
  }
262
262
  },
263
- "schema_version": "2.217.0"
263
+ "schema_version": "2.219.0"
264
264
  }
@@ -1,6 +1,14 @@
1
1
  # Anonymous (account-less) policy — the ONE declaration of what a guest may do
2
- # (ticket UQ7zROTr; sdks u6Q9oxuI follow-up; owner decision 610(4), 2026-09-26:
3
- # guests stay images-only with the daily limit).
2
+ # (ticket UQ7zROTr; sdks u6Q9oxuI follow-up).
3
+ #
4
+ # 2.1.0 (card gpYKURQd, hub decision 638(a)): `video.probe_pending_recovery`
5
+ # and `video.probe_pending_counts_against_limits`, additive.
6
+ #
7
+ # 2.0.0 (card 43dDKeEh; owner decision + hub ruling 2026-09-26 21:26): guests
8
+ # move from "30 image jobs per day" to a CREDIT allowance, for all file types,
9
+ # with video capped at 60 s. Shape agreed with api (msg cc5bedfe). BREAKING for
10
+ # readers of 1.0.0: `upload.mime_prefixes` and `quota.workflow_creates_per_ip_per_24h`
11
+ # are gone; read `upload.media` and `allowance` instead.
4
12
  #
5
13
  # Read by: the SDKs (gisl.anonymous() / Gisl::anonymous() pin their surface to
6
14
  # it), api (pins its constants to it: AnonymousOperationPolicy,
@@ -8,34 +16,63 @@
8
16
  # tests/test_anonymous_policy.py (holds the relations below).
9
17
  #
10
18
  # The refusals are declared in openapi `POST /api/workflows` 403
11
- # (AnonymousOperationNotAllowedResponse / AnonymousQuotaExhaustedResponse);
12
- # this file declares the POLICY that produces them, so a client can predict
13
- # the 403 instead of learning it.
19
+ # (AnonymousOperationNotAllowedResponse / AnonymousQuotaExhaustedResponse /
20
+ # AnonymousLimitExceededResponse); this file declares the
21
+ # POLICY that produces them, so a client can predict the refusal instead of
22
+ # learning it.
14
23
 
15
- schema_version: "1.0.0"
24
+ schema_version: "2.1.0"
16
25
 
17
26
  # Operations an anonymous caller may request at workflow-create. Anything else
18
27
  # answers 403 `anonymous_operation_not_allowed`.
19
28
  operations_allowed: [compress, convert, thumbnail]
20
29
 
21
30
  upload:
22
- # Only images: any `image/*` MIME.
23
- mime_prefixes: ["image/"]
31
+ # ALL file types: every MIME the upload endpoints accept (was images only).
32
+ media: all
24
33
  # THE guest per-file cap: 10,000,000 B, the single-shot endpoint's own maximum
25
34
  # (openapi UploadThresholds.single_shot_max_bytes). Guests upload single-shot
26
- # only, so a larger cap would be unreachable. api lowers its
27
- # AnonymousUploadPolicy from 10 MiB to this and pins to this file (xOaNkDll,
28
- # 2026-09-26; owner decision 610(4): "images only, 10 MB").
35
+ # only, so a larger cap would be unreachable (xOaNkDll).
29
36
  max_file_bytes: 10000000
30
37
  # Multipart initiate/status/presign/keepalive require authentication (api
31
38
  # security.yaml + a defensive 401 in initiate); complete is unreachable
32
39
  # without an initiated session.
33
40
  multipart_allowed: false
34
41
 
35
- quota:
36
- # Rolling 24 h, per client IP. The 31st create answers 403 `anonymous_quota_exhausted`.
37
- workflow_creates_per_ip_per_24h: 30
38
- # Per-minute rate limits (429 when exceeded).
39
- per_minute:
40
- upload: 5
41
- workflow_create: 2
42
+ video:
43
+ # Measured on the UPLOAD PROBE's duration. A guest video create waits for the
44
+ # probe (the existing probe-pending gate), then is refused above this with
45
+ # 403 `anonymous_limit_exceeded` (limit `video_duration_seconds`).
46
+ max_duration_seconds: 60
47
+ exceeded_error_type: anonymous_limit_exceeded
48
+ # Until the probe lands, a guest video create is refused 422 `probe_pending`
49
+ # (hub decision 638(a), contract-first for api #795). A guest RETRIES THE
50
+ # CREATE, on `Retry-After` when sent, else its own backoff: the probe poll
51
+ # endpoint (POST /api/uploads/{id}/probe) requires sign-in, so a guest
52
+ # cannot poll it. That refusal does not count against `per_minute.
53
+ # workflow_create` and reserves no `allowance` credits.
54
+ probe_pending_recovery: retry_create
55
+ probe_pending_counts_against_limits: false
56
+
57
+ allowance:
58
+ # Credits per client IP over a ROLLING 24 h (a sliding window, so there is no
59
+ # calendar-day or timezone edge). Identity is the IP alone: a funnel nudge,
60
+ # not a security boundary (NAT shares it).
61
+ credits: 30
62
+ window: rolling_24h
63
+ identity: ip
64
+ # Priced with the same per-operation weights as a signed-in caller
65
+ # (`operation_weights.yaml`), charged at workflow create against the IP's
66
+ # rolling ledger, and released on failure as for a signed-in reservation.
67
+ priced_by: operation_weights
68
+ # A create whose cost would cross the allowance is refused WHOLE (no partial
69
+ # run) with 403 `anonymous_quota_exhausted`, carrying `allowance`,
70
+ # `remaining` and `cost`. `Retry-After` (seconds until enough of the window
71
+ # frees up) is sent only when `cost <= credits`; a request costing more than
72
+ # the whole allowance can never fit and gets none.
73
+ exhausted_error_type: anonymous_quota_exhausted
74
+
75
+ # Per-minute rate limits (429 when exceeded), unchanged from 1.0.0.
76
+ per_minute:
77
+ upload: 5
78
+ workflow_create: 2
@@ -9,7 +9,7 @@
9
9
  - **Spec:** `compression_contracts/asyncapi/events.yaml` (AsyncAPI 3.0)
10
10
  - **Generator:** [asyncapi/cli](https://www.asyncapi.com/tools/cli) 6.0.0
11
11
  (Docker image: `asyncapi/cli:6.0.0`)
12
- - **Files:** 30
12
+ - **Files:** 31
13
13
 
14
14
  ## Contents
15
15
 
@@ -1570,10 +1570,13 @@ channels:
1570
1570
  here directly (NOT via SNS); a terraform-owned launcher reads the spec from
1571
1571
  S3 (`pointer`) and runs a Fargate task. `max_receive_count = 2` (ADR-0007).
1572
1572
 
1573
- On this queue the publisher always sets `operation_type: merge` (shared
1574
- `LongFormJobMessage` enum permits `{compress, merge}`; per-queue
1575
- `operation_type` is a publisher invariant documented here, not a separate
1576
- schema).
1573
+ On this queue the publisher always sets `operation_type: merge` (the
1574
+ shared `LongFormJobMessage` enum permits `{compress, merge, split}`;
1575
+ per-queue `operation_type` is a publisher invariant documented here, not a
1576
+ separate schema). `processing_class` is `long_form` for a re-encode merge
1577
+ and `long_form_concat` for a stream-copy join (a fan-out rejoin, or a
1578
+ user merge with `re_encode_mode: never`); the launcher routes the second
1579
+ to its stream-copy task.
1577
1580
  bindings:
1578
1581
  sqs:
1579
1582
  queue:
@@ -2459,8 +2462,10 @@ operations:
2459
2462
  bindingVersion: '0.2.0'
2460
2463
  summary: Publish a long-form merge re-encode claim-check.
2461
2464
  description: |
2462
- As `publishLongFormCompressVideo`, for `operation_type = merge`
2463
- (`merge.video.long_form_re_encode`). Direct-to-SQS claim-check; no SNS.
2465
+ As `publishLongFormCompressVideo`, for `operation_type = merge`.
2466
+ `processing_class` selects the task: `long_form` for a re-encode merge
2467
+ (`merge.video.long_form_re_encode`), `long_form_concat` for a stream-copy
2468
+ join. Direct-to-SQS claim-check; no SNS.
2464
2469
  messages:
2465
2470
  - $ref: '#/channels/longformMergeVideoReencode/messages/longFormJob'
2466
2471
 
@@ -2517,9 +2522,10 @@ operations:
2517
2522
  bindingVersion: '0.2.0'
2518
2523
  summary: Consume a long-form merge re-encode claim-check.
2519
2524
  description: |
2520
- As `consumeLongFormCompressVideo`, for `operation_type = merge`
2521
- (`merge.video.long_form_re_encode`). The launcher resolves the spec
2522
- from S3 via `pointer` and runs the merge-re-encode Fargate task.
2525
+ As `consumeLongFormCompressVideo`, for `operation_type = merge`. The
2526
+ launcher resolves the spec from S3 via `pointer` and forks on
2527
+ `processing_class`: `long_form` runs the merge-re-encode Fargate task,
2528
+ `long_form_concat` the small stream-copy concat task.
2523
2529
  messages:
2524
2530
  - $ref: '#/channels/longformMergeVideoReencode/messages/longFormJob'
2525
2531
 
@@ -2920,6 +2926,14 @@ components:
2920
2926
  operation_id: "018f9c42-5d6b-7481-b3df-9fd0a0a5e201"
2921
2927
  operation_type: "merge"
2922
2928
  processing_class: "long_form"
2929
+ - name: Long-form stream-copy join
2930
+ summary: merge.video.long_form_concat claim-check (fan-out rejoin, or re_encode_mode never)
2931
+ payload:
2932
+ pointer: "job-specs/018f9c42-5d6b-7481-b3df-9fd0a0a5e114.json"
2933
+ job_id: "018f9c42-5d6b-7481-b3df-9fd0a0a5e114"
2934
+ operation_id: "018f9c42-5d6b-7481-b3df-9fd0a0a5e202"
2935
+ operation_type: "merge"
2936
+ processing_class: "long_form_concat"
2923
2937
 
2924
2938
  # ============================================
2925
2939
  # OPERATION PROGRESS MESSAGE
@@ -3915,6 +3929,23 @@ components:
3915
3929
  consumers validating against this schema MUST tolerate additional or
3916
3930
  differently-shaped redriven messages. The producer contract this schema
3917
3931
  pins is the **required** set.
3932
+
3933
+ **`processing_class: long_form_concat` requires `operation_type:
3934
+ merge`** (the `if`/`then` below): the launcher diverts only that pair.
3935
+ # Deployed launcher verified 2026-09-26 (code read back from AWS, staging
3936
+ # and prod): handler.py `elif operation_type == "merge" and
3937
+ # processing_class == "long_form_concat"` -> concat_streamcopy taskdef
3938
+ # (2 vCPU / 4 GB, ACTIVE in both accounts).
3939
+ if:
3940
+ properties:
3941
+ processing_class:
3942
+ const: long_form_concat
3943
+ required:
3944
+ - processing_class
3945
+ then:
3946
+ properties:
3947
+ operation_type:
3948
+ const: merge
3918
3949
  required:
3919
3950
  - pointer
3920
3951
  - job_id
@@ -4795,14 +4826,23 @@ components:
4795
4826
  Operation-specific metrics. Content varies by operation type.
4796
4827
  All metrics include duration_ms. Compression includes size/ratio.
4797
4828
  Merge includes input count. Archive includes file count and total size.
4798
- # estimated_saving_pct only means something on an already-optimal result.
4799
- if:
4800
- required: [estimated_saving_pct]
4801
- then:
4802
- required: [already_optimal]
4803
- properties:
4804
- already_optimal:
4805
- const: true
4829
+ # estimated_saving_pct and already_optimal_kind only mean something on an
4830
+ # already-optimal result.
4831
+ allOf:
4832
+ - if:
4833
+ required: [estimated_saving_pct]
4834
+ then:
4835
+ required: [already_optimal]
4836
+ properties:
4837
+ already_optimal:
4838
+ const: true
4839
+ - if:
4840
+ required: [already_optimal_kind]
4841
+ then:
4842
+ required: [already_optimal]
4843
+ properties:
4844
+ already_optimal:
4845
+ const: true
4806
4846
  properties:
4807
4847
  original_size_bytes:
4808
4848
  type: integer
@@ -4969,8 +5009,43 @@ components:
4969
5009
  because compressing it would not have made it smaller. Set by the
4970
5010
  compression processor itself, never by an individual worker's
4971
5011
  extras. Absent or `false` on an ordinary compression; consumers
4972
- treat the two the same.
5012
+ treat the two the same. Required of EVERY same-format compress
5013
+ path (resolved `same_format` route: `output_format` original,
5014
+ absent, or equal to the input's format), short- and long-form (a long-form worker copies the source
5015
+ to the output key; ⚠️ not yet shipped, so today only short-form
5016
+ conforms), instead of `output_too_large`. TARGET billing: the API
5017
+ charges nothing for the operation (owner decision 645(4),
5018
+ `schemas/pricing-policy.yaml`); TODAY it still charges it
5019
+ (`charge.not_charged_api_today`) until api ships.
5020
+ **Location: THIS declared field, `metrics.already_optimal`.**
5021
+ Transition (expand/migrate, lambdas `KiJCEsW2`): short-form
5022
+ workers have emitted it only inside the open-map extras, which the
5023
+ deployed worker SDK serialises as a NESTED object literally keyed
5024
+ `additionalProperties` (camelCase) — a distinct JSON path,
5025
+ `metrics.additionalProperties.already_optimal`, never the same key
5026
+ as this field (api `OperationResultMetadataProjection` reads
5027
+ flat first, then that nested object). When both are present and
5028
+ disagree, THIS field wins. Workers set BOTH until every path sets this one; the API
5029
+ reads this field OR the extras key, and its billing reads the same
5030
+ place its `/status` projection reads (once billing reads it at all),
5031
+ so the refund and the badge cannot disagree. The extras key is then dropped.
4973
5032
  example: true
5033
+ already_optimal_kind:
5034
+ type: string
5035
+ enum: [not_smaller]
5036
+ description: |
5037
+ OPTIONAL, only with `already_optimal: true`: why the original was
5038
+ returned. `not_smaller` = compressed, and the result was not
5039
+ smaller: there is no quality trade-off to explain. It is the only
5040
+ kind any worker produces (no production path declines to encode an
5041
+ efficient source, lambdas 2026-09-30), so no other value is
5042
+ declared; a consumer shows neutral "already optimised" copy for an
5043
+ absent kind and for any value it does not know. The API
5044
+ projects it onto the REST `OperationResultMetadata` (same name and
5045
+ values). Contract-first (card `cDZuuyg8`). Deliberately NOT named
5046
+ `already_optimal_reason`: that name is a worker diagnostic the API
5047
+ must not serve (roNRMilt); this is a closed, user-facing kind.
5048
+ example: not_smaller
4974
5049
  estimated_saving_pct:
4975
5050
  type: number
4976
5051
  minimum: 0
@@ -5818,21 +5893,36 @@ components:
5818
5893
  type: string
5819
5894
  description: |
5820
5895
  Logical processing class on the long-form claim-check wire
5821
- (`LongFormJobMessage.processing_class`) — always the literal
5822
- `long_form` (never `short_form` / `blocked`; those exist only on the
5823
- upload-probe response and HTTP plan surfaces). The launcher forks on
5824
- this field; do not confuse it with the backend worker identity, which
5825
- stays off the wire per `schemas/FORMAT.md` §F8.
5826
-
5827
- A single-value enum (not a JSON-Schema `const`): named + `enum` is the
5828
- repo's proven typed-codegen form (mirrors `JobInputRole` /
5829
- `ReEncodeDecision`), whereas `const` degraded to an unconstrained
5830
- `String` in SDK generators. Lifted from inline at
5896
+ (`LongFormJobMessage.processing_class`). Never `short_form` /
5897
+ `blocked`: those exist only on the upload-probe response and HTTP plan
5898
+ surfaces. The launcher forks on this field together with
5899
+ `operation_type`; do not confuse it with the backend worker identity,
5900
+ which stays off the wire per `schemas/FORMAT.md` §F8.
5901
+
5902
+ - `long_form`: every long-form job except the one below.
5903
+ - `long_form_concat` (card
5904
+ [`JzS0lkSr`](https://trello.com/c/JzS0lkSr), api `m9Bstzaa`): a
5905
+ STREAM-COPY join, valid ONLY with `operation_type: merge` (enforced on
5906
+ `LongFormJobMessage`). The API sends it for (a) the stream-copy rejoin
5907
+ of a long-form fan-out and (b) a user long-form merge with
5908
+ `re_encode_mode: never`. The launcher routes the pair
5909
+ `(merge, long_form_concat)` to its small stream-copy task instead of
5910
+ the merge re-encode task. Any other pair would fall through to that
5911
+ operation's default task with a class it does not know, which is why
5912
+ the pairing is a schema rule and not a convention.
5913
+
5914
+ Named + `enum`, not `const`: the repo's proven typed-codegen form
5915
+ (mirrors `JobInputRole` / `ReEncodeDecision`); `const` degraded to an
5916
+ unconstrained `String` in SDK generators. Lifted from inline at
5831
5917
  `LongFormJobMessage.processing_class` per ticket
5832
- [`A3DyuYUd`](https://trello.com/c/A3DyuYUd). Single-member enum
5833
- validates identically to the prior `const long_form`.
5918
+ [`A3DyuYUd`](https://trello.com/c/A3DyuYUd).
5919
+ # CLOSED (codex #625): a routing discriminator. An unknown class would
5920
+ # select an unintended launcher path, so a new value reaches consumers
5921
+ # deliberately, never by tolerance.
5922
+ x-enum-openness: closed
5834
5923
  enum:
5835
5924
  - long_form
5925
+ - long_form_concat
5836
5926
 
5837
5927
  ProgressStatus:
5838
5928
  type: string
@@ -5970,7 +6060,7 @@ components:
5970
6060
  - format_mismatch: MIME type doesn't match content
5971
6061
  - decode_failed: Cannot decode/parse file
5972
6062
  - processing_failed: Processing library error
5973
- - output_too_large: Output exceeded the size limit
6063
+ - output_too_large: Output exceeded the size limit. NOT emitted by a compress on the resolved same_format route (output_format original, absent, or equal to the input's format, e.g. webp to webp), which returns the original with OperationMetrics.already_optimal instead (owner decision 645(4)). Today short-form only: long-form compress still emits it until lambdas ships its copy path
5974
6064
  - invalid_options: Invalid operation options
5975
6065
  - missing_source: Source file not found in storage
5976
6066
  - invalid_key: Storage key is malformed
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "capabilities_profile": "baseline",
3
- "capabilities_version": 231,
3
+ "capabilities_version": 233,
4
4
  "endpoints": {
5
5
  "DELETE /api/auth/account": {
6
6
  "auth": "required",
@@ -2060,7 +2060,7 @@
2060
2060
  },
2061
2061
  "audio_codec": {
2062
2062
  "default": "copy",
2063
- "description": "Audio codec. copy = passthrough (keep the source stream as-is; re-encode only on explicit request) \u2014 aac/opus/vorbis re-encode. Default is `copy`: on the same-container path (`output_format` original/absent) the source stream is already container-compatible, so copy is safe. When `output_format` RE-TARGETS the container, an absent/default audio_codec resolves to a container-valid codec via the facade (e.g. webm -> opus), NOT a blind copy of an incompatible stream \u2014 a DEFAULT is never rejected (the exact per-container resolution, incl. ogg vorbis-vs-opus, is an output_format stable-flip prerequisite). A caller-EXPLICIT codec the resolved container cannot carry (e.g. aac on a webm target) is rejected.",
2063
+ "description": "Audio codec. copy = passthrough (keep the source stream as-is; re-encode only on explicit request) \u2014 aac/opus/vorbis re-encode. Default is `copy`: on the same-container path (`output_format` original/absent) the source stream is already container-compatible, so copy is safe. When `output_format` RE-TARGETS the container, an absent/default audio_codec resolves to a container-valid codec via the facade (e.g. webm -> opus), NOT a blind copy of an incompatible stream \u2014 a DEFAULT is never rejected (the exact per-container resolution, incl. ogg vorbis-vs-opus, is an output_format stable-flip prerequisite). `copy` sent explicitly counts as the default: if the source audio cannot be copied into the target container it is re-encoded to the container default (webm -> opus) and reported in dropped_options. A NON-default codec the resolved container cannot carry (e.g. aac on a webm target) is rejected.",
2064
2064
  "type": "enum",
2065
2065
  "values": [
2066
2066
  "aac",
@@ -2071,7 +2071,7 @@
2071
2071
  },
2072
2072
  "codec": {
2073
2073
  "default": "h264",
2074
- "description": "Video codec. h264 = widest compatibility, h265/av1 = better compression but slower. The default (h264) is the MP4/MOV standard and is CONTAINER-CONDITIONAL against the RESOLVED output container (the explicit `output_format` if set, else the input container): for a container that cannot carry it (e.g. WebM, which carries VP8/VP9/AV1) the server resolves a container-valid codec (WebM -> vp9). A DEFAULT value is never rejected \u2014 including an explicit `output_format: webm` left at the default `h264` (resolves to vp9, not rejected); only a caller-EXPLICIT incompatible codec is rejected.",
2074
+ "description": "Video codec. h264 = widest compatibility, h265/av1 = better compression but slower. The default (h264) is the MP4/MOV standard and is CONTAINER-CONDITIONAL against the RESOLVED output container (the explicit `output_format` if set, else the input container): for a container that cannot carry it (e.g. WebM, which carries VP8/VP9/AV1) the server resolves a container-valid codec (WebM -> vp9). A DEFAULT value is never rejected \u2014 including an explicit `output_format: webm` left at the default `h264` (resolves to vp9, not rejected). A value equal to the default counts as the default even when sent, and the substitution is reported in dropped_options. Only a NON-default codec the container cannot carry is rejected (e.g. h265 on WebM).",
2075
2075
  "type": "enum",
2076
2076
  "values": [
2077
2077
  "h264",
@@ -2101,7 +2101,7 @@
2101
2101
  },
2102
2102
  "faststart": {
2103
2103
  "default": true,
2104
- "description": "Move the MP4/MOV moov atom to the front so the file starts playing before it is fully downloaded (progressive web playback). MP4/MOV only. CONTAINER-CONDITIONAL against the RESOLVED output container (the explicit `output_format` if set, else the input): the default (true) is silently inapplicable for a container with no moov atom (e.g. WebM) \u2014 that is NOT a rejection. Only a caller-EXPLICIT faststart:true on such a container is rejected.",
2104
+ "description": "Move the MP4/MOV moov atom to the front so the file starts playing before it is fully downloaded (progressive web playback). MP4/MOV only. CONTAINER-CONDITIONAL against the RESOLVED output container (the explicit `output_format` if set, else the input): on a container with no moov atom (e.g. WebM) the default (true), omitted or sent, is dropped and reported in dropped_options \u2014 never a rejection. false there asks for nothing and is accepted.",
2105
2105
  "type": "boolean"
2106
2106
  },
2107
2107
  "fit": {
@@ -2134,7 +2134,7 @@
2134
2134
  },
2135
2135
  "output_format": {
2136
2136
  "default": "original",
2137
- "description": "Output container. original = keep the input container (default, same-format compression). Other values change the container as part of the same job, keeping the size cap. When set, the RESOLVED target container determines the valid codec/audio_codec/faststart sets \u2014 an absent/default codec resolves to a container-valid one (e.g. webm -> vp9) and is never rejected; only a caller-EXPLICIT incompatible value is rejected.",
2137
+ "description": "Output container. original = keep the input container (default, same-format compression). Other values change the container as part of the same job, keeping the size cap. When set, the RESOLVED target container determines the valid codec/audio_codec/faststart sets \u2014 an absent or default-equal value (sent equal to its default counts as the default) resolves to a container-valid one (e.g. webm -> vp9), is never rejected, and is reported in dropped_options; only a NON-default incompatible value is rejected.",
2138
2138
  "per_value_availability": {
2139
2139
  "mp4": {
2140
2140
  "availability": "planned"
@@ -5498,7 +5498,7 @@
5498
5498
  "sole_op": true
5499
5499
  }
5500
5500
  },
5501
- "schema_version": "2.217.0",
5501
+ "schema_version": "2.219.0",
5502
5502
  "source_commit": null,
5503
5503
  "user_tier": null,
5504
5504
  "workflow_features": {
@@ -2824,7 +2824,7 @@
2824
2824
  },
2825
2825
  "audio_codec": {
2826
2826
  "default": "copy",
2827
- "description": "Audio codec. copy = passthrough (keep the source stream as-is; re-encode only on explicit request) \u2014 aac/opus/vorbis re-encode. Default is `copy`: on the same-container path (`output_format` original/absent) the source stream is already container-compatible, so copy is safe. When `output_format` RE-TARGETS the container, an absent/default audio_codec resolves to a container-valid codec via the facade (e.g. webm -> opus), NOT a blind copy of an incompatible stream \u2014 a DEFAULT is never rejected (the exact per-container resolution, incl. ogg vorbis-vs-opus, is an output_format stable-flip prerequisite). A caller-EXPLICIT codec the resolved container cannot carry (e.g. aac on a webm target) is rejected.",
2827
+ "description": "Audio codec. copy = passthrough (keep the source stream as-is; re-encode only on explicit request) \u2014 aac/opus/vorbis re-encode. Default is `copy`: on the same-container path (`output_format` original/absent) the source stream is already container-compatible, so copy is safe. When `output_format` RE-TARGETS the container, an absent/default audio_codec resolves to a container-valid codec via the facade (e.g. webm -> opus), NOT a blind copy of an incompatible stream \u2014 a DEFAULT is never rejected (the exact per-container resolution, incl. ogg vorbis-vs-opus, is an output_format stable-flip prerequisite). `copy` sent explicitly counts as the default: if the source audio cannot be copied into the target container it is re-encoded to the container default (webm -> opus) and reported in dropped_options. A NON-default codec the resolved container cannot carry (e.g. aac on a webm target) is rejected.",
2828
2828
  "enum_ref": "AudioCodec",
2829
2829
  "enum_translations": {
2830
2830
  "aac": "Aac",
@@ -2851,7 +2851,7 @@
2851
2851
  },
2852
2852
  "codec": {
2853
2853
  "default": "h264",
2854
- "description": "Video codec. h264 = widest compatibility, h265/av1 = better compression but slower. The default (h264) is the MP4/MOV standard and is CONTAINER-CONDITIONAL against the RESOLVED output container (the explicit `output_format` if set, else the input container): for a container that cannot carry it (e.g. WebM, which carries VP8/VP9/AV1) the server resolves a container-valid codec (WebM -> vp9). A DEFAULT value is never rejected \u2014 including an explicit `output_format: webm` left at the default `h264` (resolves to vp9, not rejected); only a caller-EXPLICIT incompatible codec is rejected.",
2854
+ "description": "Video codec. h264 = widest compatibility, h265/av1 = better compression but slower. The default (h264) is the MP4/MOV standard and is CONTAINER-CONDITIONAL against the RESOLVED output container (the explicit `output_format` if set, else the input container): for a container that cannot carry it (e.g. WebM, which carries VP8/VP9/AV1) the server resolves a container-valid codec (WebM -> vp9). A DEFAULT value is never rejected \u2014 including an explicit `output_format: webm` left at the default `h264` (resolves to vp9, not rejected). A value equal to the default counts as the default even when sent, and the substitution is reported in dropped_options. Only a NON-default codec the container cannot carry is rejected (e.g. h265 on WebM).",
2855
2855
  "enum_ref": "VideoCodec",
2856
2856
  "enum_translations": {
2857
2857
  "av1": "Av1",
@@ -2907,7 +2907,7 @@
2907
2907
  },
2908
2908
  "faststart": {
2909
2909
  "default": true,
2910
- "description": "Move the MP4/MOV moov atom to the front so the file starts playing before it is fully downloaded (progressive web playback). MP4/MOV only. CONTAINER-CONDITIONAL against the RESOLVED output container (the explicit `output_format` if set, else the input): the default (true) is silently inapplicable for a container with no moov atom (e.g. WebM) \u2014 that is NOT a rejection. Only a caller-EXPLICIT faststart:true on such a container is rejected.",
2910
+ "description": "Move the MP4/MOV moov atom to the front so the file starts playing before it is fully downloaded (progressive web playback). MP4/MOV only. CONTAINER-CONDITIONAL against the RESOLVED output container (the explicit `output_format` if set, else the input): on a container with no moov atom (e.g. WebM) the default (true), omitted or sent, is dropped and reported in dropped_options \u2014 never a rejection. false there asks for nothing and is accepted.",
2911
2911
  "origin": "contract",
2912
2912
  "sdk_exposure": "expose",
2913
2913
  "surface_key": "faststart",
@@ -2965,7 +2965,7 @@
2965
2965
  },
2966
2966
  "output_format": {
2967
2967
  "default": "original",
2968
- "description": "Output container. original = keep the input container (default, same-format compression). Other values change the container as part of the same job, keeping the size cap. When set, the RESOLVED target container determines the valid codec/audio_codec/faststart sets \u2014 an absent/default codec resolves to a container-valid one (e.g. webm -> vp9) and is never rejected; only a caller-EXPLICIT incompatible value is rejected.",
2968
+ "description": "Output container. original = keep the input container (default, same-format compression). Other values change the container as part of the same job, keeping the size cap. When set, the RESOLVED target container determines the valid codec/audio_codec/faststart sets \u2014 an absent or default-equal value (sent equal to its default counts as the default) resolves to a container-valid one (e.g. webm -> vp9), is never rejected, and is reported in dropped_options; only a NON-default incompatible value is rejected.",
2969
2969
  "origin": "contract",
2970
2970
  "per_value_availability": {
2971
2971
  "mp4": {
@@ -7643,7 +7643,7 @@
7643
7643
  }
7644
7644
  },
7645
7645
  "preset_config_hash": "sha256:354814f7906f85be6a6ca5ede6c0722c83cdc058fd658a9bb2b0996520466c6d",
7646
- "schema_version": "2.217.0",
7647
- "sdk_spec_version": "2.10.0",
7648
- "source_hash": "sha256:ceb884bc449ef43132183525188505bfcb6b5db4dfb49335a5118844444ddcad"
7646
+ "schema_version": "2.219.0",
7647
+ "sdk_spec_version": "2.11.0",
7648
+ "source_hash": "sha256:62bdaf53d3871346d4e2914e9c9035bf7b0b7c6b03c030eaea12b7854244de14"
7649
7649
  }
@@ -0,0 +1,4 @@
1
+ declare enum AnonymousSchema_286 {
2
+ NOT_SMALLER = "not_smaller"
3
+ }
4
+ export default AnonymousSchema_286;
@@ -0,0 +1,5 @@
1
+ var AnonymousSchema_286;
2
+ (function (AnonymousSchema_286) {
3
+ AnonymousSchema_286["NOT_SMALLER"] = "not_smaller";
4
+ })(AnonymousSchema_286 || (AnonymousSchema_286 = {}));
5
+ export default AnonymousSchema_286;
@@ -1,4 +1,5 @@
1
1
  declare enum LongFormProcessingClass {
2
- LONG_FORM = "long_form"
2
+ LONG_FORM = "long_form",
3
+ LONG_FORM_CONCAT = "long_form_concat"
3
4
  }
4
5
  export default LongFormProcessingClass;
@@ -1,5 +1,6 @@
1
1
  var LongFormProcessingClass;
2
2
  (function (LongFormProcessingClass) {
3
3
  LongFormProcessingClass["LONG_FORM"] = "long_form";
4
+ LongFormProcessingClass["LONG_FORM_CONCAT"] = "long_form_concat";
4
5
  })(LongFormProcessingClass || (LongFormProcessingClass = {}));
5
6
  export default LongFormProcessingClass;
@@ -1,4 +1,5 @@
1
1
  import ReEncodeDecision from './ReEncodeDecision.js';
2
+ import AnonymousSchema_286 from './AnonymousSchema_286.js';
2
3
  interface OperationMetrics {
3
4
  'original_size_bytes'?: number;
4
5
  'output_size_bytes'?: number;
@@ -17,6 +18,7 @@ interface OperationMetrics {
17
18
  'memory_mb'?: number;
18
19
  'fargate_runtime_ms'?: number;
19
20
  'already_optimal'?: 'completed' | boolean;
21
+ 'already_optimal_kind'?: AnonymousSchema_286;
20
22
  'estimated_saving_pct'?: number;
21
23
  'additionalProperties'?: Record<string, any>;
22
24
  }
@@ -1,4 +1,5 @@
1
1
  export { default as AnonymousSchema_217 } from './AnonymousSchema_217.js';
2
+ export { default as AnonymousSchema_286 } from './AnonymousSchema_286.js';
2
3
  export { default as ErrorCode } from './ErrorCode.js';
3
4
  export { default as Failure } from './Failure.js';
4
5
  export { default as JobInputRole } from './JobInputRole.js';
@@ -1,4 +1,5 @@
1
1
  export { default as AnonymousSchema_217 } from './AnonymousSchema_217.js';
2
+ export { default as AnonymousSchema_286 } from './AnonymousSchema_286.js';
2
3
  export { default as ErrorCode } from './ErrorCode.js';
3
4
  export { default as JobInputRole } from './JobInputRole.js';
4
5
  export { default as LongFormOperationType } from './LongFormOperationType.js';
@@ -2,7 +2,7 @@
2
2
  * GISL Compression API
3
3
  * REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (per-tier private caching with ETag revalidation per ADR-0002 + I3), health probes return flat objects, and `POST /api/contact` returns 204 with no body. **Availability metadata.** This spec uses the `x-availability` vendor extension as **decorative documentation only**. Per [ADR-0001](../docs/decisions/0001-contract-first-availability.md) §1.5, the runtime endpoint `GET /api/operations/schema` (ticket I3) is the authoritative source; the sidecar `availability.json` (ticket I3b) is the authoritative companion (generated, never hand-edited; CI cross-checks runtime ⇄ sidecar). SDKs MUST NOT depend on `x-availability` reaching generated code — code-generators that surface vendor extensions may emit it as documentation, but consumers read availability from the runtime endpoint, not from the generated bindings. The 5-value vocabulary (`stable | beta | experimental | planned | deprecated`) is defined in the `AvailabilityValue` schema. See `schemas/FORMAT.md` §Availability Taxonomy for the operational rules (parser obligation: absent = stable; per-enum-value granularity is the `per_value_availability` primitive landed via ticket I17). **Free-text string fields: `x-string-vocabulary` (ticket [`Q79yjcFF`](https://trello.com/c/Q79yjcFF)).** A `type: string` field with no `enum` that names example values says, as data, what a client may do with them (the same marker is used in the AsyncAPI document): - `open` — a vocabulary that grows. Each published value keeps its meaning, the SET is not closed: switch on the values you know and handle an unknown one as the generic case (e.g. `ErrorEnvelope.error`). - `advisory` — explanatory text. Display or log it; **never switch on it** (e.g. `SseWorkflowTerminalData.reason`). - `none` — not a vocabulary at all (an expression or an identifier, e.g. `OptionSchema.pattern`). A field whose description hedges with \"common values\" or \"free-form\" must carry the marker; a test enforces it. **Localisation (per ticket [I26](https://trello.com/c/rcnqwgI4)).** Error responses + paused/blocked workflow statuses carry a localised human-readable `message` alongside a stable, never-localised `message_key`. Machine-readable fields (`error`, enum values, status codes) stay canonical English. - **Currently committed locales:** `en-GB` only (per ticket [`4GKyuYo6`](https://trello.com/c/4GKyuYo6)). The I26 carrier shape (`Accept-Language` + `Content-Language` + `Vary` headers + `locale` envelope field + `message_key` + `message_params`) is stable and exercised; the **catalog** of translated `message` strings is en-GB-only at runtime today. Additional locales (e.g. `pt-PT`) will be advertised by name when their catalogs ship — the request/response carrier shape does NOT change when a new locale lands. Treat unrequested locales as \"machine-code + `message_key` path is committed; localised `message` prose is not\" until this prose enumerates them by name. - **Request:** `Accept-Language` header per RFC 9110 §12.5.4 (q-value negotiation supported). The server selects the best-match locale from its supported list; falls back to `en-GB` when no match — which, until additional catalogs land, is every non-`en-GB` `Accept-Language`. - **Response:** `Content-Language: <locale>` echo on every localised response; `Vary: Accept-Language` on every response (CDN/cache correctness — different `Accept-Language` requests produce different responses). `Vary` is emitted unconditionally so the header contract does not flip when a second locale ships. - **Fallback locale:** `en-GB` (also the canonical locale for `message_key` translations and English `message` prose). - **SDK guidance:** switch on `error` (machine code) for typed error branches; surface `message_key` to client-side i18n catalogs (SDK companion work tracked at X19, cross-repo); display `message` for end-user UI; **never parse `message` for control flow** — it changes per locale. Carrier shape lives on `ErrorEnvelope` (envelope-level optional `message_key` + `message` + `locale` + `message_params`) and `ValidationErrorEnvelope` (also per-`details[]` entry). Existing 402 / 403 / 422 envelopes (`BalanceExhaustedResponse`, `FeatureNotAvailableResponse`, `FeatureTierRestrictedResponse`, `WorkflowPausedDetail`) inherit the convention. **Upload thresholds (per tickets [u0ar7Yye](https://trello.com/c/u0ar7Yye) + [58nBQLWQ](https://trello.com/c/58nBQLWQ)).** Canonical upload constants (single-shot cap, multipart chunk size, multipart concurrency default, multipart first-chunk size) live on the `UploadThresholds` schema with `const:`-pinned values. SDK generators emit these as typed binding constants so frontend / API / SDKs reference one source of truth instead of hardcoding magic numbers. A runtime `GET /api/uploads/limits` endpoint for dynamic discovery (per-tier / per-environment overrides) is a deferred follow-up.
4
4
  *
5
- * The version of the OpenAPI document: 2.217.0
5
+ * The version of the OpenAPI document: 2.219.0
6
6
  *
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -4,7 +4,7 @@
4
4
  * GISL Compression API
5
5
  * REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (per-tier private caching with ETag revalidation per ADR-0002 + I3), health probes return flat objects, and `POST /api/contact` returns 204 with no body. **Availability metadata.** This spec uses the `x-availability` vendor extension as **decorative documentation only**. Per [ADR-0001](../docs/decisions/0001-contract-first-availability.md) §1.5, the runtime endpoint `GET /api/operations/schema` (ticket I3) is the authoritative source; the sidecar `availability.json` (ticket I3b) is the authoritative companion (generated, never hand-edited; CI cross-checks runtime ⇄ sidecar). SDKs MUST NOT depend on `x-availability` reaching generated code — code-generators that surface vendor extensions may emit it as documentation, but consumers read availability from the runtime endpoint, not from the generated bindings. The 5-value vocabulary (`stable | beta | experimental | planned | deprecated`) is defined in the `AvailabilityValue` schema. See `schemas/FORMAT.md` §Availability Taxonomy for the operational rules (parser obligation: absent = stable; per-enum-value granularity is the `per_value_availability` primitive landed via ticket I17). **Free-text string fields: `x-string-vocabulary` (ticket [`Q79yjcFF`](https://trello.com/c/Q79yjcFF)).** A `type: string` field with no `enum` that names example values says, as data, what a client may do with them (the same marker is used in the AsyncAPI document): - `open` — a vocabulary that grows. Each published value keeps its meaning, the SET is not closed: switch on the values you know and handle an unknown one as the generic case (e.g. `ErrorEnvelope.error`). - `advisory` — explanatory text. Display or log it; **never switch on it** (e.g. `SseWorkflowTerminalData.reason`). - `none` — not a vocabulary at all (an expression or an identifier, e.g. `OptionSchema.pattern`). A field whose description hedges with \"common values\" or \"free-form\" must carry the marker; a test enforces it. **Localisation (per ticket [I26](https://trello.com/c/rcnqwgI4)).** Error responses + paused/blocked workflow statuses carry a localised human-readable `message` alongside a stable, never-localised `message_key`. Machine-readable fields (`error`, enum values, status codes) stay canonical English. - **Currently committed locales:** `en-GB` only (per ticket [`4GKyuYo6`](https://trello.com/c/4GKyuYo6)). The I26 carrier shape (`Accept-Language` + `Content-Language` + `Vary` headers + `locale` envelope field + `message_key` + `message_params`) is stable and exercised; the **catalog** of translated `message` strings is en-GB-only at runtime today. Additional locales (e.g. `pt-PT`) will be advertised by name when their catalogs ship — the request/response carrier shape does NOT change when a new locale lands. Treat unrequested locales as \"machine-code + `message_key` path is committed; localised `message` prose is not\" until this prose enumerates them by name. - **Request:** `Accept-Language` header per RFC 9110 §12.5.4 (q-value negotiation supported). The server selects the best-match locale from its supported list; falls back to `en-GB` when no match — which, until additional catalogs land, is every non-`en-GB` `Accept-Language`. - **Response:** `Content-Language: <locale>` echo on every localised response; `Vary: Accept-Language` on every response (CDN/cache correctness — different `Accept-Language` requests produce different responses). `Vary` is emitted unconditionally so the header contract does not flip when a second locale ships. - **Fallback locale:** `en-GB` (also the canonical locale for `message_key` translations and English `message` prose). - **SDK guidance:** switch on `error` (machine code) for typed error branches; surface `message_key` to client-side i18n catalogs (SDK companion work tracked at X19, cross-repo); display `message` for end-user UI; **never parse `message` for control flow** — it changes per locale. Carrier shape lives on `ErrorEnvelope` (envelope-level optional `message_key` + `message` + `locale` + `message_params`) and `ValidationErrorEnvelope` (also per-`details[]` entry). Existing 402 / 403 / 422 envelopes (`BalanceExhaustedResponse`, `FeatureNotAvailableResponse`, `FeatureTierRestrictedResponse`, `WorkflowPausedDetail`) inherit the convention. **Upload thresholds (per tickets [u0ar7Yye](https://trello.com/c/u0ar7Yye) + [58nBQLWQ](https://trello.com/c/58nBQLWQ)).** Canonical upload constants (single-shot cap, multipart chunk size, multipart concurrency default, multipart first-chunk size) live on the `UploadThresholds` schema with `const:`-pinned values. SDK generators emit these as typed binding constants so frontend / API / SDKs reference one source of truth instead of hardcoding magic numbers. A runtime `GET /api/uploads/limits` endpoint for dynamic discovery (per-tier / per-environment overrides) is a deferred follow-up.
6
6
  *
7
- * The version of the OpenAPI document: 2.217.0
7
+ * The version of the OpenAPI document: 2.219.0
8
8
  *
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -2,7 +2,7 @@
2
2
  * GISL Compression API
3
3
  * REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (per-tier private caching with ETag revalidation per ADR-0002 + I3), health probes return flat objects, and `POST /api/contact` returns 204 with no body. **Availability metadata.** This spec uses the `x-availability` vendor extension as **decorative documentation only**. Per [ADR-0001](../docs/decisions/0001-contract-first-availability.md) §1.5, the runtime endpoint `GET /api/operations/schema` (ticket I3) is the authoritative source; the sidecar `availability.json` (ticket I3b) is the authoritative companion (generated, never hand-edited; CI cross-checks runtime ⇄ sidecar). SDKs MUST NOT depend on `x-availability` reaching generated code — code-generators that surface vendor extensions may emit it as documentation, but consumers read availability from the runtime endpoint, not from the generated bindings. The 5-value vocabulary (`stable | beta | experimental | planned | deprecated`) is defined in the `AvailabilityValue` schema. See `schemas/FORMAT.md` §Availability Taxonomy for the operational rules (parser obligation: absent = stable; per-enum-value granularity is the `per_value_availability` primitive landed via ticket I17). **Free-text string fields: `x-string-vocabulary` (ticket [`Q79yjcFF`](https://trello.com/c/Q79yjcFF)).** A `type: string` field with no `enum` that names example values says, as data, what a client may do with them (the same marker is used in the AsyncAPI document): - `open` — a vocabulary that grows. Each published value keeps its meaning, the SET is not closed: switch on the values you know and handle an unknown one as the generic case (e.g. `ErrorEnvelope.error`). - `advisory` — explanatory text. Display or log it; **never switch on it** (e.g. `SseWorkflowTerminalData.reason`). - `none` — not a vocabulary at all (an expression or an identifier, e.g. `OptionSchema.pattern`). A field whose description hedges with \"common values\" or \"free-form\" must carry the marker; a test enforces it. **Localisation (per ticket [I26](https://trello.com/c/rcnqwgI4)).** Error responses + paused/blocked workflow statuses carry a localised human-readable `message` alongside a stable, never-localised `message_key`. Machine-readable fields (`error`, enum values, status codes) stay canonical English. - **Currently committed locales:** `en-GB` only (per ticket [`4GKyuYo6`](https://trello.com/c/4GKyuYo6)). The I26 carrier shape (`Accept-Language` + `Content-Language` + `Vary` headers + `locale` envelope field + `message_key` + `message_params`) is stable and exercised; the **catalog** of translated `message` strings is en-GB-only at runtime today. Additional locales (e.g. `pt-PT`) will be advertised by name when their catalogs ship — the request/response carrier shape does NOT change when a new locale lands. Treat unrequested locales as \"machine-code + `message_key` path is committed; localised `message` prose is not\" until this prose enumerates them by name. - **Request:** `Accept-Language` header per RFC 9110 §12.5.4 (q-value negotiation supported). The server selects the best-match locale from its supported list; falls back to `en-GB` when no match — which, until additional catalogs land, is every non-`en-GB` `Accept-Language`. - **Response:** `Content-Language: <locale>` echo on every localised response; `Vary: Accept-Language` on every response (CDN/cache correctness — different `Accept-Language` requests produce different responses). `Vary` is emitted unconditionally so the header contract does not flip when a second locale ships. - **Fallback locale:** `en-GB` (also the canonical locale for `message_key` translations and English `message` prose). - **SDK guidance:** switch on `error` (machine code) for typed error branches; surface `message_key` to client-side i18n catalogs (SDK companion work tracked at X19, cross-repo); display `message` for end-user UI; **never parse `message` for control flow** — it changes per locale. Carrier shape lives on `ErrorEnvelope` (envelope-level optional `message_key` + `message` + `locale` + `message_params`) and `ValidationErrorEnvelope` (also per-`details[]` entry). Existing 402 / 403 / 422 envelopes (`BalanceExhaustedResponse`, `FeatureNotAvailableResponse`, `FeatureTierRestrictedResponse`, `WorkflowPausedDetail`) inherit the convention. **Upload thresholds (per tickets [u0ar7Yye](https://trello.com/c/u0ar7Yye) + [58nBQLWQ](https://trello.com/c/58nBQLWQ)).** Canonical upload constants (single-shot cap, multipart chunk size, multipart concurrency default, multipart first-chunk size) live on the `UploadThresholds` schema with `const:`-pinned values. SDK generators emit these as typed binding constants so frontend / API / SDKs reference one source of truth instead of hardcoding magic numbers. A runtime `GET /api/uploads/limits` endpoint for dynamic discovery (per-tier / per-environment overrides) is a deferred follow-up.
4
4
  *
5
- * The version of the OpenAPI document: 2.217.0
5
+ * The version of the OpenAPI document: 2.219.0
6
6
  *
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -4,7 +4,7 @@
4
4
  * GISL Compression API
5
5
  * REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (per-tier private caching with ETag revalidation per ADR-0002 + I3), health probes return flat objects, and `POST /api/contact` returns 204 with no body. **Availability metadata.** This spec uses the `x-availability` vendor extension as **decorative documentation only**. Per [ADR-0001](../docs/decisions/0001-contract-first-availability.md) §1.5, the runtime endpoint `GET /api/operations/schema` (ticket I3) is the authoritative source; the sidecar `availability.json` (ticket I3b) is the authoritative companion (generated, never hand-edited; CI cross-checks runtime ⇄ sidecar). SDKs MUST NOT depend on `x-availability` reaching generated code — code-generators that surface vendor extensions may emit it as documentation, but consumers read availability from the runtime endpoint, not from the generated bindings. The 5-value vocabulary (`stable | beta | experimental | planned | deprecated`) is defined in the `AvailabilityValue` schema. See `schemas/FORMAT.md` §Availability Taxonomy for the operational rules (parser obligation: absent = stable; per-enum-value granularity is the `per_value_availability` primitive landed via ticket I17). **Free-text string fields: `x-string-vocabulary` (ticket [`Q79yjcFF`](https://trello.com/c/Q79yjcFF)).** A `type: string` field with no `enum` that names example values says, as data, what a client may do with them (the same marker is used in the AsyncAPI document): - `open` — a vocabulary that grows. Each published value keeps its meaning, the SET is not closed: switch on the values you know and handle an unknown one as the generic case (e.g. `ErrorEnvelope.error`). - `advisory` — explanatory text. Display or log it; **never switch on it** (e.g. `SseWorkflowTerminalData.reason`). - `none` — not a vocabulary at all (an expression or an identifier, e.g. `OptionSchema.pattern`). A field whose description hedges with \"common values\" or \"free-form\" must carry the marker; a test enforces it. **Localisation (per ticket [I26](https://trello.com/c/rcnqwgI4)).** Error responses + paused/blocked workflow statuses carry a localised human-readable `message` alongside a stable, never-localised `message_key`. Machine-readable fields (`error`, enum values, status codes) stay canonical English. - **Currently committed locales:** `en-GB` only (per ticket [`4GKyuYo6`](https://trello.com/c/4GKyuYo6)). The I26 carrier shape (`Accept-Language` + `Content-Language` + `Vary` headers + `locale` envelope field + `message_key` + `message_params`) is stable and exercised; the **catalog** of translated `message` strings is en-GB-only at runtime today. Additional locales (e.g. `pt-PT`) will be advertised by name when their catalogs ship — the request/response carrier shape does NOT change when a new locale lands. Treat unrequested locales as \"machine-code + `message_key` path is committed; localised `message` prose is not\" until this prose enumerates them by name. - **Request:** `Accept-Language` header per RFC 9110 §12.5.4 (q-value negotiation supported). The server selects the best-match locale from its supported list; falls back to `en-GB` when no match — which, until additional catalogs land, is every non-`en-GB` `Accept-Language`. - **Response:** `Content-Language: <locale>` echo on every localised response; `Vary: Accept-Language` on every response (CDN/cache correctness — different `Accept-Language` requests produce different responses). `Vary` is emitted unconditionally so the header contract does not flip when a second locale ships. - **Fallback locale:** `en-GB` (also the canonical locale for `message_key` translations and English `message` prose). - **SDK guidance:** switch on `error` (machine code) for typed error branches; surface `message_key` to client-side i18n catalogs (SDK companion work tracked at X19, cross-repo); display `message` for end-user UI; **never parse `message` for control flow** — it changes per locale. Carrier shape lives on `ErrorEnvelope` (envelope-level optional `message_key` + `message` + `locale` + `message_params`) and `ValidationErrorEnvelope` (also per-`details[]` entry). Existing 402 / 403 / 422 envelopes (`BalanceExhaustedResponse`, `FeatureNotAvailableResponse`, `FeatureTierRestrictedResponse`, `WorkflowPausedDetail`) inherit the convention. **Upload thresholds (per tickets [u0ar7Yye](https://trello.com/c/u0ar7Yye) + [58nBQLWQ](https://trello.com/c/58nBQLWQ)).** Canonical upload constants (single-shot cap, multipart chunk size, multipart concurrency default, multipart first-chunk size) live on the `UploadThresholds` schema with `const:`-pinned values. SDK generators emit these as typed binding constants so frontend / API / SDKs reference one source of truth instead of hardcoding magic numbers. A runtime `GET /api/uploads/limits` endpoint for dynamic discovery (per-tier / per-environment overrides) is a deferred follow-up.
6
6
  *
7
- * The version of the OpenAPI document: 2.217.0
7
+ * The version of the OpenAPI document: 2.219.0
8
8
  *
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).