@giveitsmaller/contracts 0.62.0 → 0.65.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 (522) hide show
  1. package/README.md +34 -0
  2. package/accepted-options/accepted-options.json +1 -1
  3. package/accepted-options/image-output-routes.json +1 -1
  4. package/asyncapi/README.md +16 -0
  5. package/asyncapi/events.yaml +201 -7
  6. package/availability/README.md +25 -0
  7. package/availability/availability.json +20 -8
  8. package/code-builder/code-builder-metadata.json +5 -5
  9. package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
  10. package/dist/openapi/models/AccountLimitEntry.js +1 -1
  11. package/dist/openapi/models/AccountLimits.d.ts +1 -1
  12. package/dist/openapi/models/AccountLimits.js +1 -1
  13. package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
  14. package/dist/openapi/models/AccountLimitsLimits.js +1 -1
  15. package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
  16. package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
  17. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  18. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  19. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  20. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  21. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  22. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  23. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  24. package/dist/openapi/models/AuthErrorType.js +1 -1
  25. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
  26. package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
  27. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  28. package/dist/openapi/models/AvailabilityValue.js +1 -1
  29. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  30. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  31. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  32. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  33. package/dist/openapi/models/BillingCheckoutRequest.d.ts +12 -1
  34. package/dist/openapi/models/BillingCheckoutRequest.js +1 -1
  35. package/dist/openapi/models/BillingCheckoutSession.d.ts +1 -1
  36. package/dist/openapi/models/BillingCheckoutSession.js +1 -1
  37. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +1 -1
  38. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +1 -1
  39. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  40. package/dist/openapi/models/CallbackEventType.js +1 -1
  41. package/dist/openapi/models/CancelAccountDeletion200Response.d.ts +1 -1
  42. package/dist/openapi/models/CancelAccountDeletion200Response.js +1 -1
  43. package/dist/openapi/models/CancelAccountDeletion200ResponseData.d.ts +1 -1
  44. package/dist/openapi/models/CancelAccountDeletion200ResponseData.js +1 -1
  45. package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
  46. package/dist/openapi/models/CapabilityCondition.js +1 -1
  47. package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
  48. package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
  49. package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
  50. package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
  51. package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
  52. package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
  53. package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
  54. package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
  55. package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
  56. package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
  57. package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +3 -10
  58. package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -7
  59. package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
  60. package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
  61. package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
  62. package/dist/openapi/models/CapabilityConstraint.js +1 -1
  63. package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
  64. package/dist/openapi/models/CapabilityInputSpec.js +1 -1
  65. package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
  66. package/dist/openapi/models/CapabilityProduces.js +1 -1
  67. package/dist/openapi/models/CapabilityProducesOneOf.d.ts +3 -10
  68. package/dist/openapi/models/CapabilityProducesOneOf.js +1 -7
  69. package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
  70. package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
  71. package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
  72. package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
  73. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  74. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  75. package/dist/openapi/models/CodegenSource.d.ts +1 -1
  76. package/dist/openapi/models/CodegenSource.js +1 -1
  77. package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
  78. package/dist/openapi/models/CodegenSourceInput.js +1 -1
  79. package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
  80. package/dist/openapi/models/CodegenSourceJob.js +1 -1
  81. package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
  82. package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
  83. package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
  84. package/dist/openapi/models/CodegenSourceOperation.js +1 -1
  85. package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
  86. package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
  87. package/dist/openapi/models/CompositionPlan.d.ts +1 -1
  88. package/dist/openapi/models/CompositionPlan.js +1 -1
  89. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  90. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  91. package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
  92. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  93. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  94. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  95. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  96. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  97. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  98. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  99. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  100. package/dist/openapi/models/ConnectionSource.js +1 -1
  101. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  102. package/dist/openapi/models/ContactRequest.js +1 -1
  103. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  104. package/dist/openapi/models/ContactSubject.js +1 -1
  105. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  106. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  107. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  108. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  109. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  110. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  111. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  112. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  113. package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +1 -1
  114. package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +1 -1
  115. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  116. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  117. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  118. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  119. package/dist/openapi/models/CreateWorkflow401Response.d.ts +1 -1
  120. package/dist/openapi/models/CreateWorkflow401Response.js +1 -1
  121. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  122. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  123. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  124. package/dist/openapi/models/CreditTransaction.js +1 -1
  125. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  126. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  127. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  128. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  129. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  130. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  131. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  132. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  133. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  134. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  135. package/dist/openapi/models/Delivery.d.ts +1 -1
  136. package/dist/openapi/models/Delivery.js +1 -1
  137. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  138. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  139. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  140. package/dist/openapi/models/DeliveryPlan.js +1 -1
  141. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  142. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  143. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  144. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  145. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  146. package/dist/openapi/models/DeliverySelection.js +1 -1
  147. package/dist/openapi/models/DownloadBundle.d.ts +1 -1
  148. package/dist/openapi/models/DownloadBundle.js +1 -1
  149. package/dist/openapi/models/DroppedOption.d.ts +1 -1
  150. package/dist/openapi/models/DroppedOption.js +1 -1
  151. package/dist/openapi/models/EmailNotify.d.ts +1 -1
  152. package/dist/openapi/models/EmailNotify.js +1 -1
  153. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  154. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  155. package/dist/openapi/models/EndpointProjection.d.ts +44 -9
  156. package/dist/openapi/models/EndpointProjection.js +4 -1
  157. package/dist/openapi/models/EndpointProjectionServersInner.d.ts +57 -0
  158. package/dist/openapi/models/EndpointProjectionServersInner.js +49 -0
  159. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  160. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  161. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  162. package/dist/openapi/models/EstimateQuality.js +1 -1
  163. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  164. package/dist/openapi/models/EstimateRange.js +1 -1
  165. package/dist/openapi/models/ExportAccountData200Response.d.ts +1 -1
  166. package/dist/openapi/models/ExportAccountData200Response.js +1 -1
  167. package/dist/openapi/models/ExportAccountData200ResponseData.d.ts +1 -1
  168. package/dist/openapi/models/ExportAccountData200ResponseData.js +1 -1
  169. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  170. package/dist/openapi/models/ExternalDestination.js +1 -1
  171. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  172. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  173. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  174. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  175. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  176. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  177. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  178. package/dist/openapi/models/ExternalImportToken.js +1 -1
  179. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  180. package/dist/openapi/models/ExternalSource.js +1 -1
  181. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  182. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  183. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  184. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  185. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  186. package/dist/openapi/models/FeatureViolation.js +1 -1
  187. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  188. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  189. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  190. package/dist/openapi/models/JobDefinition.js +1 -1
  191. package/dist/openapi/models/JobDownload.d.ts +1 -1
  192. package/dist/openapi/models/JobDownload.js +1 -1
  193. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  194. package/dist/openapi/models/JobInputV2.js +1 -1
  195. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  196. package/dist/openapi/models/JobMediaClass.js +1 -1
  197. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  198. package/dist/openapi/models/JobOutputSource.js +1 -1
  199. package/dist/openapi/models/JobResponse.d.ts +1 -1
  200. package/dist/openapi/models/JobResponse.js +1 -1
  201. package/dist/openapi/models/JobStatus.d.ts +1 -1
  202. package/dist/openapi/models/JobStatus.js +1 -1
  203. package/dist/openapi/models/JobType.d.ts +1 -1
  204. package/dist/openapi/models/JobType.js +1 -1
  205. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  206. package/dist/openapi/models/LivenessResponse.js +1 -1
  207. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  208. package/dist/openapi/models/LoginUser200Response.js +1 -1
  209. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  210. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  211. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  212. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  213. package/dist/openapi/models/LoginUser401Response.d.ts +1 -1
  214. package/dist/openapi/models/LoginUser401Response.js +1 -1
  215. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  216. package/dist/openapi/models/LoginUserRequest.js +1 -1
  217. package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
  218. package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
  219. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
  220. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
  221. package/dist/openapi/models/MediaCategory.d.ts +1 -1
  222. package/dist/openapi/models/MediaCategory.js +1 -1
  223. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  224. package/dist/openapi/models/MetadataResponse.js +1 -1
  225. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  226. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  227. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  228. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  229. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  230. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  231. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  232. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  233. package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
  234. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  235. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  236. package/dist/openapi/models/MultiInputSource.js +1 -1
  237. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  238. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  239. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  240. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  241. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  242. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  243. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  244. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  245. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  246. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  247. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  248. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  249. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  250. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  251. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  252. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  253. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  254. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  255. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  256. package/dist/openapi/models/MultipartPartListing.js +1 -1
  257. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  258. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  259. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  260. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  261. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  262. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  263. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  264. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  265. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  266. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  267. package/dist/openapi/models/NotifyConfig.d.ts +1 -1
  268. package/dist/openapi/models/NotifyConfig.js +1 -1
  269. package/dist/openapi/models/OperationCapability.d.ts +1 -1
  270. package/dist/openapi/models/OperationCapability.js +1 -1
  271. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  272. package/dist/openapi/models/OperationDefinition.js +1 -1
  273. package/dist/openapi/models/OperationDownload.d.ts +1 -1
  274. package/dist/openapi/models/OperationDownload.js +1 -1
  275. package/dist/openapi/models/OperationInputModel.d.ts +1 -1
  276. package/dist/openapi/models/OperationInputModel.js +1 -1
  277. package/dist/openapi/models/OperationResponse.d.ts +1 -1
  278. package/dist/openapi/models/OperationResponse.js +1 -1
  279. package/dist/openapi/models/OperationResult.d.ts +1 -1
  280. package/dist/openapi/models/OperationResult.js +1 -1
  281. package/dist/openapi/models/OperationResultMetadata.d.ts +1 -1
  282. package/dist/openapi/models/OperationResultMetadata.js +1 -1
  283. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  284. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  285. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  286. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  287. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  288. package/dist/openapi/models/OperationStatus.js +1 -1
  289. package/dist/openapi/models/OperationType.d.ts +1 -1
  290. package/dist/openapi/models/OperationType.js +1 -1
  291. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  292. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  293. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  294. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  295. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  296. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  297. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  298. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  299. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  300. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  301. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +1 -1
  302. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +1 -1
  303. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  304. package/dist/openapi/models/OptionSchema.js +1 -1
  305. package/dist/openapi/models/OutputProperties.d.ts +1 -1
  306. package/dist/openapi/models/OutputProperties.js +1 -1
  307. package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
  308. package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
  309. package/dist/openapi/models/PerClassAvailabilityEntry.d.ts +1 -1
  310. package/dist/openapi/models/PerClassAvailabilityEntry.js +1 -1
  311. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  312. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  313. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  314. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  315. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  316. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  317. package/dist/openapi/models/ProbePendingResponse.d.ts +1 -1
  318. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  319. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  320. package/dist/openapi/models/ProcessingClass.js +1 -1
  321. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  322. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  323. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  324. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  325. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  326. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  327. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  328. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  329. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  330. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  331. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  332. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  333. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  334. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  335. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  336. package/dist/openapi/models/ProcessingPlan.js +1 -1
  337. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  338. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  339. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  340. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  341. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  342. package/dist/openapi/models/ReadinessResponse.js +1 -1
  343. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  344. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  345. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  346. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  347. package/dist/openapi/models/RequestAccountDeletion200Response.d.ts +1 -1
  348. package/dist/openapi/models/RequestAccountDeletion200Response.js +1 -1
  349. package/dist/openapi/models/RequestAccountDeletion200ResponseData.d.ts +1 -1
  350. package/dist/openapi/models/RequestAccountDeletion200ResponseData.js +1 -1
  351. package/dist/openapi/models/RequestAccountDeletionRequest.d.ts +1 -1
  352. package/dist/openapi/models/RequestAccountDeletionRequest.js +1 -1
  353. package/dist/openapi/models/ResendVerificationEmailRequest.d.ts +1 -1
  354. package/dist/openapi/models/ResendVerificationEmailRequest.js +1 -1
  355. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  356. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  357. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  358. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  359. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  360. package/dist/openapi/models/RetryResponse.js +1 -1
  361. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  362. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  363. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  364. package/dist/openapi/models/SseCompletionBase.js +1 -1
  365. package/dist/openapi/models/SseEventType.d.ts +1 -1
  366. package/dist/openapi/models/SseEventType.js +1 -1
  367. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  368. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  369. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  370. package/dist/openapi/models/SseJobFailedData.js +1 -1
  371. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  372. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  373. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  374. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  375. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  376. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  377. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  378. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  379. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  380. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  381. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  382. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  383. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  384. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  385. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  386. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  387. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  388. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  389. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  390. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  391. package/dist/openapi/models/TierDefaultLimits.d.ts +1 -1
  392. package/dist/openapi/models/TierDefaultLimits.js +1 -1
  393. package/dist/openapi/models/TierDefaults.d.ts +1 -1
  394. package/dist/openapi/models/TierDefaults.js +1 -1
  395. package/dist/openapi/models/TierDefaultsByAudience.d.ts +1 -1
  396. package/dist/openapi/models/TierDefaultsByAudience.js +1 -1
  397. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  398. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  399. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  400. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  401. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  402. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  403. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +7 -28
  404. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -19
  405. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  406. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  407. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  408. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  409. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  410. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  411. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  412. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  413. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  414. package/dist/openapi/models/UploadFile403Response.js +1 -1
  415. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  416. package/dist/openapi/models/UploadFile422Response.js +1 -1
  417. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  418. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  419. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  420. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  421. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  422. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  423. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  424. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  425. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  426. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  427. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  428. package/dist/openapi/models/UploadResponse.js +1 -1
  429. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  430. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  431. package/dist/openapi/models/UploadSource.d.ts +1 -1
  432. package/dist/openapi/models/UploadSource.js +1 -1
  433. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  434. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  435. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  436. package/dist/openapi/models/UploadThresholds.js +1 -1
  437. package/dist/openapi/models/UserTier.d.ts +1 -1
  438. package/dist/openapi/models/UserTier.js +1 -1
  439. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  440. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  441. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  442. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  443. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  444. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  445. package/dist/openapi/models/WarningType.d.ts +1 -1
  446. package/dist/openapi/models/WarningType.js +1 -1
  447. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  448. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  449. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  450. package/dist/openapi/models/WebhookPayload.js +1 -1
  451. package/dist/openapi/models/WorkflowArchiveResponse.d.ts +3 -10
  452. package/dist/openapi/models/WorkflowArchiveResponse.js +1 -7
  453. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.d.ts +1 -1
  454. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.js +1 -1
  455. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  456. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  457. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  458. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  459. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  460. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  461. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  462. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  463. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  464. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  465. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  466. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  467. package/dist/openapi/models/WorkflowCreditSummary.d.ts +1 -1
  468. package/dist/openapi/models/WorkflowCreditSummary.js +1 -1
  469. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  470. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  471. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  472. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  473. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  474. package/dist/openapi/models/WorkflowEdge.js +1 -1
  475. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  476. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  477. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  478. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  479. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  480. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  481. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  482. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  483. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  484. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  485. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  486. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  487. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  488. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  489. package/dist/openapi/models/WorkflowRestoreResponse.d.ts +3 -10
  490. package/dist/openapi/models/WorkflowRestoreResponse.js +1 -7
  491. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.d.ts +1 -1
  492. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.js +1 -1
  493. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  494. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  495. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  496. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  497. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  498. package/dist/openapi/models/WorkflowSource.js +1 -1
  499. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  500. package/dist/openapi/models/WorkflowStatus.js +1 -1
  501. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  502. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  503. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  504. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  505. package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
  506. package/dist/openapi/models/WorkflowSummary.js +1 -1
  507. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  508. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  509. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  510. package/dist/openapi/models/WorkflowWarning.js +1 -1
  511. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  512. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  513. package/dist/openapi/models/index.d.ts +1 -0
  514. package/dist/openapi/models/index.js +1 -0
  515. package/dist/openapi/runtime.d.ts +1 -1
  516. package/dist/openapi/runtime.js +1 -1
  517. package/openapi/README.md +17 -0
  518. package/openapi/api.yaml +297 -18
  519. package/operation-capabilities/operation-capabilities.json +1 -1
  520. package/operations/README.md +17 -0
  521. package/operations/schemas/compress.yaml +57 -3
  522. package/package.json +4 -2
