@giveitsmaller/contracts 0.81.0 → 0.83.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (553) hide show
  1. package/README.md +2 -2
  2. package/accepted-options/accepted-options.json +1 -1
  3. package/accepted-options/image-output-routes.json +1 -1
  4. package/anonymous-policy.yaml +67 -0
  5. package/asyncapi/events.yaml +67 -21
  6. package/availability/availability.json +20 -14
  7. package/code-builder/code-builder-metadata.json +18 -12
  8. package/dist/asyncapi/LongFormProcessingClass.d.ts +2 -1
  9. package/dist/asyncapi/LongFormProcessingClass.js +1 -0
  10. package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
  11. package/dist/openapi/models/AccountLimitEntry.js +1 -1
  12. package/dist/openapi/models/AccountLimits.d.ts +1 -1
  13. package/dist/openapi/models/AccountLimits.js +1 -1
  14. package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
  15. package/dist/openapi/models/AccountLimitsLimits.js +1 -1
  16. package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
  17. package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
  18. package/dist/openapi/models/AnonymousLimitExceededResponse.d.ts +157 -0
  19. package/dist/openapi/models/AnonymousLimitExceededResponse.js +95 -0
  20. package/dist/openapi/models/AnonymousOperationNotAllowedResponse.d.ts +8 -6
  21. package/dist/openapi/models/AnonymousOperationNotAllowedResponse.js +1 -1
  22. package/dist/openapi/models/AnonymousQuotaExhaustedResponse.d.ts +42 -7
  23. package/dist/openapi/models/AnonymousQuotaExhaustedResponse.js +13 -1
  24. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  25. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  26. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  27. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  28. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  29. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  30. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  31. package/dist/openapi/models/AuthErrorType.js +1 -1
  32. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
  33. package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
  34. package/dist/openapi/models/AuthenticatedIdentity.d.ts +1 -1
  35. package/dist/openapi/models/AuthenticatedIdentity.js +1 -1
  36. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  37. package/dist/openapi/models/AvailabilityValue.js +1 -1
  38. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  39. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  40. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  41. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  42. package/dist/openapi/models/BillingCheckoutRequest.d.ts +1 -1
  43. package/dist/openapi/models/BillingCheckoutRequest.js +1 -1
  44. package/dist/openapi/models/BillingCheckoutSession.d.ts +1 -1
  45. package/dist/openapi/models/BillingCheckoutSession.js +1 -1
  46. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +1 -1
  47. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +1 -1
  48. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  49. package/dist/openapi/models/CallbackEventType.js +1 -1
  50. package/dist/openapi/models/CancelAccountDeletion200Response.d.ts +1 -1
  51. package/dist/openapi/models/CancelAccountDeletion200Response.js +1 -1
  52. package/dist/openapi/models/CancelAccountDeletion200ResponseData.d.ts +1 -1
  53. package/dist/openapi/models/CancelAccountDeletion200ResponseData.js +1 -1
  54. package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
  55. package/dist/openapi/models/CapabilityCondition.js +1 -1
  56. package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
  57. package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
  58. package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
  59. package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
  60. package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
  61. package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
  62. package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
  63. package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
  64. package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
  65. package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
  66. package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
  67. package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
  68. package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
  69. package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
  70. package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
  71. package/dist/openapi/models/CapabilityConstraint.js +1 -1
  72. package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
  73. package/dist/openapi/models/CapabilityInputSpec.js +1 -1
  74. package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
  75. package/dist/openapi/models/CapabilityProduces.js +1 -1
  76. package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
  77. package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
  78. package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
  79. package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
  80. package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
  81. package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
  82. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  83. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  84. package/dist/openapi/models/CheckoutSessionStatusResponse.d.ts +1 -1
  85. package/dist/openapi/models/CheckoutSessionStatusResponse.js +1 -1
  86. package/dist/openapi/models/CheckoutSessionStatusResponseData.d.ts +1 -1
  87. package/dist/openapi/models/CheckoutSessionStatusResponseData.js +1 -1
  88. package/dist/openapi/models/CodegenSource.d.ts +1 -1
  89. package/dist/openapi/models/CodegenSource.js +1 -1
  90. package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
  91. package/dist/openapi/models/CodegenSourceInput.js +1 -1
  92. package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
  93. package/dist/openapi/models/CodegenSourceJob.js +1 -1
  94. package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
  95. package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
  96. package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
  97. package/dist/openapi/models/CodegenSourceOperation.js +1 -1
  98. package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
  99. package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
  100. package/dist/openapi/models/CompositionPlan.d.ts +1 -1
  101. package/dist/openapi/models/CompositionPlan.js +1 -1
  102. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  103. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  104. package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
  105. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  106. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  107. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  108. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  109. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  110. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  111. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  112. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  113. package/dist/openapi/models/ConnectionSource.js +1 -1
  114. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  115. package/dist/openapi/models/ContactRequest.js +1 -1
  116. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  117. package/dist/openapi/models/ContactSubject.js +1 -1
  118. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  119. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  120. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  121. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  122. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  123. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  124. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  125. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  126. package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +1 -1
  127. package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +1 -1
  128. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  129. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  130. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  131. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  132. package/dist/openapi/models/CreateWorkflow401Response.d.ts +1 -1
  133. package/dist/openapi/models/CreateWorkflow401Response.js +1 -1
  134. package/dist/openapi/models/CreateWorkflow403Response.d.ts +4 -1
  135. package/dist/openapi/models/CreateWorkflow403Response.js +6 -1
  136. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  137. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  138. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  139. package/dist/openapi/models/CreditTransaction.js +1 -1
  140. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  141. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  142. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  143. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  144. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  145. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  146. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  147. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  148. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  149. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  150. package/dist/openapi/models/Delivery.d.ts +1 -1
  151. package/dist/openapi/models/Delivery.js +1 -1
  152. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  153. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  154. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  155. package/dist/openapi/models/DeliveryPlan.js +1 -1
  156. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  157. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  158. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  159. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  160. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  161. package/dist/openapi/models/DeliverySelection.js +1 -1
  162. package/dist/openapi/models/DownloadBundle.d.ts +1 -1
  163. package/dist/openapi/models/DownloadBundle.js +1 -1
  164. package/dist/openapi/models/DroppedOption.d.ts +1 -1
  165. package/dist/openapi/models/DroppedOption.js +1 -1
  166. package/dist/openapi/models/EmailNotify.d.ts +1 -1
  167. package/dist/openapi/models/EmailNotify.js +1 -1
  168. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  169. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  170. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  171. package/dist/openapi/models/EndpointProjection.js +1 -1
  172. package/dist/openapi/models/EndpointProjectionServersInner.d.ts +1 -1
  173. package/dist/openapi/models/EndpointProjectionServersInner.js +1 -1
  174. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  175. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  176. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  177. package/dist/openapi/models/EstimateQuality.js +1 -1
  178. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  179. package/dist/openapi/models/EstimateRange.js +1 -1
  180. package/dist/openapi/models/ExportAccountData200Response.d.ts +1 -1
  181. package/dist/openapi/models/ExportAccountData200Response.js +1 -1
  182. package/dist/openapi/models/ExportAccountData200ResponseData.d.ts +1 -1
  183. package/dist/openapi/models/ExportAccountData200ResponseData.js +1 -1
  184. package/dist/openapi/models/ExportAccountData200ResponseDataBilling.d.ts +1 -1
  185. package/dist/openapi/models/ExportAccountData200ResponseDataBilling.js +1 -1
  186. package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.d.ts +1 -1
  187. package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.js +1 -1
  188. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  189. package/dist/openapi/models/ExternalDestination.js +1 -1
  190. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  191. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  192. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  193. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  194. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  195. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  196. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  197. package/dist/openapi/models/ExternalImportToken.js +1 -1
  198. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  199. package/dist/openapi/models/ExternalSource.js +1 -1
  200. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  201. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  202. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  203. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  204. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  205. package/dist/openapi/models/FeatureViolation.js +1 -1
  206. package/dist/openapi/models/GetProfile200Response.d.ts +1 -1
  207. package/dist/openapi/models/GetProfile200Response.js +1 -1
  208. package/dist/openapi/models/GetProfile200ResponseData.d.ts +1 -1
  209. package/dist/openapi/models/GetProfile200ResponseData.js +1 -1
  210. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  211. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  212. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  213. package/dist/openapi/models/JobDefinition.js +1 -1
  214. package/dist/openapi/models/JobDownload.d.ts +1 -1
  215. package/dist/openapi/models/JobDownload.js +1 -1
  216. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  217. package/dist/openapi/models/JobInputV2.js +1 -1
  218. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  219. package/dist/openapi/models/JobMediaClass.js +1 -1
  220. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  221. package/dist/openapi/models/JobOutputSource.js +1 -1
  222. package/dist/openapi/models/JobResponse.d.ts +1 -1
  223. package/dist/openapi/models/JobResponse.js +1 -1
  224. package/dist/openapi/models/JobStatus.d.ts +1 -1
  225. package/dist/openapi/models/JobStatus.js +1 -1
  226. package/dist/openapi/models/JobType.d.ts +1 -1
  227. package/dist/openapi/models/JobType.js +1 -1
  228. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  229. package/dist/openapi/models/LivenessResponse.js +1 -1
  230. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  231. package/dist/openapi/models/LoginUser200Response.js +1 -1
  232. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  233. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  234. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  235. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  236. package/dist/openapi/models/LoginUser401Response.d.ts +1 -1
  237. package/dist/openapi/models/LoginUser401Response.js +1 -1
  238. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  239. package/dist/openapi/models/LoginUserRequest.js +1 -1
  240. package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
  241. package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
  242. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
  243. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
  244. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  245. package/dist/openapi/models/MetadataResponse.js +1 -1
  246. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  247. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  248. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  249. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  250. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  251. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  252. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  253. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  254. package/dist/openapi/models/MimeGroupSchema.d.ts +38 -1
  255. package/dist/openapi/models/MimeGroupSchema.js +3 -1
  256. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  257. package/dist/openapi/models/MultiInputSource.js +1 -1
  258. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  259. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  260. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  261. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  262. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  263. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  264. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  265. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  266. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  267. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  268. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  269. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  270. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  271. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  272. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  273. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  274. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  275. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  276. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  277. package/dist/openapi/models/MultipartPartListing.js +1 -1
  278. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  279. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  280. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  281. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  282. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  283. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  284. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  285. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  286. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  287. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  288. package/dist/openapi/models/NotifyConfig.d.ts +1 -1
  289. package/dist/openapi/models/NotifyConfig.js +1 -1
  290. package/dist/openapi/models/OperationCapability.d.ts +1 -1
  291. package/dist/openapi/models/OperationCapability.js +1 -1
  292. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  293. package/dist/openapi/models/OperationDefinition.js +1 -1
  294. package/dist/openapi/models/OperationDownload.d.ts +1 -1
  295. package/dist/openapi/models/OperationDownload.js +1 -1
  296. package/dist/openapi/models/OperationInputModel.d.ts +1 -1
  297. package/dist/openapi/models/OperationInputModel.js +1 -1
  298. package/dist/openapi/models/OperationMessageParamsValue.d.ts +1 -1
  299. package/dist/openapi/models/OperationMessageParamsValue.js +1 -1
  300. package/dist/openapi/models/OperationResponse.d.ts +1 -1
  301. package/dist/openapi/models/OperationResponse.js +1 -1
  302. package/dist/openapi/models/OperationResult.d.ts +1 -1
  303. package/dist/openapi/models/OperationResult.js +1 -1
  304. package/dist/openapi/models/OperationResultMetadata.d.ts +1 -1
  305. package/dist/openapi/models/OperationResultMetadata.js +1 -1
  306. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  307. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  308. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  309. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  310. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  311. package/dist/openapi/models/OperationStatus.js +1 -1
  312. package/dist/openapi/models/OperationType.d.ts +1 -1
  313. package/dist/openapi/models/OperationType.js +1 -1
  314. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  315. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  316. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  317. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  318. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  319. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  320. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  321. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  322. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  323. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  324. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +1 -1
  325. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +1 -1
  326. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  327. package/dist/openapi/models/OptionSchema.js +1 -1
  328. package/dist/openapi/models/OutputProperties.d.ts +1 -1
  329. package/dist/openapi/models/OutputProperties.js +1 -1
  330. package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
  331. package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
  332. package/dist/openapi/models/PerClassAvailabilityEntry.d.ts +1 -1
  333. package/dist/openapi/models/PerClassAvailabilityEntry.js +1 -1
  334. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  335. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  336. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  337. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  338. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  339. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  340. package/dist/openapi/models/ProbePendingResponse.d.ts +1 -1
  341. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  342. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  343. package/dist/openapi/models/ProcessingClass.js +1 -1
  344. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  345. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  346. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  347. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  348. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  349. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  350. package/dist/openapi/models/ProcessingClassEntryInputUniformity.d.ts +1 -1
  351. package/dist/openapi/models/ProcessingClassEntryInputUniformity.js +1 -1
  352. package/dist/openapi/models/ProcessingClassEntryResolutionBands.d.ts +1 -1
  353. package/dist/openapi/models/ProcessingClassEntryResolutionBands.js +1 -1
  354. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  355. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  356. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  357. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  358. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  359. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  360. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  361. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  362. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  363. package/dist/openapi/models/ProcessingPlan.js +1 -1
  364. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  365. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  366. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  367. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  368. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  369. package/dist/openapi/models/ReadinessResponse.js +1 -1
  370. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  371. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  372. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  373. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  374. package/dist/openapi/models/RequestAccountDeletion200Response.d.ts +1 -1
  375. package/dist/openapi/models/RequestAccountDeletion200Response.js +1 -1
  376. package/dist/openapi/models/RequestAccountDeletion200ResponseData.d.ts +1 -1
  377. package/dist/openapi/models/RequestAccountDeletion200ResponseData.js +1 -1
  378. package/dist/openapi/models/RequestAccountDeletionRequest.d.ts +1 -1
  379. package/dist/openapi/models/RequestAccountDeletionRequest.js +1 -1
  380. package/dist/openapi/models/ResendVerificationEmailRequest.d.ts +1 -1
  381. package/dist/openapi/models/ResendVerificationEmailRequest.js +1 -1
  382. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  383. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  384. package/dist/openapi/models/ResolutionBand.d.ts +1 -1
  385. package/dist/openapi/models/ResolutionBand.js +1 -1
  386. package/dist/openapi/models/ResolutionBandCeiling.d.ts +1 -1
  387. package/dist/openapi/models/ResolutionBandCeiling.js +1 -1
  388. package/dist/openapi/models/ResolutionBandCeilingConstraints.d.ts +1 -1
  389. package/dist/openapi/models/ResolutionBandCeilingConstraints.js +1 -1
  390. package/dist/openapi/models/ResolutionBandCeilingDerivation.d.ts +1 -1
  391. package/dist/openapi/models/ResolutionBandCeilingDerivation.js +1 -1
  392. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  393. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  394. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  395. package/dist/openapi/models/RetryResponse.js +1 -1
  396. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  397. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  398. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  399. package/dist/openapi/models/SseCompletionBase.js +1 -1
  400. package/dist/openapi/models/SseConnectionLimitResponse.d.ts +1 -1
  401. package/dist/openapi/models/SseConnectionLimitResponse.js +1 -1
  402. package/dist/openapi/models/SseEventType.d.ts +1 -1
  403. package/dist/openapi/models/SseEventType.js +1 -1
  404. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  405. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  406. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  407. package/dist/openapi/models/SseJobFailedData.js +1 -1
  408. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  409. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  410. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  411. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  412. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  413. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  414. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  415. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  416. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  417. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  418. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  419. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  420. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  421. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  422. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  423. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  424. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  425. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  426. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  427. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  428. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  429. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  430. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  431. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  432. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  433. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  434. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  435. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  436. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  437. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  438. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  439. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  440. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  441. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  442. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  443. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  444. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  445. package/dist/openapi/models/UploadFile403Response.js +1 -1
  446. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  447. package/dist/openapi/models/UploadFile422Response.js +1 -1
  448. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  449. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  450. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  451. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  452. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  453. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  454. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  455. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  456. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  457. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  458. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  459. package/dist/openapi/models/UploadResponse.js +1 -1
  460. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  461. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  462. package/dist/openapi/models/UploadSource.d.ts +1 -1
  463. package/dist/openapi/models/UploadSource.js +1 -1
  464. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  465. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  466. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  467. package/dist/openapi/models/UploadThresholds.js +1 -1
  468. package/dist/openapi/models/UserTier.d.ts +1 -1
  469. package/dist/openapi/models/UserTier.js +1 -1
  470. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  471. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  472. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  473. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  474. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  475. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  476. package/dist/openapi/models/WarningType.d.ts +1 -1
  477. package/dist/openapi/models/WarningType.js +1 -1
  478. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  479. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  480. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  481. package/dist/openapi/models/WebhookPayload.js +1 -1
  482. package/dist/openapi/models/WorkflowArchiveResponse.d.ts +1 -1
  483. package/dist/openapi/models/WorkflowArchiveResponse.js +1 -1
  484. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.d.ts +1 -1
  485. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.js +1 -1
  486. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  487. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  488. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  489. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  490. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  491. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  492. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  493. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  494. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  495. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  496. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  497. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  498. package/dist/openapi/models/WorkflowCreditSummary.d.ts +1 -1
  499. package/dist/openapi/models/WorkflowCreditSummary.js +1 -1
  500. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  501. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  502. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  503. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  504. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  505. package/dist/openapi/models/WorkflowEdge.js +1 -1
  506. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  507. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  508. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  509. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  510. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  511. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  512. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  513. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  514. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  515. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  516. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  517. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  518. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  519. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  520. package/dist/openapi/models/WorkflowRestoreResponse.d.ts +1 -1
  521. package/dist/openapi/models/WorkflowRestoreResponse.js +1 -1
  522. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.d.ts +1 -1
  523. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.js +1 -1
  524. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  525. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  526. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  527. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  528. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  529. package/dist/openapi/models/WorkflowSource.js +1 -1
  530. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  531. package/dist/openapi/models/WorkflowStatus.js +1 -1
  532. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  533. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  534. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  535. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  536. package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
  537. package/dist/openapi/models/WorkflowSummary.js +1 -1
  538. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  539. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  540. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  541. package/dist/openapi/models/WorkflowWarning.js +1 -1
  542. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  543. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  544. package/dist/openapi/models/index.d.ts +1 -0
  545. package/dist/openapi/models/index.js +1 -0
  546. package/dist/openapi/runtime.d.ts +1 -1
  547. package/dist/openapi/runtime.js +1 -1
  548. package/openapi/README.md +1 -1
  549. package/openapi/api.yaml +213 -37
  550. package/operation-capabilities/operation-capabilities.json +1 -1
  551. package/operations/schemas/compress.yaml +54 -26
  552. package/operations/schemas/merge.yaml +22 -1
  553. package/package.json +6 -4
