@giveitsmaller/contracts 0.65.0 → 0.67.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 (518) hide show
  1. package/README.md +2 -2
  2. package/accepted-options/accepted-options.json +1 -1
  3. package/accepted-options/image-output-routes.json +1 -1
  4. package/availability/availability.json +8 -3
  5. package/code-builder/code-builder-metadata.json +2 -2
  6. package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
  7. package/dist/openapi/models/AccountLimitEntry.js +1 -1
  8. package/dist/openapi/models/AccountLimits.d.ts +15 -7
  9. package/dist/openapi/models/AccountLimits.js +1 -1
  10. package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
  11. package/dist/openapi/models/AccountLimitsLimits.js +1 -1
  12. package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
  13. package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
  14. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  15. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  16. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  17. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  18. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  19. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  20. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  21. package/dist/openapi/models/AuthErrorType.js +1 -1
  22. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
  23. package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
  24. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  25. package/dist/openapi/models/AvailabilityValue.js +1 -1
  26. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  27. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  28. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  29. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  30. package/dist/openapi/models/BillingCheckoutRequest.d.ts +1 -1
  31. package/dist/openapi/models/BillingCheckoutRequest.js +1 -1
  32. package/dist/openapi/models/BillingCheckoutSession.d.ts +1 -1
  33. package/dist/openapi/models/BillingCheckoutSession.js +1 -1
  34. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +1 -1
  35. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +1 -1
  36. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  37. package/dist/openapi/models/CallbackEventType.js +1 -1
  38. package/dist/openapi/models/CancelAccountDeletion200Response.d.ts +1 -1
  39. package/dist/openapi/models/CancelAccountDeletion200Response.js +1 -1
  40. package/dist/openapi/models/CancelAccountDeletion200ResponseData.d.ts +1 -1
  41. package/dist/openapi/models/CancelAccountDeletion200ResponseData.js +1 -1
  42. package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
  43. package/dist/openapi/models/CapabilityCondition.js +1 -1
  44. package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
  45. package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
  46. package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
  47. package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
  48. package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
  49. package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
  50. package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
  51. package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
  52. package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
  53. package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
  54. package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
  55. package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
  56. package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
  57. package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
  58. package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
  59. package/dist/openapi/models/CapabilityConstraint.js +1 -1
  60. package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
  61. package/dist/openapi/models/CapabilityInputSpec.js +1 -1
  62. package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
  63. package/dist/openapi/models/CapabilityProduces.js +1 -1
  64. package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
  65. package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
  66. package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
  67. package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
  68. package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
  69. package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
  70. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  71. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  72. package/dist/openapi/models/CodegenSource.d.ts +1 -1
  73. package/dist/openapi/models/CodegenSource.js +1 -1
  74. package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
  75. package/dist/openapi/models/CodegenSourceInput.js +1 -1
  76. package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
  77. package/dist/openapi/models/CodegenSourceJob.js +1 -1
  78. package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
  79. package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
  80. package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
  81. package/dist/openapi/models/CodegenSourceOperation.js +1 -1
  82. package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
  83. package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
  84. package/dist/openapi/models/CompositionPlan.d.ts +1 -1
  85. package/dist/openapi/models/CompositionPlan.js +1 -1
  86. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  87. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  88. package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
  89. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  90. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  91. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  92. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  93. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  94. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  95. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  96. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  97. package/dist/openapi/models/ConnectionSource.js +1 -1
  98. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  99. package/dist/openapi/models/ContactRequest.js +1 -1
  100. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  101. package/dist/openapi/models/ContactSubject.js +1 -1
  102. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  103. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  104. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  105. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  106. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  107. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  108. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  109. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  110. package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +1 -1
  111. package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +1 -1
  112. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  113. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  114. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  115. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  116. package/dist/openapi/models/CreateWorkflow401Response.d.ts +1 -1
  117. package/dist/openapi/models/CreateWorkflow401Response.js +1 -1
  118. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  119. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  120. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  121. package/dist/openapi/models/CreditTransaction.js +1 -1
  122. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  123. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  124. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  125. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  126. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  127. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  128. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  129. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  130. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  131. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  132. package/dist/openapi/models/Delivery.d.ts +1 -1
  133. package/dist/openapi/models/Delivery.js +1 -1
  134. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  135. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  136. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  137. package/dist/openapi/models/DeliveryPlan.js +1 -1
  138. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  139. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  140. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  141. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  142. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  143. package/dist/openapi/models/DeliverySelection.js +1 -1
  144. package/dist/openapi/models/DownloadBundle.d.ts +1 -1
  145. package/dist/openapi/models/DownloadBundle.js +1 -1
  146. package/dist/openapi/models/DroppedOption.d.ts +1 -1
  147. package/dist/openapi/models/DroppedOption.js +1 -1
  148. package/dist/openapi/models/EmailNotify.d.ts +1 -1
  149. package/dist/openapi/models/EmailNotify.js +1 -1
  150. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  151. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  152. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  153. package/dist/openapi/models/EndpointProjection.js +1 -1
  154. package/dist/openapi/models/EndpointProjectionServersInner.d.ts +1 -1
  155. package/dist/openapi/models/EndpointProjectionServersInner.js +1 -1
  156. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  157. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  158. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  159. package/dist/openapi/models/EstimateQuality.js +1 -1
  160. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  161. package/dist/openapi/models/EstimateRange.js +1 -1
  162. package/dist/openapi/models/ExportAccountData200Response.d.ts +1 -1
  163. package/dist/openapi/models/ExportAccountData200Response.js +1 -1
  164. package/dist/openapi/models/ExportAccountData200ResponseData.d.ts +1 -1
  165. package/dist/openapi/models/ExportAccountData200ResponseData.js +1 -1
  166. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  167. package/dist/openapi/models/ExternalDestination.js +1 -1
  168. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  169. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  170. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  171. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  172. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  173. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  174. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  175. package/dist/openapi/models/ExternalImportToken.js +1 -1
  176. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  177. package/dist/openapi/models/ExternalSource.js +1 -1
  178. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  179. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  180. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  181. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  182. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  183. package/dist/openapi/models/FeatureViolation.js +1 -1
  184. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  185. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  186. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  187. package/dist/openapi/models/JobDefinition.js +1 -1
  188. package/dist/openapi/models/JobDownload.d.ts +1 -1
  189. package/dist/openapi/models/JobDownload.js +1 -1
  190. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  191. package/dist/openapi/models/JobInputV2.js +1 -1
  192. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  193. package/dist/openapi/models/JobMediaClass.js +1 -1
  194. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  195. package/dist/openapi/models/JobOutputSource.js +1 -1
  196. package/dist/openapi/models/JobResponse.d.ts +1 -1
  197. package/dist/openapi/models/JobResponse.js +1 -1
  198. package/dist/openapi/models/JobStatus.d.ts +1 -1
  199. package/dist/openapi/models/JobStatus.js +1 -1
  200. package/dist/openapi/models/JobType.d.ts +1 -1
  201. package/dist/openapi/models/JobType.js +1 -1
  202. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  203. package/dist/openapi/models/LivenessResponse.js +1 -1
  204. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  205. package/dist/openapi/models/LoginUser200Response.js +1 -1
  206. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  207. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  208. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  209. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  210. package/dist/openapi/models/LoginUser401Response.d.ts +1 -1
  211. package/dist/openapi/models/LoginUser401Response.js +1 -1
  212. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  213. package/dist/openapi/models/LoginUserRequest.js +1 -1
  214. package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
  215. package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
  216. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
  217. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
  218. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  219. package/dist/openapi/models/MetadataResponse.js +1 -1
  220. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  221. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  222. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  223. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  224. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  225. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  226. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  227. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  228. package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
  229. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  230. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  231. package/dist/openapi/models/MultiInputSource.js +1 -1
  232. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  233. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  234. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  235. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  236. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  237. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  238. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  239. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  240. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  241. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  242. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  243. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  244. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  245. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  246. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  247. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  248. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  249. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  250. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  251. package/dist/openapi/models/MultipartPartListing.js +1 -1
  252. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  253. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  254. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  255. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  256. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  257. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  258. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  259. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  260. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  261. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  262. package/dist/openapi/models/NotifyConfig.d.ts +1 -1
  263. package/dist/openapi/models/NotifyConfig.js +1 -1
  264. package/dist/openapi/models/OperationCapability.d.ts +1 -1
  265. package/dist/openapi/models/OperationCapability.js +1 -1
  266. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  267. package/dist/openapi/models/OperationDefinition.js +1 -1
  268. package/dist/openapi/models/OperationDownload.d.ts +1 -1
  269. package/dist/openapi/models/OperationDownload.js +1 -1
  270. package/dist/openapi/models/OperationInputModel.d.ts +1 -1
  271. package/dist/openapi/models/OperationInputModel.js +1 -1
  272. package/dist/openapi/models/OperationResponse.d.ts +1 -1
  273. package/dist/openapi/models/OperationResponse.js +1 -1
  274. package/dist/openapi/models/OperationResult.d.ts +1 -1
  275. package/dist/openapi/models/OperationResult.js +1 -1
  276. package/dist/openapi/models/OperationResultMetadata.d.ts +1 -1
  277. package/dist/openapi/models/OperationResultMetadata.js +1 -1
  278. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  279. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  280. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  281. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  282. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  283. package/dist/openapi/models/OperationStatus.js +1 -1
  284. package/dist/openapi/models/OperationType.d.ts +1 -1
  285. package/dist/openapi/models/OperationType.js +1 -1
  286. package/dist/openapi/models/OperationsSchemaResponse.d.ts +22 -11
  287. package/dist/openapi/models/OperationsSchemaResponse.js +1 -4
  288. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  289. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  290. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  291. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  292. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  293. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  294. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  295. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  296. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +1 -1
  297. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +1 -1
  298. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  299. package/dist/openapi/models/OptionSchema.js +1 -1
  300. package/dist/openapi/models/OutputProperties.d.ts +1 -1
  301. package/dist/openapi/models/OutputProperties.js +1 -1
  302. package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
  303. package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
  304. package/dist/openapi/models/PerClassAvailabilityEntry.d.ts +1 -1
  305. package/dist/openapi/models/PerClassAvailabilityEntry.js +1 -1
  306. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  307. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  308. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  309. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  310. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  311. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  312. package/dist/openapi/models/ProbePendingResponse.d.ts +1 -1
  313. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  314. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  315. package/dist/openapi/models/ProcessingClass.js +1 -1
  316. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  317. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  318. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  319. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  320. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  321. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  322. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  323. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  324. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  325. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  326. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  327. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  328. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  329. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  330. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  331. package/dist/openapi/models/ProcessingPlan.js +1 -1
  332. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  333. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  334. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  335. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  336. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  337. package/dist/openapi/models/ReadinessResponse.js +1 -1
  338. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  339. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  340. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  341. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  342. package/dist/openapi/models/RequestAccountDeletion200Response.d.ts +1 -1
  343. package/dist/openapi/models/RequestAccountDeletion200Response.js +1 -1
  344. package/dist/openapi/models/RequestAccountDeletion200ResponseData.d.ts +1 -1
  345. package/dist/openapi/models/RequestAccountDeletion200ResponseData.js +1 -1
  346. package/dist/openapi/models/RequestAccountDeletionRequest.d.ts +1 -1
  347. package/dist/openapi/models/RequestAccountDeletionRequest.js +1 -1
  348. package/dist/openapi/models/ResendVerificationEmailRequest.d.ts +1 -1
  349. package/dist/openapi/models/ResendVerificationEmailRequest.js +1 -1
  350. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  351. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  352. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  353. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  354. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  355. package/dist/openapi/models/RetryResponse.js +1 -1
  356. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  357. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  358. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  359. package/dist/openapi/models/SseCompletionBase.js +1 -1
  360. package/dist/openapi/models/SseEventType.d.ts +1 -1
  361. package/dist/openapi/models/SseEventType.js +1 -1
  362. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  363. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  364. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  365. package/dist/openapi/models/SseJobFailedData.js +1 -1
  366. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  367. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  368. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  369. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  370. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  371. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  372. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  373. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  374. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  375. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  376. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  377. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  378. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  379. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  380. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  381. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  382. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  383. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  384. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  385. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  386. package/dist/openapi/models/TierRestrictionKind.d.ts +19 -5
  387. package/dist/openapi/models/TierRestrictionKind.js +19 -5
  388. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  389. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  390. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  391. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  392. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  393. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  394. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  395. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  396. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  397. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  398. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  399. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  400. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  401. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  402. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  403. package/dist/openapi/models/UploadFile403Response.js +1 -1
  404. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  405. package/dist/openapi/models/UploadFile422Response.js +1 -1
  406. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  407. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  408. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  409. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  410. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  411. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  412. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  413. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  414. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  415. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  416. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  417. package/dist/openapi/models/UploadResponse.js +1 -1
  418. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  419. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  420. package/dist/openapi/models/UploadSource.d.ts +1 -1
  421. package/dist/openapi/models/UploadSource.js +1 -1
  422. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  423. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  424. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  425. package/dist/openapi/models/UploadThresholds.js +1 -1
  426. package/dist/openapi/models/UserTier.d.ts +108 -35
  427. package/dist/openapi/models/UserTier.js +108 -35
  428. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  429. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  430. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  431. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  432. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  433. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  434. package/dist/openapi/models/WarningType.d.ts +1 -1
  435. package/dist/openapi/models/WarningType.js +1 -1
  436. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  437. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  438. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  439. package/dist/openapi/models/WebhookPayload.js +1 -1
  440. package/dist/openapi/models/WorkflowArchiveResponse.d.ts +1 -1
  441. package/dist/openapi/models/WorkflowArchiveResponse.js +1 -1
  442. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.d.ts +1 -1
  443. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.js +1 -1
  444. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  445. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  446. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  447. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  448. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  449. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  450. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  451. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  452. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  453. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  454. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  455. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  456. package/dist/openapi/models/WorkflowCreditSummary.d.ts +1 -1
  457. package/dist/openapi/models/WorkflowCreditSummary.js +1 -1
  458. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  459. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  460. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  461. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  462. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  463. package/dist/openapi/models/WorkflowEdge.js +1 -1
  464. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  465. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  466. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  467. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  468. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  469. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  470. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  471. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  472. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  473. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  474. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  475. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  476. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  477. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  478. package/dist/openapi/models/WorkflowRestoreResponse.d.ts +1 -1
  479. package/dist/openapi/models/WorkflowRestoreResponse.js +1 -1
  480. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.d.ts +1 -1
  481. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.js +1 -1
  482. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  483. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  484. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  485. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  486. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  487. package/dist/openapi/models/WorkflowSource.js +1 -1
  488. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  489. package/dist/openapi/models/WorkflowStatus.js +1 -1
  490. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  491. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  492. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  493. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  494. package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
  495. package/dist/openapi/models/WorkflowSummary.js +1 -1
  496. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  497. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  498. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  499. package/dist/openapi/models/WorkflowWarning.js +1 -1
  500. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  501. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  502. package/dist/openapi/models/index.d.ts +0 -4
  503. package/dist/openapi/models/index.js +0 -4
  504. package/dist/openapi/runtime.d.ts +1 -1
  505. package/dist/openapi/runtime.js +1 -1
  506. package/dist/operations/metadata-types.d.ts +1 -1
  507. package/openapi/README.md +1 -1
  508. package/openapi/api.yaml +404 -202
  509. package/operation-capabilities/operation-capabilities.json +1 -1
  510. package/package.json +7 -3
  511. package/dist/openapi/models/MediaCategory.d.ts +0 -31
  512. package/dist/openapi/models/MediaCategory.js +0 -49
  513. package/dist/openapi/models/TierDefaultLimits.d.ts +0 -59
  514. package/dist/openapi/models/TierDefaultLimits.js +0 -47
  515. package/dist/openapi/models/TierDefaults.d.ts +0 -66
  516. package/dist/openapi/models/TierDefaults.js +0 -49
  517. package/dist/openapi/models/TierDefaultsByAudience.d.ts +0 -73
  518. package/dist/openapi/models/TierDefaultsByAudience.js +0 -60