package/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # @giveitsmaller/contracts
2
+
3
+ **Generated contract types for GISL (Give It Smaller).** Do not edit — this package is produced by
4
+ `scripts/generate.py` in the `giveitsmaller-sdks` repo and regenerated on every contracts re-vendor.
5
+
6
+ | | |
7
+ |---|---|
8
+ | Package version | `0.65.0` |
9
+ | Generated from spec | **`v2.194.0`** |
10
+
11
+ ## Two version lines, and they are not comparable
12
+
13
+ This package is on an **0.x** line. The contract it is generated from is on a **2.x** line. They
14
+ count independently and nothing in either name says so, so:
15
+
16
+ - `npm view` / `composer show` tells you the PACKAGE version, never the spec version.
17
+ - To find the spec version, read **`gislContractsSpec`** in `package.json` (npm) or
18
+ **`extra.gisl-contracts-spec`** in `composer.json` (Composer), or the table above.
19
+
20
+ ⚠️ **If `gislContractsSpec` is absent, this package is 0.62.0 or older — it does NOT mean you have
21
+ the wrong package.** The field was introduced after 0.62.0.
22
+
23
+ ## What is in here
24
+
25
+ - `openapi/api.yaml`, `asyncapi/events.yaml` — the specs themselves.
26
+ - `dist/` — generated TypeScript types for both, plus the operation schemas.
27
+ - `availability/availability.json` — per-endpoint availability. **`planned` means the endpoint is
28
+ declared but not necessarily implemented or routed**; check before building against it.
29
+
30
+ ## Related packages
31
+
32
+ `giveitsmaller/contracts` on Packagist is the PHP build of this same generated output and shares
33
+ these version numbers. `antoniocs/compression-contracts` is a DIFFERENT package — the 2.x Composer
34
+ package carrying the spec for the PHP API — and its numbers are the spec numbers, not these.
@@ -1200,5 +1200,5 @@
1200
1200
  }
