@giveitsmaller/contracts 0.16.0 → 0.18.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 (404) hide show
  1. package/asyncapi/events.yaml +116 -27
  2. package/availability/availability.json +31 -10
  3. package/dist/asyncapi/LongFormOperationType.d.ts +2 -1
  4. package/dist/asyncapi/LongFormOperationType.js +1 -0
  5. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  6. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  7. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  8. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  9. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  10. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  11. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  12. package/dist/openapi/models/AuthErrorType.js +1 -1
  13. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
  14. package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
  15. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  16. package/dist/openapi/models/AvailabilityValue.js +1 -1
  17. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  18. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  19. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  20. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  21. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  22. package/dist/openapi/models/CallbackEventType.js +1 -1
  23. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  24. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  25. package/dist/openapi/models/CompositionPlan.d.ts +1 -1
  26. package/dist/openapi/models/CompositionPlan.js +1 -1
  27. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  28. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  29. package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
  30. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  31. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  32. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  33. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  34. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  35. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  36. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  37. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  38. package/dist/openapi/models/ConnectionSource.js +1 -1
  39. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  40. package/dist/openapi/models/ContactRequest.js +1 -1
  41. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  42. package/dist/openapi/models/ContactSubject.js +1 -1
  43. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  44. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  45. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  46. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  47. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  48. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  49. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  50. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  51. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  52. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  53. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  54. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  55. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  56. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  57. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  58. package/dist/openapi/models/CreditTransaction.js +1 -1
  59. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  60. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  61. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  62. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  63. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  64. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  65. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  66. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  67. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  68. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  69. package/dist/openapi/models/Delivery.d.ts +1 -1
  70. package/dist/openapi/models/Delivery.js +1 -1
  71. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  72. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  73. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  74. package/dist/openapi/models/DeliveryPlan.js +1 -1
  75. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  76. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  77. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  78. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  79. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  80. package/dist/openapi/models/DeliverySelection.js +1 -1
  81. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  82. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  83. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  84. package/dist/openapi/models/EndpointProjection.js +1 -1
  85. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  86. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  87. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  88. package/dist/openapi/models/EstimateQuality.js +1 -1
  89. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  90. package/dist/openapi/models/EstimateRange.js +1 -1
  91. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  92. package/dist/openapi/models/ExternalDestination.js +1 -1
  93. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  94. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  95. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  96. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  97. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  98. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  99. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  100. package/dist/openapi/models/ExternalImportToken.js +1 -1
  101. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  102. package/dist/openapi/models/ExternalSource.js +1 -1
  103. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  104. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  105. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  106. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  107. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  108. package/dist/openapi/models/FeatureViolation.js +1 -1
  109. package/dist/openapi/models/ForgotPasswordRequest.d.ts +1 -1
  110. package/dist/openapi/models/ForgotPasswordRequest.js +1 -1
  111. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  112. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  113. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  114. package/dist/openapi/models/JobDefinition.js +1 -1
  115. package/dist/openapi/models/JobDownload.d.ts +1 -1
  116. package/dist/openapi/models/JobDownload.js +1 -1
  117. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  118. package/dist/openapi/models/JobInputV2.js +1 -1
  119. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  120. package/dist/openapi/models/JobMediaClass.js +1 -1
  121. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  122. package/dist/openapi/models/JobOutputSource.js +1 -1
  123. package/dist/openapi/models/JobResponse.d.ts +1 -1
  124. package/dist/openapi/models/JobResponse.js +1 -1
  125. package/dist/openapi/models/JobStatus.d.ts +1 -1
  126. package/dist/openapi/models/JobStatus.js +1 -1
  127. package/dist/openapi/models/JobType.d.ts +1 -1
  128. package/dist/openapi/models/JobType.js +1 -1
  129. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  130. package/dist/openapi/models/LivenessResponse.js +1 -1
  131. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  132. package/dist/openapi/models/LoginUser200Response.js +1 -1
  133. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  134. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  135. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  136. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  137. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  138. package/dist/openapi/models/LoginUserRequest.js +1 -1
  139. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  140. package/dist/openapi/models/MetadataResponse.js +1 -1
  141. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  142. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  143. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  144. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  145. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  146. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  147. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  148. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  149. package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
  150. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  151. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  152. package/dist/openapi/models/MultiInputSource.js +1 -1
  153. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  154. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  155. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  156. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  157. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  158. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  159. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  160. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  161. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  162. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  163. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  164. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  165. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  166. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  167. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  168. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  169. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  170. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  171. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  172. package/dist/openapi/models/MultipartPartListing.js +1 -1
  173. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  174. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  175. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  176. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  177. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  178. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  179. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  180. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  181. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  182. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  183. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  184. package/dist/openapi/models/OperationDefinition.js +1 -1
  185. package/dist/openapi/models/OperationDownload.d.ts +1 -1
  186. package/dist/openapi/models/OperationDownload.js +1 -1
  187. package/dist/openapi/models/OperationInputModel.d.ts +1 -1
  188. package/dist/openapi/models/OperationInputModel.js +1 -1
  189. package/dist/openapi/models/OperationResponse.d.ts +1 -1
  190. package/dist/openapi/models/OperationResponse.js +1 -1
  191. package/dist/openapi/models/OperationResult.d.ts +1 -1
  192. package/dist/openapi/models/OperationResult.js +1 -1
  193. package/dist/openapi/models/OperationResultMetadata.d.ts +1 -1
  194. package/dist/openapi/models/OperationResultMetadata.js +1 -1
  195. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  196. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  197. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  198. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  199. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  200. package/dist/openapi/models/OperationStatus.js +1 -1
  201. package/dist/openapi/models/OperationType.d.ts +2 -2
  202. package/dist/openapi/models/OperationType.js +2 -2
  203. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  204. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  205. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  206. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  207. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  208. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  209. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  210. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  211. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  212. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  213. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  214. package/dist/openapi/models/OptionSchema.js +1 -1
  215. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  216. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  217. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  218. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  219. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  220. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  221. package/dist/openapi/models/ProbePendingResponse.d.ts +1 -1
  222. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  223. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  224. package/dist/openapi/models/ProcessingClass.js +1 -1
  225. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  226. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  227. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  228. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  229. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  230. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  231. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  232. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  233. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  234. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  235. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  236. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  237. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  238. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  239. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  240. package/dist/openapi/models/ProcessingPlan.js +1 -1
  241. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  242. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  243. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  244. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  245. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  246. package/dist/openapi/models/ReadinessResponse.js +1 -1
  247. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  248. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  249. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  250. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  251. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  252. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  253. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  254. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  255. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  256. package/dist/openapi/models/RetryResponse.js +1 -1
  257. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  258. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  259. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  260. package/dist/openapi/models/SseCompletionBase.js +1 -1
  261. package/dist/openapi/models/SseEventType.d.ts +1 -1
  262. package/dist/openapi/models/SseEventType.js +1 -1
  263. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  264. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  265. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  266. package/dist/openapi/models/SseJobFailedData.js +1 -1
  267. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  268. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  269. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  270. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  271. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  272. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  273. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  274. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  275. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  276. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  277. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  278. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  279. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  280. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  281. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  282. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  283. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  284. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  285. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  286. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  287. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  288. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  289. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  290. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  291. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  292. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  293. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  294. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  295. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  296. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  297. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  298. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  299. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  300. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  301. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  302. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  303. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  304. package/dist/openapi/models/UploadFile403Response.js +1 -1
  305. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  306. package/dist/openapi/models/UploadFile422Response.js +1 -1
  307. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  308. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  309. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  310. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  311. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  312. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  313. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  314. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  315. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  316. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  317. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  318. package/dist/openapi/models/UploadResponse.js +1 -1
  319. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  320. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  321. package/dist/openapi/models/UploadSource.d.ts +1 -1
  322. package/dist/openapi/models/UploadSource.js +1 -1
  323. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  324. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  325. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  326. package/dist/openapi/models/UploadThresholds.js +1 -1
  327. package/dist/openapi/models/UserTier.d.ts +1 -1
  328. package/dist/openapi/models/UserTier.js +1 -1
  329. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  330. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  331. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  332. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  333. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  334. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  335. package/dist/openapi/models/WarningType.d.ts +1 -1
  336. package/dist/openapi/models/WarningType.js +1 -1
  337. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  338. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  339. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  340. package/dist/openapi/models/WebhookPayload.js +1 -1
  341. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  342. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  343. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  344. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  345. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  346. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  347. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  348. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  349. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  350. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  351. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  352. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  353. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  354. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  355. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  356. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  357. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  358. package/dist/openapi/models/WorkflowEdge.js +1 -1
  359. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  360. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  361. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  362. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  363. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  364. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  365. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  366. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  367. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  368. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  369. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  370. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  371. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  372. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  373. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  374. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  375. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  376. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  377. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  378. package/dist/openapi/models/WorkflowSource.js +1 -1
  379. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  380. package/dist/openapi/models/WorkflowStatus.js +1 -1
  381. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  382. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  383. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  384. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  385. package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
  386. package/dist/openapi/models/WorkflowSummary.js +1 -1
  387. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  388. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  389. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  390. package/dist/openapi/models/WorkflowWarning.js +1 -1
  391. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  392. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  393. package/dist/openapi/runtime.d.ts +1 -1
  394. package/dist/openapi/runtime.js +1 -1
  395. package/dist/operations/compress.metadata.js +5 -1
  396. package/dist/operations/convert.metadata.js +8 -1
  397. package/dist/operations/split.metadata.js +1 -1
  398. package/dist/operations/thumbnail.metadata.js +8 -1
  399. package/openapi/api.yaml +2 -2
  400. package/operations/schemas/compress.yaml +44 -5
  401. package/operations/schemas/convert.yaml +13 -1
  402. package/operations/schemas/split.yaml +10 -6
  403. package/operations/schemas/thumbnail.yaml +6 -0
  404. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  asyncapi: 3.0.0
