@giveitsmaller/contracts 0.89.0 → 0.91.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 (569) hide show
  1. package/README.md +2 -2
  2. package/accepted-options/accepted-options.json +10 -1
  3. package/accepted-options/image-output-routes.json +1 -1
  4. package/asyncapi/events.yaml +16 -5
  5. package/availability/availability.json +43 -6
  6. package/code-builder/code-builder-metadata.json +49 -5
  7. package/dist/asyncapi/UploadProbeStatus.d.ts +2 -1
  8. package/dist/asyncapi/UploadProbeStatus.js +1 -0
  9. package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
  10. package/dist/openapi/models/AccountLimitEntry.js +1 -1
  11. package/dist/openapi/models/AccountLimits.d.ts +1 -1
  12. package/dist/openapi/models/AccountLimits.js +1 -1
  13. package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
  14. package/dist/openapi/models/AccountLimitsLimits.js +1 -1
  15. package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
  16. package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
  17. package/dist/openapi/models/AnonymousLimitExceededResponse.d.ts +1 -1
  18. package/dist/openapi/models/AnonymousLimitExceededResponse.js +1 -1
  19. package/dist/openapi/models/AnonymousOperationNotAllowedResponse.d.ts +1 -1
  20. package/dist/openapi/models/AnonymousOperationNotAllowedResponse.js +1 -1
  21. package/dist/openapi/models/AnonymousQuotaExhaustedResponse.d.ts +1 -1
  22. package/dist/openapi/models/AnonymousQuotaExhaustedResponse.js +1 -1
  23. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  24. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  25. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  26. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  27. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  28. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  29. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  30. package/dist/openapi/models/AuthErrorType.js +1 -1
  31. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
  32. package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
  33. package/dist/openapi/models/AuthenticatedIdentity.d.ts +1 -1
  34. package/dist/openapi/models/AuthenticatedIdentity.js +1 -1
  35. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  36. package/dist/openapi/models/AvailabilityValue.js +1 -1
  37. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  38. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  39. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  40. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  41. package/dist/openapi/models/BillingCheckoutRequest.d.ts +1 -1
  42. package/dist/openapi/models/BillingCheckoutRequest.js +1 -1
  43. package/dist/openapi/models/BillingCheckoutSession.d.ts +1 -1
  44. package/dist/openapi/models/BillingCheckoutSession.js +1 -1
  45. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +1 -1
  46. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +1 -1
  47. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  48. package/dist/openapi/models/CallbackEventType.js +1 -1
  49. package/dist/openapi/models/CancelAccountDeletion200Response.d.ts +1 -1
  50. package/dist/openapi/models/CancelAccountDeletion200Response.js +1 -1
  51. package/dist/openapi/models/CancelAccountDeletion200ResponseData.d.ts +1 -1
  52. package/dist/openapi/models/CancelAccountDeletion200ResponseData.js +1 -1
  53. package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
  54. package/dist/openapi/models/CapabilityCondition.js +1 -1
  55. package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
  56. package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
  57. package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
  58. package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
  59. package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
  60. package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
  61. package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
  62. package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
  63. package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
  64. package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
  65. package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
  66. package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
  67. package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
  68. package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
  69. package/dist/openapi/models/CapabilityConditionOneOf7.d.ts +1 -1
  70. package/dist/openapi/models/CapabilityConditionOneOf7.js +1 -1
  71. package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
  72. package/dist/openapi/models/CapabilityConstraint.js +1 -1
  73. package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
  74. package/dist/openapi/models/CapabilityInputSpec.js +1 -1
  75. package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
  76. package/dist/openapi/models/CapabilityProduces.js +1 -1
  77. package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
  78. package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
  79. package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
  80. package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
  81. package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
  82. package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
  83. package/dist/openapi/models/CeilingBasisValue.d.ts +1 -1
  84. package/dist/openapi/models/CeilingBasisValue.js +1 -1
  85. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  86. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  87. package/dist/openapi/models/CheckoutSessionStatusResponse.d.ts +1 -1
  88. package/dist/openapi/models/CheckoutSessionStatusResponse.js +1 -1
  89. package/dist/openapi/models/CheckoutSessionStatusResponseData.d.ts +1 -1
  90. package/dist/openapi/models/CheckoutSessionStatusResponseData.js +1 -1
  91. package/dist/openapi/models/CodegenSource.d.ts +1 -1
  92. package/dist/openapi/models/CodegenSource.js +1 -1
  93. package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
  94. package/dist/openapi/models/CodegenSourceInput.js +1 -1
  95. package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
  96. package/dist/openapi/models/CodegenSourceJob.js +1 -1
  97. package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
  98. package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
  99. package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
  100. package/dist/openapi/models/CodegenSourceOperation.js +1 -1
  101. package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
  102. package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
  103. package/dist/openapi/models/CompositionPlan.d.ts +1 -1
  104. package/dist/openapi/models/CompositionPlan.js +1 -1
  105. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  106. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  107. package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
  108. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  109. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  110. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  111. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  112. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  113. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  114. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  115. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  116. package/dist/openapi/models/ConnectionSource.js +1 -1
  117. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  118. package/dist/openapi/models/ContactRequest.js +1 -1
  119. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  120. package/dist/openapi/models/ContactSubject.js +1 -1
  121. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  122. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  123. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  124. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  125. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  126. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  127. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  128. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  129. package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +1 -1
  130. package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +1 -1
  131. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  132. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  133. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  134. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  135. package/dist/openapi/models/CreateWorkflow401Response.d.ts +1 -1
  136. package/dist/openapi/models/CreateWorkflow401Response.js +1 -1
  137. package/dist/openapi/models/CreateWorkflow403Response.d.ts +1 -1
  138. package/dist/openapi/models/CreateWorkflow403Response.js +1 -1
  139. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  140. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  141. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  142. package/dist/openapi/models/CreditTransaction.js +1 -1
  143. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  144. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  145. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  146. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  147. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  148. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  149. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  150. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  151. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  152. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  153. package/dist/openapi/models/Delivery.d.ts +1 -1
  154. package/dist/openapi/models/Delivery.js +1 -1
  155. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  156. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  157. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  158. package/dist/openapi/models/DeliveryPlan.js +1 -1
  159. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  160. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  161. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  162. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  163. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  164. package/dist/openapi/models/DeliverySelection.js +1 -1
  165. package/dist/openapi/models/DownloadBundle.d.ts +1 -1
  166. package/dist/openapi/models/DownloadBundle.js +1 -1
  167. package/dist/openapi/models/DroppedOption.d.ts +1 -1
  168. package/dist/openapi/models/DroppedOption.js +1 -1
  169. package/dist/openapi/models/EmailNotify.d.ts +1 -1
  170. package/dist/openapi/models/EmailNotify.js +1 -1
  171. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  172. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  173. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  174. package/dist/openapi/models/EndpointProjection.js +1 -1
  175. package/dist/openapi/models/EndpointProjectionServersInner.d.ts +1 -1
  176. package/dist/openapi/models/EndpointProjectionServersInner.js +1 -1
  177. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  178. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  179. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  180. package/dist/openapi/models/EstimateQuality.js +1 -1
  181. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  182. package/dist/openapi/models/EstimateRange.js +1 -1
  183. package/dist/openapi/models/ExportAccountData200Response.d.ts +1 -1
  184. package/dist/openapi/models/ExportAccountData200Response.js +1 -1
  185. package/dist/openapi/models/ExportAccountData200ResponseData.d.ts +1 -1
  186. package/dist/openapi/models/ExportAccountData200ResponseData.js +1 -1
  187. package/dist/openapi/models/ExportAccountData200ResponseDataBilling.d.ts +1 -1
  188. package/dist/openapi/models/ExportAccountData200ResponseDataBilling.js +1 -1
  189. package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.d.ts +1 -1
  190. package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.js +1 -1
  191. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  192. package/dist/openapi/models/ExternalDestination.js +1 -1
  193. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  194. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  195. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  196. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  197. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  198. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  199. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  200. package/dist/openapi/models/ExternalImportToken.js +1 -1
  201. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  202. package/dist/openapi/models/ExternalSource.js +1 -1
  203. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  204. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  205. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  206. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  207. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  208. package/dist/openapi/models/FeatureViolation.js +1 -1
  209. package/dist/openapi/models/GetProfile200Response.d.ts +1 -1
  210. package/dist/openapi/models/GetProfile200Response.js +1 -1
  211. package/dist/openapi/models/GetProfile200ResponseData.d.ts +1 -1
  212. package/dist/openapi/models/GetProfile200ResponseData.js +1 -1
  213. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  214. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  215. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  216. package/dist/openapi/models/JobDefinition.js +1 -1
  217. package/dist/openapi/models/JobDownload.d.ts +1 -1
  218. package/dist/openapi/models/JobDownload.js +1 -1
  219. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  220. package/dist/openapi/models/JobInputV2.js +1 -1
  221. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  222. package/dist/openapi/models/JobMediaClass.js +1 -1
  223. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  224. package/dist/openapi/models/JobOutputSource.js +1 -1
  225. package/dist/openapi/models/JobResponse.d.ts +1 -1
  226. package/dist/openapi/models/JobResponse.js +1 -1
  227. package/dist/openapi/models/JobStatus.d.ts +1 -1
  228. package/dist/openapi/models/JobStatus.js +1 -1
  229. package/dist/openapi/models/JobType.d.ts +1 -1
  230. package/dist/openapi/models/JobType.js +1 -1
  231. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  232. package/dist/openapi/models/LivenessResponse.js +1 -1
  233. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  234. package/dist/openapi/models/LoginUser200Response.js +1 -1
  235. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  236. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  237. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  238. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  239. package/dist/openapi/models/LoginUser401Response.d.ts +1 -1
  240. package/dist/openapi/models/LoginUser401Response.js +1 -1
  241. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  242. package/dist/openapi/models/LoginUserRequest.js +1 -1
  243. package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
  244. package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
  245. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
  246. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
  247. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  248. package/dist/openapi/models/MetadataResponse.js +1 -1
  249. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  250. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  251. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  252. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  253. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  254. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  255. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  256. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  257. package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
  258. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  259. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  260. package/dist/openapi/models/MultiInputSource.js +1 -1
  261. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  262. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  263. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  264. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  265. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  266. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  267. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  268. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  269. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  270. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  271. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  272. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  273. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  274. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  275. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  276. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  277. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  278. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  279. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  280. package/dist/openapi/models/MultipartPartListing.js +1 -1
  281. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  282. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  283. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  284. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  285. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  286. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  287. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  288. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  289. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  290. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  291. package/dist/openapi/models/NotifyConfig.d.ts +1 -1
  292. package/dist/openapi/models/NotifyConfig.js +1 -1
  293. package/dist/openapi/models/OperationCapability.d.ts +1 -1
  294. package/dist/openapi/models/OperationCapability.js +1 -1
  295. package/dist/openapi/models/OperationDefinition.d.ts +13 -5
  296. package/dist/openapi/models/OperationDefinition.js +1 -1
  297. package/dist/openapi/models/OperationDownload.d.ts +1 -1
  298. package/dist/openapi/models/OperationDownload.js +1 -1
  299. package/dist/openapi/models/OperationInputModel.d.ts +1 -1
  300. package/dist/openapi/models/OperationInputModel.js +1 -1
  301. package/dist/openapi/models/OperationMessageParamsValue.d.ts +1 -1
  302. package/dist/openapi/models/OperationMessageParamsValue.js +1 -1
  303. package/dist/openapi/models/OperationResponse.d.ts +4 -2
  304. package/dist/openapi/models/OperationResponse.js +1 -1
  305. package/dist/openapi/models/OperationResult.d.ts +1 -1
  306. package/dist/openapi/models/OperationResult.js +1 -1
  307. package/dist/openapi/models/OperationResultMetadata.d.ts +6 -2
  308. package/dist/openapi/models/OperationResultMetadata.js +1 -1
  309. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  310. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  311. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  312. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  313. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  314. package/dist/openapi/models/OperationStatus.js +1 -1
  315. package/dist/openapi/models/OperationType.d.ts +2 -2
  316. package/dist/openapi/models/OperationType.js +2 -2
  317. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  318. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  319. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  320. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  321. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  322. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  323. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  324. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  325. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  326. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  327. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +1 -1
  328. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +1 -1
  329. package/dist/openapi/models/OptionSchema.d.ts +18 -1
  330. package/dist/openapi/models/OptionSchema.js +4 -1
  331. package/dist/openapi/models/OptionSchemaPerValueConstraintsValue.d.ts +32 -0
  332. package/dist/openapi/models/OptionSchemaPerValueConstraintsValue.js +41 -0
  333. package/dist/openapi/models/OutputProperties.d.ts +1 -1
  334. package/dist/openapi/models/OutputProperties.js +1 -1
  335. package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
  336. package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
  337. package/dist/openapi/models/PerClassAvailabilityEntry.d.ts +1 -1
  338. package/dist/openapi/models/PerClassAvailabilityEntry.js +1 -1
  339. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  340. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  341. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  342. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  343. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  344. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  345. package/dist/openapi/models/ProbePendingResponse.d.ts +1 -1
  346. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  347. package/dist/openapi/models/ProbeUpload422Response.d.ts +1 -1
  348. package/dist/openapi/models/ProbeUpload422Response.js +1 -1
  349. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  350. package/dist/openapi/models/ProcessingClass.js +1 -1
  351. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  352. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  353. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  354. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  355. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  356. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  357. package/dist/openapi/models/ProcessingClassEntryInputUniformity.d.ts +1 -1
  358. package/dist/openapi/models/ProcessingClassEntryInputUniformity.js +1 -1
  359. package/dist/openapi/models/ProcessingClassEntryResolutionBands.d.ts +1 -1
  360. package/dist/openapi/models/ProcessingClassEntryResolutionBands.js +1 -1
  361. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  362. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  363. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  364. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  365. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  366. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  367. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  368. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  369. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  370. package/dist/openapi/models/ProcessingPlan.js +1 -1
  371. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  372. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  373. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  374. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  375. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  376. package/dist/openapi/models/ReadinessResponse.js +1 -1
  377. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  378. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  379. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  380. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  381. package/dist/openapi/models/RequestAccountDeletion200Response.d.ts +1 -1
  382. package/dist/openapi/models/RequestAccountDeletion200Response.js +1 -1
  383. package/dist/openapi/models/RequestAccountDeletion200ResponseData.d.ts +1 -1
  384. package/dist/openapi/models/RequestAccountDeletion200ResponseData.js +1 -1
  385. package/dist/openapi/models/RequestAccountDeletionRequest.d.ts +1 -1
  386. package/dist/openapi/models/RequestAccountDeletionRequest.js +1 -1
  387. package/dist/openapi/models/ResendVerificationEmailRequest.d.ts +1 -1
  388. package/dist/openapi/models/ResendVerificationEmailRequest.js +1 -1
  389. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  390. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  391. package/dist/openapi/models/ResolutionBand.d.ts +1 -1
  392. package/dist/openapi/models/ResolutionBand.js +1 -1
  393. package/dist/openapi/models/ResolutionBandCeiling.d.ts +1 -1
  394. package/dist/openapi/models/ResolutionBandCeiling.js +1 -1
  395. package/dist/openapi/models/ResolutionBandCeilingConstraints.d.ts +1 -1
  396. package/dist/openapi/models/ResolutionBandCeilingConstraints.js +1 -1
  397. package/dist/openapi/models/ResolutionBandCeilingDerivation.d.ts +1 -1
  398. package/dist/openapi/models/ResolutionBandCeilingDerivation.js +1 -1
  399. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  400. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  401. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  402. package/dist/openapi/models/RetryResponse.js +1 -1
  403. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  404. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  405. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  406. package/dist/openapi/models/SseCompletionBase.js +1 -1
  407. package/dist/openapi/models/SseConnectionLimitResponse.d.ts +1 -1
  408. package/dist/openapi/models/SseConnectionLimitResponse.js +1 -1
  409. package/dist/openapi/models/SseEventType.d.ts +1 -1
  410. package/dist/openapi/models/SseEventType.js +1 -1
  411. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  412. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  413. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  414. package/dist/openapi/models/SseJobFailedData.js +1 -1
  415. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  416. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  417. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  418. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  419. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  420. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  421. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  422. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  423. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  424. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  425. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  426. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  427. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  428. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  429. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  430. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  431. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  432. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  433. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  434. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  435. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  436. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  437. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  438. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  439. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  440. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  441. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  442. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  443. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  444. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  445. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  446. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  447. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  448. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  449. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  450. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  451. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  452. package/dist/openapi/models/UploadFile403Response.js +1 -1
  453. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  454. package/dist/openapi/models/UploadFile422Response.js +1 -1
  455. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  456. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  457. package/dist/openapi/models/UploadProbeNotApplicableResponse.d.ts +1 -1
  458. package/dist/openapi/models/UploadProbeNotApplicableResponse.js +1 -1
  459. package/dist/openapi/models/UploadProbeNotReadyResponse.d.ts +1 -1
  460. package/dist/openapi/models/UploadProbeNotReadyResponse.js +1 -1
  461. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  462. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  463. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  464. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  465. package/dist/openapi/models/UploadProbeStatus.d.ts +10 -1
  466. package/dist/openapi/models/UploadProbeStatus.js +11 -2
  467. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  468. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  469. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  470. package/dist/openapi/models/UploadResponse.js +1 -1
  471. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  472. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  473. package/dist/openapi/models/UploadSource.d.ts +1 -1
  474. package/dist/openapi/models/UploadSource.js +1 -1
  475. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  476. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  477. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  478. package/dist/openapi/models/UploadThresholds.js +1 -1
  479. package/dist/openapi/models/UserTier.d.ts +1 -1
  480. package/dist/openapi/models/UserTier.js +1 -1
  481. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  482. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  483. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  484. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  485. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  486. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  487. package/dist/openapi/models/WarningType.d.ts +1 -1
  488. package/dist/openapi/models/WarningType.js +1 -1
  489. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  490. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  491. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  492. package/dist/openapi/models/WebhookPayload.js +1 -1
  493. package/dist/openapi/models/WorkflowArchiveResponse.d.ts +1 -1
  494. package/dist/openapi/models/WorkflowArchiveResponse.js +1 -1
  495. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.d.ts +1 -1
  496. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.js +1 -1
  497. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  498. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  499. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  500. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  501. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  502. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  503. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  504. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  505. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  506. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  507. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  508. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  509. package/dist/openapi/models/WorkflowCreditSummary.d.ts +1 -1
  510. package/dist/openapi/models/WorkflowCreditSummary.js +1 -1
  511. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  512. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  513. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  514. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  515. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  516. package/dist/openapi/models/WorkflowEdge.js +1 -1
  517. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  518. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  519. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  520. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  521. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  522. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  523. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  524. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  525. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  526. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  527. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  528. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  529. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  530. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  531. package/dist/openapi/models/WorkflowRestoreResponse.d.ts +1 -1
  532. package/dist/openapi/models/WorkflowRestoreResponse.js +1 -1
  533. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.d.ts +1 -1
  534. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.js +1 -1
  535. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  536. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  537. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  538. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  539. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  540. package/dist/openapi/models/WorkflowSource.js +1 -1
  541. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  542. package/dist/openapi/models/WorkflowStatus.js +1 -1
  543. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  544. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  545. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  546. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  547. package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
  548. package/dist/openapi/models/WorkflowSummary.js +1 -1
  549. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  550. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  551. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  552. package/dist/openapi/models/WorkflowWarning.js +1 -1
  553. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  554. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  555. package/dist/openapi/models/index.d.ts +1 -0
  556. package/dist/openapi/models/index.js +1 -0
  557. package/dist/openapi/runtime.d.ts +1 -1
  558. package/dist/openapi/runtime.js +1 -1
  559. package/dist/operations/compress.d.ts +4 -0
  560. package/dist/operations/compress.metadata.js +14 -0
  561. package/dist/operations/split.metadata.js +2 -2
  562. package/openapi/README.md +1 -1
  563. package/openapi/api.yaml +97 -10
  564. package/operation-capabilities/operation-capabilities.json +2 -32
  565. package/operations/schemas/compress.yaml +43 -0
  566. package/operations/schemas/convert.yaml +10 -0
  567. package/operations/schemas/split.yaml +5 -4
  568. package/operations/schemas/thumbnail.yaml +14 -3
  569. package/package.json +3 -3