@@ -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). **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.194.0
5
+ * The version of the OpenAPI document: 2.196.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). **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.194.0
7
+ * The version of the OpenAPI document: 2.196.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). **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.194.0
5
+ * The version of the OpenAPI document: 2.196.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). **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.194.0
7
+ * The version of the OpenAPI document: 2.196.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). **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.194.0
5
+ * The version of the OpenAPI document: 2.196.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). **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.194.0
7
+ * The version of the OpenAPI document: 2.196.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). **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.194.0
5
+ * The version of the OpenAPI document: 2.196.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). **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.194.0
7
+ * The version of the OpenAPI document: 2.196.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). **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.194.0
5
+ * The version of the OpenAPI document: 2.196.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). **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.194.0
7
+ * The version of the OpenAPI document: 2.196.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). **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.194.0
5
+ * The version of the OpenAPI document: 2.196.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). **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.194.0
7
+ * The version of the OpenAPI document: 2.196.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). **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.194.0
5
+ * The version of the OpenAPI document: 2.196.0
6
6
  *
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -13,47 +13,120 @@
13
13
  * Subscription tier. Mirrors the API-side
14
14
  * `App\Identity\Domain\Enums\UserTier` PHP enum.
15
15
  *
16
- * Ordering is `free` < `pro` < `max` < `enterprise` (the
16
+ * 🔴 **`basic` IS THE BASE TIER. `free` IS DEPRECATED IN PLACE AND
17
+ * WILL BE REMOVED** (ticket [`nD8fCPDy`](https://trello.com/c/nD8fCPDy)).
18
+ * Owner decision 2026-08-19: **you can buy credits into the base tier, so
19
+ * calling it "free" is false.** Both values are accepted through the
20
+ * transition and **occupy the same ordinal position** — they are one tier
21
+ * under two names, never two tiers.
22
+ *
23
+ * ⚠️ **A CONSUMER MUST TREAT THEM AS EQUAL.** Anything that compares,
24
+ * sorts or gates on tier must accept either and rank them identically;
25
+ * a `match`/`switch` that handles `free` and not `basic` will silently
26
+ * take a different branch the day the producer switches.
27
+ *
28
+ * 🔴 **PRODUCERS: DO NOT EMIT `basic` YET. THE FIRST WRITE IS AN
29
+ * OUTAGE, NOT A COMPILE ERROR.** This change makes the value *legal*, not
30
+ * *live*. **Schema-additive and safe-to-send are different claims**, and
31
+ * the gap between them is measured rather than theoretical:
32
+ *
33
+ * - **api (2026-08-20, from its own mapping):** `UserRecord` declares the
34
+ * column `enumType: UserTier::class`. Doctrine hydrates such a column
35
+ * through `EnumPropertyAccessor::setValue()`, which calls
36
+ * `$enumType::from($value)` — **and that THROWS on a value it does not
37
+ * know**, with no extension point. **A row persisted as `basic` makes
38
+ * every running api task 500 while hydrating that user.**
39
+ * - **And the rollout overlaps by design:** ECS runs
40
+ * `minimumHealthyPercent: 100` / `maximumPercent: 200`, so the NEW task
41
+ * starts before the OLD one drains. **The moment a new task writes a
42
+ * value the old one has never heard of, the old task 500s on that row
43
+ * for the rest of the rollout.**
44
+ * - **SDKs fail earlier and more kindly:** a generated Rust or PHP enum
45
+ * gains a variant and an exhaustive match stops compiling.
46
+ *
47
+ * ⭐ **AN ADDED ENUM VALUE IS A CONTRACT CHANGE WEARING A SCHEMA CHANGE'S
48
+ * CLOTHES.** A new COLUMN is invisible to old code's `SELECT` list; a new
49
+ * enum VALUE is **not** invisible to old code's hydration. *That asymmetry
50
+ * is why expand → migrate → contract fails to get applied to enums — the
51
+ * trigger does not look like the category.* (api's own note, written
52
+ * during an earlier enum sweep and reached independently of this one.)
53
+ * Emission is gated on the tolerance evidence table
54
+ * ([`tkRA9Bim`](https://trello.com/c/tkRA9Bim)), which requires an
55
+ * artefact from each of api, both SDK packages, frontend and e2e.
56
+ *
57
+ * 🔴 **`guest` IS NOT AND MUST NOT BECOME A MEMBER OF THIS ENUM.** It is
58
+ * the *absence* of a subscription, not a tier. Putting it here places a
59
+ * non-subscription value inside the ordering that drives upgrade prompts,
60
+ * where it has no position — **that conflation already shipped once as a
61
+ * bug and was deliberately removed.** The audience key lives on
62
+ * the audience axis, which is NOT a `UserTier` value. Asserted by a
63
+ * test, not left to prose.
64
+ *
65
+ * Ordering is `basic`/`free` < `pro` < `max` < `enterprise` (the
17
66
  * upgrade-resolver / `isHigherThan` ordinal in `UserTier.php`).
18
- * `max` is the top **self-serve** tier — Pro plus audio + larger
19
- * long-form bands; Enterprise remains the negotiated tier above it.
20
- *
21
- * Tier capability summary (informational; canonical limits are
22
- * enforced server-side per `UserTier.php`):
23
- * - `free`: 10 MiB max upload; image MIMEs only; 50 monthly credits;
24
- * 0 overdraft; 1× rate-limit baseline. No long-form access
25
- * (video/audio are MIME-gated away from Free).
26
- * - `pro`: 5 GiB max upload; image + video + document MIMEs; 1000
27
- * monthly credits; 200 overdraft; 5× rate-limit; up to 2 concurrent
28
- * in-flight long-form jobs.
29
- * - `max`: 50 GiB max upload; image + video + document + audio MIMEs;
30
- * 7500 monthly credits; 2500 overdraft; 15× rate-limit; up to 5
31
- * concurrent in-flight long-form jobs.
32
- * - `enterprise`: 100 GiB max upload; image + video + document + audio
33
- * MIMEs; 10000 monthly credits; 5000 overdraft; 20× rate-limit;
34
- * uncapped concurrent long-form jobs.
35
- *
36
- * **Concurrent long-form jobs** is a hard per-tier ceiling on the
37
- * number of in-flight long-form (Fargate) workflows a caller may
38
- * hold at once — exceeding it returns a typed `429`
39
- * `LONG_FORM_CONCURRENCY_LIMIT_EXCEEDED` (see the `POST /api/workflows`
40
- * 429 response). Pro's 2-job cap is enforced as of the Max-tier
41
- * launch.
67
+ * **The ordering is the part this contract owns** — it is what
68
+ * `TierRestrictionResponse.current_tier` / `.required_tier` and
69
+ * `FeatureViolation.required_tier` are compared with.
42
70
  *
43
- * The "max upload" figures are the per-file upload cap
44
- * (`UserTier.maxFileSizeBytes`) — the request-level tier quota,
45
- * surfaced override-aware via `GET /api/v2/account/limits`
46
- * (`max_upload_size_bytes`). They are DISTINCT from the per-operation
47
- * processing-class band caps (`processing_class.constraints` in the
48
- * operation schemas; e.g. the 120 GB Enterprise merge combined band).
71
+ * 🔴 **THIS SCHEMA DELIBERATELY DOES NOT ENUMERATE WHAT EACH TIER MAY
72
+ * DO, IN EITHER DIRECTION.** It previously carried a per-tier capability
73
+ * summary — upload caps, permitted MIME families, monthly credits,
74
+ * overdraft, rate-limit multiples, concurrent long-form jobs. **That was a
75
+ * restated SNAPSHOT of another repository's code, and it drifted, twice:**
49
76
  *
50
- * Used by `TierRestrictionResponse.current_tier` /
51
- * `TierRestrictionResponse.required_tier` and by
52
- * `FeatureViolation.required_tier`.
77
+ * - it asserted *"`free`: image MIMEs only … video/audio are MIME-gated
78
+ * away from Free"* — a per-tier media restriction this contract does not
79
+ * own and cannot keep true;
80
+ * - and the parallel table on `AccountLimits` listed tier byte defaults
81
+ * for `free` / `pro` / `enterprise` and **silently omitted `max`**, a
82
+ * tier this very enum declares. **That one was already wrong before any
83
+ * of it was reviewed.**
84
+ *
85
+ * **A description ships to every SDK consumer as generated documentation**,
86
+ * so a stale sentence here is not an internal note — it is an assertion
87
+ * delivered to callers, and it outlives the code it describes. *Point at
88
+ * the gate, not at a snapshot of it.*
89
+ *
90
+ * ⚠️ **No claim is made HERE about which media categories a tier permits —
91
+ * not the old restriction, and not its replacement.** That is a scoping
92
+ * statement about this description, **not a claim that the contract is
93
+ * silent on the subject**: hub decision 25 made audio universal, so
94
+ * there is no tier boundary at which the category axis changes. The
95
+ * category axis as DATA, once, uniform across audiences. **Prose that
96
+ * restates another repository's enforcement is the defect; a single
97
+ * generated declaration is the fix**, and the two must not both exist.
98
+ *
99
+ * **Where the answers actually live — and they are DIFFERENT SURFACES,
100
+ * which is why naming just one was wrong:**
101
+ *
102
+ * - **Which media categories are available** — the capability
103
+ * endpoint's `operations` map, per operation and mime_group
104
+ * block. Declared **once, not per audience**, because the axis does not
105
+ * vary. ⚠️ **`GET /api/v2/account/limits` cannot answer this**: it
106
+ * carries numeric limit entries only and exposes no MIME entitlement
107
+ * data at all.
108
+ * - **A caller's own numeric limits** — override-aware, and the only
109
+ * source reflecting account-level overrides:
110
+ * `GET /api/v2/account/limits` (`AccountLimits`). Its `limits` map is
111
+ * typed-open, so new limit keys arrive additively.
112
+ * - **Enforcement of record**: the API's `UserTier` enum. A `403`
113
+ * `tier_restriction` carries `TierRestrictionKind` — `mime_type` or
114
+ * `file_size` — naming which quota refused the request.
115
+ * - **Per-operation processing ceilings** (a different axis and a
116
+ * different number from the per-file upload cap):
117
+ * `processing_class.constraints` and `per_tier_constraints` in the
118
+ * operation schemas.
119
+ *
120
+ * **Concurrent long-form jobs** remain a hard per-tier ceiling enforced
121
+ * server-side; exceeding it returns a typed `429`
122
+ * `LONG_FORM_CONCURRENCY_LIMIT_EXCEEDED` (see the `POST /api/workflows`
123
+ * 429 response). **The per-tier numbers are deliberately not restated
124
+ * here** — read them from the source above.
53
125
  *
54
126
  * @export
55
127
  */
56
128
  export declare const UserTier: {
129
+ readonly basic: "basic";
57
130
  readonly free: "free";
58
131
  readonly pro: "pro";
59
132
  readonly max: "max";
@@ -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). **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.194.0
7
+ * The version of the OpenAPI document: 2.196.0
8
8
  *
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -15,47 +15,120 @@
15
15
  * Subscription tier. Mirrors the API-side
16
16
  * `App\Identity\Domain\Enums\UserTier` PHP enum.
17
17
  *
18
- * Ordering is `free` < `pro` < `max` < `enterprise` (the
18
+ * 🔴 **`basic` IS THE BASE TIER. `free` IS DEPRECATED IN PLACE AND
19
+ * WILL BE REMOVED** (ticket [`nD8fCPDy`](https://trello.com/c/nD8fCPDy)).
20
+ * Owner decision 2026-08-19: **you can buy credits into the base tier, so
21
+ * calling it "free" is false.** Both values are accepted through the
22
+ * transition and **occupy the same ordinal position** — they are one tier
23
+ * under two names, never two tiers.
24
+ *
25
+ * ⚠️ **A CONSUMER MUST TREAT THEM AS EQUAL.** Anything that compares,
26
+ * sorts or gates on tier must accept either and rank them identically;
27
+ * a `match`/`switch` that handles `free` and not `basic` will silently
28
+ * take a different branch the day the producer switches.
29
+ *
30
+ * 🔴 **PRODUCERS: DO NOT EMIT `basic` YET. THE FIRST WRITE IS AN
31
+ * OUTAGE, NOT A COMPILE ERROR.** This change makes the value *legal*, not
32
+ * *live*. **Schema-additive and safe-to-send are different claims**, and
33
+ * the gap between them is measured rather than theoretical:
34
+ *
35
+ * - **api (2026-08-20, from its own mapping):** `UserRecord` declares the
36
+ * column `enumType: UserTier::class`. Doctrine hydrates such a column
37
+ * through `EnumPropertyAccessor::setValue()`, which calls
38
+ * `$enumType::from($value)` — **and that THROWS on a value it does not
39
+ * know**, with no extension point. **A row persisted as `basic` makes
40
+ * every running api task 500 while hydrating that user.**
41
+ * - **And the rollout overlaps by design:** ECS runs
42
+ * `minimumHealthyPercent: 100` / `maximumPercent: 200`, so the NEW task
43
+ * starts before the OLD one drains. **The moment a new task writes a
44
+ * value the old one has never heard of, the old task 500s on that row
45
+ * for the rest of the rollout.**
46
+ * - **SDKs fail earlier and more kindly:** a generated Rust or PHP enum
47
+ * gains a variant and an exhaustive match stops compiling.
48
+ *
49
+ * ⭐ **AN ADDED ENUM VALUE IS A CONTRACT CHANGE WEARING A SCHEMA CHANGE'S
50
+ * CLOTHES.** A new COLUMN is invisible to old code's `SELECT` list; a new
51
+ * enum VALUE is **not** invisible to old code's hydration. *That asymmetry
52
+ * is why expand → migrate → contract fails to get applied to enums — the
53
+ * trigger does not look like the category.* (api's own note, written
54
+ * during an earlier enum sweep and reached independently of this one.)
55
+ * Emission is gated on the tolerance evidence table
56
+ * ([`tkRA9Bim`](https://trello.com/c/tkRA9Bim)), which requires an
57
+ * artefact from each of api, both SDK packages, frontend and e2e.
58
+ *
59
+ * 🔴 **`guest` IS NOT AND MUST NOT BECOME A MEMBER OF THIS ENUM.** It is
60
+ * the *absence* of a subscription, not a tier. Putting it here places a
61
+ * non-subscription value inside the ordering that drives upgrade prompts,
62
+ * where it has no position — **that conflation already shipped once as a
63
+ * bug and was deliberately removed.** The audience key lives on
64
+ * the audience axis, which is NOT a `UserTier` value. Asserted by a
65
+ * test, not left to prose.
66
+ *
67
+ * Ordering is `basic`/`free` < `pro` < `max` < `enterprise` (the
19
68
  * upgrade-resolver / `isHigherThan` ordinal in `UserTier.php`).
20
- * `max` is the top **self-serve** tier — Pro plus audio + larger
21
- * long-form bands; Enterprise remains the negotiated tier above it.
22
- *
23
- * Tier capability summary (informational; canonical limits are
24
- * enforced server-side per `UserTier.php`):
25
- * - `free`: 10 MiB max upload; image MIMEs only; 50 monthly credits;
26
- * 0 overdraft; 1× rate-limit baseline. No long-form access
27
- * (video/audio are MIME-gated away from Free).
28
- * - `pro`: 5 GiB max upload; image + video + document MIMEs; 1000
29
- * monthly credits; 200 overdraft; 5× rate-limit; up to 2 concurrent
30
- * in-flight long-form jobs.
31
- * - `max`: 50 GiB max upload; image + video + document + audio MIMEs;
32
- * 7500 monthly credits; 2500 overdraft; 15× rate-limit; up to 5
33
- * concurrent in-flight long-form jobs.
34
- * - `enterprise`: 100 GiB max upload; image + video + document + audio
35
- * MIMEs; 10000 monthly credits; 5000 overdraft; 20× rate-limit;
36
- * uncapped concurrent long-form jobs.
37
- *
38
- * **Concurrent long-form jobs** is a hard per-tier ceiling on the
39
- * number of in-flight long-form (Fargate) workflows a caller may
40
- * hold at once — exceeding it returns a typed `429`
41
- * `LONG_FORM_CONCURRENCY_LIMIT_EXCEEDED` (see the `POST /api/workflows`
42
- * 429 response). Pro's 2-job cap is enforced as of the Max-tier
43
- * launch.
69
+ * **The ordering is the part this contract owns** — it is what
70
+ * `TierRestrictionResponse.current_tier` / `.required_tier` and
71
+ * `FeatureViolation.required_tier` are compared with.
44
72
  *
45
- * The "max upload" figures are the per-file upload cap
46
- * (`UserTier.maxFileSizeBytes`) — the request-level tier quota,
47
- * surfaced override-aware via `GET /api/v2/account/limits`
48
- * (`max_upload_size_bytes`). They are DISTINCT from the per-operation
49
- * processing-class band caps (`processing_class.constraints` in the
50
- * operation schemas; e.g. the 120 GB Enterprise merge combined band).
73
+ * 🔴 **THIS SCHEMA DELIBERATELY DOES NOT ENUMERATE WHAT EACH TIER MAY
74
+ * DO, IN EITHER DIRECTION.** It previously carried a per-tier capability
75
+ * summary — upload caps, permitted MIME families, monthly credits,
76
+ * overdraft, rate-limit multiples, concurrent long-form jobs. **That was a
77
+ * restated SNAPSHOT of another repository's code, and it drifted, twice:**
51
78
  *
52
- * Used by `TierRestrictionResponse.current_tier` /
53
- * `TierRestrictionResponse.required_tier` and by
54
- * `FeatureViolation.required_tier`.
79
+ * - it asserted *"`free`: image MIMEs only … video/audio are MIME-gated
80
+ * away from Free"* — a per-tier media restriction this contract does not
81
+ * own and cannot keep true;
82
+ * - and the parallel table on `AccountLimits` listed tier byte defaults
83
+ * for `free` / `pro` / `enterprise` and **silently omitted `max`**, a
84
+ * tier this very enum declares. **That one was already wrong before any
85
+ * of it was reviewed.**
86
+ *
87
+ * **A description ships to every SDK consumer as generated documentation**,
88
+ * so a stale sentence here is not an internal note — it is an assertion
89
+ * delivered to callers, and it outlives the code it describes. *Point at
90
+ * the gate, not at a snapshot of it.*
91
+ *
92
+ * ⚠️ **No claim is made HERE about which media categories a tier permits —
93
+ * not the old restriction, and not its replacement.** That is a scoping
94
+ * statement about this description, **not a claim that the contract is
95
+ * silent on the subject**: hub decision 25 made audio universal, so
96
+ * there is no tier boundary at which the category axis changes. The
97
+ * category axis as DATA, once, uniform across audiences. **Prose that
98
+ * restates another repository's enforcement is the defect; a single
99
+ * generated declaration is the fix**, and the two must not both exist.
100
+ *
101
+ * **Where the answers actually live — and they are DIFFERENT SURFACES,
102
+ * which is why naming just one was wrong:**
103
+ *
104
+ * - **Which media categories are available** — the capability
105
+ * endpoint's `operations` map, per operation and mime_group
106
+ * block. Declared **once, not per audience**, because the axis does not
107
+ * vary. ⚠️ **`GET /api/v2/account/limits` cannot answer this**: it
108
+ * carries numeric limit entries only and exposes no MIME entitlement
109
+ * data at all.
110
+ * - **A caller's own numeric limits** — override-aware, and the only
111
+ * source reflecting account-level overrides:
112
+ * `GET /api/v2/account/limits` (`AccountLimits`). Its `limits` map is
113
+ * typed-open, so new limit keys arrive additively.
114
+ * - **Enforcement of record**: the API's `UserTier` enum. A `403`
115
+ * `tier_restriction` carries `TierRestrictionKind` — `mime_type` or
116
+ * `file_size` — naming which quota refused the request.
117
+ * - **Per-operation processing ceilings** (a different axis and a
118
+ * different number from the per-file upload cap):
119
+ * `processing_class.constraints` and `per_tier_constraints` in the
120
+ * operation schemas.
121
+ *
122
+ * **Concurrent long-form jobs** remain a hard per-tier ceiling enforced
123
+ * server-side; exceeding it returns a typed `429`
124
+ * `LONG_FORM_CONCURRENCY_LIMIT_EXCEEDED` (see the `POST /api/workflows`
125
+ * 429 response). **The per-tier numbers are deliberately not restated
126
+ * here** — read them from the source above.
55
127
  *
56
128
  * @export
57
129
  */
58
130
  export const UserTier = {
131
+ basic: 'basic',
59
132
  free: 'free',
60
133
  pro: 'pro',
61
134
  max: 'max',
@@ -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). **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.194.0
5
+ * The version of the OpenAPI document: 2.196.0
6
6
  *
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).