@giveitsmaller/contracts 0.81.0 → 0.83.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 (553) 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 +67 -0
  5. package/asyncapi/events.yaml +67 -21
  6. package/availability/availability.json +20 -14
  7. package/code-builder/code-builder-metadata.json +18 -12
  8. package/dist/asyncapi/LongFormProcessingClass.d.ts +2 -1
  9. package/dist/asyncapi/LongFormProcessingClass.js +1 -0
  10. package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
  11. package/dist/openapi/models/AccountLimitEntry.js +1 -1
  12. package/dist/openapi/models/AccountLimits.d.ts +1 -1
  13. package/dist/openapi/models/AccountLimits.js +1 -1
  14. package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
  15. package/dist/openapi/models/AccountLimitsLimits.js +1 -1
  16. package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
  17. package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
  18. package/dist/openapi/models/AnonymousLimitExceededResponse.d.ts +157 -0
  19. package/dist/openapi/models/AnonymousLimitExceededResponse.js +95 -0
  20. package/dist/openapi/models/AnonymousOperationNotAllowedResponse.d.ts +8 -6
  21. package/dist/openapi/models/AnonymousOperationNotAllowedResponse.js +1 -1
  22. package/dist/openapi/models/AnonymousQuotaExhaustedResponse.d.ts +42 -7
  23. package/dist/openapi/models/AnonymousQuotaExhaustedResponse.js +13 -1
  24. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  25. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  26. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  27. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  28. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  29. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  30. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  31. package/dist/openapi/models/AuthErrorType.js +1 -1
  32. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
  33. package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
  34. package/dist/openapi/models/AuthenticatedIdentity.d.ts +1 -1
  35. package/dist/openapi/models/AuthenticatedIdentity.js +1 -1
  36. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  37. package/dist/openapi/models/AvailabilityValue.js +1 -1
  38. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  39. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  40. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  41. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  42. package/dist/openapi/models/BillingCheckoutRequest.d.ts +1 -1
  43. package/dist/openapi/models/BillingCheckoutRequest.js +1 -1
  44. package/dist/openapi/models/BillingCheckoutSession.d.ts +1 -1
  45. package/dist/openapi/models/BillingCheckoutSession.js +1 -1
  46. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +1 -1
  47. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +1 -1
  48. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  49. package/dist/openapi/models/CallbackEventType.js +1 -1
  50. package/dist/openapi/models/CancelAccountDeletion200Response.d.ts +1 -1
  51. package/dist/openapi/models/CancelAccountDeletion200Response.js +1 -1
  52. package/dist/openapi/models/CancelAccountDeletion200ResponseData.d.ts +1 -1
  53. package/dist/openapi/models/CancelAccountDeletion200ResponseData.js +1 -1
  54. package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
  55. package/dist/openapi/models/CapabilityCondition.js +1 -1
  56. package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
  57. package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
  58. package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
  59. package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
  60. package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
  61. package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
  62. package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
  63. package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
  64. package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
  65. package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
  66. package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
  67. package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
  68. package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
  69. package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
  70. package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
  71. package/dist/openapi/models/CapabilityConstraint.js +1 -1
  72. package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
  73. package/dist/openapi/models/CapabilityInputSpec.js +1 -1
  74. package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
  75. package/dist/openapi/models/CapabilityProduces.js +1 -1
  76. package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
  77. package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
  78. package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
  79. package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
  80. package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
  81. package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
  82. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  83. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  84. package/dist/openapi/models/CheckoutSessionStatusResponse.d.ts +1 -1
  85. package/dist/openapi/models/CheckoutSessionStatusResponse.js +1 -1
  86. package/dist/openapi/models/CheckoutSessionStatusResponseData.d.ts +1 -1
  87. package/dist/openapi/models/CheckoutSessionStatusResponseData.js +1 -1
  88. package/dist/openapi/models/CodegenSource.d.ts +1 -1
  89. package/dist/openapi/models/CodegenSource.js +1 -1
  90. package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
  91. package/dist/openapi/models/CodegenSourceInput.js +1 -1
  92. package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
  93. package/dist/openapi/models/CodegenSourceJob.js +1 -1
  94. package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
  95. package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
  96. package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
  97. package/dist/openapi/models/CodegenSourceOperation.js +1 -1
  98. package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
  99. package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
  100. package/dist/openapi/models/CompositionPlan.d.ts +1 -1
  101. package/dist/openapi/models/CompositionPlan.js +1 -1
  102. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  103. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  104. package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
  105. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  106. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  107. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  108. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  109. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  110. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  111. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  112. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  113. package/dist/openapi/models/ConnectionSource.js +1 -1
  114. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  115. package/dist/openapi/models/ContactRequest.js +1 -1
  116. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  117. package/dist/openapi/models/ContactSubject.js +1 -1
  118. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  119. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  120. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  121. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  122. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  123. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  124. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  125. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  126. package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +1 -1
  127. package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +1 -1
  128. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  129. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  130. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  131. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  132. package/dist/openapi/models/CreateWorkflow401Response.d.ts +1 -1
  133. package/dist/openapi/models/CreateWorkflow401Response.js +1 -1
  134. package/dist/openapi/models/CreateWorkflow403Response.d.ts +4 -1
  135. package/dist/openapi/models/CreateWorkflow403Response.js +6 -1
  136. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  137. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  138. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  139. package/dist/openapi/models/CreditTransaction.js +1 -1
  140. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  141. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  142. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  143. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  144. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  145. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  146. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  147. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  148. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  149. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  150. package/dist/openapi/models/Delivery.d.ts +1 -1
  151. package/dist/openapi/models/Delivery.js +1 -1
  152. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  153. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  154. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  155. package/dist/openapi/models/DeliveryPlan.js +1 -1
  156. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  157. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  158. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  159. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  160. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  161. package/dist/openapi/models/DeliverySelection.js +1 -1
  162. package/dist/openapi/models/DownloadBundle.d.ts +1 -1
  163. package/dist/openapi/models/DownloadBundle.js +1 -1
  164. package/dist/openapi/models/DroppedOption.d.ts +1 -1
  165. package/dist/openapi/models/DroppedOption.js +1 -1
  166. package/dist/openapi/models/EmailNotify.d.ts +1 -1
  167. package/dist/openapi/models/EmailNotify.js +1 -1
  168. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  169. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  170. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  171. package/dist/openapi/models/EndpointProjection.js +1 -1
  172. package/dist/openapi/models/EndpointProjectionServersInner.d.ts +1 -1
  173. package/dist/openapi/models/EndpointProjectionServersInner.js +1 -1
  174. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  175. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  176. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  177. package/dist/openapi/models/EstimateQuality.js +1 -1
  178. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  179. package/dist/openapi/models/EstimateRange.js +1 -1
  180. package/dist/openapi/models/ExportAccountData200Response.d.ts +1 -1
  181. package/dist/openapi/models/ExportAccountData200Response.js +1 -1
  182. package/dist/openapi/models/ExportAccountData200ResponseData.d.ts +1 -1
  183. package/dist/openapi/models/ExportAccountData200ResponseData.js +1 -1
  184. package/dist/openapi/models/ExportAccountData200ResponseDataBilling.d.ts +1 -1
  185. package/dist/openapi/models/ExportAccountData200ResponseDataBilling.js +1 -1
  186. package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.d.ts +1 -1
  187. package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.js +1 -1
  188. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  189. package/dist/openapi/models/ExternalDestination.js +1 -1
  190. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  191. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  192. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  193. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  194. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  195. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  196. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  197. package/dist/openapi/models/ExternalImportToken.js +1 -1
  198. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  199. package/dist/openapi/models/ExternalSource.js +1 -1
  200. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  201. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  202. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  203. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  204. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  205. package/dist/openapi/models/FeatureViolation.js +1 -1
  206. package/dist/openapi/models/GetProfile200Response.d.ts +1 -1
  207. package/dist/openapi/models/GetProfile200Response.js +1 -1
  208. package/dist/openapi/models/GetProfile200ResponseData.d.ts +1 -1
  209. package/dist/openapi/models/GetProfile200ResponseData.js +1 -1
  210. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  211. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  212. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  213. package/dist/openapi/models/JobDefinition.js +1 -1
  214. package/dist/openapi/models/JobDownload.d.ts +1 -1
  215. package/dist/openapi/models/JobDownload.js +1 -1
  216. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  217. package/dist/openapi/models/JobInputV2.js +1 -1
  218. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  219. package/dist/openapi/models/JobMediaClass.js +1 -1
  220. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  221. package/dist/openapi/models/JobOutputSource.js +1 -1
  222. package/dist/openapi/models/JobResponse.d.ts +1 -1
  223. package/dist/openapi/models/JobResponse.js +1 -1
  224. package/dist/openapi/models/JobStatus.d.ts +1 -1
  225. package/dist/openapi/models/JobStatus.js +1 -1
  226. package/dist/openapi/models/JobType.d.ts +1 -1
  227. package/dist/openapi/models/JobType.js +1 -1
  228. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  229. package/dist/openapi/models/LivenessResponse.js +1 -1
  230. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  231. package/dist/openapi/models/LoginUser200Response.js +1 -1
  232. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  233. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  234. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  235. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  236. package/dist/openapi/models/LoginUser401Response.d.ts +1 -1
  237. package/dist/openapi/models/LoginUser401Response.js +1 -1
  238. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  239. package/dist/openapi/models/LoginUserRequest.js +1 -1
  240. package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
  241. package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
  242. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
  243. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
  244. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  245. package/dist/openapi/models/MetadataResponse.js +1 -1
  246. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  247. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  248. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  249. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  250. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  251. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  252. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  253. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  254. package/dist/openapi/models/MimeGroupSchema.d.ts +38 -1
  255. package/dist/openapi/models/MimeGroupSchema.js +3 -1
  256. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  257. package/dist/openapi/models/MultiInputSource.js +1 -1
  258. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  259. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  260. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  261. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  262. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  263. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  264. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  265. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  266. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  267. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  268. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  269. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  270. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  271. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  272. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  273. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  274. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  275. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  276. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  277. package/dist/openapi/models/MultipartPartListing.js +1 -1
  278. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  279. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  280. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  281. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  282. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  283. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  284. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  285. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  286. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  287. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  288. package/dist/openapi/models/NotifyConfig.d.ts +1 -1
  289. package/dist/openapi/models/NotifyConfig.js +1 -1
  290. package/dist/openapi/models/OperationCapability.d.ts +1 -1
  291. package/dist/openapi/models/OperationCapability.js +1 -1
  292. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  293. package/dist/openapi/models/OperationDefinition.js +1 -1
  294. package/dist/openapi/models/OperationDownload.d.ts +1 -1
  295. package/dist/openapi/models/OperationDownload.js +1 -1
  296. package/dist/openapi/models/OperationInputModel.d.ts +1 -1
  297. package/dist/openapi/models/OperationInputModel.js +1 -1
  298. package/dist/openapi/models/OperationMessageParamsValue.d.ts +1 -1
  299. package/dist/openapi/models/OperationMessageParamsValue.js +1 -1
  300. package/dist/openapi/models/OperationResponse.d.ts +1 -1
  301. package/dist/openapi/models/OperationResponse.js +1 -1
  302. package/dist/openapi/models/OperationResult.d.ts +1 -1
  303. package/dist/openapi/models/OperationResult.js +1 -1
  304. package/dist/openapi/models/OperationResultMetadata.d.ts +1 -1
  305. package/dist/openapi/models/OperationResultMetadata.js +1 -1
  306. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  307. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  308. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  309. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  310. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  311. package/dist/openapi/models/OperationStatus.js +1 -1
  312. package/dist/openapi/models/OperationType.d.ts +1 -1
  313. package/dist/openapi/models/OperationType.js +1 -1
  314. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  315. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  316. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  317. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  318. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  319. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  320. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  321. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  322. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  323. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  324. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +1 -1
  325. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +1 -1
  326. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  327. package/dist/openapi/models/OptionSchema.js +1 -1
  328. package/dist/openapi/models/OutputProperties.d.ts +1 -1
  329. package/dist/openapi/models/OutputProperties.js +1 -1
  330. package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
  331. package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
  332. package/dist/openapi/models/PerClassAvailabilityEntry.d.ts +1 -1
  333. package/dist/openapi/models/PerClassAvailabilityEntry.js +1 -1
  334. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  335. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  336. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  337. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  338. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  339. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  340. package/dist/openapi/models/ProbePendingResponse.d.ts +1 -1
  341. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  342. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  343. package/dist/openapi/models/ProcessingClass.js +1 -1
  344. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  345. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  346. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  347. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  348. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  349. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  350. package/dist/openapi/models/ProcessingClassEntryInputUniformity.d.ts +1 -1
  351. package/dist/openapi/models/ProcessingClassEntryInputUniformity.js +1 -1
  352. package/dist/openapi/models/ProcessingClassEntryResolutionBands.d.ts +1 -1
  353. package/dist/openapi/models/ProcessingClassEntryResolutionBands.js +1 -1
  354. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  355. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  356. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  357. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  358. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  359. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  360. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  361. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  362. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  363. package/dist/openapi/models/ProcessingPlan.js +1 -1
  364. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  365. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  366. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  367. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  368. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  369. package/dist/openapi/models/ReadinessResponse.js +1 -1
  370. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  371. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  372. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  373. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  374. package/dist/openapi/models/RequestAccountDeletion200Response.d.ts +1 -1
  375. package/dist/openapi/models/RequestAccountDeletion200Response.js +1 -1
  376. package/dist/openapi/models/RequestAccountDeletion200ResponseData.d.ts +1 -1
  377. package/dist/openapi/models/RequestAccountDeletion200ResponseData.js +1 -1
  378. package/dist/openapi/models/RequestAccountDeletionRequest.d.ts +1 -1
  379. package/dist/openapi/models/RequestAccountDeletionRequest.js +1 -1
  380. package/dist/openapi/models/ResendVerificationEmailRequest.d.ts +1 -1
  381. package/dist/openapi/models/ResendVerificationEmailRequest.js +1 -1
  382. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  383. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  384. package/dist/openapi/models/ResolutionBand.d.ts +1 -1
  385. package/dist/openapi/models/ResolutionBand.js +1 -1
  386. package/dist/openapi/models/ResolutionBandCeiling.d.ts +1 -1
  387. package/dist/openapi/models/ResolutionBandCeiling.js +1 -1
  388. package/dist/openapi/models/ResolutionBandCeilingConstraints.d.ts +1 -1
  389. package/dist/openapi/models/ResolutionBandCeilingConstraints.js +1 -1
  390. package/dist/openapi/models/ResolutionBandCeilingDerivation.d.ts +1 -1
  391. package/dist/openapi/models/ResolutionBandCeilingDerivation.js +1 -1
  392. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  393. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  394. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  395. package/dist/openapi/models/RetryResponse.js +1 -1
  396. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  397. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  398. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  399. package/dist/openapi/models/SseCompletionBase.js +1 -1
  400. package/dist/openapi/models/SseConnectionLimitResponse.d.ts +1 -1
  401. package/dist/openapi/models/SseConnectionLimitResponse.js +1 -1
  402. package/dist/openapi/models/SseEventType.d.ts +1 -1
  403. package/dist/openapi/models/SseEventType.js +1 -1
  404. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  405. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  406. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  407. package/dist/openapi/models/SseJobFailedData.js +1 -1
  408. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  409. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  410. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  411. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  412. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  413. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  414. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  415. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  416. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  417. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  418. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  419. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  420. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  421. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  422. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  423. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  424. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  425. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  426. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  427. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  428. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  429. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  430. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  431. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  432. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  433. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  434. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  435. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  436. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  437. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  438. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  439. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  440. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  441. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  442. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  443. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  444. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  445. package/dist/openapi/models/UploadFile403Response.js +1 -1
  446. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  447. package/dist/openapi/models/UploadFile422Response.js +1 -1
  448. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  449. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  450. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  451. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  452. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  453. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  454. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  455. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  456. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  457. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  458. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  459. package/dist/openapi/models/UploadResponse.js +1 -1
  460. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  461. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  462. package/dist/openapi/models/UploadSource.d.ts +1 -1
  463. package/dist/openapi/models/UploadSource.js +1 -1
  464. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  465. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  466. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  467. package/dist/openapi/models/UploadThresholds.js +1 -1
  468. package/dist/openapi/models/UserTier.d.ts +1 -1
  469. package/dist/openapi/models/UserTier.js +1 -1
  470. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  471. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  472. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  473. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  474. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  475. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  476. package/dist/openapi/models/WarningType.d.ts +1 -1
  477. package/dist/openapi/models/WarningType.js +1 -1
  478. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  479. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  480. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  481. package/dist/openapi/models/WebhookPayload.js +1 -1
  482. package/dist/openapi/models/WorkflowArchiveResponse.d.ts +1 -1
  483. package/dist/openapi/models/WorkflowArchiveResponse.js +1 -1
  484. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.d.ts +1 -1
  485. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.js +1 -1
  486. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  487. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  488. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  489. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  490. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  491. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  492. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  493. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  494. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  495. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  496. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  497. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  498. package/dist/openapi/models/WorkflowCreditSummary.d.ts +1 -1
  499. package/dist/openapi/models/WorkflowCreditSummary.js +1 -1
  500. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  501. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  502. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  503. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  504. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  505. package/dist/openapi/models/WorkflowEdge.js +1 -1
  506. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  507. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  508. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  509. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  510. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  511. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  512. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  513. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  514. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  515. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  516. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  517. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  518. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  519. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  520. package/dist/openapi/models/WorkflowRestoreResponse.d.ts +1 -1
  521. package/dist/openapi/models/WorkflowRestoreResponse.js +1 -1
  522. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.d.ts +1 -1
  523. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.js +1 -1
  524. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  525. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  526. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  527. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  528. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  529. package/dist/openapi/models/WorkflowSource.js +1 -1
  530. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  531. package/dist/openapi/models/WorkflowStatus.js +1 -1
  532. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  533. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  534. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  535. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  536. package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
  537. package/dist/openapi/models/WorkflowSummary.js +1 -1
  538. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  539. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  540. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  541. package/dist/openapi/models/WorkflowWarning.js +1 -1
  542. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  543. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  544. package/dist/openapi/models/index.d.ts +1 -0
  545. package/dist/openapi/models/index.js +1 -0
  546. package/dist/openapi/runtime.d.ts +1 -1
  547. package/dist/openapi/runtime.js +1 -1
  548. package/openapi/README.md +1 -1
  549. package/openapi/api.yaml +213 -37
  550. package/operation-capabilities/operation-capabilities.json +1 -1
  551. package/operations/schemas/compress.yaml +54 -26
  552. package/operations/schemas/merge.yaml +22 -1
  553. package/package.json +6 -4