package/README.md CHANGED
@@ -5,8 +5,8 @@
5
5
 
6
6
  | | |
7
7
  |---|---|
8
- | Package version | `0.89.0` |
9
- | Generated from spec | **`v2.225.0`** |
8
+ | Package version | `0.91.0` |
9
+ | Generated from spec | **`v2.229.0`** |
10
10
 
11
11
  ## Two version lines, and they are not comparable
12
12
 
@@ -194,6 +194,15 @@
194
194
  },
195
195
  "output_format_option": null
196
196
  },
197
+ "document_pdf": {
198
+ "accepted_options": {
199
+ "*": [
200
+ "max_image_dimension",
201
+ "quality"
202
+ ]
203
+ },
204
+ "output_format_option": null
205
+ },
197
206
  "image": {
198
207
  "accepted_options": {
199
208
  "auto": [
@@ -1214,5 +1223,5 @@
1214
1223
  }
1215
1224
  }
1216
1225
  },
1217
- "schema_version": "2.225.0"
1226
+ "schema_version": "2.229.0"
1218
1227
  }
@@ -260,5 +260,5 @@
260
260
  "source_op": "compress"
261
261
  }
262
262
  },
263
- "schema_version": "2.225.0"
263
+ "schema_version": "2.229.0"
264
264
  }