@@ -2,7 +2,7 @@
2
2
  * GISL Compression API
3
3
  * REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (per-tier private caching with ETag revalidation per ADR-0002 + I3), health probes return flat objects, and `POST /api/contact` returns 204 with no body. **Availability metadata.** This spec uses the `x-availability` vendor extension as **decorative documentation only**. Per [ADR-0001](../docs/decisions/0001-contract-first-availability.md) §1.5, the runtime endpoint `GET /api/operations/schema` (ticket I3) is the authoritative source; the sidecar `availability.json` (ticket I3b) is the authoritative companion (generated, never hand-edited; CI cross-checks runtime ⇄ sidecar). SDKs MUST NOT depend on `x-availability` reaching generated code — code-generators that surface vendor extensions may emit it as documentation, but consumers read availability from the runtime endpoint, not from the generated bindings. The 5-value vocabulary (`stable | beta | experimental | planned | deprecated`) is defined in the `AvailabilityValue` schema. See `schemas/FORMAT.md` §Availability Taxonomy for the operational rules (parser obligation: absent = stable; per-enum-value granularity is the `per_value_availability` primitive landed via ticket I17). **Free-text string fields: `x-string-vocabulary` (ticket [`Q79yjcFF`](https://trello.com/c/Q79yjcFF)).** A `type: string` field with no `enum` that names example values says, as data, what a client may do with them (the same marker is used in the AsyncAPI document): - `open` — a vocabulary that grows. Each published value keeps its meaning, the SET is not closed: switch on the values you know and handle an unknown one as the generic case (e.g. `ErrorEnvelope.error`). - `advisory` — explanatory text. Display or log it; **never switch on it** (e.g. `SseWorkflowTerminalData.reason`). - `none` — not a vocabulary at all (an expression or an identifier, e.g. `OptionSchema.pattern`). A field whose description hedges with \"common values\" or \"free-form\" must carry the marker; a test enforces it. **Localisation (per ticket [I26](https://trello.com/c/rcnqwgI4)).** Error responses + paused/blocked workflow statuses carry a localised human-readable `message` alongside a stable, never-localised `message_key`. Machine-readable fields (`error`, enum values, status codes) stay canonical English. - **Currently committed locales:** `en-GB` only (per ticket [`4GKyuYo6`](https://trello.com/c/4GKyuYo6)). The I26 carrier shape (`Accept-Language` + `Content-Language` + `Vary` headers + `locale` envelope field + `message_key` + `message_params`) is stable and exercised; the **catalog** of translated `message` strings is en-GB-only at runtime today. Additional locales (e.g. `pt-PT`) will be advertised by name when their catalogs ship — the request/response carrier shape does NOT change when a new locale lands. Treat unrequested locales as \"machine-code + `message_key` path is committed; localised `message` prose is not\" until this prose enumerates them by name. - **Request:** `Accept-Language` header per RFC 9110 §12.5.4 (q-value negotiation supported). The server selects the best-match locale from its supported list; falls back to `en-GB` when no match — which, until additional catalogs land, is every non-`en-GB` `Accept-Language`. - **Response:** `Content-Language: <locale>` echo on every localised response; `Vary: Accept-Language` on every response (CDN/cache correctness — different `Accept-Language` requests produce different responses). `Vary` is emitted unconditionally so the header contract does not flip when a second locale ships. - **Fallback locale:** `en-GB` (also the canonical locale for `message_key` translations and English `message` prose). - **SDK guidance:** switch on `error` (machine code) for typed error branches; surface `message_key` to client-side i18n catalogs (SDK companion work tracked at X19, cross-repo); display `message` for end-user UI; **never parse `message` for control flow** — it changes per locale. Carrier shape lives on `ErrorEnvelope` (envelope-level optional `message_key` + `message` + `locale` + `message_params`) and `ValidationErrorEnvelope` (also per-`details[]` entry). Existing 402 / 403 / 422 envelopes (`BalanceExhaustedResponse`, `FeatureNotAvailableResponse`, `FeatureTierRestrictedResponse`, `WorkflowPausedDetail`) inherit the convention. **Upload thresholds (per tickets [u0ar7Yye](https://trello.com/c/u0ar7Yye) + [58nBQLWQ](https://trello.com/c/58nBQLWQ)).** Canonical upload constants (single-shot cap, multipart chunk size, multipart concurrency default, multipart first-chunk size) live on the `UploadThresholds` schema with `const:`-pinned values. SDK generators emit these as typed binding constants so frontend / API / SDKs reference one source of truth instead of hardcoding magic numbers. A runtime `GET /api/uploads/limits` endpoint for dynamic discovery (per-tier / per-environment overrides) is a deferred follow-up.
4
4
  *
5
- * The version of the OpenAPI document: 2.216.0
5
+ * The version of the OpenAPI document: 2.218.0
6
6
  *
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -4,7 +4,7 @@
4
4
  * GISL Compression API
5
5
  * REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (per-tier private caching with ETag revalidation per ADR-0002 + I3), health probes return flat objects, and `POST /api/contact` returns 204 with no body. **Availability metadata.** This spec uses the `x-availability` vendor extension as **decorative documentation only**. Per [ADR-0001](../docs/decisions/0001-contract-first-availability.md) §1.5, the runtime endpoint `GET /api/operations/schema` (ticket I3) is the authoritative source; the sidecar `availability.json` (ticket I3b) is the authoritative companion (generated, never hand-edited; CI cross-checks runtime ⇄ sidecar). SDKs MUST NOT depend on `x-availability` reaching generated code — code-generators that surface vendor extensions may emit it as documentation, but consumers read availability from the runtime endpoint, not from the generated bindings. The 5-value vocabulary (`stable | beta | experimental | planned | deprecated`) is defined in the `AvailabilityValue` schema. See `schemas/FORMAT.md` §Availability Taxonomy for the operational rules (parser obligation: absent = stable; per-enum-value granularity is the `per_value_availability` primitive landed via ticket I17). **Free-text string fields: `x-string-vocabulary` (ticket [`Q79yjcFF`](https://trello.com/c/Q79yjcFF)).** A `type: string` field with no `enum` that names example values says, as data, what a client may do with them (the same marker is used in the AsyncAPI document): - `open` — a vocabulary that grows. Each published value keeps its meaning, the SET is not closed: switch on the values you know and handle an unknown one as the generic case (e.g. `ErrorEnvelope.error`). - `advisory` — explanatory text. Display or log it; **never switch on it** (e.g. `SseWorkflowTerminalData.reason`). - `none` — not a vocabulary at all (an expression or an identifier, e.g. `OptionSchema.pattern`). A field whose description hedges with \"common values\" or \"free-form\" must carry the marker; a test enforces it. **Localisation (per ticket [I26](https://trello.com/c/rcnqwgI4)).** Error responses + paused/blocked workflow statuses carry a localised human-readable `message` alongside a stable, never-localised `message_key`. Machine-readable fields (`error`, enum values, status codes) stay canonical English. - **Currently committed locales:** `en-GB` only (per ticket [`4GKyuYo6`](https://trello.com/c/4GKyuYo6)). The I26 carrier shape (`Accept-Language` + `Content-Language` + `Vary` headers + `locale` envelope field + `message_key` + `message_params`) is stable and exercised; the **catalog** of translated `message` strings is en-GB-only at runtime today. Additional locales (e.g. `pt-PT`) will be advertised by name when their catalogs ship — the request/response carrier shape does NOT change when a new locale lands. Treat unrequested locales as \"machine-code + `message_key` path is committed; localised `message` prose is not\" until this prose enumerates them by name. - **Request:** `Accept-Language` header per RFC 9110 §12.5.4 (q-value negotiation supported). The server selects the best-match locale from its supported list; falls back to `en-GB` when no match — which, until additional catalogs land, is every non-`en-GB` `Accept-Language`. - **Response:** `Content-Language: <locale>` echo on every localised response; `Vary: Accept-Language` on every response (CDN/cache correctness — different `Accept-Language` requests produce different responses). `Vary` is emitted unconditionally so the header contract does not flip when a second locale ships. - **Fallback locale:** `en-GB` (also the canonical locale for `message_key` translations and English `message` prose). - **SDK guidance:** switch on `error` (machine code) for typed error branches; surface `message_key` to client-side i18n catalogs (SDK companion work tracked at X19, cross-repo); display `message` for end-user UI; **never parse `message` for control flow** — it changes per locale. Carrier shape lives on `ErrorEnvelope` (envelope-level optional `message_key` + `message` + `locale` + `message_params`) and `ValidationErrorEnvelope` (also per-`details[]` entry). Existing 402 / 403 / 422 envelopes (`BalanceExhaustedResponse`, `FeatureNotAvailableResponse`, `FeatureTierRestrictedResponse`, `WorkflowPausedDetail`) inherit the convention. **Upload thresholds (per tickets [u0ar7Yye](https://trello.com/c/u0ar7Yye) + [58nBQLWQ](https://trello.com/c/58nBQLWQ)).** Canonical upload constants (single-shot cap, multipart chunk size, multipart concurrency default, multipart first-chunk size) live on the `UploadThresholds` schema with `const:`-pinned values. SDK generators emit these as typed binding constants so frontend / API / SDKs reference one source of truth instead of hardcoding magic numbers. A runtime `GET /api/uploads/limits` endpoint for dynamic discovery (per-tier / per-environment overrides) is a deferred follow-up.
6
6
  *
7
- * The version of the OpenAPI document: 2.216.0
7
+ * The version of the OpenAPI document: 2.218.0
8
8
  *
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
package/openapi/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
  - **Generator:** [openapi-generator-cli](https://openapi-generator.tech/) v7.21.0
11
11
  (Docker image: `openapitools/openapi-generator-cli:v7.21.0`)
12
12
  - **Generator preset:** `typescript-fetch`, models only
13
- - **Files:** 269
13
+ - **Files:** 270
14
14
 
15
15
  ## Contents
16
16
 
package/openapi/api.yaml CHANGED
@@ -103,7 +103,7 @@ info:
103
103
  of truth instead of hardcoding magic numbers. A runtime
104
104
  `GET /api/uploads/limits` endpoint for dynamic discovery
105
105
  (per-tier / per-environment overrides) is a deferred follow-up.
106
- version: 2.216.0
106
+ version: 2.218.0
107
107
  contact:
108
108
  name: API Support
109
109
 
@@ -255,13 +255,34 @@ paths:
255
255
  required_tier: "enterprise"
256
256
  '413':
257
257
  description: |
258
- The upload is too large. Two rejection cases, discriminated by the
259
- `ErrorEnvelope.error` code:
260
-
261
- - **Byte size** — the file exceeds the absolute maximum upload size
262
- (across all tiers). For tier-specific size caps below this
263
- absolute limit, the server returns 403 with `error_type:
264
- tier_restriction, restriction_kind: file_size` instead.
258
+ The upload is too large. Two rejection cases from the API,
259
+ discriminated by the `ErrorEnvelope.error` code, plus one from the
260
+ edge:
261
+
262
+ - **Edge (no envelope)** — a request whose whole `multipart/form-data`
263
+ BODY exceeds the API gateway's payload limit is refused by the
264
+ gateway before the API runs, as a 413 with no `ErrorEnvelope`.
265
+ Near the single-shot maximum the form encoding can push the body
266
+ past that limit, so a client MUST treat ANY 413 on this endpoint
267
+ as "too large", with or without an envelope. An authenticated
268
+ client SHOULD send files near `single_shot_max_bytes` through
269
+ multipart; a guest cannot (multipart requires an account, see
270
+ `schemas/anonymous-policy.yaml`) and is limited to the single-shot
271
+ maximum. Only the two API-generated cases below carry an
272
+ `ErrorEnvelope`.
273
+
274
+ - **Byte size** (`error: FILE_TOO_LARGE`, `error_type:
275
+ file_too_large`, `message_params.max_bytes` = the limit that was
276
+ exceeded) — the file exceeds this endpoint's maximum byte size
277
+ (the single-shot maximum; larger files use the multipart
278
+ endpoints). For tier-specific size caps below it, the server
279
+ returns 403 with `error_type: tier_restriction,
280
+ restriction_kind: file_size` instead. ⚠️ The API currently
281
+ answers this case with `400 BAD_REQUEST`, which also covers a
282
+ missing file or an invalid filename (api card `E8xFECmG` moves
283
+ the size case here). Until that ships, only a client that
284
+ already knows its file exceeds `single_shot_max_bytes` should
285
+ read that 400 as "too large".
265
286
  - **Pixel dimensions** (`error: IMAGE_DIMENSIONS_TOO_LARGE`) — a
266
287
  decodable raster image whose `width × height` exceeds the
267
288
  SINGLE-SHOT pixel ceiling (`UPLOAD_MAX_IMAGE_PIXELS`, default
@@ -285,10 +306,14 @@ paths:
285
306
  $ref: '#/components/schemas/ErrorEnvelope'
286
307
  examples:
287
308
  file_too_large:
288
- summary: File exceeds the absolute maximum byte size
309
+ summary: File exceeds this endpoint's maximum byte size
289
310
  value:
290
311
  success: false
291
- error: "File size exceeds maximum allowed (100 GiB)"
312
+ error: "FILE_TOO_LARGE"
313
+ error_type: "file_too_large"
314
+ message: "The file is larger than the maximum for this upload method."
315
+ message_params:
316
+ max_bytes: 10000000
292
317
  image_dimensions_too_large:
293
318
  summary: Decodable raster exceeds the pixel-dimension ceiling
294
319
  value:
@@ -418,7 +443,7 @@ paths:
418
443
 
419
444
  After all parts are uploaded to S3, call the complete endpoint to finalise.
420
445
  operationId: multipartInitiate
421
- security: [{}, {bearerAuth: []}, {sessionAuth: []}] # optional (anon-tolerant; manifest.userId pinned to caller if authed)
446
+ security: [{bearerAuth: []}, {sessionAuth: []}] # REQUIRED: api security.yaml puts multipart behind IS_AUTHENTICATED_FULLY and initiate() 401s a guest (measured 2026-09-26; anonymous-policy.yaml multipart_allowed: false)
422
447
  tags:
423
448
  - Upload
424
449
  requestBody:
@@ -497,9 +522,11 @@ paths:
497
522
  and multipart carries ordinary camera photos — **a 24 MP photo
498
523
  must pass**. API setting `UPLOAD_MAX_MULTIPART_IMAGE_PIXELS`,
499
524
  enforced at multipart initiate. Default 50 MP (hub ruling 2026-09-24, on lambdas'
500
- recommendation: the image workers declare a 100 MP source cap,
501
- but none has run a job that large, so it stays at half that
502
- until a staging proof). It is an API setting, so authenticated
525
+ recommendation, then made with the workers' per-format decode
526
+ ceilings unmeasured). Those ceilings are now declared per group
527
+ as `max_input_pixels` (2026-09-26: PNG 100 MP, JPEG 90 MP,
528
+ WebP 75 MP), all above this default; see that field for which
529
+ ceiling binds when. It is an API setting, so authenticated
503
530
  clients read the effective value from
504
531
  `limits.max_multipart_upload_image_pixels`
505
532
  (`GET /api/v2/account/limits`) once the API emits it.
@@ -582,7 +609,7 @@ paths:
582
609
  rule and additionally refuse anonymous-initiated sessions
583
610
  outright (returning 403 `MULTIPART_SESSION_AUTH_REQUIRED`).
584
611
  operationId: multipartComplete
585
- security: [{}, {bearerAuth: []}, {sessionAuth: []}] # optional (anon-tolerant; ownership-scoped per HxUmVr3Y when manifest.userId set)
612
+ security: [{bearerAuth: []}, {sessionAuth: []}] # REQUIRED in practice: a session can only be initiated authenticated (see initiate), and completion is ownership-scoped (HxUmVr3Y)
586
613
  x-identity-scoped: true # session/ownership-scoped per ADR-0016 D3
587
614
  tags:
588
615
  - Upload
@@ -1786,13 +1813,31 @@ paths:
1786
1813
  credential) requested an operation outside the anonymous
1787
1814
  allow-list. `operation` names the first such operation.
1788
1815
  A register-wall: signing in is the remedy, not upgrading.
1789
- - `anonymous_quota_exhausted`: an anonymous caller has used
1790
- its per-IP workflow allowance for the rolling 24 hours.
1791
- Also a register-wall.
1792
-
1793
- Both anonymous walls are checked BEFORE the workflow is
1794
- built, and neither consumes the caller's anonymous
1795
- allowance. An authenticated caller never receives either.
1816
+ - `anonymous_quota_exhausted`: this create would cost more
1817
+ credits than the caller's per-IP allowance has left in the
1818
+ rolling 24 hours (`schemas/anonymous-policy.yaml`
1819
+ `allowance`). Also a register-wall. Carries `allowance`,
1820
+ `remaining` and `cost`, and `Retry-After` unless the request
1821
+ costs more than the whole allowance.
1822
+ - `anonymous_limit_exceeded`: an anonymous caller's input
1823
+ exceeds a guest-only limit (today: video duration). Also a
1824
+ register-wall.
1825
+
1826
+ The anonymous walls are checked BEFORE the workflow is
1827
+ built, and none consumes the caller's anonymous
1828
+ allowance. An authenticated caller never receives any.
1829
+ headers:
1830
+ Retry-After:
1831
+ required: false
1832
+ description: |
1833
+ Present only on `anonymous_quota_exhausted`, and only when
1834
+ the request's `cost` fits the `allowance` at all: seconds
1835
+ until enough of the caller's rolling 24 h credit window
1836
+ frees up for it. Delta-seconds (RFC 9110). Signing in
1837
+ remains the immediate remedy.
1838
+ schema:
1839
+ type: integer
1840
+ minimum: 0
1796
1841
  content:
1797
1842
  application/json:
1798
1843
  schema:
@@ -1801,6 +1846,7 @@ paths:
1801
1846
  - $ref: '#/components/schemas/FeatureTierRestrictedResponse'
1802
1847
  - $ref: '#/components/schemas/AnonymousOperationNotAllowedResponse'
1803
1848
  - $ref: '#/components/schemas/AnonymousQuotaExhaustedResponse'
1849
+ - $ref: '#/components/schemas/AnonymousLimitExceededResponse'
1804
1850
  discriminator:
1805
1851
  propertyName: error_type
1806
1852
  mapping:
@@ -1808,6 +1854,7 @@ paths:
1808
1854
  feature_tier_restricted: '#/components/schemas/FeatureTierRestrictedResponse'
1809
1855
  anonymous_operation_not_allowed: '#/components/schemas/AnonymousOperationNotAllowedResponse'
1810
1856
  anonymous_quota_exhausted: '#/components/schemas/AnonymousQuotaExhaustedResponse'
1857
+ anonymous_limit_exceeded: '#/components/schemas/AnonymousLimitExceededResponse'
1811
1858
  examples:
1812
1859
  feature_tier_restricted:
1813
1860
  summary: Free tier referencing a Pro-tier operation
@@ -1839,6 +1886,21 @@ paths:
1839
1886
  message: "Sign up to keep compressing."
1840
1887
  message_key: "error.anonymous_quota_exhausted"
1841
1888
  locale: "en-GB"
1889
+ allowance: 30
1890
+ remaining: 2
1891
+ cost: 5
1892
+ anonymous_limit_exceeded:
1893
+ summary: Anonymous caller's video is longer than the guest cap
1894
+ value:
1895
+ success: false
1896
+ error: "ANONYMOUS_LIMIT_EXCEEDED"
1897
+ error_type: "anonymous_limit_exceeded"
1898
+ message: "Sign up to process videos longer than a minute."
1899
+ message_key: "error.anonymous_limit_exceeded"
1900
+ locale: "en-GB"
1901
+ limit: "video_duration_seconds"
1902
+ actual: 95
1903
+ maximum: 60
1842
1904
  '402':
1843
1905
  description: |
1844
1906
  Credit reservation failed (per ticket
@@ -3934,7 +3996,7 @@ paths:
3934
3996
  The original failed operation is marked as `retried` and a new operation with
3935
3997
  a new ID is created in `pending` state.
3936
3998
  operationId: retryOperation
3937
- security: [{}, {bearerAuth: []}, {sessionAuth: []}] # optional (anon-OK; identity-scoped to operation owner)
3999
+ security: [{bearerAuth: []}, {sessionAuth: []}] # REQUIRED: api security.yaml:103 requires IS_AUTHENTICATED_FULLY for retry (sdks, measured 2026-09-26)
3938
4000
  x-identity-scoped: true # operation-ownership-scoped per ADR-0016 D3
3939
4001
  tags:
3940
4002
  - Operations
@@ -8452,9 +8514,10 @@ components:
8452
8514
  # ceiling (width x height from the header) — the 413
8453
8515
  # IMAGE_DIMENSIONS_TOO_LARGE threshold on the multipart path. A
8454
8516
  # SEPARATE, HIGHER API setting than max_upload_image_pixels:
8455
- # default 50 MP (hub, 2026-09-24), about half the workers'
8456
- # declared 100 MP source cap, which is unproven end to end; it
8457
- # rises only after a 100 MP staging proof. It MUST admit a 24 MP
8517
+ # default 50 MP (hub, 2026-09-24). The workers' decode ceilings
8518
+ # were measured 2026-09-26 and are declared per group as
8519
+ # `max_input_pixels` (PNG 100 MP, JPEG 90 MP, WebP 75 MP), all
8520
+ # above this default. It MUST admit a 24 MP
8458
8521
  # photo. The server serves the number. Not tier-varying today.
8459
8522
  $ref: '#/components/schemas/AccountLimitEntry'
8460
8523
 
@@ -9708,7 +9771,9 @@ components:
9708
9771
  description: |
9709
9772
  403 from `POST /api/workflows` when an ANONYMOUS caller (no
9710
9773
  credential) requests an operation outside the anonymous
9711
- allow-list. A register-wall: the frontend renders a sign-up
9774
+ allow-list, declared in `schemas/anonymous-policy.yaml`
9775
+ (`operations_allowed`; the file also declares the guest upload and
9776
+ quota limits). A register-wall: the frontend renders a sign-up
9712
9777
  prompt, since no tier upgrade applies to a caller without an
9713
9778
  account.
9714
9779
 
@@ -9716,10 +9781,10 @@ components:
9716
9781
  (`JobsErrorCode::AnonymousOperationNotAllowed`), which checks
9717
9782
  every operation in the body and names the FIRST disallowed one.
9718
9783
 
9719
- ⚠️ **The allow-list itself is NOT yet declared in this contract**
9720
- (ticket [`UQ7zROTr`](https://trello.com/c/UQ7zROTr)), so a client
9721
- can parse this refusal but cannot yet predict it. Do not hard-code
9722
- the list from this description: it deliberately names none.
9784
+ **Predict it from `schemas/anonymous-policy.yaml`**
9785
+ (`operations_allowed`; ticket [`UQ7zROTr`](https://trello.com/c/UQ7zROTr)),
9786
+ the one declaration of the allow-list. Do not hard-code the list
9787
+ from this description: it deliberately names none.
9723
9788
  allOf:
9724
9789
  - $ref: '#/components/schemas/ErrorEnvelope'
9725
9790
  - type: object
@@ -9743,19 +9808,36 @@ components:
9743
9808
  AnonymousQuotaExhaustedResponse:
9744
9809
  description: |
9745
9810
  403 from `POST /api/workflows` when an ANONYMOUS caller (no
9746
- credential) has used its per-IP workflow allowance for the
9747
- rolling 24 hours. A register-wall, distinct from the generic
9748
- `429`: the remedy is signing in, not waiting.
9811
+ credential) asks for a workflow that would cost more CREDITS than
9812
+ its per-IP allowance has left in the rolling 24 hours
9813
+ (`schemas/anonymous-policy.yaml` `allowance`, priced with the same
9814
+ operation weights as a signed-in caller). The request is refused
9815
+ whole; nothing runs. A register-wall, distinct from the generic
9816
+ `429`: the remedy is signing in.
9817
+
9818
+ The recovery figures are REQUIRED fields of this envelope, not
9819
+ localisation parameters (`ErrorEnvelope.message_params` excludes
9820
+ cost numbers): `allowance`, `remaining` and `cost`, in credits.
9821
+
9822
+ Two cases, told apart by `cost` against `allowance`:
9823
+ - `cost <= allowance`: waiting helps. The response carries
9824
+ `Retry-After`, the seconds until enough of the window frees up.
9825
+ - `cost > allowance`: the request can NEVER fit a guest window
9826
+ (the body is not bounded to the allowance). No `Retry-After`;
9827
+ only signing in, or a smaller request, helps.
9749
9828
 
9750
9829
  Mirrors `compression_api`'s `WorkflowController` register-wall
9751
- (`JobsErrorCode::AnonymousQuotaExhausted`). The allowance is only
9752
- consumed by a workflow that is actually created, so a refused
9753
- request does not use it up.
9830
+ (`JobsErrorCode::AnonymousQuotaExhausted`). Credits are charged
9831
+ only by a workflow that is actually created, and released on
9832
+ failure, so a refused request does not use any up.
9754
9833
  allOf:
9755
9834
  - $ref: '#/components/schemas/ErrorEnvelope'
9756
9835
  - type: object
9757
9836
  required:
9758
9837
  - error_type
9838
+ - allowance
9839
+ - remaining
9840
+ - cost
9759
9841
  properties:
9760
9842
  error:
9761
9843
  enum:
@@ -9765,6 +9847,64 @@ components:
9765
9847
  type: string
9766
9848
  enum:
9767
9849
  - anonymous_quota_exhausted
9850
+ allowance:
9851
+ type: integer
9852
+ minimum: 0
9853
+ description: Credits per rolling 24 h for this IP (the policy value).
9854
+ remaining:
9855
+ type: integer
9856
+ minimum: 0
9857
+ description: Credits left in the window when the request was refused.
9858
+ cost:
9859
+ type: integer
9860
+ minimum: 1
9861
+ description: |
9862
+ What this request would have charged. When it exceeds
9863
+ `allowance`, the request can never fit and `Retry-After`
9864
+ is absent.
9865
+ AnonymousLimitExceededResponse:
9866
+ description: |
9867
+ 403 from `POST /api/workflows` when an ANONYMOUS caller's input
9868
+ exceeds a guest-only limit declared in
9869
+ `schemas/anonymous-policy.yaml`. Today the one such limit is the
9870
+ video duration cap (`video.max_duration_seconds`), measured on the
9871
+ upload probe's duration; the create waits for the probe first. A
9872
+ register-wall: signing in lifts the guest limit (the signed-in
9873
+ caller's ordinary class ceilings then apply). Not a
9874
+ processing-class refusal: no class or tier ceiling is involved.
9875
+ allOf:
9876
+ - $ref: '#/components/schemas/ErrorEnvelope'
9877
+ - type: object
9878
+ required:
9879
+ - error_type
9880
+ - limit
9881
+ - actual
9882
+ - maximum
9883
+ properties:
9884
+ error:
9885
+ enum:
9886
+ - ANONYMOUS_LIMIT_EXCEEDED
9887
+ error_type:
9888
+ description: Discriminator for the 403 oneOf. Always `anonymous_limit_exceeded` for this envelope.
9889
+ type: string
9890
+ enum:
9891
+ - anonymous_limit_exceeded
9892
+ limit:
9893
+ description: |
9894
+ Which guest limit was exceeded. OPEN: a consumer that does
9895
+ not know a value shows the envelope's localised message.
9896
+ type: string
9897
+ x-enum-openness: open
9898
+ enum:
9899
+ - video_duration_seconds
9900
+ actual:
9901
+ type: integer
9902
+ minimum: 0
9903
+ description: The input's value, in the unit `limit` names (seconds, rounded up).
9904
+ maximum:
9905
+ type: integer
9906
+ minimum: 0
9907
+ description: The guest limit, from `schemas/anonymous-policy.yaml`.
9768
9908
  FeatureViolation:
9769
9909
  type: object
9770
9910
  description: |
@@ -16148,6 +16288,42 @@ components:
16148
16288
  §`per_mime_availability`.
16149
16289
  ceiling_basis:
16150
16290
  $ref: '#/components/schemas/CeilingBasis'
16291
+ max_input_pixels:
16292
+ type: integer
16293
+ format: int64
16294
+ minimum: 1
16295
+ description: |
16296
+ The largest INPUT image, in decoded pixels (width x height), that
16297
+ this group's worker is declared to process (owner decision
16298
+ 607(d), 2026-09-26: decode memory, not bytes, binds for raster
16299
+ images). Present only where it was measured.
16300
+
16301
+ WHICH PIXEL CEILING BINDS WHEN. There are three, at three stages:
16302
+ 1. UPLOAD, single-shot: `limits.max_upload_image_pixels`
16303
+ (default 16 MP; API setting `UPLOAD_MAX_IMAGE_PIXELS`), 413
16304
+ `IMAGE_DIMENSIONS_TOO_LARGE`.
16305
+ 2. UPLOAD, multipart: `limits.max_multipart_upload_image_pixels`
16306
+ (default 50 MP; admits a 24 MP phone photo), same 413.
16307
+ 3. OPERATION: this field, the worker's declared decode ceiling. The
16308
+ worker refuses above it (`input_too_large`, header-only, before
16309
+ decoding); the API is to check it at workflow create too (api
16310
+ card, co-land), after which it refuses before any job runs.
16311
+ An uploaded image passes its upload gate first, so it meets
16312
+ `min(upload ceiling, this field)`. Every value declared here is at
16313
+ least 75 MP, above both upload defaults, so today the UPLOAD
16314
+ ceiling binds for uploads, and this field binds for inputs that
16315
+ did not come through an upload gate (another job's output, an
16316
+ import), or if an upload ceiling is raised past it. A 24 MP photo
16317
+ passes all three.
16318
+
16319
+ THE VALUE IS AN UPPER BOUND, NOT A GUARANTEE FOR EVERY IMAGE. Where
16320
+ the worker's real limit is a decode-memory budget, images with more
16321
+ bytes per pixel (alpha, 16-bit channels) hit it at fewer pixels,
16322
+ and the worker refuses them with `input_too_large` (typed, not
16323
+ retryable, before any billed work) below this field. PNG is the
16324
+ measured case: 100 MP is the 8-bit RGBA value; 16-bit RGB reaches
16325
+ the budget near 67 MP and 16-bit RGBA near 50 MP. A pre-flight
16326
+ check against this field therefore cannot promise acceptance.
16151
16327
  max_input_size_bytes:
16152
16328
  type: integer
16153
16329
  format: int64
@@ -860,5 +860,5 @@
860
860
  "isAnimated": "maybe"
861
861
  }
862
862
  },
863
- "schema_version": "2.216.0"
863
+ "schema_version": "2.218.0"
864
864
  }
@@ -97,9 +97,15 @@ operation:
97
97
  # Resize-inside-Output shares the convert resize engine's 16MP output-area
98
98
  # wall — the per-axis 16384 cap can't express it (FORMAT.md §max_output_pixels).
99
99
  max_output_pixels: 16000000
100
+ # 607(d) image-decode corner run (lambdas, staging compression-image v144, git-2166848,
101
+ # 2026-09-26; vm_shared 10_Now/lambdas-corner-img-results-2026-09-26.md).
102
+ # Largest passing 370 MB / 90 MP. 493 MB / 120 MP failed: the input plus its
103
+ # intermediate exceed the worker's 512 MB /tmp.
100
104
  ceiling_basis: # 607(d): proven at the declared value, or not yet (FORMAT.md §ceiling_basis)
101
- max_input_size_bytes: unproven
102
- max_input_size_bytes: 524288000 # 500 MiB compress input ceiling (uKsFzORi)
105
+ max_input_size_bytes: proven
106
+ max_input_pixels: proven
107
+ max_input_size_bytes: 370000000 # was 500 MiB
108
+ max_input_pixels: 90000000
103
109
  options:
104
110
  quality:
105
111
  type: integer
@@ -279,9 +285,20 @@ operation:
279
285
  mimes:
280
286
  - image/png
281
287
  max_output_pixels: 16000000
288
+ # 607(d) image-decode corner run (lambdas, staging compression-image v144, git-2166848,
289
+ # 2026-09-26; vm_shared 10_Now/lambdas-corner-img-results-2026-09-26.md).
290
+ # The binding limit is DECODED PIXELS: the shared decoder's 400 MB allocation
291
+ # budget, so the pixel ceiling depends on colour type (~133 MP RGB8, 100 MP
292
+ # RGBA8, ~67 MP RGB16, 50 MP RGBA16). 100 MP is the RGBA8 value; RGB8 passed
293
+ # at 120 MP / 360 MB, and RGBA8 at 100 MP is not yet run, so it stays
294
+ # unproven. Beyond the budget the worker refuses with input_too_large: a
295
+ # 16-bit RGBA PNG reaches it at ~50 MP, below this value, and is refused
296
+ # there (typed, before billing work), not served.
282
297
  ceiling_basis: # 607(d): proven at the declared value, or not yet (FORMAT.md §ceiling_basis)
283
- max_input_size_bytes: unproven
284
- max_input_size_bytes: 524288000 # 500 MiB compress input ceiling (uKsFzORi)
298
+ max_input_size_bytes: proven
299
+ max_input_pixels: unproven
300
+ max_input_size_bytes: 360000000 # largest passing (120 MP RGB8); was 500 MiB, unreachable within the decode budget
301
+ max_input_pixels: 100000000
285
302
  options:
286
303
  # PROVENANCE (author-side, NOT user-facing — kept out of the description per
287
304
  # 7KkNSvdv / FE BhVwdlhQ: no implementation detail or licence copy in user text):
@@ -436,8 +453,9 @@ operation:
436
453
  mimes:
437
454
  - image/avif
438
455
  max_output_pixels: 16000000
456
+ # 607(d): PROVEN, 19.57 MiB passed (staging v144); above 20 MB the worker refuses.
439
457
  ceiling_basis: # 607(d): proven at the declared value, or not yet (FORMAT.md §ceiling_basis)
440
- max_input_size_bytes: unproven
458
+ max_input_size_bytes: proven
441
459
  max_input_size_bytes: 20971520 # 20 MiB compress input ceiling (uKsFzORi; AVIF decode OOM guard, worker AVIF_MAX_MB)
442
460
  options:
443
461
  quality:
@@ -606,9 +624,16 @@ operation:
606
624
  mimes:
607
625
  - image/webp
608
626
  max_output_pixels: 16000000
627
+ # 607(d) image-decode corner run (lambdas, staging compression-image v144, git-2166848,
628
+ # 2026-09-26; vm_shared 10_Now/lambdas-corner-img-results-2026-09-26.md).
629
+ # Passed at 270 MB / 90 MP but at 98% of the function's memory; 120 MP was
630
+ # OOM-killed (no terminal result). lambdas' header pre-flight (AmYqFGaI)
631
+ # refuses above 75 MP before any decode, so 75 MP is the declared value.
609
632
  ceiling_basis: # 607(d): proven at the declared value, or not yet (FORMAT.md §ceiling_basis)
610
- max_input_size_bytes: unproven
611
- max_input_size_bytes: 524288000 # 500 MiB compress input ceiling (uKsFzORi)
633
+ max_input_size_bytes: proven
634
+ max_input_pixels: proven
635
+ max_input_size_bytes: 270000000 # was 500 MiB
636
+ max_input_pixels: 75000000
612
637
  options:
613
638
  quality:
614
639
  type: integer
@@ -814,27 +839,25 @@ operation:
814
839
  # claiming it.)
815
840
  mimes:
816
841
  - image/svg+xml
817
- # KNOWN OVER-ADVERTISEMENT, DELIBERATELY LEFT AS-IS — do NOT lower this
818
- # unilaterally. compress_svg holds the markup in memory and caps SVGO
819
- # output at 100 MiB (image_compressor.rs:1243), so the 500 MiB image/*
820
- # default over-states what the SVG route can actually serve: a valid input
821
- # inside the advertised limit can fail on the worker cap. Codex flagged it
822
- # on the flip PR and it is a real gap.
823
- #
824
- # It stays 500 MiB here because this value is an API-ENFORCED constant, not
825
- # documentation — tests/test_group_input_caps.py pins these to the api
826
- # enforcer, so changing the contract alone would create contract-vs-enforcer
827
- # DRIFT rather than fix anything. Lowering it needs an api co-land, and a
828
- # figure lambdas has actually measured (the only SVG datapoint today is a
829
- # 43 KB fixture). Ticket filed; lambdas already flagged a per-format cap as
830
- # their follow-up.
831
- #
832
- # PRE-EXISTING, not introduced by the 2026-07-21 restore: the same 500 MiB
833
- # applied while this route was stable before 2026-07-17. Recorded rather
834
- # than silently carried.
842
+ # RESOLVED 2026-09-26 (607(d)): this group used to carry the 500 MiB image/*
843
+ # default, a known over-advertisement left in place until lambdas measured a
844
+ # figure (see the note below). The api enforcer reads this value from the
845
+ # vendored schema, so lowering it here lowers enforcement at api's next
846
+ # vendoring.
847
+ # 607(d) corner run (lambdas, staging v144, 2026-09-26): WHY ~1 MB. compress SVG runs
848
+ # the external SVGO binary under a FIXED 30 s tool timeout
849
+ # (image_compressor.rs svg_compression_timeout). No rasterising and memory is not
850
+ # the limit: 1 MB (9.6k elements) passed in 4.4 s; 4 MB, 20 MB and 100 MB all
851
+ # failed at ~30.2 s (processing_limit_exceeded). Cost scales with ELEMENT COUNT,
852
+ # not bytes, so bytes are a proxy. The 30 s is a code constant (a TODO sits at its
853
+ # call site), not the Lambda budget: raising it is a lambdas choice, after which
854
+ # this ceiling can be re-measured upward.
855
+ # UNPROVEN as a guarantee: bytes are only a PROXY for element count. The 1 MB
856
+ # run had 9.6k rects; a denser SVG under 1 MB can still hit the 30 s cap
857
+ # (codex #622). Proven only once lambdas bounds element count or the cap moves.
835
858
  ceiling_basis: # 607(d): proven at the declared value, or not yet (FORMAT.md §ceiling_basis)
836
859
  max_input_size_bytes: unproven
837
- max_input_size_bytes: 524288000 # 500 MiB compress input ceiling (uKsFzORi; image/* default)
860
+ max_input_size_bytes: 1000000 # was 500 MiB
838
861
  options:
839
862
  # No `quality`: compress SVG is SVG->SVG via SVGO (VISUALLY PRESERVING
840
863
  # vector optimise — not lossless; see the group note above on convertPathData);
@@ -895,6 +918,11 @@ operation:
895
918
  - image/gif
896
919
  - image/tiff
897
920
  max_output_pixels: 16000000
921
+ # 607(d): ONE ceiling for TWO formats that measured differently. GIF passed at
922
+ # 515 MB (30 x 12.5 MP frames; the worker caps a frame at 12.5 MP); TIFF passed
923
+ # only to 150 MB / 50 MP (100 MP refused by libcaesium). A single group value
924
+ # cannot state both, so it stays unproven until the group splits into
925
+ # image_gif + image_tiff (IJofpQLI's pending split).
898
926
  ceiling_basis: # 607(d): proven at the declared value, or not yet (FORMAT.md §ceiling_basis)
899
927
  max_input_size_bytes: unproven
900
928
  max_input_size_bytes: 524288000 # 500 MiB compress input ceiling (uKsFzORi)
@@ -318,6 +318,22 @@ operation:
318
318
  description: "Crossfade duration in seconds"
319
319
  normalize_audio:
320
320
  type: boolean
321
+ # KNOWN LIMITATION (hub ruling 2026-09-26, lambdas 7sbbABVG). CORRECTED
322
+ # 2026-09-26 17:32 by lambdas' measurement (local, static FFmpeg 7.1.1,
323
+ # instrument validated against 0 ms and +100 ms controls): the default
324
+ # stream-copy concat does NOT accumulate. Each join is offset by a
325
+ # constant, about +7.5 ms after a clip whose audio is longer than its
326
+ # video and about -37 ms (audio early) after one whose audio is shorter,
327
+ # because the concat demuxer drops each later file's AAC priming skip.
328
+ # The first draft said the offset ACCUMULATED; that was an inference, not
329
+ # a measurement, and is withdrawn. The normalize_audio=true route did
330
+ # accumulate (+362 ms by the 8th join); lambdas fixed that in cTk1wbib,
331
+ # which is NOT yet deployed. The deployed `true` route was measured at
332
+ # one join only (-44 ms), so the description does not claim
333
+ # "not cumulative" for `true` (codex #620). Whether to re-encode the default route's audio to
334
+ # remove the constant is an OWNER decision. Hub ruling 17:33: keep the
335
+ # description sentence until a REAL source measured on staging shows a
336
+ # per-join offset above 45 ms (then widen it), or the owner rules.
321
337
  # DEFAULT FALSE since 2026-09-26 (owner decision, 607(d)): with it on,
322
338
  # every video merge re-encodes, and the re-encode does not fit the
323
339
  # short_form ceiling. THE API APPLIES THIS DEFAULT: when a request omits
@@ -343,7 +359,12 @@ operation:
343
359
  long_form_re_encode: { availability: planned }
344
360
  description: >-
345
361
  Normalize audio levels across all clips. Off by default (the server
346
- applies the default when the option is omitted). Turning it
362
+ applies the default when the option is omitted). Known issue:
363
+ at each join of video clips, audio may lead video by up to about
364
+ 40 ms with the default (`false`); the offset is per join and does
365
+ not add up across joins. With `true`, an offset of about 45 ms
366
+ was measured at a single join; merges with more joins are not
367
+ yet measured on that setting. Turning it
347
368
  on re-encodes every clip, which lowers the limit: about 120 seconds
348
369
  of combined 720p video was measured to fit, instead of 5 minutes.
349
370
  NOT available on the long-form path, which forces loudness
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@giveitsmaller/contracts",
3
- "version": "0.81.0",
4
- "description": "Generated contract types for GISL (Give It Smaller). Generated from compression_contracts spec v2.216.0.",
5
- "gislContractsSpec": "v2.216.0",
3
+ "version": "0.83.0",
4
+ "description": "Generated contract types for GISL (Give It Smaller). Generated from compression_contracts spec v2.218.0.",
5
+ "gislContractsSpec": "v2.218.0",
6
6
  "license": "Apache-2.0",
7
7
  "homepage": "https://docs.giveitsmaller.com",
8
8
  "bugs": {
@@ -31,6 +31,7 @@
31
31
  "./openapi/api.yaml": "./openapi/api.yaml",
32
32
  "./asyncapi/events.yaml": "./asyncapi/events.yaml",
33
33
  "./resolution-bands.yaml": "./resolution-bands.yaml",
34
+ "./anonymous-policy.yaml": "./anonymous-policy.yaml",
34
35
  "./availability/availability.json": "./availability/availability.json",
35
36
  "./accepted-options/accepted-options.json": "./accepted-options/accepted-options.json",
36
37
  "./accepted-options/image-output-routes.json": "./accepted-options/image-output-routes.json",
@@ -65,7 +66,8 @@
65
66
  "accepted-options/image-output-routes.json",
66
67
  "operation-capabilities/operation-capabilities.json",
67
68
  "code-builder/code-builder-metadata.json",
68
- "resolution-bands.yaml"
69
+ "resolution-bands.yaml",
70
+ "anonymous-policy.yaml"
69
71
  ],
70
72
  "scripts": {
71
73
  "clean": "node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"",