@giveitsmaller/contracts 0.89.0 → 0.91.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (569) hide show
  1. package/README.md +2 -2
  2. package/accepted-options/accepted-options.json +10 -1
  3. package/accepted-options/image-output-routes.json +1 -1
  4. package/asyncapi/events.yaml +16 -5
  5. package/availability/availability.json +43 -6
  6. package/code-builder/code-builder-metadata.json +49 -5
  7. package/dist/asyncapi/UploadProbeStatus.d.ts +2 -1
  8. package/dist/asyncapi/UploadProbeStatus.js +1 -0
  9. package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
  10. package/dist/openapi/models/AccountLimitEntry.js +1 -1
  11. package/dist/openapi/models/AccountLimits.d.ts +1 -1
  12. package/dist/openapi/models/AccountLimits.js +1 -1
  13. package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
  14. package/dist/openapi/models/AccountLimitsLimits.js +1 -1
  15. package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
  16. package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
  17. package/dist/openapi/models/AnonymousLimitExceededResponse.d.ts +1 -1
  18. package/dist/openapi/models/AnonymousLimitExceededResponse.js +1 -1
  19. package/dist/openapi/models/AnonymousOperationNotAllowedResponse.d.ts +1 -1
  20. package/dist/openapi/models/AnonymousOperationNotAllowedResponse.js +1 -1
  21. package/dist/openapi/models/AnonymousQuotaExhaustedResponse.d.ts +1 -1
  22. package/dist/openapi/models/AnonymousQuotaExhaustedResponse.js +1 -1
  23. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  24. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  25. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  26. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  27. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  28. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  29. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  30. package/dist/openapi/models/AuthErrorType.js +1 -1
  31. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
  32. package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
  33. package/dist/openapi/models/AuthenticatedIdentity.d.ts +1 -1
  34. package/dist/openapi/models/AuthenticatedIdentity.js +1 -1
  35. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  36. package/dist/openapi/models/AvailabilityValue.js +1 -1
  37. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  38. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  39. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  40. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  41. package/dist/openapi/models/BillingCheckoutRequest.d.ts +1 -1
  42. package/dist/openapi/models/BillingCheckoutRequest.js +1 -1
  43. package/dist/openapi/models/BillingCheckoutSession.d.ts +1 -1
  44. package/dist/openapi/models/BillingCheckoutSession.js +1 -1
  45. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +1 -1
  46. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +1 -1
  47. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  48. package/dist/openapi/models/CallbackEventType.js +1 -1
  49. package/dist/openapi/models/CancelAccountDeletion200Response.d.ts +1 -1
  50. package/dist/openapi/models/CancelAccountDeletion200Response.js +1 -1
  51. package/dist/openapi/models/CancelAccountDeletion200ResponseData.d.ts +1 -1
  52. package/dist/openapi/models/CancelAccountDeletion200ResponseData.js +1 -1
  53. package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
  54. package/dist/openapi/models/CapabilityCondition.js +1 -1
  55. package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
  56. package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
  57. package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
  58. package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
  59. package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
  60. package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
  61. package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
  62. package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
  63. package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
  64. package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
  65. package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
  66. package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
  67. package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
  68. package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
  69. package/dist/openapi/models/CapabilityConditionOneOf7.d.ts +1 -1
  70. package/dist/openapi/models/CapabilityConditionOneOf7.js +1 -1
  71. package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
  72. package/dist/openapi/models/CapabilityConstraint.js +1 -1
  73. package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
  74. package/dist/openapi/models/CapabilityInputSpec.js +1 -1
  75. package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
  76. package/dist/openapi/models/CapabilityProduces.js +1 -1
  77. package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
  78. package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
  79. package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
  80. package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
  81. package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
  82. package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
  83. package/dist/openapi/models/CeilingBasisValue.d.ts +1 -1
  84. package/dist/openapi/models/CeilingBasisValue.js +1 -1
  85. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  86. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  87. package/dist/openapi/models/CheckoutSessionStatusResponse.d.ts +1 -1
  88. package/dist/openapi/models/CheckoutSessionStatusResponse.js +1 -1
  89. package/dist/openapi/models/CheckoutSessionStatusResponseData.d.ts +1 -1
  90. package/dist/openapi/models/CheckoutSessionStatusResponseData.js +1 -1
  91. package/dist/openapi/models/CodegenSource.d.ts +1 -1
  92. package/dist/openapi/models/CodegenSource.js +1 -1
  93. package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
  94. package/dist/openapi/models/CodegenSourceInput.js +1 -1
  95. package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
  96. package/dist/openapi/models/CodegenSourceJob.js +1 -1
  97. package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
  98. package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
  99. package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
  100. package/dist/openapi/models/CodegenSourceOperation.js +1 -1
  101. package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
  102. package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
  103. package/dist/openapi/models/CompositionPlan.d.ts +1 -1
  104. package/dist/openapi/models/CompositionPlan.js +1 -1
  105. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  106. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  107. package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
  108. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  109. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  110. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  111. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  112. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  113. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  114. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  115. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  116. package/dist/openapi/models/ConnectionSource.js +1 -1
  117. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  118. package/dist/openapi/models/ContactRequest.js +1 -1
  119. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  120. package/dist/openapi/models/ContactSubject.js +1 -1
  121. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  122. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  123. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  124. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  125. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  126. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  127. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  128. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  129. package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +1 -1
  130. package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +1 -1
  131. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  132. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  133. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  134. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  135. package/dist/openapi/models/CreateWorkflow401Response.d.ts +1 -1
  136. package/dist/openapi/models/CreateWorkflow401Response.js +1 -1
  137. package/dist/openapi/models/CreateWorkflow403Response.d.ts +1 -1
  138. package/dist/openapi/models/CreateWorkflow403Response.js +1 -1
  139. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  140. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  141. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  142. package/dist/openapi/models/CreditTransaction.js +1 -1
  143. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  144. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  145. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  146. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  147. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  148. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  149. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  150. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  151. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  152. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  153. package/dist/openapi/models/Delivery.d.ts +1 -1
  154. package/dist/openapi/models/Delivery.js +1 -1
  155. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  156. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  157. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  158. package/dist/openapi/models/DeliveryPlan.js +1 -1
  159. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  160. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  161. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  162. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  163. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  164. package/dist/openapi/models/DeliverySelection.js +1 -1
  165. package/dist/openapi/models/DownloadBundle.d.ts +1 -1
  166. package/dist/openapi/models/DownloadBundle.js +1 -1
  167. package/dist/openapi/models/DroppedOption.d.ts +1 -1
  168. package/dist/openapi/models/DroppedOption.js +1 -1
  169. package/dist/openapi/models/EmailNotify.d.ts +1 -1
  170. package/dist/openapi/models/EmailNotify.js +1 -1
  171. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  172. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  173. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  174. package/dist/openapi/models/EndpointProjection.js +1 -1
  175. package/dist/openapi/models/EndpointProjectionServersInner.d.ts +1 -1
  176. package/dist/openapi/models/EndpointProjectionServersInner.js +1 -1
  177. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  178. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  179. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  180. package/dist/openapi/models/EstimateQuality.js +1 -1
  181. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  182. package/dist/openapi/models/EstimateRange.js +1 -1
  183. package/dist/openapi/models/ExportAccountData200Response.d.ts +1 -1
  184. package/dist/openapi/models/ExportAccountData200Response.js +1 -1
  185. package/dist/openapi/models/ExportAccountData200ResponseData.d.ts +1 -1
  186. package/dist/openapi/models/ExportAccountData200ResponseData.js +1 -1
  187. package/dist/openapi/models/ExportAccountData200ResponseDataBilling.d.ts +1 -1
  188. package/dist/openapi/models/ExportAccountData200ResponseDataBilling.js +1 -1
  189. package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.d.ts +1 -1
  190. package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.js +1 -1
  191. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  192. package/dist/openapi/models/ExternalDestination.js +1 -1
  193. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  194. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  195. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  196. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  197. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  198. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  199. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  200. package/dist/openapi/models/ExternalImportToken.js +1 -1
  201. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  202. package/dist/openapi/models/ExternalSource.js +1 -1
  203. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  204. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  205. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  206. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  207. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  208. package/dist/openapi/models/FeatureViolation.js +1 -1
  209. package/dist/openapi/models/GetProfile200Response.d.ts +1 -1
  210. package/dist/openapi/models/GetProfile200Response.js +1 -1
  211. package/dist/openapi/models/GetProfile200ResponseData.d.ts +1 -1
  212. package/dist/openapi/models/GetProfile200ResponseData.js +1 -1
  213. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  214. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  215. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  216. package/dist/openapi/models/JobDefinition.js +1 -1
  217. package/dist/openapi/models/JobDownload.d.ts +1 -1
  218. package/dist/openapi/models/JobDownload.js +1 -1
  219. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  220. package/dist/openapi/models/JobInputV2.js +1 -1
  221. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  222. package/dist/openapi/models/JobMediaClass.js +1 -1
  223. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  224. package/dist/openapi/models/JobOutputSource.js +1 -1
  225. package/dist/openapi/models/JobResponse.d.ts +1 -1
  226. package/dist/openapi/models/JobResponse.js +1 -1
  227. package/dist/openapi/models/JobStatus.d.ts +1 -1
  228. package/dist/openapi/models/JobStatus.js +1 -1
  229. package/dist/openapi/models/JobType.d.ts +1 -1
  230. package/dist/openapi/models/JobType.js +1 -1
  231. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  232. package/dist/openapi/models/LivenessResponse.js +1 -1
  233. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  234. package/dist/openapi/models/LoginUser200Response.js +1 -1
  235. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  236. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  237. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  238. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  239. package/dist/openapi/models/LoginUser401Response.d.ts +1 -1
  240. package/dist/openapi/models/LoginUser401Response.js +1 -1
  241. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  242. package/dist/openapi/models/LoginUserRequest.js +1 -1
  243. package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
  244. package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
  245. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
  246. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
  247. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  248. package/dist/openapi/models/MetadataResponse.js +1 -1
  249. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  250. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  251. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  252. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  253. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  254. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  255. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  256. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  257. package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
  258. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  259. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  260. package/dist/openapi/models/MultiInputSource.js +1 -1
  261. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  262. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  263. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  264. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  265. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  266. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  267. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  268. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  269. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  270. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  271. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  272. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  273. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  274. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  275. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  276. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  277. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  278. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  279. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  280. package/dist/openapi/models/MultipartPartListing.js +1 -1
  281. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  282. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  283. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  284. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  285. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  286. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  287. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  288. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  289. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  290. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  291. package/dist/openapi/models/NotifyConfig.d.ts +1 -1
  292. package/dist/openapi/models/NotifyConfig.js +1 -1
  293. package/dist/openapi/models/OperationCapability.d.ts +1 -1
  294. package/dist/openapi/models/OperationCapability.js +1 -1
  295. package/dist/openapi/models/OperationDefinition.d.ts +13 -5
  296. package/dist/openapi/models/OperationDefinition.js +1 -1
  297. package/dist/openapi/models/OperationDownload.d.ts +1 -1
  298. package/dist/openapi/models/OperationDownload.js +1 -1
  299. package/dist/openapi/models/OperationInputModel.d.ts +1 -1
  300. package/dist/openapi/models/OperationInputModel.js +1 -1
  301. package/dist/openapi/models/OperationMessageParamsValue.d.ts +1 -1
  302. package/dist/openapi/models/OperationMessageParamsValue.js +1 -1
  303. package/dist/openapi/models/OperationResponse.d.ts +4 -2
  304. package/dist/openapi/models/OperationResponse.js +1 -1
  305. package/dist/openapi/models/OperationResult.d.ts +1 -1
  306. package/dist/openapi/models/OperationResult.js +1 -1
  307. package/dist/openapi/models/OperationResultMetadata.d.ts +6 -2
  308. package/dist/openapi/models/OperationResultMetadata.js +1 -1
  309. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  310. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  311. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  312. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  313. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  314. package/dist/openapi/models/OperationStatus.js +1 -1
  315. package/dist/openapi/models/OperationType.d.ts +2 -2
  316. package/dist/openapi/models/OperationType.js +2 -2
  317. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  318. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  319. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  320. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  321. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  322. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  323. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  324. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  325. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  326. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  327. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +1 -1
  328. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +1 -1
  329. package/dist/openapi/models/OptionSchema.d.ts +18 -1
  330. package/dist/openapi/models/OptionSchema.js +4 -1
  331. package/dist/openapi/models/OptionSchemaPerValueConstraintsValue.d.ts +32 -0
  332. package/dist/openapi/models/OptionSchemaPerValueConstraintsValue.js +41 -0
  333. package/dist/openapi/models/OutputProperties.d.ts +1 -1
  334. package/dist/openapi/models/OutputProperties.js +1 -1
  335. package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
  336. package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
  337. package/dist/openapi/models/PerClassAvailabilityEntry.d.ts +1 -1
  338. package/dist/openapi/models/PerClassAvailabilityEntry.js +1 -1
  339. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  340. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  341. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  342. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  343. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  344. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  345. package/dist/openapi/models/ProbePendingResponse.d.ts +1 -1
  346. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  347. package/dist/openapi/models/ProbeUpload422Response.d.ts +1 -1
  348. package/dist/openapi/models/ProbeUpload422Response.js +1 -1
  349. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  350. package/dist/openapi/models/ProcessingClass.js +1 -1
  351. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  352. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  353. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  354. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  355. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  356. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  357. package/dist/openapi/models/ProcessingClassEntryInputUniformity.d.ts +1 -1
  358. package/dist/openapi/models/ProcessingClassEntryInputUniformity.js +1 -1
  359. package/dist/openapi/models/ProcessingClassEntryResolutionBands.d.ts +1 -1
  360. package/dist/openapi/models/ProcessingClassEntryResolutionBands.js +1 -1
  361. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  362. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  363. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  364. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  365. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  366. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  367. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  368. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  369. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  370. package/dist/openapi/models/ProcessingPlan.js +1 -1
  371. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  372. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  373. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  374. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  375. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  376. package/dist/openapi/models/ReadinessResponse.js +1 -1
  377. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  378. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  379. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  380. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  381. package/dist/openapi/models/RequestAccountDeletion200Response.d.ts +1 -1
  382. package/dist/openapi/models/RequestAccountDeletion200Response.js +1 -1
  383. package/dist/openapi/models/RequestAccountDeletion200ResponseData.d.ts +1 -1
  384. package/dist/openapi/models/RequestAccountDeletion200ResponseData.js +1 -1
  385. package/dist/openapi/models/RequestAccountDeletionRequest.d.ts +1 -1
  386. package/dist/openapi/models/RequestAccountDeletionRequest.js +1 -1
  387. package/dist/openapi/models/ResendVerificationEmailRequest.d.ts +1 -1
  388. package/dist/openapi/models/ResendVerificationEmailRequest.js +1 -1
  389. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  390. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  391. package/dist/openapi/models/ResolutionBand.d.ts +1 -1
  392. package/dist/openapi/models/ResolutionBand.js +1 -1
  393. package/dist/openapi/models/ResolutionBandCeiling.d.ts +1 -1
  394. package/dist/openapi/models/ResolutionBandCeiling.js +1 -1
  395. package/dist/openapi/models/ResolutionBandCeilingConstraints.d.ts +1 -1
  396. package/dist/openapi/models/ResolutionBandCeilingConstraints.js +1 -1
  397. package/dist/openapi/models/ResolutionBandCeilingDerivation.d.ts +1 -1
  398. package/dist/openapi/models/ResolutionBandCeilingDerivation.js +1 -1
  399. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  400. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  401. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  402. package/dist/openapi/models/RetryResponse.js +1 -1
  403. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  404. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  405. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  406. package/dist/openapi/models/SseCompletionBase.js +1 -1
  407. package/dist/openapi/models/SseConnectionLimitResponse.d.ts +1 -1
  408. package/dist/openapi/models/SseConnectionLimitResponse.js +1 -1
  409. package/dist/openapi/models/SseEventType.d.ts +1 -1
  410. package/dist/openapi/models/SseEventType.js +1 -1
  411. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  412. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  413. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  414. package/dist/openapi/models/SseJobFailedData.js +1 -1
  415. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  416. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  417. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  418. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  419. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  420. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  421. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  422. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  423. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  424. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  425. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  426. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  427. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  428. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  429. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  430. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  431. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  432. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  433. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  434. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  435. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  436. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  437. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  438. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  439. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  440. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  441. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  442. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  443. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  444. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  445. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  446. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  447. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  448. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  449. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  450. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  451. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  452. package/dist/openapi/models/UploadFile403Response.js +1 -1
  453. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  454. package/dist/openapi/models/UploadFile422Response.js +1 -1
  455. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  456. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  457. package/dist/openapi/models/UploadProbeNotApplicableResponse.d.ts +1 -1
  458. package/dist/openapi/models/UploadProbeNotApplicableResponse.js +1 -1
  459. package/dist/openapi/models/UploadProbeNotReadyResponse.d.ts +1 -1
  460. package/dist/openapi/models/UploadProbeNotReadyResponse.js +1 -1
  461. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  462. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  463. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  464. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  465. package/dist/openapi/models/UploadProbeStatus.d.ts +10 -1
  466. package/dist/openapi/models/UploadProbeStatus.js +11 -2
  467. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  468. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  469. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  470. package/dist/openapi/models/UploadResponse.js +1 -1
  471. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  472. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  473. package/dist/openapi/models/UploadSource.d.ts +1 -1
  474. package/dist/openapi/models/UploadSource.js +1 -1
  475. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  476. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  477. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  478. package/dist/openapi/models/UploadThresholds.js +1 -1
  479. package/dist/openapi/models/UserTier.d.ts +1 -1
  480. package/dist/openapi/models/UserTier.js +1 -1
  481. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  482. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  483. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  484. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  485. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  486. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  487. package/dist/openapi/models/WarningType.d.ts +1 -1
  488. package/dist/openapi/models/WarningType.js +1 -1
  489. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  490. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  491. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  492. package/dist/openapi/models/WebhookPayload.js +1 -1
  493. package/dist/openapi/models/WorkflowArchiveResponse.d.ts +1 -1
  494. package/dist/openapi/models/WorkflowArchiveResponse.js +1 -1
  495. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.d.ts +1 -1
  496. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.js +1 -1
  497. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  498. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  499. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  500. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  501. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  502. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  503. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  504. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  505. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  506. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  507. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  508. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  509. package/dist/openapi/models/WorkflowCreditSummary.d.ts +1 -1
  510. package/dist/openapi/models/WorkflowCreditSummary.js +1 -1
  511. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  512. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  513. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  514. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  515. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  516. package/dist/openapi/models/WorkflowEdge.js +1 -1
  517. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  518. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  519. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  520. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  521. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  522. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  523. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  524. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  525. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  526. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  527. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  528. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  529. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  530. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  531. package/dist/openapi/models/WorkflowRestoreResponse.d.ts +1 -1
  532. package/dist/openapi/models/WorkflowRestoreResponse.js +1 -1
  533. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.d.ts +1 -1
  534. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.js +1 -1
  535. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  536. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  537. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  538. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  539. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  540. package/dist/openapi/models/WorkflowSource.js +1 -1
  541. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  542. package/dist/openapi/models/WorkflowStatus.js +1 -1
  543. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  544. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  545. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  546. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  547. package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
  548. package/dist/openapi/models/WorkflowSummary.js +1 -1
  549. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  550. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  551. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  552. package/dist/openapi/models/WorkflowWarning.js +1 -1
  553. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  554. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  555. package/dist/openapi/models/index.d.ts +1 -0
  556. package/dist/openapi/models/index.js +1 -0
  557. package/dist/openapi/runtime.d.ts +1 -1
  558. package/dist/openapi/runtime.js +1 -1
  559. package/dist/operations/compress.d.ts +4 -0
  560. package/dist/operations/compress.metadata.js +14 -0
  561. package/dist/operations/split.metadata.js +2 -2
  562. package/openapi/README.md +1 -1
  563. package/openapi/api.yaml +97 -10
  564. package/operation-capabilities/operation-capabilities.json +2 -32
  565. package/operations/schemas/compress.yaml +43 -0
  566. package/operations/schemas/convert.yaml +10 -0
  567. package/operations/schemas/split.yaml +5 -4
  568. package/operations/schemas/thumbnail.yaml +14 -3
  569. package/package.json +3 -3