@@ -245,7 +245,7 @@ channels:
245
245
  - `operation_type = split` -> `ops-split` queue (the `audio` and
246
246
  `video` mime_groups are `availability: beta` — audio + short-form
247
247
  video split traffic reaches this queue, and so does `image_gif`
248
- (`stable`) and `document_pdf` (`beta` since 2026-10-01) traffic;
248
+ (`stable`) and `document_pdf` (`stable` since 2026-10-08, decision 729) traffic;
249
249
  long-form video splits route via `processing_class` to the
250
250
  `split-video-fargate` worker — same OperationType, different
251
251
  worker — now also `availability: beta` (stays beta until a
@@ -908,7 +908,7 @@ channels:
908
908
  video split traffic only; long-form video split (now also `beta`)
909
909
  routes via the direct-to-SQS `longformSplitVideo` claim-check to the
910
910
  `split-video-fargate` worker, NOT here. The `image_gif` (`stable`) and
911
- `document_pdf` (`beta`, 2026-10-01) mime_groups also arrive here. Backed
911
+ `document_pdf` (`stable`, 2026-10-08) mime_groups also arrive here. Backed
912
912
  by the `operation-split` Lambda (cross-repo
913
913
  follow-up — lambdas pre-launch epic Wave A, ticket
914
914
  [DbpJpVtm-sibling-L1](https://trello.com/c/vKI0CFDu)
@@ -1318,7 +1318,7 @@ channels:
1318
1318
  the `split` `audio` + `video` mime_groups (now `availability: beta`;
1319
1319
  this DLQ backs the short-form SNS `ops-split` queue — long-form video
1320
1320
  split has its own `longformSplitVideoDlq`); it also backs the
1321
- `image_gif` (`stable`) and `document_pdf` (`beta`) groups.
1321
+ `image_gif` and `document_pdf` (both `stable`) groups.
1322
1322
  parameters:
1323
1323
  env:
1324
1324
  description: Environment (local, stg, prod)
@@ -5224,7 +5224,17 @@ components:
5224
5224
  path (resolved `same_format` route: `output_format` original,
5225
5225
  absent, or equal to the input's format), short- and long-form (a long-form worker copies the source
5226
5226
  to the output key; ⚠️ not yet shipped, so today only short-form
5227
- conforms), instead of `output_too_large`. TARGET billing: the API
5227
+ conforms), instead of `output_too_large` — **but the original is
5228
+ returned ONLY when it satisfies EVERY option the request set**;
5229
+ otherwise it would not answer the request, and the failure is
5230
+ `output_too_large` (CvaZWNzO). Examples of options the original does
5231
+ not satisfy — audio: `trim_start` / `trim_end` above 0,
5232
+ `normalize: true`, an EXPLICIT `channels` / `sample_rate` / `bitrate`
5233
+ different from the source's (a server-applied default is not an
5234
+ option the request set); image: `width` / `height` / `fit` that change the
5235
+ dimensions. A value the source already has (`trim_*: 0`,
5236
+ `normalize: false`, the source's own channels, rate, bitrate or
5237
+ dimensions) is satisfied by the original. TARGET billing: the API
5228
5238
  charges nothing for the operation (owner decision 645(4),
5229
5239
  `schemas/pricing-policy.yaml`); TODAY it still charges it
5230
5240
  (`charge.not_charged_api_today`) until api ships.
@@ -5492,6 +5502,7 @@ components:
5492
5502
  - corrupt
5493
5503
  - unsupported_codec
5494
5504
  - missing_metadata
5505
+ - password_protected # encrypted PDF; distinct from corrupt (2026-10-10)
5495
5506
 
5496
5507
  UploadProbeProcessingClass:
5497
5508
  type: string
@@ -6285,7 +6296,7 @@ components:
6285
6296
  - format_mismatch: MIME type doesn't match content
6286
6297
  - decode_failed: Cannot decode/parse file
6287
6298
  - processing_failed: Processing library error
6288
- - output_too_large: Output exceeded the size limit. For audio this includes the worker's 209,715,200 B output cap reached after acceptance on a format-changing route — e.g. a long `convert` to WAV (nWtWmdbn). NOT emitted by a compress on the resolved same_format route (output_format original, absent, or equal to the input's format, e.g. webp to webp), which returns the original with OperationMetrics.already_optimal instead (owner decision 645(4)). Today short-form only: long-form compress still emits it until lambdas ships its copy path
6299
+ - output_too_large: Output exceeded the size limit. For audio this includes the worker's 209,715,200 B output cap reached after acceptance on a format-changing route — e.g. a long `convert` to WAV (nWtWmdbn). NOT emitted by a compress on the resolved same_format route (output_format original, absent, or equal to the input's format, e.g. webp to webp), which returns the original with OperationMetrics.already_optimal instead (owner decision 645(4)) — only when the original satisfies EVERY option the request set; otherwise output_too_large (the rule and examples are on `OperationMetrics.already_optimal`, CvaZWNzO). Today short-form only: long-form compress still emits it until lambdas ships its copy path
6289
6300
  - invalid_options: Invalid operation options