1201
1201
  }
1202
1202
  },
1203
- "schema_version": "2.191.0"
1203
+ "schema_version": "2.194.0"
1204
1204
  }
@@ -246,5 +246,5 @@
246
246
  "source_op": "compress"
247
247
  }
248
248
  },
249
- "schema_version": "2.191.0"
249
+ "schema_version": "2.194.0"
250
250
  }
@@ -0,0 +1,16 @@
1
+ # TypeScript -- AsyncAPI Event Models
2
+
3
+ > **Auto-generated** -- do not edit manually. Changes will be overwritten on the next generation run.
4
+ >
5
+ > Regenerate with: `make project/generate-tests`
6
+
7
+ ## Source
8
+
9
+ - **Spec:** `compression_contracts/asyncapi/events.yaml` (AsyncAPI 3.0)
10
+ - **Generator:** [asyncapi/cli](https://www.asyncapi.com/tools/cli) 6.0.0
11
+ (Docker image: `asyncapi/cli:6.0.0`)
12
+ - **Files:** 29
13
+
14
+ ## Contents
15
+
16
+ TypeScript interfaces and enum types for async event models (operation requests, progress updates, results).
@@ -1,7 +1,7 @@
1
1
  asyncapi: 3.0.0
2
2
  info:
3
3
  title: GISL Compression Events
4
- version: 3.25.3
4
+ version: 3.26.0
5
5
  description: |
6
6
  Asynchronous event contracts for the GISL (Give It Smaller) compression service.
7
7
 
@@ -4054,7 +4054,150 @@ components:
4054
4054
  Stored in database as part of the Operation entity.
4055
4055
 
4056
4056
  **Important**: This message MUST always be sent, whether the operation
4057
- succeeds or fails. It is the definitive signal that processing is complete.
4057
+ succeeds or fails. It is the signal that an ATTEMPT at processing has
4058
+ finished.
4059
+
4060
+ ⚠️ **It was previously described as "the definitive signal that
4061
+ processing is complete". That is no longer accurate and the correction
4062
+ matters:** a terminal result is definitive about the attempt that
4063
+ produced it, not about the operation, because a second attempt can
4064
+ follow and produce a second terminal result. See the supersession rule
4065
+ below.
4066
+
4067
+ ## ⚠️ AN OPERATION MAY DELIVER MORE THAN ONE TERMINAL RESULT
4068
+
4069
+ Delivery is **at least once**, and that applies to the terminal event
4070
+ itself. A consumer MUST be prepared for a second `OperationResult`
4071
+ carrying the same `operation_id`.
4072
+
4073
+ **The known mechanism** (`compression_lambdas`, CODE READ re-verified at
4074
+ HEAD 2026-08-11 — **not a staging measurement**, and contracts has not
4075
+ measured it either): `SqsHandler` publishes a terminal `failed` result
4076
+ and *then* returns a `BatchItemFailure`. SQS redelivers, the operation
4077
+ reruns, and a second terminal event lands — `completed` if the retry
4078
+ succeeds. **The first `failed` is never retracted.**
4079
+
4080
+ **FIFO deduplication does not collapse the pair**, and the reason is the
4081
+ 5-minute dedup window against the queue visibility timeouts: measured in
4082
+ `compression_terraform` on 2026-08-13, those are **6× the Lambda
4083
+ timeout — 1620s (27 min) fast, 3240s (54 min) medium, 4860s (81 min)
4084
+ slow**. The smallest is over five times the dedup window, so redelivery
4085
+ cannot land inside it.
4086
+
4087
+ ⚠️ **Two corrections to how this was first written here, both from
4088
+ numbers relayed rather than run.** It said the redelivery interval is
4089
+ "≥90 minutes" — **the maximum is 81 and the image/document path is 27**.
4090
+ And it said the payloads "are not byte-identical anyway because COGS
4091
+ metrics are stamped per invocation" — **per-invocation stamping does not
4092
+ GUARANTEE difference**, since two runs can measure the same duration and
4093
+ memory. The dedup argument rests on the window alone; the byte
4094
+ difference is a likelihood, not a mechanism, and it is not load-bearing.
4095
+
4096
+ ### The rule: `completed` supersedes `failed`, REGARDLESS OF ARRIVAL ORDER
4097
+
4098
+ For a given `operation_id`:
4099
+
4100
+ 1. **A `completed` result supersedes a `failed` result**, whichever
4101
+ arrives first. A consumer that has recorded a failure and then
4102
+ receives a completion MUST treat the operation as completed.
4103
+ 2. **A `completed` never supersedes another `completed`.** Keep the
4104
+ first; a second is a duplicate delivery of the same outcome.
4105
+ 3. **Two `failed` results are NOT ordered by this contract.** Keep the
4106
+ first `error_code` and record that another arrived. See the limit
4107
+ below — this is the case the contract cannot yet decide, and saying
4108
+ so is deliberate.
4109
+
4110
+ ### Supersession replaces the WHOLE result, not just the status
4111
+
4112
+ When a `completed` supersedes a `failed`, the superseding result is
4113
+ authoritative **in its entirety**:
4114
+
4115
+ - `error_code`, `error_message` and `is_retryable` from the superseded
4116
+ failure are **discarded**. ⚠️ Retaining them is the obvious bug: an
4117
+ operation reading `status: completed` next to a stale
4118
+ `error_code: timeout` is a record no consumer can interpret, and each
4119
+ one would invent a different reconciliation.
4120
+ - `metrics`, `outputs` and every output field are **the superseding
4121
+ result's**. They are **not merged and not aggregated** — the two sets
4122
+ describe two different invocations, and averaging or summing them
4123
+ would produce a number that describes neither.
4124
+ - If the superseded result is retained for audit, it must be stored
4125
+ **as a separate record**, never merged field-wise into the surviving
4126
+ one.
4127
+
4128
+ ⚠️ **NOT by arrival order, and not by any clock.** Rule 1 is decidable
4129
+ from `status` alone, which is why it works today with no new field: the
4130
+ only known producer of a second terminal is a retry *after* a failure,
4131
+ so `failed` → `completed` is the only transition it generates. A rule
4132
+ that depended on ordering would be undecidable on this message today —
4133
+ see below.
4134
+
4135
+ ### Metric disagreement is NOT evidence of supersession
4136
+
4137
+ Two terminal results for one operation **may disagree on `metrics`**, and
4138
+ that is expected rather than anomalous: COGS fields (`billed_duration_ms`,
4139
+ `memory_mb`, `fargate_runtime_ms`, `duration_ms`) are stamped **per
4140
+ invocation**, so a retry legitimately reports different numbers for the
4141
+ same logical work.
4142
+
4143
+ **A consumer MUST NOT read metric disagreement as evidence that one
4144
+ result supersedes the other.** Supersession is decided by the rule above
4145
+ and by nothing else. Using metrics to arbitrate would make the answer
4146
+ depend on how long a machine happened to take.
4147
+
4148
+ ### 🔴 THE MISSING FIELD, RECORDED AS A FINDING
4149
+
4150
+ **There is no producer-stamped ordering field on `OperationResult`
4151
+ today.** No attempt counter, no producer timestamp, no sequence number —
4152
+ `job_id`, `operation_id`, `operation_type`, `status` and the payload, and
4153
+ nothing that says *which invocation produced this*.
4154
+
4155
+ That absence is why rule 3 exists: **two failures cannot be ordered, and
4156
+ the contract does not pretend otherwise.** Telling consumers to fall back
4157
+ on arrival order would be worse than admitting it — SNS/SQS ordering is a
4158
+ transport property, and a rule that reads it as producer intent is wrong
4159
+ in a way no consumer can detect.
4160
+
4161
+ **The field this needs is an `attempt` counter** — monotonically
4162
+ increasing per `operation_id`, stamped by the producer — because it does
4163
+ not depend on a clock, and two invocations are tens of minutes apart in
4164
+ wall time (27–81 minutes of visibility timeout, measured above) but
4165
+ ADJACENT in attempt number. **Not declared here**: the producer
4166
+ must confirm it can supply it (SQS exposes `ApproximateReceiveCount` to
4167
+ the handler, which is a candidate, not a decision). Specifying a field
4168
+ the producer has not agreed to emit is how a contract acquires a
4169
+ promise nothing keeps.
4170
+
4171
+ Once `attempt` exists, higher wins, and it subsumes rules 1–3.
4172
+
4173
+ ### 🔴 THE PARENT IS NOT COVERED BY THIS RULE, AND THAT IS A GAP
4174
+
4175
+ Consuming an `OperationResult` does not stop at the operation: it
4176
+ derives Job and Workflow status, and `GET /api/workflows/{id}/events`
4177
+ **closes the SSE stream once the workflow reaches a terminal state**.
4178
+
4179
+ ⇒ **A first `failed` can terminalise the parent and disconnect the
4180
+ client BEFORE the superseding `completed` arrives.** Operation-level
4181
+ supersession then repairs the record while the caller who was watching
4182
+ has already been told the workflow failed and has had its stream closed.
4183
+
4184
+ **This contract does NOT specify:**
4185
+
4186
+ - whether a workflow that reached a terminal state may return to a
4187
+ non-terminal one when a superseding `completed` lands;
4188
+ - what a closed SSE stream owes a client afterwards — **nothing here
4189
+ reopens it**, and a client that did not poll will not learn;
4190
+ - whether a re-derived parent status emits any event at all.
4191
+
4192
+ **Those are api's to decide** (their `U8G8ECRD` / `cfaGq9Xt`), and the
4193
+ gap is recorded here rather than resolved, because a rule invented in
4194
+ this repo for behaviour implemented in another is the shape that
4195
+ produced the false paragraph corrected above.
4196
+
4197
+ ⚠️ **Until it is decided, a consumer that treats a workflow-level
4198
+ `failed` as final is CORRECT per this contract and may still be wrong in
4199
+ fact.** Saying so is the honest position; implying the operation-level
4200
+ rule fixes the parent would not be.
4058
4201
 
4059
4202
  ## Single-output vs multi-output completion
4060
4203
 
@@ -5427,13 +5570,54 @@ components:
5427
5570
  ErrorCode:
5428
5571
  type: string
5429
5572
  description: |
5573
+ ⚠️ **A CODE DECLARED HERE IS AN UPPER BOUND, NOT A GUARANTEE THAT ANY
5574
+ WORKER CAN SEND IT.** Declaring a value in this enum does not make it
5575
+ emittable: the path is contract → SDK regeneration → **each consumer
5576
+ bumping its own pinned models ref** → only then can the value reach the
5577
+ wire. **This repo cannot see where any code sits on that path**, because
5578
+ the pin lives in the consumer.
5579
+
5580
+ Measured 2026-08-12 for one consumer (`compression_lambdas` at
5581
+ `rust-models-v0.45.0`), by that consumer, since only they can:
5582
+ **17 declared here · 15 available in their generated enum · 12 actually
5583
+ emitted by a worker.** `input_too_large` was declared 2026-07-28 and is
5584
+ one of the two that were **not yet available** — so a client handling it
5585
+ would have been handling a case that could not occur, and would have
5586
+ looked correct indefinitely.
5587
+
5588
+ **So a consumer MUST NOT infer from this list that a code can arrive.**
5589
+ If you need to know, ask the producing repo — the answer is theirs and
5590
+ is cheap for them; it is not derivable here. Deliberately not mechanised
5591
+ (ticket [`E0sQkhMA`](https://trello.com/c/E0sQkhMA)): one measured answer
5592
+ on request has been enough, and building the mechanism before the second
5593
+ request is how a thing gets maintained for years because it exists.
5594
+
5430
5595
  Machine-readable operation error code for categorization and retry logic.
5431
5596
  CLOSED typed set (the worker's `ErrorCode` enum); consumers SHOULD map known
5432
5597
  values and MUST degrade an unknown value to a generic reason (a future
5433
- contract version MAY add a variant; additive). Retryable codes are
5434
- auto-redriven (SQS) and EXHAUSTED before a failure surfaces to a consumer, so
5435
- a reported failure is always terminal — `is_retryable` only signals whether
5436
- re-submitting is worthwhile.
5598
+ contract version MAY add a variant; additive).
5599
+
5600
+ 🔴 **A REPORTED FAILURE IS NOT NECESSARILY THE LAST WORD.** This paragraph
5601
+ previously said retryable codes are "auto-redriven (SQS) and EXHAUSTED
5602
+ before a failure surfaces to a consumer, so a reported failure is always
5603
+ terminal". **That is normative and it does not match the worker.**
5604
+ `SqsHandler` publishes a terminal `failed` result and *then* returns a
5605
+ `BatchItemFailure`; SQS redelivers, the operation reruns, and a second
5606
+ terminal event lands — `completed` if the retry succeeds. **The first
5607
+ `failed` is never retracted.**
5608
+
5609
+ ⚠️ **Source and its limit, stated so it is not laundered into something
5610
+ stronger:** that mechanism is a **CODE READ of the worker, re-verified at
5611
+ HEAD 2026-08-11 by `compression_lambdas` and relayed to this repo. It is
5612
+ NOT a staging measurement, and contracts has not measured it either.**
5613
+ The consumer rule below is written to be correct whether or not the
5614
+ sequence occurs — a consumer that never receives a second terminal loses
5615
+ nothing by following it.
5616
+
5617
+ **`is_retryable` is unchanged and still means what it says:** whether
5618
+ re-submitting this operation is worthwhile. It is a property of the
5619
+ error, not a statement about how many times the platform has already
5620
+ tried. See `OperationResult` for the supersession rule.
5437
5621
 
5438
5622
  **Retryable errors** (transient — re-submitting may succeed):
5439
5623
  - s3_download_failed: Source file download failed
@@ -5441,7 +5625,17 @@ components:
5441
5625
  - out_of_memory: Worker ran out of memory
5442
5626
  - timeout: Operation exceeded its time cap
5443
5627
 
5444
- **Non-retryable errors** (terminal — won't clear on retry):
5628
+ **Non-retryable errors** — and `is_retryable` IS the redelivery
5629
+ condition, which makes these effectively final. `SqsHandler` returns a
5630
+ `BatchItemFailure` **only when `error_code.is_retryable()`**; a
5631
+ non-retryable failure is acknowledged and never redelivered, so no second
5632
+ terminal result can follow it. ⇒ **A second terminal result can only
5633
+ follow a RETRYABLE failure.** (Verified in
5634
+ `compression_lambdas` `crates/shared/src/infra/handlers/sqs_handler.rs`
5635
+ at `98309eba901fce4efd82908c143ba2b93002df51`. An earlier draft of this
5636
+ paragraph said redelivery "is not conditioned on this field" — that was
5637
+ wrong, and it was wrong in the direction that would have made consumers
5638
+ defend against a case that cannot occur.)
5445
5639
  - invalid_format: Unsupported or corrupted file
5446
5640
  - format_mismatch: MIME type doesn't match content
5447
5641
  - decode_failed: Cannot decode/parse file
@@ -0,0 +1,25 @@
1
+ # TypeScript -- Availability Sidecar
2
+
3
+ > **Auto-generated** -- do not edit manually. Changes will be overwritten on the next generation run.
4
+ >
5
+ > Regenerate with: `make project/generate-tests`
6
+
7
+ ## Source
8
+
9
+ - **Spec:** `compression_contracts/availability/availability.json` (sidecar)
10
+ - **Files:** 1 (`availability.json`)
11
+
12
+ ## Contents
13
+
14
+ Capability matrix sidecar -- chain compatibility, capabilities_version,
15
+ and per-feature availability metadata.
16
+
17
+ ## Access
18
+
19
+ Import via the package subpath export:
20
+
21
+ ```ts
22
+ import availability from '@giveitsmaller/contracts/availability/availability.json' with { type: 'json' };
23
+ ```
24
+
25
+ The subpath is wired in `package.json` `exports` and the file is included in `files[]`.
@@ -1,5 +1,5 @@
1
1
  {
2
- "capabilities_version": 180,
2
+ "capabilities_version": 181,
3
3
  "endpoints": {
4
4
  "DELETE /api/auth/account": {
5
5
  "auth": "required",
@@ -83,7 +83,19 @@
83
83
  "availability": "stable",
84
84
  "identity_scoped": true,
85
85
  "operation_id": "streamWorkflowEvents",
86
- "required_tier": null
86
+ "required_tier": null,
87
+ "servers": [
88
+ {
89
+ "description": "Local development. Same origin as the rest of the API \u2014 local runs\ndo NOT reproduce the split-host topology, so a client that works\nlocally has **not** exercised the cross-origin path. Treat a local\npass as evidence about your code and not about the routing.\n",
90
+ "replaces": "http://localhost:8080",
91
+ "url": "http://localhost:8080"
92
+ },
93
+ {
94
+ "description": "Staging stream host. A SEPARATE PUBLIC ENTRY POINT from\n`api.staging.giveitsmaller.com`, which is why it is declared here\nrather than inherited: the API host fronts an integration with no\nresponse-streaming mode, and this is the only endpoint that needs\nstreaming.\n\n\u26a0\ufe0f **THIS HOST ALLOWS EXACTLY ONE CORS ORIGIN, AND IT IS A\nDIFFERENT POLICY FROM THE API HOST.** The stream stack sets\n`cors_allow_origin` (**singular**) to the frontend host alone, in\n**both** environments. The API host sets `cors_allow_origins`\n(**plural**) \u2014 and **the list differs BY ENVIRONMENT**:\n\n staging api host localhost:5173, localhost:3000, www.staging\u2026\n prod api host www.giveitsmaller.com \u2190 NO localhost, never had\n both stream the frontend host only (singular)\n\n\u21d2 **A BROWSER ON localhost CAN CALL THE STAGING API HOST AND\nCANNOT CALL EITHER STREAM HOST.** The break is **conditional on a\nlocal build choosing this host**: the frontend's local build leaves\n`VITE_SSE_BASE_URL` unset and falls back to the API host, so nothing\nbreaks today (measured by `compression_frontend`, 2026-08-14). **A\nclient that DOES point a localhost browser here is blocked, and the\nfailure arrives as a CORS error that reads as a configuration\nmistake in their own app.**\n\n**This is a local-development concern only; prod never permitted\nlocalhost on any host** (measured by `compression_terraform`,\n2026-08-14 \u2014 an earlier version of this note gave the staging list\nwithout saying it was staging's, which would have read as universal\nand turned a dev-experience issue into an apparent launch one).\n\n\u26a0\ufe0f **\"Just add another origin\" is not a CONFIG CHANGE here, and\nthe reason is our implementation rather than an AWS limit.** An API\nGateway **HTTP** API has a native, declarative CORS configuration\nthat takes a LIST and echoes whichever origin matches. A **REST**\nAPI has no equivalent declarative feature \u2014 the value is whatever\nthe preflight MOCK integration and the backend return \u2014 so\nmulti-origin support is possible but must be **built**\n(validate-the-Origin-then-echo), which is a change with its own\ncorrectness risk rather than an extra list entry.\n\n*(An earlier version of this note said a REST API simply cannot do\nit. That is wrong: AWS documents that for proxy integrations the\nBACKEND returns `Access-Control-Allow-Origin`, so per-origin\nresponses are available to anyone willing to implement them.\nStating a platform prohibition where an implementation choice\nexists closes a door that is open.)*\n\nThe credentialed case does foreclose the other escape: with\n`Allow-Credentials: true` the origin header cannot be `*`.\n\nThe same applies to embedded and third-party consumers, and to any\n**browser build of a published SDK**: `@giveitsmaller/sdk` ships a\nbrowser entry point whose client carries `streamEvents`, so this is\na published-surface limit rather than an internal one.\n\nA server-side caller is unaffected. **The origin list is a property\nof the deployed stack, not of this contract** \u2014 it is stated here\nbecause a client author reading only the URL cannot discover it, and\nit changes only in `compression_terraform`.\n\n\u26a0\ufe0f **AUTH ON THIS HOST IS CROSS-ORIGIN, AND `sessionAuth` IS THE\nONE THAT MAY NOT SURVIVE IT.** This operation advertises\n`bearerAuth`, `sessionAuth` and anonymous access \u2014 but the security\nlist describes what the ENDPOINT accepts, not what a browser can\ndeliver to a different origin.\n\n**Cookie domain scope is necessary and NOT sufficient.** A\ncredentialed cross-origin request additionally requires the client\nto opt in (`EventSource { withCredentials: true }`, or `fetch`\nwith `credentials: 'include'`) **and** the server to answer with\n`Access-Control-Allow-Credentials` and a non-wildcard origin. Bearer\nand capability headers likewise need the header to be permitted by\nthe preflight response.\n\n**None of that is verified by this contract, and contracts has not\nmeasured it.** \u21d2 **A browser client SHOULD prefer `bearerAuth` or\nthe anonymous capability header on this host**, and should treat\ncookie-based session auth over it as unproven until somebody\nmeasures a credentialed cross-origin stream.\n",
95
+ "replaces": "https://api.staging.giveitsmaller.com",
96
+ "url": "https://stream.staging.giveitsmaller.com"
97
+ }
98
+ ]
87
99
  },
88
100
  "GET /api/workflows/{id}/status": {
89
101
  "auth": "optional",
@@ -276,7 +288,7 @@
276
288
  },
277
289
  "POST /api/workflows/{id}/archive": {
278
290
  "auth": "required",
279
- "availability": "stable",
291
+ "availability": "planned",
280
292
  "identity_scoped": true,
281
293
  "operation_id": "archiveWorkflow",
282
294
  "required_tier": null
@@ -290,7 +302,7 @@
290
302
  },
291
303
  "POST /api/workflows/{id}/restore": {
292
304
  "auth": "required",
293
- "availability": "stable",
305
+ "availability": "planned",
294
306
  "identity_scoped": true,
295
307
  "operation_id": "restoreWorkflow",
296
308
  "required_tier": null
@@ -996,7 +1008,7 @@
996
1008
  }
997
1009
  },
998
1010
  "document_epub": {
999
- "max_input_size_bytes": 104857600,
1011
+ "max_input_size_bytes": 209715200,
1000
1012
  "mimes": [
1001
1013
  "application/epub+zip"
1002
1014
  ],
@@ -1021,7 +1033,7 @@
1021
1033
  }
1022
1034
  },
1023
1035
  "document_odf": {
1024
- "max_input_size_bytes": 104857600,
1036
+ "max_input_size_bytes": 209715200,
1025
1037
  "mimes": [
1026
1038
  "application/vnd.oasis.opendocument.text",
1027
1039
  "application/vnd.oasis.opendocument.spreadsheet",
@@ -1048,7 +1060,7 @@
1048
1060
  }
1049
1061
  },
1050
1062
  "document_office": {
1051
- "max_input_size_bytes": 104857600,
1063
+ "max_input_size_bytes": 209715200,
1052
1064
  "mimes": [
1053
1065
  "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
1054
1066
  "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
@@ -5118,7 +5130,7 @@
5118
5130
  "sole_op": true
5119
5131
  }
5120
5132
  },
5121
- "schema_version": "2.191.0",
5133
+ "schema_version": "2.194.0",
5122
5134
  "source_commit": null,
5123
5135
  "user_tier": null,
5124
5136
  "workflow_features": {
@@ -1200,7 +1200,7 @@
1200
1200
  }
1201
1201
  },
1202
1202
  "document_epub": {
1203
- "max_input_size_bytes": 104857600,
1203
+ "max_input_size_bytes": 209715200,
1204
1204
  "media_group": "document",
1205
1205
  "mimes": [
1206
1206
  "application/epub+zip"
@@ -1249,7 +1249,7 @@
1249
1249
  }
1250
1250
  },
1251
1251
  "document_odf": {
1252
- "max_input_size_bytes": 104857600,
1252
+ "max_input_size_bytes": 209715200,
1253
1253
  "media_group": "document",
1254
1254
  "mimes": [
1255
1255
  "application/vnd.oasis.opendocument.text",
@@ -1300,7 +1300,7 @@
1300
1300
  }
1301
1301
  },
1302
1302
  "document_office": {
1303
- "max_input_size_bytes": 104857600,
1303
+ "max_input_size_bytes": 209715200,
1304
1304
  "media_group": "document",
1305
1305
  "mimes": [
1306
1306
  "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
@@ -7188,7 +7188,7 @@
7188
7188
  }
7189
7189
  },
7190
7190
  "preset_config_hash": "sha256:354814f7906f85be6a6ca5ede6c0722c83cdc058fd658a9bb2b0996520466c6d",
7191
- "schema_version": "2.191.0",
7191
+ "schema_version": "2.194.0",
7192
7192
  "sdk_spec_version": "2.3.0",
7193
- "source_hash": "sha256:65108661e2b4bb6fc9c9b56f5dcb1274bf9cd3ac4addbcb2b34f86ec4e5d91aa"
7193
+ "source_hash": "sha256:d7ff190cf08026ff0029b37b31ca48f6dcaa67827dfc46e1328a9cbb43aada31"
7194
7194
  }
@@ -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.191.0
5
+ * The version of the OpenAPI document: 2.194.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.191.0
7
+ * The version of the OpenAPI document: 2.194.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.191.0
5
+ * The version of the OpenAPI document: 2.194.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.191.0
7
+ * The version of the OpenAPI document: 2.194.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.191.0
5
+ * The version of the OpenAPI document: 2.194.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.191.0
7
+ * The version of the OpenAPI document: 2.194.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.191.0
5
+ * The version of the OpenAPI document: 2.194.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.191.0
7
+ * The version of the OpenAPI document: 2.194.0
8
8
  *
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).