package/README.md CHANGED
@@ -5,8 +5,8 @@
5
5
 
6
6
  | | |
7
7
  |---|---|
8
- | Package version | `0.81.0` |
9
- | Generated from spec | **`v2.216.0`** |
8
+ | Package version | `0.83.0` |
9
+ | Generated from spec | **`v2.218.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.216.0"
1217
+ "schema_version": "2.218.0"
1218
1218
  }
@@ -260,5 +260,5 @@
260
260
  "source_op": "compress"
261
261
  }
262
262
  },
263
- "schema_version": "2.216.0"
263
+ "schema_version": "2.218.0"
264
264
  }
@@ -0,0 +1,67 @@
1
+ # Anonymous (account-less) policy — the ONE declaration of what a guest may do
2
+ # (ticket UQ7zROTr; sdks u6Q9oxuI follow-up).
3
+ #
4
+ # 2.0.0 (card 43dDKeEh; owner decision + hub ruling 2026-09-26 21:26): guests
5
+ # move from "30 image jobs per day" to a CREDIT allowance, for all file types,
6
+ # with video capped at 60 s. Shape agreed with api (msg cc5bedfe). BREAKING for
7
+ # readers of 1.0.0: `upload.mime_prefixes` and `quota.workflow_creates_per_ip_per_24h`
8
+ # are gone; read `upload.media` and `allowance` instead.
9
+ #
10
+ # Read by: the SDKs (gisl.anonymous() / Gisl::anonymous() pin their surface to
11
+ # it), api (pins its constants to it: AnonymousOperationPolicy,
12
+ # AnonymousUploadPolicy, TieredRateLimiterService), and
13
+ # tests/test_anonymous_policy.py (holds the relations below).
14
+ #
15
+ # The refusals are declared in openapi `POST /api/workflows` 403
16
+ # (AnonymousOperationNotAllowedResponse / AnonymousQuotaExhaustedResponse /
17
+ # AnonymousLimitExceededResponse); this file declares the
18
+ # POLICY that produces them, so a client can predict the refusal instead of
19
+ # learning it.
20
+
21
+ schema_version: "2.0.0"
22
+
23
+ # Operations an anonymous caller may request at workflow-create. Anything else
24
+ # answers 403 `anonymous_operation_not_allowed`.
25
+ operations_allowed: [compress, convert, thumbnail]
26
+
27
+ upload:
28
+ # ALL file types: every MIME the upload endpoints accept (was images only).
29
+ media: all
30
+ # THE guest per-file cap: 10,000,000 B, the single-shot endpoint's own maximum
31
+ # (openapi UploadThresholds.single_shot_max_bytes). Guests upload single-shot
32
+ # only, so a larger cap would be unreachable (xOaNkDll).
33
+ max_file_bytes: 10000000
34
+ # Multipart initiate/status/presign/keepalive require authentication (api
35
+ # security.yaml + a defensive 401 in initiate); complete is unreachable
36
+ # without an initiated session.
37
+ multipart_allowed: false
38
+
39
+ video:
40
+ # Measured on the UPLOAD PROBE's duration. A guest video create waits for the
41
+ # probe (the existing probe-pending gate), then is refused above this with
42
+ # 403 `anonymous_limit_exceeded` (limit `video_duration_seconds`).
43
+ max_duration_seconds: 60
44
+ exceeded_error_type: anonymous_limit_exceeded
45
+
46
+ allowance:
47
+ # Credits per client IP over a ROLLING 24 h (a sliding window, so there is no
48
+ # calendar-day or timezone edge). Identity is the IP alone: a funnel nudge,
49
+ # not a security boundary (NAT shares it).
50
+ credits: 30
51
+ window: rolling_24h
52
+ identity: ip
53
+ # Priced with the same per-operation weights as a signed-in caller
54
+ # (`operation_weights.yaml`), charged at workflow create against the IP's
55
+ # rolling ledger, and released on failure as for a signed-in reservation.
56
+ priced_by: operation_weights
57
+ # A create whose cost would cross the allowance is refused WHOLE (no partial
58
+ # run) with 403 `anonymous_quota_exhausted`, carrying `allowance`,
59
+ # `remaining` and `cost`. `Retry-After` (seconds until enough of the window
60
+ # frees up) is sent only when `cost <= credits`; a request costing more than
61
+ # the whole allowance can never fit and gets none.
62
+ exhausted_error_type: anonymous_quota_exhausted
63
+
64
+ # Per-minute rate limits (429 when exceeded), unchanged from 1.0.0.
65
+ per_minute:
66
+ upload: 5
67
+ workflow_create: 2
@@ -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
@@ -5818,21 +5849,36 @@ components:
5818
5849
  type: string
5819
5850
  description: |
5820
5851
  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
5852
+ (`LongFormJobMessage.processing_class`). Never `short_form` /
5853
+ `blocked`: those exist only on the upload-probe response and HTTP plan
5854
+ surfaces. The launcher forks on this field together with
5855
+ `operation_type`; do not confuse it with the backend worker identity,
5856
+ which stays off the wire per `schemas/FORMAT.md` §F8.
5857
+
5858
+ - `long_form`: every long-form job except the one below.
5859
+ - `long_form_concat` (card
5860
+ [`JzS0lkSr`](https://trello.com/c/JzS0lkSr), api `m9Bstzaa`): a
5861
+ STREAM-COPY join, valid ONLY with `operation_type: merge` (enforced on
5862
+ `LongFormJobMessage`). The API sends it for (a) the stream-copy rejoin
5863
+ of a long-form fan-out and (b) a user long-form merge with
5864
+ `re_encode_mode: never`. The launcher routes the pair
5865
+ `(merge, long_form_concat)` to its small stream-copy task instead of
5866
+ the merge re-encode task. Any other pair would fall through to that
5867
+ operation's default task with a class it does not know, which is why
5868
+ the pairing is a schema rule and not a convention.
5869
+
5870
+ Named + `enum`, not `const`: the repo's proven typed-codegen form
5871
+ (mirrors `JobInputRole` / `ReEncodeDecision`); `const` degraded to an
5872
+ unconstrained `String` in SDK generators. Lifted from inline at
5831
5873
  `LongFormJobMessage.processing_class` per ticket
5832
- [`A3DyuYUd`](https://trello.com/c/A3DyuYUd). Single-member enum
5833
- validates identically to the prior `const long_form`.
5874
+ [`A3DyuYUd`](https://trello.com/c/A3DyuYUd).
5875
+ # CLOSED (codex #625): a routing discriminator. An unknown class would
5876
+ # select an unintended launcher path, so a new value reaches consumers
5877
+ # deliberately, never by tolerance.
5878
+ x-enum-openness: closed
5834
5879
  enum:
5835
5880
  - long_form
5881
+ - long_form_concat
5836
5882
 
5837
5883
  ProgressStatus:
5838
5884
  type: string
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "capabilities_profile": "baseline",
3
- "capabilities_version": 227,
3
+ "capabilities_version": 232,
4
4
  "endpoints": {
5
5
  "DELETE /api/auth/account": {
6
6
  "auth": "required",
@@ -251,7 +251,7 @@
251
251
  "required_tier": null
252
252
  },
253
253
  "POST /api/operations/{id}/retry": {
254
- "auth": "optional",
254
+ "auth": "required",
255
255
  "availability": "stable",
256
256
  "identity_scoped": true,
257
257
  "operation_id": "retryOperation",
@@ -265,14 +265,14 @@
265
265
  "required_tier": null
266
266
  },
267
267
  "POST /api/uploads/multipart/complete": {
268
- "auth": "optional",
268
+ "auth": "required",
269
269
  "availability": "stable",
270
270
  "identity_scoped": true,
271
271
  "operation_id": "multipartComplete",
272
272
  "required_tier": null
273
273
  },
274
274
  "POST /api/uploads/multipart/initiate": {
275
- "auth": "optional",
275
+ "auth": "required",
276
276
  "availability": "stable",
277
277
  "identity_scoped": false,
278
278
  "operation_id": "multipartInitiate",
@@ -1305,7 +1305,7 @@
1305
1305
  },
1306
1306
  "image_avif": {
1307
1307
  "ceiling_basis": {
1308
- "max_input_size_bytes": "unproven"
1308
+ "max_input_size_bytes": "proven"
1309
1309
  },
1310
1310
  "max_input_size_bytes": 20971520,
1311
1311
  "max_output_pixels": 16000000,
@@ -1479,9 +1479,11 @@
1479
1479
  },
1480
1480
  "image_jpeg": {
1481
1481
  "ceiling_basis": {
1482
- "max_input_size_bytes": "unproven"
1482
+ "max_input_pixels": "proven",
1483
+ "max_input_size_bytes": "proven"
1483
1484
  },
1484
- "max_input_size_bytes": 524288000,
1485
+ "max_input_pixels": 90000000,
1486
+ "max_input_size_bytes": 370000000,
1485
1487
  "max_output_pixels": 16000000,
1486
1488
  "mimes": [
1487
1489
  "image/jpeg"
@@ -1675,9 +1677,11 @@
1675
1677
  },
1676
1678
  "image_png": {
1677
1679
  "ceiling_basis": {
1678
- "max_input_size_bytes": "unproven"
1680
+ "max_input_pixels": "unproven",
1681
+ "max_input_size_bytes": "proven"
1679
1682
  },
1680
- "max_input_size_bytes": 524288000,
1683
+ "max_input_pixels": 100000000,
1684
+ "max_input_size_bytes": 360000000,
1681
1685
  "max_output_pixels": 16000000,
1682
1686
  "mimes": [
1683
1687
  "image/png"
@@ -1806,7 +1810,7 @@
1806
1810
  "ceiling_basis": {
1807
1811
  "max_input_size_bytes": "unproven"
1808
1812
  },
1809
- "max_input_size_bytes": 524288000,
1813
+ "max_input_size_bytes": 1000000,
1810
1814
  "mimes": [
1811
1815
  "image/svg+xml"
1812
1816
  ],
@@ -1851,9 +1855,11 @@
1851
1855
  },
1852
1856
  "image_webp": {
1853
1857
  "ceiling_basis": {
1854
- "max_input_size_bytes": "unproven"
1858
+ "max_input_pixels": "proven",
1859
+ "max_input_size_bytes": "proven"
1855
1860
  },
1856
- "max_input_size_bytes": 524288000,
1861
+ "max_input_pixels": 75000000,
1862
+ "max_input_size_bytes": 270000000,
1857
1863
  "max_output_pixels": 16000000,
1858
1864
  "mimes": [
1859
1865
  "image/webp"
@@ -3568,7 +3574,7 @@
3568
3574
  },
3569
3575
  "normalize_audio": {
3570
3576
  "default": false,
3571
- "description": "Normalize audio levels across all clips. Off by default (the server applies the default when the option is omitted). Turning it on re-encodes every clip, which lowers the limit: about 120 seconds of combined 720p video was measured to fit, instead of 5 minutes. NOT available on the long-form path, which forces loudness normalisation off.",
3577
+ "description": "Normalize audio levels across all clips. Off by default (the server applies the default when the option is omitted). Known issue: at each join of video clips, audio may lead video by up to about 40 ms with the default (`false`); the offset is per join and does not add up across joins. With `true`, an offset of about 45 ms was measured at a single join; merges with more joins are not yet measured on that setting. Turning it on re-encodes every clip, which lowers the limit: about 120 seconds of combined 720p video was measured to fit, instead of 5 minutes. NOT available on the long-form path, which forces loudness normalisation off.",
3572
3578
  "per_class_availability": {
3573
3579
  "long_form_re_encode": {
3574
3580
  "availability": "planned"
@@ -5492,7 +5498,7 @@
5492
5498
  "sole_op": true
5493
5499
  }
5494
5500
  },
5495
- "schema_version": "2.216.0",
5501
+ "schema_version": "2.218.0",
5496
5502
  "source_commit": null,
5497
5503
  "user_tier": null,
5498
5504
  "workflow_features": {
@@ -1630,7 +1630,7 @@
1630
1630
  },
1631
1631
  "image_avif": {
1632
1632
  "ceiling_basis": {
1633
- "max_input_size_bytes": "unproven"
1633
+ "max_input_size_bytes": "proven"
1634
1634
  },
1635
1635
  "max_input_size_bytes": 20971520,
1636
1636
  "max_output_pixels": 16000000,
@@ -1899,9 +1899,11 @@
1899
1899
  },
1900
1900
  "image_jpeg": {
1901
1901
  "ceiling_basis": {
1902
- "max_input_size_bytes": "unproven"
1902
+ "max_input_pixels": "proven",
1903
+ "max_input_size_bytes": "proven"
1903
1904
  },
1904
- "max_input_size_bytes": 524288000,
1905
+ "max_input_pixels": 90000000,
1906
+ "max_input_size_bytes": 370000000,
1905
1907
  "max_output_pixels": 16000000,
1906
1908
  "media_group": "image",
1907
1909
  "mimes": [
@@ -2203,9 +2205,11 @@
2203
2205
  },
2204
2206
  "image_png": {
2205
2207
  "ceiling_basis": {
2206
- "max_input_size_bytes": "unproven"
2208
+ "max_input_pixels": "unproven",
2209
+ "max_input_size_bytes": "proven"
2207
2210
  },
2208
- "max_input_size_bytes": 524288000,
2211
+ "max_input_pixels": 100000000,
2212
+ "max_input_size_bytes": 360000000,
2209
2213
  "max_output_pixels": 16000000,
2210
2214
  "media_group": "image",
2211
2215
  "mimes": [
@@ -2411,7 +2415,7 @@
2411
2415
  "ceiling_basis": {
2412
2416
  "max_input_size_bytes": "unproven"
2413
2417
  },
2414
- "max_input_size_bytes": 524288000,
2418
+ "max_input_size_bytes": 1000000,
2415
2419
  "media_group": "image",
2416
2420
  "mimes": [
2417
2421
  "image/svg+xml"
@@ -2497,9 +2501,11 @@
2497
2501
  },
2498
2502
  "image_webp": {
2499
2503
  "ceiling_basis": {
2500
- "max_input_size_bytes": "unproven"
2504
+ "max_input_pixels": "proven",
2505
+ "max_input_size_bytes": "proven"
2501
2506
  },
2502
- "max_input_size_bytes": 524288000,
2507
+ "max_input_pixels": 75000000,
2508
+ "max_input_size_bytes": 270000000,
2503
2509
  "max_output_pixels": 16000000,
2504
2510
  "media_group": "image",
2505
2511
  "mimes": [
@@ -4954,7 +4960,7 @@
4954
4960
  },
4955
4961
  "normalize_audio": {
4956
4962
  "default": false,
4957
- "description": "Normalize audio levels across all clips. Off by default (the server applies the default when the option is omitted). Turning it on re-encodes every clip, which lowers the limit: about 120 seconds of combined 720p video was measured to fit, instead of 5 minutes. NOT available on the long-form path, which forces loudness normalisation off.",
4963
+ "description": "Normalize audio levels across all clips. Off by default (the server applies the default when the option is omitted). Known issue: at each join of video clips, audio may lead video by up to about 40 ms with the default (`false`); the offset is per join and does not add up across joins. With `true`, an offset of about 45 ms was measured at a single join; merges with more joins are not yet measured on that setting. Turning it on re-encodes every clip, which lowers the limit: about 120 seconds of combined 720p video was measured to fit, instead of 5 minutes. NOT available on the long-form path, which forces loudness normalisation off.",
4958
4964
  "origin": "contract",
4959
4965
  "per_class_availability": {
4960
4966
  "long_form_re_encode": {
@@ -7637,7 +7643,7 @@
7637
7643
  }
7638
7644
  },
7639
7645
  "preset_config_hash": "sha256:354814f7906f85be6a6ca5ede6c0722c83cdc058fd658a9bb2b0996520466c6d",
7640
- "schema_version": "2.216.0",
7641
- "sdk_spec_version": "2.9.0",
7642
- "source_hash": "sha256:4aacfbef49e0c457e3b823a799ce9f0fded05ecb26cc3086e7cfcef61e0dbffb"
7646
+ "schema_version": "2.218.0",
7647
+ "sdk_spec_version": "2.11.0",
7648
+ "source_hash": "sha256:40f302d5663d71e4f374adb76d38db722d0390b45a3ac533690b5f84d497443b"
7643
7649
  }
@@ -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;
@@ -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.216.0
5
+ * The version of the OpenAPI document: 2.218.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.216.0
7
+ * The version of the OpenAPI document: 2.218.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.216.0
5
+ * The version of the OpenAPI document: 2.218.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.216.0
7
+ * The version of the OpenAPI document: 2.218.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.216.0
5
+ * The version of the OpenAPI document: 2.218.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.216.0
7
+ * The version of the OpenAPI document: 2.218.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.216.0
5
+ * The version of the OpenAPI document: 2.218.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.216.0
7
+ * The version of the OpenAPI document: 2.218.0
8
8
  *
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).