2
2
  info:
3
3
  title: GISL Compression Events
4
- version: 3.18.0
4
+ version: 3.19.0
5
5
  description: |
6
6
  Asynchronous event contracts for the GISL (Give It Smaller) compression service.
7
7
 
@@ -30,8 +30,9 @@ info:
30
30
  declared but receive no traffic until Lambda ships. `split` is
31
31
  `availability: beta` for its `audio` and `video` mime_groups
32
32
  (workers live on staging — [`vKI0CFDu`](https://trello.com/c/vKI0CFDu);
33
- video short-form only — `long_form` / `split-video-fargate` stays
34
- planned); its `image_gif` and `document_pdf` mime_groups stay
33
+ video activates BOTH classes — `long_form` / `split-video-fargate`
34
+ proven on staging per [`rcwvUKhI`](https://trello.com/c/rcwvUKhI));
35
+ its `image_gif` and `document_pdf` mime_groups stay
35
36
  `availability: planned`.
36
37
  `audio_to_video` and `video_watermark` are `availability: beta`
37
38
  (Wave A activation [`c3uthIP4`](https://trello.com/c/c3uthIP4) —
@@ -768,11 +769,12 @@ channels:
768
769
  OperationRequestAttributes).
769
770
 
770
771
  `availability: beta` for the `audio` and `video` mime_groups
771
- (workers live on staging audio + short-form video split traffic
772
- reaches this queue; video `long_form` / `split-video-fargate` stays
773
- planned); the `image_gif` and `document_pdf` mime_groups stay
774
- `availability: planned`, and the API rejects their
775
- workflow-create with `feature_not_available` (422) until those
772
+ (workers live on staging). This SNS queue carries audio + SHORT-FORM
773
+ video split traffic only; long-form video split (now also `beta`)
774
+ routes via the direct-to-SQS `longformSplitVideo` claim-check to the
775
+ `split-video-fargate` worker, NOT here. The `image_gif` and
776
+ `document_pdf` mime_groups stay `availability: planned`, and the API
777
+ rejects their workflow-create with `feature_not_available` (422) until those
776
778
  Lambdas ship. Backed by the `operation-split` Lambda (cross-repo
777
779
  follow-up — lambdas pre-launch epic Wave A, ticket
778
780
  [DbpJpVtm-sibling-L1](https://trello.com/c/vKI0CFDu)
@@ -1133,9 +1135,11 @@ channels:
1133
1135
  DLQ for failed split operations (per ticket
1134
1136
  [`vKI0CFDu`](https://trello.com/c/vKI0CFDu) / ADR-0014).
1135
1137
  Messages land here after 5 failed processing attempts. Live for
1136
- the `split` `audio` + `video` mime_groups (now `availability: beta`,
1137
- video short-form only); the `image_gif` and `document_pdf` groups
1138
- stay `availability: planned` and carry no traffic yet.
1138
+ the `split` `audio` + `video` mime_groups (now `availability: beta`;
1139
+ this DLQ backs the short-form SNS `ops-split` queue long-form video
1140
+ split has its own `longformSplitVideoDlq`); the `image_gif` and
1141
+ `document_pdf` groups stay `availability: planned` and carry no
1142
+ traffic yet.
1139
1143
  parameters:
1140
1144
  env:
1141
1145
  description: Environment (local, stg, prod)
@@ -1335,10 +1339,9 @@ channels:
1335
1339
  # the API publishes a LongFormJobMessage claim-check DIRECTLY to these
1336
1340
  # per-op-class SQS queues (no SNS topic, no filter routing). A
1337
1341
  # terraform-owned launcher (EventBridge Pipe, filter=none) consumes
1338
- # and forks a Fargate task. Two classes are live (compress, merge);
1339
- # split-video-longform (queue provisioned, publisher deferred per
1340
- # rcwvUKhI) and audio-overlay-longform (reserve-name-only, no queue)
1341
- # are NOT modeled as channels — they carry no traffic yet.
1342
+ # and forks a Fargate task. Three classes are live (compress, merge,
1343
+ # split-video per rcwvUKhI); audio-overlay-longform (reserve-name-only,
1344
+ # no queue) is NOT modeled as a channel — it carries no traffic yet.
1342
1345
 
1343
1346
  longformCompressVideo:
1344
1347
  address: gisl-{env}-{region}-ops-compress-video-longform
@@ -1413,6 +1416,47 @@ channels:
1413
1416
  region:
1414
1417
  description: AWS region abbreviation (euw1, use1, etc.)
1415
1418
 
1419
+ longformSplitVideo:
1420
+ address: gisl-{env}-{region}-ops-split-video-longform
1421
+ description: |
1422
+ SQS queue for long-form video split jobs (`split.video.long_form`,
1423
+ `availability: beta`). The API publishes a `LongFormJobMessage` claim-check
1424
+ here directly (NOT via SNS); a terraform-owned launcher reads the spec from
1425
+ S3 (`pointer`) and runs a Fargate task. `max_receive_count = 2` (ADR-0007).
1426
+
1427
+ On this queue the publisher always sets `operation_type: split`,
1428
+ `processing_class: long_form`. The shared `LongFormJobMessage` enum permits
1429
+ `{compress, merge, split}`; per-queue `operation_type` is a publisher
1430
+ invariant documented here, not a separate message schema. The worker is the
1431
+ `split-video-fargate` binary (a stream-copy keyframe/GOP segmenter — a
1432
+ DISTINCT crate from the long-form compress worker, NOT a re-encode), per
1433
+ [ADR-0014](../docs/decisions/0014-split-operation.md) §D10 and
1434
+ [`rcwvUKhI`](https://trello.com/c/rcwvUKhI). Segments land at
1435
+ `{output_key_prefix}/output-NNN.ext` in the output bucket (ADR-0014 §D9).
1436
+ bindings:
1437
+ sqs:
1438
+ queue:
1439
+ name: gisl-{env}-{region}-ops-split-video-longform
1440
+ fifoQueue: false
1441
+ bindingVersion: '0.2.0'
1442
+ parameters:
1443
+ env:
1444
+ description: Environment (local, stg, prod)
1445
+ region:
1446
+ description: AWS region abbreviation (euw1, use1, etc.)
1447
+ messages:
1448
+ longFormJob:
1449
+ $ref: '#/components/messages/LongFormJobMessage'
1450
+
1451
+ longformSplitVideoDlq:
1452
+ address: gisl-{env}-{region}-ops-split-video-longform-dlq
1453
+ description: DLQ for failed long-form video split jobs. Messages land here after 2 failed processing attempts (ADR-0007).
1454
+ parameters:
1455
+ env:
1456
+ description: Environment (local, stg, prod)
1457
+ region:
1458
+ description: AWS region abbreviation (euw1, use1, etc.)
1459
+
1416
1460
  operations:
1417
1461
  # ============================================
1418
1462
  # PUBLISH OPERATIONS (API -> SNS)
@@ -2151,6 +2195,23 @@ operations:
2151
2195
  messages:
2152
2196
  - $ref: '#/channels/longformMergeVideoReencode/messages/longFormJob'
2153
2197
 
2198
+ publishLongFormSplitVideo:
2199
+ action: send
2200
+ channel:
2201
+ $ref: '#/channels/longformSplitVideo'
2202
+ bindings:
2203
+ sqs:
2204
+ queues:
2205
+ - name: gisl-{env}-{region}-ops-split-video-longform
2206
+ fifoQueue: false
2207
+ bindingVersion: '0.2.0'
2208
+ summary: Publish a long-form video split claim-check.
2209
+ description: |
2210
+ As `publishLongFormCompressVideo`, for `operation_type = split`
2211
+ (`split.video.long_form`). Direct-to-SQS claim-check; no SNS.
2212
+ messages:
2213
+ - $ref: '#/channels/longformSplitVideo/messages/longFormJob'
2214
+
2154
2215
  # ============================================
2155
2216
  # LONG-FORM CLAIM-CHECK CONSUMERS (launcher -> Fargate)
2156
2217
  # ============================================
@@ -2193,6 +2254,26 @@ operations:
2193
2254
  messages:
2194
2255
  - $ref: '#/channels/longformMergeVideoReencode/messages/longFormJob'
2195
2256
 
2257
+ consumeLongFormSplitVideo:
2258
+ action: receive
2259
+ channel:
2260
+ $ref: '#/channels/longformSplitVideo'
2261
+ bindings:
2262
+ sqs:
2263
+ queues:
2264
+ - name: gisl-{env}-{region}-ops-split-video-longform
2265
+ fifoQueue: false
2266
+ bindingVersion: '0.2.0'
2267
+ summary: Consume a long-form video split claim-check.
2268
+ description: |
2269
+ As `consumeLongFormCompressVideo`, for `operation_type = split`
2270
+ (`split.video.long_form`). The launcher forks on
2271
+ `(operation_type=split, processing_class=long_form)` and runs the
2272
+ `split-video-fargate` stream-copy segmenter task. Segments land at
2273
+ `{output_key_prefix}/output-NNN.ext`.
2274
+ messages:
2275
+ - $ref: '#/channels/longformSplitVideo/messages/longFormJob'
2276
+
2196
2277
  components:
2197
2278
  messages:
2198
2279
  # ============================================
@@ -3469,13 +3550,13 @@ components:
3469
3550
  backend-dotted form (e.g. `compress.video.long_form`) is deliberately
3470
3551
  NOT on the wire — the launcher mints it internally.
3471
3552
 
3472
- **Live `operation_type` subset: `compress`, `merge`** — the two
3473
- long-form classes flipped to `availability: beta` (CON-1). `split`
3474
- long-form (queue provisioned, publisher deferred —
3475
- [`rcwvUKhI`](https://trello.com/c/rcwvUKhI)) and `audio_overlay`
3476
- long-form (reserve-name-only, no queue) are NOT yet produced and are
3477
- therefore absent from this enum; they get added when their publishers
3478
- ship.
3553
+ **Live `operation_type` subset: `compress`, `merge`, `split`** —
3554
+ these three long-form classes are `availability: beta` (compress +
3555
+ merge per CON-1; `split.video.long_form` per
3556
+ [`rcwvUKhI`](https://trello.com/c/rcwvUKhI), worker
3557
+ `split-video-fargate` proven on staging). `audio_overlay` long-form
3558
+ (reserve-name-only, no queue) is NOT yet produced and is therefore
3559
+ absent from this enum; it gets added when its publisher ships.
3479
3560
 
3480
3561
  **Scope: the API producer's first-publish.** This schema models the
3481
3562
  message the API publishes to the long-form queues — the 5 fields above.
@@ -4806,11 +4887,18 @@ components:
4806
4887
  Coarse operation verb for the long-form claim-check job
4807
4888
  (`LongFormJobMessage.operation_type`). Deliberately a call-site
4808
4889
  **subset** of `OperationType` — only the long-form classes the API
4809
- actually publishes today (`compress`, `merge`). NOT the full
4810
- `OperationType` enum (which would over-promise the wire). Future
4811
- long-form publishers (e.g. `split` per
4812
- [`rcwvUKhI`](https://trello.com/c/rcwvUKhI)) widen this enum when
4813
- they ship.
4890
+ actually publishes today (`compress`, `merge`, `split`). NOT the
4891
+ full `OperationType` enum (which would over-promise the wire).
4892
+ Future long-form publishers widen this enum when they ship.
4893
+
4894
+ `split` joined this enum when the long-form video split publisher
4895
+ shipped ([`rcwvUKhI`](https://trello.com/c/rcwvUKhI), per
4896
+ [ADR-0014](../docs/decisions/0014-split-operation.md) §D10): the
4897
+ API publishes to the dedicated `longformSplitVideo` queue and the
4898
+ `split-video-fargate` worker stream-copy-segments the input
4899
+ (NOT the compress path — a distinct binary). The
4900
+ `(operation_type=split, processing_class=long_form)` tuple is the
4901
+ launcher's fork key.
4814
4902
 
4815
4903
  Named-schema form lifted from inline at
4816
4904
  `LongFormJobMessage.operation_type` per ticket
@@ -4820,6 +4908,7 @@ components:
4820
4908
  enum:
4821
4909
  - compress
4822
4910
  - merge
4911
+ - split
4823
4912
 
4824
4913
  LongFormProcessingClass:
4825
4914
  type: string
@@ -1,5 +1,5 @@
1
1
  {
2
- "capabilities_version": 89,
2
+ "capabilities_version": 93,
3
3
  "endpoints": {
4
4
  "DELETE /api/auth/api-keys/{apiKeyId}": {
5
5
  "auth": "required",
@@ -867,7 +867,7 @@
867
867
  "options": {
868
868
  "bitrate": {
869
869
  "default": 128,
870
- "description": "Output bitrate in kbps",
870
+ "description": "Output bitrate in kbps. Applies to lossy outputs (mpeg/aac/ogg/mp4) \u2014 CBR/ABR; rejected as invalid_options for lossless outputs (flac/wav, which have no bitrate target). The other knobs (channels/sample_rate/normalize) apply to all formats.\n",
871
871
  "type": "enum",
872
872
  "value_type": "integer",
873
873
  "values": [
@@ -1104,6 +1104,11 @@
1104
1104
  "min": 1,
1105
1105
  "type": "integer"
1106
1106
  }
1107
+ },
1108
+ "per_mime_availability": {
1109
+ "image/avif": {
1110
+ "availability": "beta"
1111
+ }
1107
1112
  }
1108
1113
  },
1109
1114
  "video": {
@@ -1128,8 +1133,8 @@
1128
1133
  ]
1129
1134
  },
1130
1135
  "audio_codec": {
1131
- "default": "aac",
1132
- "description": "Audio codec. aac = widest compatibility, opus = best quality/size, copy = passthrough",
1136
+ "default": "copy",
1137
+ "description": "Audio codec. copy = passthrough (keep the source audio stream as-is; re-encode only on explicit request) \u2014 aac = widest compatibility, opus = best quality/size. Default is `copy` (ADR-0020 D7): it MATCHES the worker's actual absent-audio behaviour and is container-safe for compress (output container = input container, so the source stream is already compatible). Set an explicit codec to re-encode; an explicit codec the output container cannot carry (e.g. aac on a WebM output) returns invalid_options. A DEFAULT value is never rejected. See FORMAT.md \"Container-conditional defaults\" + ADR-0020.\n",
1133
1138
  "type": "enum",
1134
1139
  "values": [
1135
1140
  "aac",
@@ -1140,7 +1145,7 @@
1140
1145
  },
1141
1146
  "codec": {
1142
1147
  "default": "h264",
1143
- "description": "Video codec. h264 = widest compatibility, h265/av1 = better compression but slower",
1148
+ "description": "Video codec. h264 = widest compatibility, h265/av1 = better compression but slower. The default (h264) is the MP4/MOV standard and is CONTAINER-CONDITIONAL: for an output container that cannot carry it (e.g. WebM, which carries VP8/VP9/AV1) the server resolves a container-valid codec (WebM -> vp9). A DEFAULT value is never rejected; only a caller-EXPLICIT incompatible codec returns invalid_options. See FORMAT.md \"Container-conditional defaults\" + ADR-0020.\n",
1144
1149
  "type": "enum",
1145
1150
  "values": [
1146
1151
  "h264",
@@ -1170,7 +1175,7 @@
1170
1175
  },
1171
1176
  "faststart": {
1172
1177
  "default": true,
1173
- "description": "Move the MP4/MOV moov atom to start for progressive web playback. MP4/MOV only; an explicit faststart on a WebM output is rejected as invalid_options (no moov atom).",
1178
+ "description": "Move the MP4/MOV moov atom to start for progressive web playback. MP4/MOV only. CONTAINER-CONDITIONAL: the default (true) is silently inapplicable for a container with no moov atom (e.g. WebM) \u2014 that is NOT a rejection. Only a caller-EXPLICIT faststart:true on such a container returns invalid_options. See FORMAT.md \"Container-conditional defaults\" + ADR-0020.\n",
1174
1179
  "type": "boolean"
1175
1180
  },
1176
1181
  "fit": {
@@ -1398,6 +1403,14 @@
1398
1403
  "min": 1,
1399
1404
  "type": "integer"
1400
1405
  }
1406
+ },
1407
+ "per_mime_availability": {
1408
+ "image/avif": {
1409
+ "availability": "beta"
1410
+ },
1411
+ "image/heic": {
1412
+ "availability": "beta"
1413
+ }
1401
1414
  }
1402
1415
  },
1403
1416
  "video": {
@@ -1408,7 +1421,7 @@
1408
1421
  ],
1409
1422
  "options": {
1410
1423
  "codec": {
1411
- "description": "Video codec for target format. Defaults to format's standard codec.",
1424
+ "description": "Video codec for target format. Defaults to the format's standard codec (no literal default \u2014 the required output_format determines it). This is the container-conditional-default principle applied via an explicit container choice. See FORMAT.md \"Container-conditional defaults\" + ADR-0020.\n",
1412
1425
  "type": "enum",
1413
1426
  "values": [
1414
1427
  "h264",
@@ -2515,7 +2528,7 @@
2515
2528
  "split": {
2516
2529
  "availability": "beta",
2517
2530
  "default": false,
2518
- "description": "Fan one input file into N outputs across GIF, PDF, audio, and\nvideo MIME families. Single-input \u2014 one input file per job, fanned\ninto N outputs per the per-mime-group catalog. Mirrors the\n`merge` / `convert` catalog-split-by-mime-group pattern.\n\n**Three shared modes** (audio + video; the mode discriminator\ngates which option applies per the `depends_on` rules in this\nschema):\n- `interval`: split every N numeric-seconds.\n- `count`: split into N equal-duration pieces (integer 2..=200).\n- `cut_points`: explicit cut points in numeric-seconds (strictly\n increasing, no duplicates, each > 0 and < probed duration).\n\n**Plus an audio-only `silence` mode** (`beta`, gated by the\n`silence_mode_audio` feature): cut at detected silence gaps via\nthe worker's ffmpeg `silencedetect` filter. Video stays\nthree-mode.\n\n**GIF + PDF use range-based selection** instead of three modes:\n- GIF (`image_gif`): `frame_range` REQUIRED + `output_format`\n enum {png,webp,jpg}.\n- PDF (`document_pdf`): `page_range` OR `page_groups` (mutually\n exclusive per `depends_on`).\n\n**Wire format**: numeric seconds (floats allowed for sub-second\nprecision). NOT ISO 8601 duration strings. Matches FFmpeg /\nCloudinary / Shotstack / AWS MediaConvert conventions.\n\n**200-output hard cap** per ADR-0009 \u00a7D5\n(`OperationResult.outputs[].maxItems: 200`). Preflight rejects\nrequests exceeding this BEFORE work as `invalid_options` (422).\nCap math by mode:\n- `interval`: `ceil(probed_duration / interval) <= 200`\n- `count`: enforced by the option's `min: 2 max: 200` range\n- `cut_points`: `cut_points.len() + 1 <= 200`\n- `silence` (audio): resolved segment count (detected gaps + 1)\n `<= 200`; preflight rejects as `invalid_options` (422)\n- PDF: resolved page count after expansion `<= 200`\n (cross-ref [`WgCqnMRa`](https://trello.com/c/WgCqnMRa))\n- GIF: resolved frame count after expansion `<= 200`\n\n**Output naming**: 3-digit zero-padded \u2014 `output-001` ..\n`output-200`. Matches the convert PDF\u2192N precedent.\n\n**Output envelope binding** (per ADR-0014 + ADR-0009 \u00a7D2):\n- `image_gif`: `PositionIndexed` (frame stream-position 0-based\n ordinal)\n- `document_pdf`: `PageIndexed` (1-based gapless page index)\n- `audio`: `PositionIndexed` (cut stream-position ordinal)\n- `video`: `PositionIndexed` (cut stream-position ordinal)\n\n**`precision` flag** (audio + video only): `fast` (default) =\npacket-boundary approximate cuts; `exact` = re-encode-aligned\nprecise cuts. Mime_group scoping is the gate \u2014 precision does\nNOT apply to GIF or PDF (frame extraction is exact and PDF page\nselection is exact by definition).\n\n**Long-form video** routes to a separate `split-video-fargate`\nLambda (same `split` OperationType, different worker; routing\nvia `processing_class`). No schema-side discriminator beyond MIME\ndetection + `processing_class`.\n\n`availability: beta` for the `audio` and `video` mime_groups\n(workers live on staging \u2014 shape-stable + opt-in, MUST NOT 422).\nVideo activates **short-form only**: `video.processing_class.short_form`\nis `beta`; `long_form` (the `split-video-fargate` worker) stays\n`availability: planned` until that worker ships. The `image_gif` and\n`document_pdf` mime_groups also stay `availability: planned` until their\ncross-repo Lambda workers ship ([`vKI0CFDu`](https://trello.com/c/vKI0CFDu)\n+ lambdas L1); dispatch returns `feature_not_available` (422) for the\nstill-planned groups/classes until then.\n\nPer ADR-0014.\n",
2531
+ "description": "Fan one input file into N outputs across GIF, PDF, audio, and\nvideo MIME families. Single-input \u2014 one input file per job, fanned\ninto N outputs per the per-mime-group catalog. Mirrors the\n`merge` / `convert` catalog-split-by-mime-group pattern.\n\n**Three shared modes** (audio + video; the mode discriminator\ngates which option applies per the `depends_on` rules in this\nschema):\n- `interval`: split every N numeric-seconds.\n- `count`: split into N equal-duration pieces (integer 2..=200).\n- `cut_points`: explicit cut points in numeric-seconds (strictly\n increasing, no duplicates, each > 0 and < probed duration).\n\n**Plus an audio-only `silence` mode** (`beta`, gated by the\n`silence_mode_audio` feature): cut at detected silence gaps via\nthe worker's ffmpeg `silencedetect` filter. Video stays\nthree-mode.\n\n**GIF + PDF use range-based selection** instead of three modes:\n- GIF (`image_gif`): `frame_range` REQUIRED + `output_format`\n enum {png,webp,jpg}.\n- PDF (`document_pdf`): `page_range` OR `page_groups` (mutually\n exclusive per `depends_on`).\n\n**Wire format**: numeric seconds (floats allowed for sub-second\nprecision). NOT ISO 8601 duration strings. Matches FFmpeg /\nCloudinary / Shotstack / AWS MediaConvert conventions.\n\n**200-output hard cap** per ADR-0009 \u00a7D5\n(`OperationResult.outputs[].maxItems: 200`). Preflight rejects\nrequests exceeding this BEFORE work as `invalid_options` (422).\nCap math by mode:\n- `interval`: `ceil(probed_duration / interval) <= 200`\n- `count`: enforced by the option's `min: 2 max: 200` range\n- `cut_points`: `cut_points.len() + 1 <= 200`\n- `silence` (audio): resolved segment count (detected gaps + 1)\n `<= 200`; preflight rejects as `invalid_options` (422)\n- PDF: resolved page count after expansion `<= 200`\n (cross-ref [`WgCqnMRa`](https://trello.com/c/WgCqnMRa))\n- GIF: resolved frame count after expansion `<= 200`\n\n**Output naming**: 3-digit zero-padded \u2014 `output-001` ..\n`output-200`. Matches the convert PDF\u2192N precedent.\n\n**Output envelope binding** (per ADR-0014 + ADR-0009 \u00a7D2):\n- `image_gif`: `PositionIndexed` (frame stream-position 0-based\n ordinal)\n- `document_pdf`: `PageIndexed` (1-based gapless page index)\n- `audio`: `PositionIndexed` (cut stream-position ordinal)\n- `video`: `PositionIndexed` (cut stream-position ordinal)\n\n**`precision` flag** (audio + video only): `fast` (default) =\npacket-boundary approximate cuts; `exact` = re-encode-aligned\nprecise cuts. Mime_group scoping is the gate \u2014 precision does\nNOT apply to GIF or PDF (frame extraction is exact and PDF page\nselection is exact by definition).\n\n**Long-form video** routes to a separate `split-video-fargate`\nLambda (same `split` OperationType, different worker; routing\nvia `processing_class`). No schema-side discriminator beyond MIME\ndetection + `processing_class`.\n\n`availability: beta` for the `audio` and `video` mime_groups\n(workers live on staging \u2014 shape-stable + opt-in, MUST NOT 422).\nVideo activates **both classes**: `video.processing_class.short_form`\nAND `long_form` are `beta` \u2014 the `split-video-fargate` worker is proven\non staging (4GB+ HEVC input \u2192 keyframe-aligned segments;\n[`rcwvUKhI`](https://trello.com/c/rcwvUKhI)). The `image_gif` and\n`document_pdf` mime_groups stay `availability: planned` until their\ncross-repo Lambda workers ship ([`vKI0CFDu`](https://trello.com/c/vKI0CFDu)\n+ lambdas L1); dispatch returns `feature_not_available` (422) for the\nstill-planned groups/classes until then.\n\nPer ADR-0014.\n",
2519
2532
  "features": {
2520
2533
  "silence_mode_audio": {
2521
2534
  "availability": "beta",
@@ -2749,7 +2762,7 @@
2749
2762
  },
2750
2763
  "processing_class": {
2751
2764
  "long_form": {
2752
- "availability": "planned",
2765
+ "availability": "beta",
2753
2766
  "constraints": {
2754
2767
  "max_input_duration": "PT12H",
2755
2768
  "max_input_size_bytes": 5000000000,
@@ -2994,6 +3007,14 @@
2994
3007
  "required": true,
2995
3008
  "type": "integer"
2996
3009
  }
3010
+ },
3011
+ "per_mime_availability": {
3012
+ "image/avif": {
3013
+ "availability": "beta"
3014
+ },
3015
+ "image/heic": {
3016
+ "availability": "beta"
3017
+ }
2997
3018
  }
2998
3019
  },
2999
3020
  "video": {
@@ -3295,7 +3316,7 @@
3295
3316
  }
3296
3317
  }
3297
3318
  },
3298
- "schema_version": "2.64.0",
3319
+ "schema_version": "2.68.0",
3299
3320
  "source_commit": null,
3300
3321
  "user_tier": null,
3301
3322
  "workflow_features": {
@@ -1,5 +1,6 @@
1
1
  declare enum LongFormOperationType {
2
2
  COMPRESS = "compress",
3
- MERGE = "merge"
3
+ MERGE = "merge",
4
+ SPLIT = "split"
4
5
  }
5
6
  export default LongFormOperationType;
@@ -2,5 +2,6 @@ var LongFormOperationType;
2
2
  (function (LongFormOperationType) {
3
3
  LongFormOperationType["COMPRESS"] = "compress";
4
4
  LongFormOperationType["MERGE"] = "merge";
5
+ LongFormOperationType["SPLIT"] = "split";
5
6
  })(LongFormOperationType || (LongFormOperationType = {}));
6
7
  export default LongFormOperationType;
@@ -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.64.0
5
+ * The version of the OpenAPI document: 2.68.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.64.0
7
+ * The version of the OpenAPI document: 2.68.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.64.0
5
+ * The version of the OpenAPI document: 2.68.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.64.0
7
+ * The version of the OpenAPI document: 2.68.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.64.0
5
+ * The version of the OpenAPI document: 2.68.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.64.0
7
+ * The version of the OpenAPI document: 2.68.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.64.0
5
+ * The version of the OpenAPI document: 2.68.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.64.0
7
+ * The version of the OpenAPI document: 2.68.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.64.0
5
+ * The version of the OpenAPI document: 2.68.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.64.0
7
+ * The version of the OpenAPI document: 2.68.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.64.0
5
+ * The version of the OpenAPI document: 2.68.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.64.0
7
+ * The version of the OpenAPI document: 2.68.0
8
8
  *
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).