@@ -2,7 +2,7 @@
2
2
  * GISL Compression API
3
3
  * REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (per-tier private caching with ETag revalidation per ADR-0002 + I3), health probes return flat objects, and `POST /api/contact` returns 204 with no body. **Availability metadata.** This spec uses the `x-availability` vendor extension as **decorative documentation only**. Per [ADR-0001](../docs/decisions/0001-contract-first-availability.md) §1.5, the runtime endpoint `GET /api/operations/schema` (ticket I3) is the authoritative source; the sidecar `availability.json` (ticket I3b) is the authoritative companion (generated, never hand-edited; CI cross-checks runtime ⇄ sidecar). SDKs MUST NOT depend on `x-availability` reaching generated code — code-generators that surface vendor extensions may emit it as documentation, but consumers read availability from the runtime endpoint, not from the generated bindings. The 5-value vocabulary (`stable | beta | experimental | planned | deprecated`) is defined in the `AvailabilityValue` schema. See `schemas/FORMAT.md` §Availability Taxonomy for the operational rules (parser obligation: absent = stable; per-enum-value granularity is the `per_value_availability` primitive landed via ticket I17). **Free-text string fields: `x-string-vocabulary` (ticket [`Q79yjcFF`](https://trello.com/c/Q79yjcFF)).** A `type: string` field with no `enum` that names example values says, as data, what a client may do with them (the same marker is used in the AsyncAPI document): - `open` — a vocabulary that grows. Each published value keeps its meaning, the SET is not closed: switch on the values you know and handle an unknown one as the generic case (e.g. `ErrorEnvelope.error`). - `advisory` — explanatory text. Display or log it; **never switch on it** (e.g. `SseWorkflowTerminalData.reason`). - `none` — not a vocabulary at all (an expression or an identifier, e.g. `OptionSchema.pattern`). A field whose description hedges with \"common values\" or \"free-form\" must carry the marker; a test enforces it. **Localisation (per ticket [I26](https://trello.com/c/rcnqwgI4)).** Error responses + paused/blocked workflow statuses carry a localised human-readable `message` alongside a stable, never-localised `message_key`. Machine-readable fields (`error`, enum values, status codes) stay canonical English. - **Currently committed locales:** `en-GB` only (per ticket [`4GKyuYo6`](https://trello.com/c/4GKyuYo6)). The I26 carrier shape (`Accept-Language` + `Content-Language` + `Vary` headers + `locale` envelope field + `message_key` + `message_params`) is stable and exercised; the **catalog** of translated `message` strings is en-GB-only at runtime today. Additional locales (e.g. `pt-PT`) will be advertised by name when their catalogs ship — the request/response carrier shape does NOT change when a new locale lands. Treat unrequested locales as \"machine-code + `message_key` path is committed; localised `message` prose is not\" until this prose enumerates them by name. - **Request:** `Accept-Language` header per RFC 9110 §12.5.4 (q-value negotiation supported). The server selects the best-match locale from its supported list; falls back to `en-GB` when no match — which, until additional catalogs land, is every non-`en-GB` `Accept-Language`. - **Response:** `Content-Language: <locale>` echo on every localised response; `Vary: Accept-Language` on every response (CDN/cache correctness — different `Accept-Language` requests produce different responses). `Vary` is emitted unconditionally so the header contract does not flip when a second locale ships. - **Fallback locale:** `en-GB` (also the canonical locale for `message_key` translations and English `message` prose). - **SDK guidance:** switch on `error` (machine code) for typed error branches; surface `message_key` to client-side i18n catalogs (SDK companion work tracked at X19, cross-repo); display `message` for end-user UI; **never parse `message` for control flow** — it changes per locale. Carrier shape lives on `ErrorEnvelope` (envelope-level optional `message_key` + `message` + `locale` + `message_params`) and `ValidationErrorEnvelope` (also per-`details[]` entry). Existing 402 / 403 / 422 envelopes (`BalanceExhaustedResponse`, `FeatureNotAvailableResponse`, `FeatureTierRestrictedResponse`, `WorkflowPausedDetail`) inherit the convention. **Upload thresholds (per tickets [u0ar7Yye](https://trello.com/c/u0ar7Yye) + [58nBQLWQ](https://trello.com/c/58nBQLWQ)).** Canonical upload constants (single-shot cap, multipart chunk size, multipart concurrency default, multipart first-chunk size) live on the `UploadThresholds` schema with `const:`-pinned values. SDK generators emit these as typed binding constants so frontend / API / SDKs reference one source of truth instead of hardcoding magic numbers. A runtime `GET /api/uploads/limits` endpoint for dynamic discovery (per-tier / per-environment overrides) is a deferred follow-up.
4
4
  *
5
- * The version of the OpenAPI document: 2.225.0
5
+ * The version of the OpenAPI document: 2.229.0
6
6
  *
7
7
  *
8
8
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -4,7 +4,7 @@
4
4
  * GISL Compression API
5
5
  * REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (per-tier private caching with ETag revalidation per ADR-0002 + I3), health probes return flat objects, and `POST /api/contact` returns 204 with no body. **Availability metadata.** This spec uses the `x-availability` vendor extension as **decorative documentation only**. Per [ADR-0001](../docs/decisions/0001-contract-first-availability.md) §1.5, the runtime endpoint `GET /api/operations/schema` (ticket I3) is the authoritative source; the sidecar `availability.json` (ticket I3b) is the authoritative companion (generated, never hand-edited; CI cross-checks runtime ⇄ sidecar). SDKs MUST NOT depend on `x-availability` reaching generated code — code-generators that surface vendor extensions may emit it as documentation, but consumers read availability from the runtime endpoint, not from the generated bindings. The 5-value vocabulary (`stable | beta | experimental | planned | deprecated`) is defined in the `AvailabilityValue` schema. See `schemas/FORMAT.md` §Availability Taxonomy for the operational rules (parser obligation: absent = stable; per-enum-value granularity is the `per_value_availability` primitive landed via ticket I17). **Free-text string fields: `x-string-vocabulary` (ticket [`Q79yjcFF`](https://trello.com/c/Q79yjcFF)).** A `type: string` field with no `enum` that names example values says, as data, what a client may do with them (the same marker is used in the AsyncAPI document): - `open` — a vocabulary that grows. Each published value keeps its meaning, the SET is not closed: switch on the values you know and handle an unknown one as the generic case (e.g. `ErrorEnvelope.error`). - `advisory` — explanatory text. Display or log it; **never switch on it** (e.g. `SseWorkflowTerminalData.reason`). - `none` — not a vocabulary at all (an expression or an identifier, e.g. `OptionSchema.pattern`). A field whose description hedges with \"common values\" or \"free-form\" must carry the marker; a test enforces it. **Localisation (per ticket [I26](https://trello.com/c/rcnqwgI4)).** Error responses + paused/blocked workflow statuses carry a localised human-readable `message` alongside a stable, never-localised `message_key`. Machine-readable fields (`error`, enum values, status codes) stay canonical English. - **Currently committed locales:** `en-GB` only (per ticket [`4GKyuYo6`](https://trello.com/c/4GKyuYo6)). The I26 carrier shape (`Accept-Language` + `Content-Language` + `Vary` headers + `locale` envelope field + `message_key` + `message_params`) is stable and exercised; the **catalog** of translated `message` strings is en-GB-only at runtime today. Additional locales (e.g. `pt-PT`) will be advertised by name when their catalogs ship — the request/response carrier shape does NOT change when a new locale lands. Treat unrequested locales as \"machine-code + `message_key` path is committed; localised `message` prose is not\" until this prose enumerates them by name. - **Request:** `Accept-Language` header per RFC 9110 §12.5.4 (q-value negotiation supported). The server selects the best-match locale from its supported list; falls back to `en-GB` when no match — which, until additional catalogs land, is every non-`en-GB` `Accept-Language`. - **Response:** `Content-Language: <locale>` echo on every localised response; `Vary: Accept-Language` on every response (CDN/cache correctness — different `Accept-Language` requests produce different responses). `Vary` is emitted unconditionally so the header contract does not flip when a second locale ships. - **Fallback locale:** `en-GB` (also the canonical locale for `message_key` translations and English `message` prose). - **SDK guidance:** switch on `error` (machine code) for typed error branches; surface `message_key` to client-side i18n catalogs (SDK companion work tracked at X19, cross-repo); display `message` for end-user UI; **never parse `message` for control flow** — it changes per locale. Carrier shape lives on `ErrorEnvelope` (envelope-level optional `message_key` + `message` + `locale` + `message_params`) and `ValidationErrorEnvelope` (also per-`details[]` entry). Existing 402 / 403 / 422 envelopes (`BalanceExhaustedResponse`, `FeatureNotAvailableResponse`, `FeatureTierRestrictedResponse`, `WorkflowPausedDetail`) inherit the convention. **Upload thresholds (per tickets [u0ar7Yye](https://trello.com/c/u0ar7Yye) + [58nBQLWQ](https://trello.com/c/58nBQLWQ)).** Canonical upload constants (single-shot cap, multipart chunk size, multipart concurrency default, multipart first-chunk size) live on the `UploadThresholds` schema with `const:`-pinned values. SDK generators emit these as typed binding constants so frontend / API / SDKs reference one source of truth instead of hardcoding magic numbers. A runtime `GET /api/uploads/limits` endpoint for dynamic discovery (per-tier / per-environment overrides) is a deferred follow-up.
6
6
  *
7
- * The version of the OpenAPI document: 2.225.0
7
+ * The version of the OpenAPI document: 2.229.0
8
8
  *
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -315,6 +315,10 @@ export interface CompressVideoOptions {
315
315
  trim_end?: number;
316
316
  speed?: number;
317
317
  }
318
+ export interface CompressDocumentPdfOptions {
319
+ quality?: number;
320
+ max_image_dimension?: number;
321
+ }
318
322
  export interface CompressDocumentOfficeOptions {
319
323
  quality?: number;
320
324
  strip_macros?: boolean;
@@ -396,6 +396,20 @@ export const compressMetadata = {
396
396
  },
397
397
  per_input_options: {},
398
398
  },
399
+ document_pdf: {
400
+ availability: 'beta',
401
+ processing_class: {},
402
+ per_mime_availability: {},
403
+ options: {
404
+ quality: {
405
+ per_value_availability: {},
406
+ },
407
+ max_image_dimension: {
408
+ per_value_availability: {},
409
+ },
410
+ },
411
+ per_input_options: {},
412
+ },
399
413
  document_office: {
400
414
  processing_class: {},
401
415
  per_mime_availability: {},
@@ -1,6 +1,6 @@
1
1
  // Auto-generated from split.yaml -- do not edit
2
2
  export const splitMetadata = {
3
- availability: 'beta',
3
+ availability: 'stable',
4
4
  sole_op: true,
5
5
  features: {
6
6
  silence_mode_audio: {
@@ -23,7 +23,7 @@ export const splitMetadata = {
23
23
  per_input_options: {},
24
24
  },
25
25
  document_pdf: {
26
- availability: 'beta',
26
+ availability: 'stable',
27
27
  processing_class: {},
28
28
  per_mime_availability: {},
29
29
  options: {
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:** 275
13
+ - **Files:** 276
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.225.0
106
+ version: 2.229.0
107
107
  contact:
108
108
  name: API Support
109
109
 
@@ -2094,6 +2094,38 @@ paths:
2094
2094
  Caller resolves by switching to `re_encode_mode: auto`
2095
2095
  or `always`. The compatibility-probe algorithm is
2096
2096
  server-side and deliberately opaque per plan v5 §F8.2.
2097
+ - GIF too long (ticket `zfFnNYRY`, hub decision 715). A
2098
+ `convert` of video with `output_format: gif` whose KEPT window
2099
+ (input duration minus `trim_start` and `trim_end`) exceeds the
2100
+ option's `per_value_constraints.gif.max_kept_duration` (`PT10S`).
2101
+ `ValidationErrorEnvelope` with `error: "GIF_TOO_LONG"`; one
2102
+ `details[]` entry `{operation: "convert", option:
2103
+ "output_format", field: "kept_duration", message: "..."}`. The
2104
+ message steers: trim to 10 s, or choose `mp4` / `webm`. **The
2105
+ API waits for the upload probe** for a video->GIF convert whose
2106
+ source is an `upload`, for EVERY caller, signed in or not (owner
2107
+ decision 734): until the
2108
+ duration is known the create is answered `probe_pending` (retry
2109
+ it); after `video.probe_wait_bound_seconds` from the upload
2110
+ (`schemas/anonymous-policy.yaml`), or once the probe lands
2111
+ `ok` without a duration or `missing_metadata`, it proceeds and
2112
+ the worker enforces the same limit. A probe that lands `corrupt` or `unsupported_codec`
2113
+ keeps its terminal handling (surface it; do not retry), as
2114
+ `ProbePendingResponse` describes. Same `ProbePendingResponse` shape (`job_ref`,
2115
+ `Retry-After`). A source with no upload probe (`job_output`,
2116
+ `external_import`, `connection`) is not waited on: it is admitted
2117
+ and the worker enforces the limit.
2118
+ - Input password-protected. A job whose `upload` source has a
2119
+ completed probe with `probe_status: password_protected` is
2120
+ refused at create. `ValidationErrorEnvelope` with `error:
2121
+ "INPUT_PASSWORD_PROTECTED"`; one `details[]` entry `{field:
2122
+ "source", message: "..."}`. Client copy: "This PDF is
2123
+ password-protected. Remove the password and upload it again."
2124
+ A file that reaches a worker encrypted (no probe) fails
2125
+ `invalid_format`; the worker attaches `message_key`
2126
+ `document.pdf.password_protected`
2127
+ (`schemas/operation-message-keys.yaml`) once lambdas ships it —
2128
+ until then the bare `invalid_format` headline applies.
2097
2129
  - Inputs not concat-uniform (ticket `MjzzPCWt`). Returned for a
2098
2130
  job that routes to a processing class declaring
2099
2131
  `input_uniformity` (today `merge.video.long_form_re_encode`,
@@ -2146,7 +2178,11 @@ paths:
2146
2178
  `ProcessingClassExceedsBandResponse` (`violations[]`).
2147
2179
  - `probe_pending` → `ProbePendingResponse` (`job_ref`, no
2148
2180
  `violations[]`/`details[]`), emitted when the probe-pending
2149
- gate is on and a job's upload has not yet been probed.
2181
+ gate is on and a job's upload has not yet been probed. The gate
2182
+ is on for a guest's video create, and for EVERY caller's
2183
+ video->GIF `convert` of an `upload` source (owner decision 734,
2184
+ so `GIF_TOO_LONG` is decided at create); in both cases only until
2185
+ `video.probe_wait_bound_seconds` after the upload.
2150
2186
 
2151
2187
  The prior 422 shape is otherwise preserved unchanged — the
2152
2188
  `details[]` / `violations[]` / `job_ref` required-field shapes
@@ -2279,6 +2315,17 @@ paths:
2279
2315
  actual: 54000
2280
2316
  ceiling: 43200
2281
2317
  required_tier: "enterprise"
2318
+ gif_too_long:
2319
+ summary: convert video -> gif with a kept window over 10 s (zfFnNYRY)
2320
+ value:
2321
+ success: false
2322
+ error_type: "validation_error"
2323
+ error: "GIF_TOO_LONG"
2324
+ details:
2325
+ - operation: "convert"
2326
+ option: "output_format"
2327
+ field: "kept_duration"
2328
+ message: "A GIF can be at most 10 seconds; this keeps 42 seconds. Trim it to 10 seconds, or choose mp4 or webm."
2282
2329
  inputs_not_concat_uniform:
2283
2330
  summary: merge.video long_form_re_encode with one input lacking audio (MjzzPCWt)
2284
2331
  value:
@@ -10777,7 +10824,7 @@ components:
10777
10824
  - audio_to_video: Produce a video from an audio input plus an OPTIONAL still image overlay. Multi-input role-based with the first OPTIONAL role on the contract (`role: base` audio required, `role: overlay` image 0..1 — see `per_role_cardinality`). When overlay is omitted, the video uses a solid background colour. `availability: planned` — WITHDRAWN 2026-09-15: the measured encode cost (a per-second rate PLUS A FIXED COST) puts the advertised PT2H at more than twice the 900 s platform maximum (dropping the fixed cost moves the in-flight boundary by tens of seconds; figures in the CHANGELOG entry for 2.203.0, derived and tested from the divergence register). Returns `feature_not_available` (422) at workflow-create. An already-accepted workflow is not cancelled (availability is checked at create) and fails only when its output duration exceeds the derived ceiling (divergence register `evidence.derived.ceiling_s`) ON THE INPUT THE RATE WAS MEASURED WITH (a real photographic 1080p still plus looped real audio), where the measured rate plus the fixed cost reaches the worker's 600 s cap — the 60 s and 120 s measured cells both COMPLETED. The driver is the STILL'S RESOLUTION, not duration alone: a 4K still is roughly 4x the rate (unmeasured), which would put the boundary near a quarter of that, and this schema places no constraint on the overlay's resolution. Per ticket [`SlluxMBN`](https://trello.com/c/SlluxMBN) + ADR-0015 (introduces `per_role_cardinality` vocab).
10778
10825
  - video_watermark: Apply an image overlay onto a base video via FFmpeg's `overlay` filter. Multi-input role-based (`role: base` video + `role: overlay` image, exactly one of each per `per_role_cardinality`). Re-encode required; audio stream-copy passthrough. Distinct from `image_watermark` (pure-Rust/image-only). `availability: planned` — WITHDRAWN 2026-09-15, operation AND `short_form`: a real 1080p source at the advertised PT5M / 500 MB was killed just past the worker's 600 s encode cap, no output. Returns `feature_not_available` (422) at workflow-create; an already-accepted workflow is not cancelled and fails only if it exceeds that cap; the kill is ONE measured point and nothing measured says where the boundary is. `long_form` and `multi_overlay_stack` were already `planned`. Per ticket [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) + ADR-0013.
10779
10826
  - video_text_watermark: Render a text overlay onto a base video via FFmpeg's `drawtext` filter. Single-input — text and styling in options. Same `watermark_mode` (single/tiled), anchor + margin vocab as `text_watermark`. Re-encode required; audio stream-copy passthrough. `availability: planned` — WITHDRAWN 2026-09-15, operation AND `short_form`: a real 1080p source at the advertised PT5M was killed just past the worker's 600 s encode cap. Returns `feature_not_available` (422) at workflow-create. ⚠️ This entry previously read "until Lambda ships", which was wrong in a way that mattered: the worker SHIPPED and runs — it is the CEILING that cannot be served. Per ticket [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) + ADR-0013.
10780
- - split: Fan one input file into N outputs across GIF / PDF / audio / video MIME families. Single-input per-mime-group catalog (mirrors merge/convert): GIF uses `frame_range` (REQUIRED) + `output_format`; PDF uses `page_range` OR `page_groups` (mutually exclusive); audio + video use a `mode` discriminator (interval/count/cut_points) + numeric-seconds wire format + `precision` flag (fast/exact). 200-output hard cap per ADR-0009 §D5 with per-mode preflight math; output naming `output-001..output-200`. Long-form video routes to a separate `split-video-fargate` worker via `processing_class`. `availability: beta` for the `audio` and `video` mime_groups (workers live on staging — shape-stable + opt-in, MUST NOT 422); video activates BOTH classes (`video.processing_class.short_form: beta` AND `long_form: beta` — `split-video-fargate` deployed + wired on staging; it stays `beta` until a PRODUCTION `customer_path` run is recorded in `availability/prod-verification-log.yaml` per [`rcwvUKhI`](https://trello.com/c/rcwvUKhI)). The `image_gif` mime_group is `stable` and `document_pdf` is `beta` (2026-10-01). Per ticket [`vKI0CFDu`](https://trello.com/c/vKI0CFDu) + ADR-0014.
10827
+ - split: Fan one input file into N outputs across GIF / PDF / audio / video MIME families. Single-input per-mime-group catalog (mirrors merge/convert): GIF uses `frame_range` (REQUIRED) + `output_format`; PDF uses `page_range` OR `page_groups` (mutually exclusive); audio + video use a `mode` discriminator (interval/count/cut_points) + numeric-seconds wire format + `precision` flag (fast/exact). 200-output hard cap per ADR-0009 §D5 with per-mode preflight math; output naming `output-001..output-200`. Long-form video routes to a separate `split-video-fargate` worker via `processing_class`. `availability: beta` for the `audio` and `video` mime_groups (workers live on staging — shape-stable + opt-in, MUST NOT 422); video activates BOTH classes (`video.processing_class.short_form: beta` AND `long_form: beta` — `split-video-fargate` deployed + wired on staging; it stays `beta` until a PRODUCTION `customer_path` run is recorded in `availability/prod-verification-log.yaml` per [`rcwvUKhI`](https://trello.com/c/rcwvUKhI)). The operation, the `image_gif` mime_group and `document_pdf` are `stable` (prod-proven, owner decision 729, 2026-10-08); `audio` and `video` stay `beta` by their own tags. Per ticket [`vKI0CFDu`](https://trello.com/c/vKI0CFDu) + ADR-0014.
10781
10828
  - passthrough: Inert lossless source operation. A single-input source job whose SOLE operation is `passthrough` emits its source bytes UNCHANGED — no compression, no Lambda. The API self-completes the job at publish (terminal output = the upload `{bucket, key}` unchanged). Its purpose is to feed an uploaded file into a multi-input operation LOSSLESSLY: because `JobInputV2.source` is narrowed to exclude upload-direct, an upload that must enter a `merge` / `archive` / `image_watermark` op enters via a `passthrough` source job referenced downstream by `{type: job_output, from: <id>}` — preserving billing / DAG / lineage. Distinct from `operations: []` (which keeps its implicit-compress meaning on a single-input upload job); `passthrough` is the EXPLICIT lossless path via the "non-empty `operations[]` without `compress` = compression opt-out" rule. Media-agnostic; no options. `availability: beta` — activated (the inputs[]-narrowing + passthrough self-complete mechanism is deployed API-side); workflow-create accepts `passthrough` source jobs and MUST NOT return `feature_not_available`. **Never published to SNS** — deliberately absent from the AsyncAPI routing enums (API self-completes; no `ops-passthrough` queue). Per ticket [`4som89Uh`](https://trello.com/c/4som89Uh) + ADR-0004 (planned→beta flip).
10782
10829
 
10783
10830
  - transform: Geometric/orientation transform — v1 = rotate (0/90/180/270) + flip (none/horizontal/vertical/both), ADR-0026. Single-input; `produces: same_as_input` (geometry preserves format/container). Chainable (NOT sole_op); canonical single-job chain order is `transform → convert → compress → thumbnail` (geometry before encode/derive so downstream width/height/fit refer to the final frame). Media groups: image (still jpeg/png/webp + animated `image_gif`), video (mp4/webm), document (PDF page-rotate only — no flip); audio not supported. ALL groups `availability: planned` (epic `fhiWebI0`) — workflow-create returns `feature_not_available` (422) until per-media Lambdas ship. A no-op transform (`rotate: 0` + `flip: none`) is rejected as `invalid_options`. The public operation type is `transform`; the API resolves an internal per-media SNS routing sub-type (`transform_image` / `transform_video` / `transform_document`) — those sub-types are routing-only and are NOT part of this public enum. Per ADR-0026.
@@ -12149,15 +12196,22 @@ components:
12149
12196
  enum:
12150
12197
  - processed_base
12151
12198
  - original
12152
- default: processed_base
12153
12199
  description: |
12154
12200
  For **derived artifacts** (`thumbnail`, `split`): which canonical
12155
12201
  composition node this artifact branches from. Symbolic-only for
12156
12202
  v1 (no per-operation references — caller-visible op ids do not
12157
- exist at submit time).
12158
- - `processed_base` (default): the fully-processed base —
12159
- post-everything, so the artifact carries the watermark + encode.
12160
- - `original`: the untouched source file.
12203
+ exist at submit time). **The default depends on the operation**
12204
+ (owner decision 720, 2026-10-08): `thumbnail` defaults to
12205
+ `original`; `split` defaults to `processed_base`.
12206
+ - `processed_base`: the fully-processed base — post-everything,
12207
+ so the artifact carries the watermark + encode, and it runs
12208
+ after the chain.
12209
+ - `original`: the untouched source file. The artifact runs
12210
+ ALONGSIDE the chain (it does not wait for it). Each operation is
12211
+ judged at create against its own ceilings on its own input: a
12212
+ `base: original` thumbnail against the thumbnail ceilings on the
12213
+ original upload. The job still completes when every operation
12214
+ finishes and fails if any fails.
12161
12215
  Ignored for chain operations (compress, convert, watermark, merge,
12162
12216
  audio). The resolved branch point is echoed as
12163
12217
  `CompositionPlanOperation.derived_from` (a `node_id`) in
@@ -13110,6 +13164,14 @@ components:
13110
13164
  could not extract enough metadata to make a routing
13111
13165
  decision. Caller may proceed at their own risk; the
13112
13166
  workflow-create routing fallback applies.
13167
+ - `password_protected`: the file is encrypted (a PDF with a
13168
+ password), so it cannot be read. Caller removes the password
13169
+ and uploads again. Distinct from `corrupt`, which says the file
13170
+ is damaged (e2e prod proof, 2026-10-10).
13171
+ **Rollout order (strict readers exist):** the API and the SDKs
13172
+ accept this value BEFORE the prober emits it — a reader that maps
13173
+ the enum strictly (api's ProbeStatus, the generated Python SDK)
13174
+ fails to decode an unknown value despite `x-enum-openness: open`.
13113
13175
  # OPEN. `ok` is the only proceed value and everything else is a reason not to,
13114
13176
  # so a consumer branches on `ok` rather than enumerating failures. A new
13115
13177
  # failure reason is additive and an old consumer treats it correctly as
@@ -13120,6 +13182,7 @@ components:
13120
13182
  - corrupt
13121
13183
  - unsupported_codec
13122
13184
  - missing_metadata
13185
+ - password_protected
13123
13186
 
13124
13187
  UploadProbeProcessingClass:
13125
13188
  type: string
@@ -14468,7 +14531,9 @@ components:
14468
14531
  `decode_failed` (input unreadable/corrupt),
14469
14532
  `output_too_large` (output exceeded the size limit; NOT for a
14470
14533
  same-format `compress`, which returns the original with
14471
- `already_optimal` instead — owner decision 645(4)),
14534
+ `already_optimal` instead — owner decision 645(4) — but only when
14535
+ the original satisfies EVERY option the request set; see
14536
+ `OperationMetrics.already_optimal` in the AsyncAPI contract),
14472
14537
  `missing_source` (source not found — fail-fast),
14473
14538
  `invalid_key` (storage key invalid),
14474
14539
  `processing_failed` (non-specific processing failure),
@@ -14574,7 +14639,11 @@ components:
14574
14639
  resolved `same_format` route (`output_format` original, absent, or
14575
14640
  equal to the input's format; not the format-change facade, where
14576
14641
  the original is not what was asked for). A same-format compress
14577
- that cannot shrink the file returns this, never `output_too_large`.
14642
+ that cannot shrink the file returns this, not `output_too_large` —
14643
+ but ONLY when the original satisfies EVERY option the request set
14644
+ (e.g. not when it asks for a trim, a different channel count, sample
14645
+ rate or bitrate, or new image dimensions); otherwise the failure is
14646
+ `output_too_large` (CvaZWNzO).
14578
14647
  ⚠️ **Today this holds for SHORT-FORM compress only.** Long-form
14579
14648
  compress still fails `output_too_large` until lambdas ships its
14580
14649
  long-form copy path; do not promise "already optimised" or "no
@@ -16890,6 +16959,24 @@ components:
16890
16959
  by `make check-per-value-availability` (CI guard, ticket
16891
16960
  [I17 `0gwtwCav`](https://trello.com/c/0gwtwCav)). Runtime
16892
16961
  emission lands with I3.
16962
+ per_value_constraints:
16963
+ type: object
16964
+ description: |
16965
+ Per-enum-value limits, only meaningful when `type: enum`. Keys
16966
+ MUST be a subset of `values[]`; each entry holds limits that
16967
+ apply only when the request selects that value. Today one
16968
+ constraint: `max_kept_duration` (ISO 8601) — the input's
16969
+ duration minus `trim_start` and `trim_end` may not exceed it;
16970
+ refused at create with `GIF_TOO_LONG` for `convert` video
16971
+ `output_format: gif` (card `zfFnNYRY`). See FORMAT.md
16972
+ §`per_value_constraints`.
16973
+ additionalProperties:
16974
+ type: object
16975
+ additionalProperties: false
16976
+ properties:
16977
+ max_kept_duration:
16978
+ type: string
16979
+ format: duration
16893
16980
  per_value_depends_on:
16894
16981
  type: object
16895
16982
  description: |
@@ -643,7 +643,7 @@
643
643
  "image",
644
644
  "video"
645
645
  ],
646
- "availability": "beta",
646
+ "availability": "stable",
647
647
  "input": {
648
648
  "model": "single"
649
649
  },
@@ -734,36 +734,6 @@
734
734
  "video"
735
735
  ],
736
736
  "availability": "stable",
737
- "excludes": [
738
- {
739
- "availability": "stable",
740
- "constraint_id": "thumbnail.requires_chain_predecessor",
741
- "message": "thumbnail must follow a compress or convert operation.",
742
- "when": {
743
- "all": [
744
- {
745
- "not": {
746
- "any": [
747
- {
748
- "opSelected": "compress"
749
- },
750
- {
751
- "opSelected": "convert"
752
- }
753
- ]
754
- }
755
- },
756
- {
757
- "not": {
758
- "equals": "document",
759
- "field": "input_mime_group"
760
- }
761
- }
762
- ]
763
- },
764
- "wire_code": "INVALID_OPERATION_ORDER"
765
- }
766
- ],
767
737
  "input": {
768
738
  "model": "single"
769
739
  },
@@ -898,5 +868,5 @@
898
868
  "isAnimated": "maybe"
899
869
  }
900
870
  },
901
- "schema_version": "2.225.0"
871
+ "schema_version": "2.229.0"
902
872
  }
@@ -1545,6 +1545,49 @@ operation:
1545
1545
  # rather than the generic unsupported-input reject. EPUB/office/ODF compress and
1546
1546
  # PDF thumbnail/split/convert/transform are UNTOUCHED (Ghostscript's other uses,
1547
1547
  # incl. PDF thumbnails, migrate to Poppler on the lambdas side — no contract change).
1548
+ #
1549
+ # RE-DECLARED 2026-10-08 (owner decision 729 item 1; card U5EPPRPc) on a
1550
+ # permissive stack: qpdf + pikepdf + Pillow (spike: vm_shared/compression_project/
1551
+ # 10_Now/2026-10-08-pdf-compress-spike.md). Re-encodes embedded images (JPEG at
1552
+ # `quality`, longest side capped at `max_image_dimension`) plus a lossless
1553
+ # structural pass, behind a never-larger guard (a result that is not smaller
1554
+ # returns the input, `already_optimal`). Spike: 65-90% on image-heavy and
1555
+ # scanned PDFs at SSIM ~0.997, 1-15% on text-only. `planned` until lambdas builds
1556
+ # the worker and api routes it (co-land: contracts -> lambdas -> api -> e2e).
1557
+ # ONLY the options the worker will read are declared.
1558
+ document_pdf:
1559
+ # planned -> beta 2026-10-10 (owner decision 744): worker live on prod
1560
+ # (gisl-prod-euw1-compression-document = documents/v2.1.0, git-a396b6a);
1561
+ # staging proof in availability/staging-verification-log.yaml. A signed PDF
1562
+ # comes back unchanged (already_optimal); an encrypted PDF fails invalid_format.
1563
+ availability: beta
1564
+ mimes:
1565
+ - application/pdf
1566
+ # Input ceiling (lambdas, 2026-10-09: the worker CLI takes it as a REQUIRED
1567
+ # --max-input-bytes and holds no number of its own). 200 MiB, the value every
1568
+ # other compress document group declares. Not measured on the PDF worker
1569
+ # (not built yet), so `unproven` until lambdas' corner run.
1570
+ ceiling_basis: # 607(d): proven at the declared value, or not yet (FORMAT.md §ceiling_basis)
1571
+ max_input_size_bytes: unproven
1572
+ max_input_size_bytes: 209715200 # 200 MiB
1573
+ options:
1574
+ quality:
1575
+ type: integer
1576
+ min: 1
1577
+ max: 100
1578
+ default: 70
1579
+ description: >-
1580
+ JPEG quality for the images inside the PDF (1 = smallest, 100 = best).
1581
+ Text and vector content are not re-encoded.
1582
+ max_image_dimension:
1583
+ type: integer
1584
+ min: 64
1585
+ max: 10000
1586
+ default: 1600
1587
+ description: >-
1588
+ Largest width or height, in pixels, for each image inside the PDF; larger
1589
+ images are scaled down, keeping their shape. Smaller images are left as
1590
+ they are.
1548
1591
 
1549
1592
  document_office:
1550
1593
  mimes:
@@ -380,6 +380,16 @@ operation:
380
380
  type: enum
381
381
  values: [mp4, webm, ogg, gif, mov, mkv]
382
382
  required: true
383
+ # GIF LENGTH CAP (hub decision 715 applying owner decision 698(6), card
384
+ # zfFnNYRY): a GIF's KEPT window (input duration minus trim_start and
385
+ # trim_end) may not exceed PT10S — at the 12 fps / 480 px defaults that
386
+ # is ~7 MB (lambdas: ~0.71 MB/s), inside Slack/Discord's ~8 MB. Refused at
387
+ # create with GIF_TOO_LONG; steer: trim to 10 s, or choose mp4/webm
388
+ # (animated WebP from video is not offered: card d7KfRjvw). FORMAT.md
389
+ # §per_value_constraints. The worker backstops the same value.
390
+ per_value_constraints:
391
+ gif:
392
+ max_kept_duration: "PT10S"
383
393
  # The video codec is DETERMINED by the target container, NOT a caller
384
394
  # choice: the convert-video worker hard-wires it per container
385
395
  # (mp4 -> H.264/libx264, webm -> VP9, ogg -> Theora, gif -> palette,
@@ -2,7 +2,7 @@ schema_version: "2.0.0"
2
2
 
3
3
  operation:
4
4
  type: split
5
- availability: beta
5
+ availability: stable # 2026-10-08 (decision 729): the OPERATION is stable so a stable group can resolve stable; every other group pins its own availability below
6
6
  description: |
7
7
  Fan one input file into N outputs across GIF, PDF, audio, and
8
8
  video MIME families. Single-input — one input file per job, fanned
@@ -85,8 +85,9 @@ operation:
85
85
  `availability: beta` for the `audio` and `video` mime_groups
86
86
  (shape-stable + opt-in, MUST NOT 422). Video activates **both
87
87
  classes**: `video.processing_class.short_form` AND `long_form` are
88
- `beta`. The `document_pdf` mime_group is `beta` too (2026-10-01), and
89
- `image_gif` is `stable` (GIF to frames, 2026-06-21). A value or class
88
+ `beta`. The `document_pdf` mime_group is `stable` (owner decision 729,
89
+ prod-proven 2026-10-08), and `image_gif` is `stable` (GIF to frames,
90
+ prod-proven 2026-10-08). A value or class
90
91
  still tagged `planned` (e.g. `precision: exact`) is refused with
91
92
  `feature_not_available` (422).
92
93
  default: false
@@ -139,7 +140,7 @@ operation:
139
140
 
140
141
  # PDF base — page-split via qpdf or pdftk equivalent.
141
142
  document_pdf:
142
- availability: beta # jGTLrpzK, 2026-10-01: staging worker-direct proof, both modes
143
+ availability: stable # owner decision 729 item 2: PROD proof of both modes (e2e, 2026-10-08); beta since 2026-10-01 (jGTLrpzK)
143
144
  mimes:
144
145
  - application/pdf
145
146
  # Byte bound (lambdas, 2026-10-01): the worker downloads the PDF to /tmp
@@ -5,9 +5,9 @@ operation:
5
5
  description: >-
6
6
  Resize an image to specific dimensions, or extract a preview frame/page from a video
7
7
  or document. For images this is a full resizer (1-16384px), not just small previews.
8
- An image or video thumbnail must follow a compress or convert in the same job; a
9
- document thumbnail may stand alone. Image types that compress does not accept (BMP,
10
- HEIC) therefore need a convert first.
8
+ A thumbnail can be the only operation on an image, video or document upload. In a job with other operations
9
+ it is made from the ORIGINAL file by default, alongside them; set `base:
10
+ processed_base` to make it from the processed result instead.
11
11
  default: false
12
12
  input_model: single
13
13
 
@@ -33,6 +33,17 @@ operation:
33
33
  # is NOT the real limit — e.g. 6000x6000 (36MP) is rejected though each axis
34
34
  # is < 16384; 6000x2000 (12MP) is fine. The worker enforces this regardless.
35
35
  max_output_pixels: 16000000
36
+ # INPUT CEILINGS (owner decision 720, 2026-10-08): a thumbnail may now be the
37
+ # first operation, so it is judged on the ORIGINAL upload at create. Values
38
+ # mirror compress.image (370 MB / 90 MP, lambdas' 607(d) corner run on the
39
+ # COMPRESSION worker) — lambdas states they fit thumbnail-image's /tmp and its
40
+ # 100 MP decode cap, with no worker change. Not measured on THIS worker, so
41
+ # `unproven`.
42
+ ceiling_basis: # 607(d): proven at the declared value, or not yet (FORMAT.md §ceiling_basis)
43
+ max_input_size_bytes: unproven
44
+ max_input_pixels: unproven
45
+ max_input_size_bytes: 370000000
46
+ max_input_pixels: 90000000
36
47
  options:
37
48
  # IMAGE input is a full resizer (Lanczos): width/height accept the
38
49
  # worker's real 1-16384px range (area-capped above) — this op is the
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@giveitsmaller/contracts",
3
- "version": "0.89.0",
4
- "description": "Generated contract types for GISL (Give It Smaller). Generated from compression_contracts spec v2.225.0.",
5
- "gislContractsSpec": "v2.225.0",
3
+ "version": "0.91.0",
4
+ "description": "Generated contract types for GISL (Give It Smaller). Generated from compression_contracts spec v2.229.0.",
5
+ "gislContractsSpec": "v2.229.0",
6
6
  "license": "Apache-2.0",
7
7
  "homepage": "https://docs.giveitsmaller.com",
8
8
  "bugs": {