6290
6301
  - missing_source: Source file not found in storage
6291
6302
  - invalid_key: Storage key is malformed
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "capabilities_profile": "baseline",
3
- "capabilities_version": 253,
3
+ "capabilities_version": 260,
4
4
  "endpoints": {
5
5
  "DELETE /api/auth/account": {
6
6
  "auth": "required",
@@ -1192,6 +1192,32 @@
1192
1192
  }
1193
1193
  }
1194
1194
  },
1195
+ "document_pdf": {
1196
+ "availability": "beta",
1197
+ "ceiling_basis": {
1198
+ "max_input_size_bytes": "unproven"
1199
+ },
1200
+ "max_input_size_bytes": 209715200,
1201
+ "mimes": [
1202
+ "application/pdf"
1203
+ ],
1204
+ "options": {
1205
+ "max_image_dimension": {
1206
+ "default": 1600,
1207
+ "description": "Largest width or height, in pixels, for each image inside the PDF; larger images are scaled down, keeping their shape. Smaller images are left as they are.",
1208
+ "max": 10000,
1209
+ "min": 64,
1210
+ "type": "integer"
1211
+ },
1212
+ "quality": {
1213
+ "default": 70,
1214
+ "description": "JPEG quality for the images inside the PDF (1 = smallest, 100 = best). Text and vector content are not re-encoded.",
1215
+ "max": 100,
1216
+ "min": 1,
1217
+ "type": "integer"
1218
+ }
1219
+ }
1220
+ },
1195
1221
  "image": {
1196
1222
  "ceiling_basis": {
1197
1223
  "max_input_size_bytes": "unproven"
@@ -2730,6 +2756,11 @@
2730
2756
  },
2731
2757
  "output_format": {
2732
2758
  "description": "Target format. The video codec is fixed by the container (mp4->H.264, webm->VP9, ogg->Theora, gif->palette, mov->H.264, mkv->H.264) \u2014 not caller-selectable.",
2759
+ "per_value_constraints": {
2760
+ "gif": {
2761
+ "max_kept_duration": "PT10S"
2762
+ }
2763
+ },
2733
2764
  "required": true,
2734
2765
  "type": "enum",
2735
2766
  "values": [
@@ -4109,9 +4140,9 @@
4109
4140
  }
4110
4141
  },
4111
4142
  "split": {
4112
- "availability": "beta",
4143
+ "availability": "stable",
4113
4144
  "default": false,
4114
- "description": "Fan one input file into N outputs across GIF, PDF, audio, and\nvideo MIME families. Single-input \u2014 one input file per job, fanned\ninto N outputs per the per-mime-group catalog. Mirrors the\n`merge` / `convert` catalog-split-by-mime-group pattern.\n\n**Three shared modes** (audio + video; the mode discriminator\ngates which option applies per the `depends_on` rules in this\nschema):\n- `interval`: split every N numeric-seconds.\n- `count`: split into N equal-duration pieces (integer 2..=200).\n- `cut_points`: explicit cut points in numeric-seconds (strictly\n increasing, no duplicates, each > 0 and < probed duration).\n\n**Plus an audio-only `silence` mode** (`beta`, gated by the\n`silence_mode_audio` feature): cut at detected silence gaps via\nserver-side silence detection. Video stays three-mode.\n\n**GIF + PDF use range-based selection** instead of three modes:\n- GIF (`image_gif`): `frame_range` REQUIRED + `output_format`\n enum {png,webp,jpg}.\n- PDF (`document_pdf`): `page_range` OR `page_groups` (mutually\n exclusive per `depends_on`).\n\n**Wire format**: numeric seconds (floats allowed for sub-second\nprecision). NOT ISO 8601 duration strings. Matches common\nvideo-tooling conventions.\n\n**200-output hard cap** (`OperationResult.outputs[].maxItems:\n200`). Preflight rejects\nrequests exceeding this BEFORE work as `invalid_options` (422).\nCap math by mode:\n- `interval`: `ceil(probed_duration / interval) <= 200`\n- `count`: enforced by the option's `min: 2 max: 200` range\n- `cut_points`: `cut_points.len() + 1 <= 200`\n- `silence` (audio): resolved segment count (detected gaps + 1)\n `<= 200`; preflight rejects as `invalid_options` (422)\n- PDF: resolved page count after expansion `<= 200`\n (cross-ref [`WgCqnMRa`](https://trello.com/c/WgCqnMRa))\n- GIF: resolved frame count after expansion `<= 200`\n\n**Output naming (S3 object key)**: the object-key leaf is 3-digit\nzero-padded \u2014 `output-001` .. `output-200` (ADR-0014 \u00a7D9). This binds the\n**S3 object key**, NOT the user-facing download filename \u2014 the API\nsynthesises that separately (see `OperationDownload.filename` in\n`openapi/api.yaml`). Only the **3-digit zero-padding** follows the convert\nPDF\u2192N precedent \u2014 convert keys are `page-NNN.ext`, split keys are\n`output-NNN.ext`.\n\n**Output envelope binding**:\n- `image_gif`: `PositionIndexed` (frame stream-position 0-based\n ordinal)\n- `document_pdf`: `PageIndexed` (1-based literal source page number).\n With **`mode: page_range`** each output is one page, so `page_index` is\n that page. With **`mode: page_groups`** each output is a group of\n consecutive pages and `page_index` is the group's FIRST source page;\n the group covers `page_index` .. `page_index + page_groups - 1`, and\n the last group ends at the document's last page (so it may be\n shorter). Verified in the worker, not assumed: `compression_lambdas`\n `crates/split/src/processor.rs` passes each range's START page as the\n index, over ranges from `resolve_page_groups` (`pdf_range.rs`, tests\n `page_groups_remainder` / `page_groups_size_larger_than_total`).\n Specified 2026-09-25 and `beta` since 2026-10-01 (card `jGTLrpzK`), on\n a staging run of both modes; `stable` needs a production record.\n- `audio`: `PositionIndexed` (cut stream-position ordinal)\n- `video`: `PositionIndexed` (cut stream-position ordinal)\n\n**`precision` flag** (audio + video only): `fast` (default) =\npacket-boundary approximate cuts; `exact` = re-encode-aligned\nprecise cuts (`planned` \u2014 the API refuses it at create until the\nre-encode path is priced). Mime_group scoping is the gate \u2014 precision does\nNOT apply to GIF or PDF (frame extraction is exact and PDF page\nselection is exact by definition).\n\n**Long-form video** routes to a separate long-form processing\npath (same `split` OperationType; routing via `processing_class`).\nNo schema-side discriminator beyond MIME detection +\n`processing_class`.\n\n`availability: beta` for the `audio` and `video` mime_groups\n(shape-stable + opt-in, MUST NOT 422). Video activates **both\nclasses**: `video.processing_class.short_form` AND `long_form` are\n`beta`. The `document_pdf` mime_group is `beta` too (2026-10-01), and\n`image_gif` is `stable` (GIF to frames, 2026-06-21). A value or class\nstill tagged `planned` (e.g. `precision: exact`) is refused with\n`feature_not_available` (422).\n",
4145
+ "description": "Fan one input file into N outputs across GIF, PDF, audio, and\nvideo MIME families. Single-input \u2014 one input file per job, fanned\ninto N outputs per the per-mime-group catalog. Mirrors the\n`merge` / `convert` catalog-split-by-mime-group pattern.\n\n**Three shared modes** (audio + video; the mode discriminator\ngates which option applies per the `depends_on` rules in this\nschema):\n- `interval`: split every N numeric-seconds.\n- `count`: split into N equal-duration pieces (integer 2..=200).\n- `cut_points`: explicit cut points in numeric-seconds (strictly\n increasing, no duplicates, each > 0 and < probed duration).\n\n**Plus an audio-only `silence` mode** (`beta`, gated by the\n`silence_mode_audio` feature): cut at detected silence gaps via\nserver-side silence detection. Video stays three-mode.\n\n**GIF + PDF use range-based selection** instead of three modes:\n- GIF (`image_gif`): `frame_range` REQUIRED + `output_format`\n enum {png,webp,jpg}.\n- PDF (`document_pdf`): `page_range` OR `page_groups` (mutually\n exclusive per `depends_on`).\n\n**Wire format**: numeric seconds (floats allowed for sub-second\nprecision). NOT ISO 8601 duration strings. Matches common\nvideo-tooling conventions.\n\n**200-output hard cap** (`OperationResult.outputs[].maxItems:\n200`). Preflight rejects\nrequests exceeding this BEFORE work as `invalid_options` (422).\nCap math by mode:\n- `interval`: `ceil(probed_duration / interval) <= 200`\n- `count`: enforced by the option's `min: 2 max: 200` range\n- `cut_points`: `cut_points.len() + 1 <= 200`\n- `silence` (audio): resolved segment count (detected gaps + 1)\n `<= 200`; preflight rejects as `invalid_options` (422)\n- PDF: resolved page count after expansion `<= 200`\n (cross-ref [`WgCqnMRa`](https://trello.com/c/WgCqnMRa))\n- GIF: resolved frame count after expansion `<= 200`\n\n**Output naming (S3 object key)**: the object-key leaf is 3-digit\nzero-padded \u2014 `output-001` .. `output-200` (ADR-0014 \u00a7D9). This binds the\n**S3 object key**, NOT the user-facing download filename \u2014 the API\nsynthesises that separately (see `OperationDownload.filename` in\n`openapi/api.yaml`). Only the **3-digit zero-padding** follows the convert\nPDF\u2192N precedent \u2014 convert keys are `page-NNN.ext`, split keys are\n`output-NNN.ext`.\n\n**Output envelope binding**:\n- `image_gif`: `PositionIndexed` (frame stream-position 0-based\n ordinal)\n- `document_pdf`: `PageIndexed` (1-based literal source page number).\n With **`mode: page_range`** each output is one page, so `page_index` is\n that page. With **`mode: page_groups`** each output is a group of\n consecutive pages and `page_index` is the group's FIRST source page;\n the group covers `page_index` .. `page_index + page_groups - 1`, and\n the last group ends at the document's last page (so it may be\n shorter). Verified in the worker, not assumed: `compression_lambdas`\n `crates/split/src/processor.rs` passes each range's START page as the\n index, over ranges from `resolve_page_groups` (`pdf_range.rs`, tests\n `page_groups_remainder` / `page_groups_size_larger_than_total`).\n Specified 2026-09-25 and `beta` since 2026-10-01 (card `jGTLrpzK`), on\n a staging run of both modes; `stable` needs a production record.\n- `audio`: `PositionIndexed` (cut stream-position ordinal)\n- `video`: `PositionIndexed` (cut stream-position ordinal)\n\n**`precision` flag** (audio + video only): `fast` (default) =\npacket-boundary approximate cuts; `exact` = re-encode-aligned\nprecise cuts (`planned` \u2014 the API refuses it at create until the\nre-encode path is priced). Mime_group scoping is the gate \u2014 precision does\nNOT apply to GIF or PDF (frame extraction is exact and PDF page\nselection is exact by definition).\n\n**Long-form video** routes to a separate long-form processing\npath (same `split` OperationType; routing via `processing_class`).\nNo schema-side discriminator beyond MIME detection +\n`processing_class`.\n\n`availability: beta` for the `audio` and `video` mime_groups\n(shape-stable + opt-in, MUST NOT 422). Video activates **both\nclasses**: `video.processing_class.short_form` AND `long_form` are\n`beta`. The `document_pdf` mime_group is `stable` (owner decision 729,\nprod-proven 2026-10-08), and `image_gif` is `stable` (GIF to frames,\nprod-proven 2026-10-08). A value or class\nstill tagged `planned` (e.g. `precision: exact`) is refused with\n`feature_not_available` (422).\n",
4115
4146
  "features": {
4116
4147
  "silence_mode_audio": {
4117
4148
  "availability": "beta",
@@ -4228,7 +4259,7 @@
4228
4259
  }
4229
4260
  },
4230
4261
  "document_pdf": {
4231
- "availability": "beta",
4262
+ "availability": "stable",
4232
4263
  "ceiling_basis": {
4233
4264
  "max_input_size_bytes": "unproven"
4234
4265
  },
@@ -4690,7 +4721,7 @@
4690
4721
  },
4691
4722
  "thumbnail": {
4692
4723
  "default": false,
4693
- "description": "Resize an image to specific dimensions, or extract a preview frame/page from a video or document. For images this is a full resizer (1-16384px), not just small previews. An image or video thumbnail must follow a compress or convert in the same job; a document thumbnail may stand alone. Image types that compress does not accept (BMP, HEIC) therefore need a convert first.",
4724
+ "description": "Resize an image to specific dimensions, or extract a preview frame/page from a video or document. For images this is a full resizer (1-16384px), not just small previews. A thumbnail can be the only operation on an image, video or document upload. In a job with other operations it is made from the ORIGINAL file by default, alongside them; set `base: processed_base` to make it from the processed result instead.",
4694
4725
  "input_model": "single",
4695
4726
  "mime_groups": {
4696
4727
  "document_epub": {
@@ -4911,6 +4942,12 @@
4911
4942
  }
4912
4943
  },
4913
4944
  "image": {
4945
+ "ceiling_basis": {
4946
+ "max_input_pixels": "unproven",
4947
+ "max_input_size_bytes": "unproven"
4948
+ },
4949
+ "max_input_pixels": 90000000,
4950
+ "max_input_size_bytes": 370000000,
4914
4951
  "max_output_pixels": 16000000,
4915
4952
  "mimes": [
4916
4953
  "image/jpeg",
@@ -5558,7 +5595,7 @@
5558
5595
  "sole_op": true
5559
5596
  }
5560
5597
  },
5561
- "schema_version": "2.225.0",
5598
+ "schema_version": "2.229.0",
5562
5599
  "source_commit": null,
5563
5600
  "user_tier": null,
5564
5601
  "workflow_features": {
@@ -1443,6 +1443,39 @@
1443
1443
  }
1444
1444
  }
1445
1445
  },
1446
+ "document_pdf": {
1447
+ "availability": "beta",
1448
+ "ceiling_basis": {
1449
+ "max_input_size_bytes": "unproven"
1450
+ },
1451
+ "max_input_size_bytes": 209715200,
1452
+ "media_group": "document",
1453
+ "mimes": [
1454
+ "application/pdf"
1455
+ ],
1456
+ "options": {
1457
+ "max_image_dimension": {
1458
+ "default": 1600,
1459
+ "description": "Largest width or height, in pixels, for each image inside the PDF; larger images are scaled down, keeping their shape. Smaller images are left as they are.",
1460
+ "max": 10000,
1461
+ "min": 64,
1462
+ "origin": "contract",
1463
+ "sdk_exposure": "expose",
1464
+ "surface_key": "maxImageDimension",
1465
+ "type": "integer"
1466
+ },
1467
+ "quality": {
1468
+ "default": 70,
1469
+ "description": "JPEG quality for the images inside the PDF (1 = smallest, 100 = best). Text and vector content are not re-encoded.",
1470
+ "max": 100,
1471
+ "min": 1,
1472
+ "origin": "contract",
1473
+ "sdk_exposure": "expose",
1474
+ "surface_key": "quality",
1475
+ "type": "integer"
1476
+ }
1477
+ }
1478
+ },
1446
1479
  "image": {
1447
1480
  "ceiling_basis": {
1448
1481
  "max_input_size_bytes": "unproven"
@@ -3816,6 +3849,11 @@
3816
3849
  "output_format": {
3817
3850
  "description": "Target format. The video codec is fixed by the container (mp4->H.264, webm->VP9, ogg->Theora, gif->palette, mov->H.264, mkv->H.264) \u2014 not caller-selectable.",
3818
3851
  "origin": "contract",
3852
+ "per_value_constraints": {
3853
+ "gif": {
3854
+ "max_kept_duration": "PT10S"
3855
+ }
3856
+ },
3819
3857
  "positional": 0,
3820
3858
  "required": true,
3821
3859
  "sdk_exposure": "expose",
@@ -5653,7 +5691,7 @@
5653
5691
  "image",
5654
5692
  "video"
5655
5693
  ],
5656
- "availability": "beta",
5694
+ "availability": "stable",
5657
5695
  "features": {
5658
5696
  "silence_mode_audio": {
5659
5697
  "availability": "beta",
@@ -5812,7 +5850,7 @@
5812
5850
  }
5813
5851
  },
5814
5852
  "document_pdf": {
5815
- "availability": "beta",
5853
+ "availability": "stable",
5816
5854
  "ceiling_basis": {
5817
5855
  "max_input_size_bytes": "unproven"
5818
5856
  },
@@ -6829,6 +6867,12 @@
6829
6867
  }
6830
6868
  },
6831
6869
  "image": {
6870
+ "ceiling_basis": {
6871
+ "max_input_pixels": "unproven",
6872
+ "max_input_size_bytes": "unproven"
6873
+ },
6874
+ "max_input_pixels": 90000000,
6875
+ "max_input_size_bytes": 370000000,
6832
6876
  "max_output_pixels": 16000000,
6833
6877
  "media_group": "image",
6834
6878
  "mimes": [
@@ -7703,7 +7747,7 @@
7703
7747
  }
7704
7748
  },
7705
7749
  "preset_config_hash": "sha256:354814f7906f85be6a6ca5ede6c0722c83cdc058fd658a9bb2b0996520466c6d",
7706
- "schema_version": "2.225.0",
7707
- "sdk_spec_version": "2.13.0",
7708
- "source_hash": "sha256:4221dd8b60f0af17b8b8171e8d67d2b89f0227d0d374e6ad0b5e962478437ad6"
7750
+ "schema_version": "2.229.0",
7751
+ "sdk_spec_version": "2.15.0",
7752
+ "source_hash": "sha256:17a43147b77664d7cb322a51a8f54aaa32a38b8c3237dfb8bb54eeda3161ce17"
7709
7753
  }
@@ -2,6 +2,7 @@ declare enum UploadProbeStatus {
2
2
  OK = "ok",
3
3
  CORRUPT = "corrupt",
4
4
  UNSUPPORTED_CODEC = "unsupported_codec",
5
- MISSING_METADATA = "missing_metadata"
5
+ MISSING_METADATA = "missing_metadata",
6
+ PASSWORD_PROTECTED = "password_protected"
6
7
  }
7
8
  export default UploadProbeStatus;
@@ -4,5 +4,6 @@ var UploadProbeStatus;
4
4
  UploadProbeStatus["CORRUPT"] = "corrupt";
5
5
  UploadProbeStatus["UNSUPPORTED_CODEC"] = "unsupported_codec";
6
6
  UploadProbeStatus["MISSING_METADATA"] = "missing_metadata";
7
+ UploadProbeStatus["PASSWORD_PROTECTED"] = "password_protected";
7
8
  })(UploadProbeStatus || (UploadProbeStatus = {}));
8
9
  export default UploadProbeStatus;
@@ -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.225.0
5
+ * The version of the OpenAPI document: 2.229.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.225.0
7
+ * The version of the OpenAPI document: 2.229.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.225.0
5
+ * The version of the OpenAPI document: 2.229.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.225.0
7
+ * The version of the OpenAPI document: 2.229.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.225.0
5
+ * The version of the OpenAPI document: 2.229.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.225.0
7
+ * The version of the OpenAPI document: 2.229.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.225.0
5
+ * The version of the OpenAPI document: 2.229.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.225.0
7
+ * The version of the OpenAPI document: 2.229.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.225.0
5
+ * The version of the OpenAPI document: 2.229.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.225.0
7
+ * The version of the OpenAPI document: 2.229.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.225.0
5
+ * The version of the OpenAPI document: 2.229.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.225.0
7
+ * The version of the OpenAPI document: 2.229.0
8
8
  *
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).