@giveitsmaller/contracts 0.83.0 → 0.85.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 (563) 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 +29 -1
  5. package/asyncapi/README.md +1 -1
  6. package/asyncapi/events.yaml +54 -10
  7. package/availability/availability.json +31 -31
  8. package/code-builder/code-builder-metadata.json +29 -29
  9. package/dist/asyncapi/AnonymousSchema_286.d.ts +4 -0
  10. package/dist/asyncapi/AnonymousSchema_286.js +5 -0
  11. package/dist/asyncapi/OperationMetrics.d.ts +2 -0
  12. package/dist/asyncapi/index.d.ts +1 -0
  13. package/dist/asyncapi/index.js +1 -0
  14. package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
  15. package/dist/openapi/models/AccountLimitEntry.js +1 -1
  16. package/dist/openapi/models/AccountLimits.d.ts +1 -1
  17. package/dist/openapi/models/AccountLimits.js +1 -1
  18. package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
  19. package/dist/openapi/models/AccountLimitsLimits.js +1 -1
  20. package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
  21. package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
  22. package/dist/openapi/models/AnonymousLimitExceededResponse.d.ts +9 -1
  23. package/dist/openapi/models/AnonymousLimitExceededResponse.js +1 -1
  24. package/dist/openapi/models/AnonymousOperationNotAllowedResponse.d.ts +1 -1
  25. package/dist/openapi/models/AnonymousOperationNotAllowedResponse.js +1 -1
  26. package/dist/openapi/models/AnonymousQuotaExhaustedResponse.d.ts +1 -1
  27. package/dist/openapi/models/AnonymousQuotaExhaustedResponse.js +1 -1
  28. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  29. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  30. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  31. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  32. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  33. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  34. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  35. package/dist/openapi/models/AuthErrorType.js +1 -1
  36. package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
  37. package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
  38. package/dist/openapi/models/AuthenticatedIdentity.d.ts +1 -1
  39. package/dist/openapi/models/AuthenticatedIdentity.js +1 -1
  40. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  41. package/dist/openapi/models/AvailabilityValue.js +1 -1
  42. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  43. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  44. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  45. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  46. package/dist/openapi/models/BillingCheckoutRequest.d.ts +1 -1
  47. package/dist/openapi/models/BillingCheckoutRequest.js +1 -1
  48. package/dist/openapi/models/BillingCheckoutSession.d.ts +1 -1
  49. package/dist/openapi/models/BillingCheckoutSession.js +1 -1
  50. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +1 -1
  51. package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +1 -1
  52. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  53. package/dist/openapi/models/CallbackEventType.js +1 -1
  54. package/dist/openapi/models/CancelAccountDeletion200Response.d.ts +1 -1
  55. package/dist/openapi/models/CancelAccountDeletion200Response.js +1 -1
  56. package/dist/openapi/models/CancelAccountDeletion200ResponseData.d.ts +1 -1
  57. package/dist/openapi/models/CancelAccountDeletion200ResponseData.js +1 -1
  58. package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
  59. package/dist/openapi/models/CapabilityCondition.js +1 -1
  60. package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
  61. package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
  62. package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
  63. package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
  64. package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
  65. package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
  66. package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
  67. package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
  68. package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
  69. package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
  70. package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
  71. package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
  72. package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
  73. package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
  74. package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
  75. package/dist/openapi/models/CapabilityConstraint.js +1 -1
  76. package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
  77. package/dist/openapi/models/CapabilityInputSpec.js +1 -1
  78. package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
  79. package/dist/openapi/models/CapabilityProduces.js +1 -1
  80. package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
  81. package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
  82. package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
  83. package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
  84. package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
  85. package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
  86. package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
  87. package/dist/openapi/models/ChangePasswordRequest.js +1 -1
  88. package/dist/openapi/models/CheckoutSessionStatusResponse.d.ts +1 -1
  89. package/dist/openapi/models/CheckoutSessionStatusResponse.js +1 -1
  90. package/dist/openapi/models/CheckoutSessionStatusResponseData.d.ts +1 -1
  91. package/dist/openapi/models/CheckoutSessionStatusResponseData.js +1 -1
  92. package/dist/openapi/models/CodegenSource.d.ts +1 -1
  93. package/dist/openapi/models/CodegenSource.js +1 -1
  94. package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
  95. package/dist/openapi/models/CodegenSourceInput.js +1 -1
  96. package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
  97. package/dist/openapi/models/CodegenSourceJob.js +1 -1
  98. package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
  99. package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
  100. package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
  101. package/dist/openapi/models/CodegenSourceOperation.js +1 -1
  102. package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
  103. package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
  104. package/dist/openapi/models/CompositionPlan.d.ts +1 -1
  105. package/dist/openapi/models/CompositionPlan.js +1 -1
  106. package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
  107. package/dist/openapi/models/CompositionPlanJob.js +1 -1
  108. package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
  109. package/dist/openapi/models/CompositionPlanOperation.js +1 -1
  110. package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
  111. package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
  112. package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
  113. package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
  114. package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
  115. package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
  116. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  117. package/dist/openapi/models/ConnectionSource.js +1 -1
  118. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  119. package/dist/openapi/models/ContactRequest.js +1 -1
  120. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  121. package/dist/openapi/models/ContactSubject.js +1 -1
  122. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  123. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  124. package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
  125. package/dist/openapi/models/CreateApiKey201Response.js +1 -1
  126. package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
  127. package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
  128. package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
  129. package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
  130. package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +1 -1
  131. package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +1 -1
  132. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  133. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  134. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  135. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  136. package/dist/openapi/models/CreateWorkflow401Response.d.ts +1 -1
  137. package/dist/openapi/models/CreateWorkflow401Response.js +1 -1
  138. package/dist/openapi/models/CreateWorkflow403Response.d.ts +1 -1
  139. package/dist/openapi/models/CreateWorkflow403Response.js +1 -1
  140. package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
  141. package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
  142. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  143. package/dist/openapi/models/CreditTransaction.js +1 -1
  144. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  145. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  146. package/dist/openapi/models/CreditsBalanceResponse.d.ts +2 -2
  147. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  148. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  149. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  150. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  151. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  152. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  153. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  154. package/dist/openapi/models/Delivery.d.ts +1 -1
  155. package/dist/openapi/models/Delivery.js +1 -1
  156. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  157. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  158. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  159. package/dist/openapi/models/DeliveryPlan.js +1 -1
  160. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  161. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  162. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  163. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  164. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  165. package/dist/openapi/models/DeliverySelection.js +1 -1
  166. package/dist/openapi/models/DownloadBundle.d.ts +1 -1
  167. package/dist/openapi/models/DownloadBundle.js +1 -1
  168. package/dist/openapi/models/DroppedOption.d.ts +22 -2
  169. package/dist/openapi/models/DroppedOption.js +3 -1
  170. package/dist/openapi/models/EmailNotify.d.ts +1 -1
  171. package/dist/openapi/models/EmailNotify.js +1 -1
  172. package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
  173. package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
  174. package/dist/openapi/models/EndpointProjection.d.ts +1 -1
  175. package/dist/openapi/models/EndpointProjection.js +1 -1
  176. package/dist/openapi/models/EndpointProjectionServersInner.d.ts +1 -1
  177. package/dist/openapi/models/EndpointProjectionServersInner.js +1 -1
  178. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  179. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  180. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  181. package/dist/openapi/models/EstimateQuality.js +1 -1
  182. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  183. package/dist/openapi/models/EstimateRange.js +1 -1
  184. package/dist/openapi/models/ExportAccountData200Response.d.ts +1 -1
  185. package/dist/openapi/models/ExportAccountData200Response.js +1 -1
  186. package/dist/openapi/models/ExportAccountData200ResponseData.d.ts +1 -1
  187. package/dist/openapi/models/ExportAccountData200ResponseData.js +1 -1
  188. package/dist/openapi/models/ExportAccountData200ResponseDataBilling.d.ts +1 -1
  189. package/dist/openapi/models/ExportAccountData200ResponseDataBilling.js +1 -1
  190. package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.d.ts +1 -1
  191. package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.js +1 -1
  192. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  193. package/dist/openapi/models/ExternalDestination.js +1 -1
  194. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  195. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  196. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  197. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  198. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  199. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  200. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  201. package/dist/openapi/models/ExternalImportToken.js +1 -1
  202. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  203. package/dist/openapi/models/ExternalSource.js +1 -1
  204. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  205. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  206. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  207. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  208. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  209. package/dist/openapi/models/FeatureViolation.js +1 -1
  210. package/dist/openapi/models/GetProfile200Response.d.ts +1 -1
  211. package/dist/openapi/models/GetProfile200Response.js +1 -1
  212. package/dist/openapi/models/GetProfile200ResponseData.d.ts +1 -1
  213. package/dist/openapi/models/GetProfile200ResponseData.js +1 -1
  214. package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
  215. package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
  216. package/dist/openapi/models/JobDefinition.d.ts +1 -1
  217. package/dist/openapi/models/JobDefinition.js +1 -1
  218. package/dist/openapi/models/JobDownload.d.ts +1 -1
  219. package/dist/openapi/models/JobDownload.js +1 -1
  220. package/dist/openapi/models/JobInputV2.d.ts +1 -1
  221. package/dist/openapi/models/JobInputV2.js +1 -1
  222. package/dist/openapi/models/JobMediaClass.d.ts +1 -1
  223. package/dist/openapi/models/JobMediaClass.js +1 -1
  224. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  225. package/dist/openapi/models/JobOutputSource.js +1 -1
  226. package/dist/openapi/models/JobResponse.d.ts +41 -1
  227. package/dist/openapi/models/JobResponse.js +7 -1
  228. package/dist/openapi/models/JobStatus.d.ts +1 -1
  229. package/dist/openapi/models/JobStatus.js +1 -1
  230. package/dist/openapi/models/JobType.d.ts +1 -1
  231. package/dist/openapi/models/JobType.js +1 -1
  232. package/dist/openapi/models/LivenessResponse.d.ts +13 -1
  233. package/dist/openapi/models/LivenessResponse.js +3 -1
  234. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  235. package/dist/openapi/models/LoginUser200Response.js +1 -1
  236. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  237. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  238. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  239. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  240. package/dist/openapi/models/LoginUser401Response.d.ts +1 -1
  241. package/dist/openapi/models/LoginUser401Response.js +1 -1
  242. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  243. package/dist/openapi/models/LoginUserRequest.js +1 -1
  244. package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
  245. package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
  246. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
  247. package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
  248. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  249. package/dist/openapi/models/MetadataResponse.js +1 -1
  250. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  251. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  252. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  253. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  254. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  255. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  256. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  257. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  258. package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
  259. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  260. package/dist/openapi/models/MultiInputSource.d.ts +1 -1
  261. package/dist/openapi/models/MultiInputSource.js +1 -1
  262. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  263. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  264. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  265. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  266. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  267. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  268. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  269. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  270. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  271. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  272. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  273. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  274. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  275. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  276. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  277. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  278. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  279. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  280. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  281. package/dist/openapi/models/MultipartPartListing.js +1 -1
  282. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  283. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  284. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  285. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  286. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  287. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  288. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  289. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  290. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  291. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  292. package/dist/openapi/models/NotifyConfig.d.ts +1 -1
  293. package/dist/openapi/models/NotifyConfig.js +1 -1
  294. package/dist/openapi/models/OperationCapability.d.ts +1 -1
  295. package/dist/openapi/models/OperationCapability.js +1 -1
  296. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  297. package/dist/openapi/models/OperationDefinition.js +1 -1
  298. package/dist/openapi/models/OperationDownload.d.ts +1 -1
  299. package/dist/openapi/models/OperationDownload.js +1 -1
  300. package/dist/openapi/models/OperationInputModel.d.ts +1 -1
  301. package/dist/openapi/models/OperationInputModel.js +1 -1
  302. package/dist/openapi/models/OperationMessageParamsValue.d.ts +1 -1
  303. package/dist/openapi/models/OperationMessageParamsValue.js +1 -1
  304. package/dist/openapi/models/OperationResponse.d.ts +4 -2
  305. package/dist/openapi/models/OperationResponse.js +1 -1
  306. package/dist/openapi/models/OperationResult.d.ts +1 -1
  307. package/dist/openapi/models/OperationResult.js +1 -1
  308. package/dist/openapi/models/OperationResultMetadata.d.ts +37 -1
  309. package/dist/openapi/models/OperationResultMetadata.js +9 -1
  310. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  311. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  312. package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
  313. package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
  314. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  315. package/dist/openapi/models/OperationStatus.js +1 -1
  316. package/dist/openapi/models/OperationType.d.ts +1 -1
  317. package/dist/openapi/models/OperationType.js +1 -1
  318. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  319. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  320. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
  321. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
  322. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
  323. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
  324. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
  325. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
  326. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
  327. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
  328. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +1 -1
  329. package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +1 -1
  330. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  331. package/dist/openapi/models/OptionSchema.js +1 -1
  332. package/dist/openapi/models/OutputProperties.d.ts +1 -1
  333. package/dist/openapi/models/OutputProperties.js +1 -1
  334. package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
  335. package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
  336. package/dist/openapi/models/PerClassAvailabilityEntry.d.ts +1 -1
  337. package/dist/openapi/models/PerClassAvailabilityEntry.js +1 -1
  338. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
  339. package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
  340. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  341. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  342. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  343. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  344. package/dist/openapi/models/ProbePendingResponse.d.ts +7 -2
  345. package/dist/openapi/models/ProbePendingResponse.js +1 -1
  346. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  347. package/dist/openapi/models/ProcessingClass.js +1 -1
  348. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  349. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  350. package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
  351. package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
  352. package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
  353. package/dist/openapi/models/ProcessingClassEntry.js +1 -1
  354. package/dist/openapi/models/ProcessingClassEntryInputUniformity.d.ts +1 -1
  355. package/dist/openapi/models/ProcessingClassEntryInputUniformity.js +1 -1
  356. package/dist/openapi/models/ProcessingClassEntryResolutionBands.d.ts +1 -1
  357. package/dist/openapi/models/ProcessingClassEntryResolutionBands.js +1 -1
  358. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +2 -2
  359. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  360. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  361. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  362. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  363. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  364. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  365. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  366. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  367. package/dist/openapi/models/ProcessingPlan.js +1 -1
  368. package/dist/openapi/models/ProcessingPlanJob.d.ts +11 -8
  369. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  370. package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
  371. package/dist/openapi/models/ReEncodeDecision.js +1 -1
  372. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  373. package/dist/openapi/models/ReadinessResponse.js +1 -1
  374. package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
  375. package/dist/openapi/models/RegisterUser422Response.js +1 -1
  376. package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
  377. package/dist/openapi/models/RegisterUserRequest.js +1 -1
  378. package/dist/openapi/models/RequestAccountDeletion200Response.d.ts +1 -1
  379. package/dist/openapi/models/RequestAccountDeletion200Response.js +1 -1
  380. package/dist/openapi/models/RequestAccountDeletion200ResponseData.d.ts +1 -1
  381. package/dist/openapi/models/RequestAccountDeletion200ResponseData.js +1 -1
  382. package/dist/openapi/models/RequestAccountDeletionRequest.d.ts +1 -1
  383. package/dist/openapi/models/RequestAccountDeletionRequest.js +1 -1
  384. package/dist/openapi/models/ResendVerificationEmailRequest.d.ts +1 -1
  385. package/dist/openapi/models/ResendVerificationEmailRequest.js +1 -1
  386. package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
  387. package/dist/openapi/models/ResetPasswordRequest.js +1 -1
  388. package/dist/openapi/models/ResolutionBand.d.ts +1 -1
  389. package/dist/openapi/models/ResolutionBand.js +1 -1
  390. package/dist/openapi/models/ResolutionBandCeiling.d.ts +1 -1
  391. package/dist/openapi/models/ResolutionBandCeiling.js +1 -1
  392. package/dist/openapi/models/ResolutionBandCeilingConstraints.d.ts +1 -1
  393. package/dist/openapi/models/ResolutionBandCeilingConstraints.js +1 -1
  394. package/dist/openapi/models/ResolutionBandCeilingDerivation.d.ts +1 -1
  395. package/dist/openapi/models/ResolutionBandCeilingDerivation.js +1 -1
  396. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  397. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  398. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  399. package/dist/openapi/models/RetryResponse.js +1 -1
  400. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  401. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  402. package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
  403. package/dist/openapi/models/SseCompletionBase.js +1 -1
  404. package/dist/openapi/models/SseConnectionLimitResponse.d.ts +1 -1
  405. package/dist/openapi/models/SseConnectionLimitResponse.js +1 -1
  406. package/dist/openapi/models/SseEventType.d.ts +1 -1
  407. package/dist/openapi/models/SseEventType.js +1 -1
  408. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  409. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  410. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  411. package/dist/openapi/models/SseJobFailedData.js +1 -1
  412. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
  413. package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
  414. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
  415. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
  416. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
  417. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
  418. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
  419. package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
  420. package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
  421. package/dist/openapi/models/SseOperationCompletedData.js +1 -1
  422. package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
  423. package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
  424. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  425. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  426. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  427. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  428. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
  429. package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
  430. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  431. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  432. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  433. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  434. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  435. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  436. package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
  437. package/dist/openapi/models/UpdateProfile200Response.js +1 -1
  438. package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
  439. package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
  440. package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
  441. package/dist/openapi/models/UpdateProfile422Response.js +1 -1
  442. package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
  443. package/dist/openapi/models/UpdateProfileRequest.js +1 -1
  444. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  445. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  446. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  447. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  448. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  449. package/dist/openapi/models/UploadFile403Response.js +1 -1
  450. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  451. package/dist/openapi/models/UploadFile422Response.js +1 -1
  452. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  453. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  454. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  455. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  456. package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
  457. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  458. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  459. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  460. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
  461. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
  462. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  463. package/dist/openapi/models/UploadResponse.js +1 -1
  464. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  465. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  466. package/dist/openapi/models/UploadSource.d.ts +1 -1
  467. package/dist/openapi/models/UploadSource.js +1 -1
  468. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  469. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  470. package/dist/openapi/models/UploadThresholds.d.ts +4 -3
  471. package/dist/openapi/models/UploadThresholds.js +1 -1
  472. package/dist/openapi/models/UserTier.d.ts +1 -1
  473. package/dist/openapi/models/UserTier.js +1 -1
  474. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  475. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  476. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  477. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  478. package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
  479. package/dist/openapi/models/VerifyEmailRequest.js +1 -1
  480. package/dist/openapi/models/WarningType.d.ts +1 -1
  481. package/dist/openapi/models/WarningType.js +1 -1
  482. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  483. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  484. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  485. package/dist/openapi/models/WebhookPayload.js +1 -1
  486. package/dist/openapi/models/WorkflowArchiveResponse.d.ts +1 -1
  487. package/dist/openapi/models/WorkflowArchiveResponse.js +1 -1
  488. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.d.ts +1 -1
  489. package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.js +1 -1
  490. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  491. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  492. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  493. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  494. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  495. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  496. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  497. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  498. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  499. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  500. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  501. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  502. package/dist/openapi/models/WorkflowCreditSummary.d.ts +1 -1
  503. package/dist/openapi/models/WorkflowCreditSummary.js +1 -1
  504. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  505. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  506. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  507. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  508. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  509. package/dist/openapi/models/WorkflowEdge.js +1 -1
  510. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  511. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  512. package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
  513. package/dist/openapi/models/WorkflowListResponse.js +1 -1
  514. package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
  515. package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
  516. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  517. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  518. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  519. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  520. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  521. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  522. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  523. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  524. package/dist/openapi/models/WorkflowRestoreResponse.d.ts +1 -1
  525. package/dist/openapi/models/WorkflowRestoreResponse.js +1 -1
  526. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.d.ts +1 -1
  527. package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.js +1 -1
  528. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  529. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  530. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  531. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  532. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  533. package/dist/openapi/models/WorkflowSource.js +1 -1
  534. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  535. package/dist/openapi/models/WorkflowStatus.js +1 -1
  536. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  537. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  538. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  539. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  540. package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
  541. package/dist/openapi/models/WorkflowSummary.js +1 -1
  542. package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
  543. package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
  544. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  545. package/dist/openapi/models/WorkflowWarning.js +1 -1
  546. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  547. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  548. package/dist/openapi/runtime.d.ts +1 -1
  549. package/dist/openapi/runtime.js +1 -1
  550. package/openapi/api.yaml +269 -76
  551. package/operation-capabilities/operation-capabilities.json +1 -2
  552. package/operations/schemas/audio_overlay.yaml +4 -4
  553. package/operations/schemas/audio_watermark.yaml +4 -4
  554. package/operations/schemas/compress.yaml +18 -13
  555. package/operations/schemas/convert.yaml +2 -2
  556. package/operations/schemas/custom_luma.yaml +2 -2
  557. package/operations/schemas/split.yaml +2 -2
  558. package/operations/schemas/thumbnail.yaml +1 -1
  559. package/operations/schemas/transform.yaml +2 -2
  560. package/operations/schemas/video_text_watermark.yaml +2 -2
  561. package/operations/schemas/video_watermark.yaml +2 -2
  562. package/package.json +6 -4
  563. package/pricing-policy.yaml +82 -0
@@ -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.218.0
7
+ * The version of the OpenAPI document: 2.220.0
8
8
  *
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -2,7 +2,7 @@
2
2
  * GISL Compression API
3
3
  * REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (per-tier private caching with ETag revalidation per ADR-0002 + I3), health probes return flat objects, and `POST /api/contact` returns 204 with no body. **Availability metadata.** This spec uses the `x-availability` vendor extension as **decorative documentation only**. Per [ADR-0001](../docs/decisions/0001-contract-first-availability.md) §1.5, the runtime endpoint `GET /api/operations/schema` (ticket I3) is the authoritative source; the sidecar `availability.json` (ticket I3b) is the authoritative companion (generated, never hand-edited; CI cross-checks runtime ⇄ sidecar). SDKs MUST NOT depend on `x-availability` reaching generated code — code-generators that surface vendor extensions may emit it as documentation, but consumers read availability from the runtime endpoint, not from the generated bindings. The 5-value vocabulary (`stable | beta | experimental | planned | deprecated`) is defined in the `AvailabilityValue` schema. See `schemas/FORMAT.md` §Availability Taxonomy for the operational rules (parser obligation: absent = stable; per-enum-value granularity is the `per_value_availability` primitive landed via ticket I17). **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.218.0
5
+ * The version of the OpenAPI document: 2.220.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.218.0
7
+ * The version of the OpenAPI document: 2.220.0
8
8
  *
9
9
  *
10
10
  * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
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.218.0
106
+ version: 2.220.0
107
107
  contact:
108
108
  name: API Support
109
109
 
@@ -1472,9 +1472,20 @@ paths:
1472
1472
  immutable ledger transaction is written in the same DB
1473
1473
  transaction as the workflow row; the response's
1474
1474
  `processing_plan` reflects the same estimate the reservation
1475
- was sized against. Refunds (e.g. on terminal failure that the
1476
- server policy refunds) are emitted as separate ledger rows
1477
- referencing the reservation via `reference_id`. The
1475
+ was sized against. **Callers pay only for successful results,
1476
+ per job** (owner decisions 610(4) and 635; the policy is data in
1477
+ `schemas/pricing-policy.yaml`). Each job that completes is charged;
1478
+ a job that fails after its retries is refunded, as is cancelled
1479
+ work (a workflow paused for credits has its reservation released at
1480
+ the pause and reserved again on resume), so a `partially_failed`
1481
+ workflow is charged for the jobs that completed. A long-form fan-out is settled
1482
+ at what it actually used and the difference is refunded. Uploading
1483
+ is free; an operation on a larger input costs more, through the
1484
+ size surcharge in that file. Refunds are separate ledger rows
1485
+ referencing the reservation via `reference_id`. ⚠️ **Contract-first:**
1486
+ until api ships the per-job change, the API refunds the WHOLE
1487
+ reservation when any job fails, so a `partially_failed` workflow is
1488
+ charged nothing (`pricing-policy.yaml` `charge.api_today`). The
1478
1489
  idempotency-key wire shape for retried reservation attempts
1479
1490
  is deferred per ADR-0001 §1.7 row 5.
1480
1491
  operationId: createWorkflow
@@ -1580,7 +1591,11 @@ paths:
1580
1591
  - type: compress
1581
1592
  responses:
1582
1593
  '201':
1583
- description: Workflow created
1594
+ description: |
1595
+ Workflow created. A long video `compress` that the API runs as an
1596
+ internal fan-out appears as ONE job with ONE `compress` operation
1597
+ whose id is the one `/status` and SSE report; see **LONG-FORM
1598
+ FAN-OUT: ONE PUBLIC ROW** on `GET /api/workflows/{id}/events`.
1584
1599
  content:
1585
1600
  application/json:
1586
1601
  schema:
@@ -2016,7 +2031,7 @@ paths:
2016
2031
  Per-violation `required_tier` names the tier (if any)
2017
2032
  whose `per_tier_constraints` would accommodate the
2018
2033
  request (`null` = no tier resolves, e.g. enterprise
2019
- already at the 120 GB hard ceiling). Distinct from
2034
+ already at its hard ceiling). Distinct from
2020
2035
  `TierRestrictionResponse` (403, request-level upload
2021
2036
  quota — see [ADR-0012](../docs/decisions/0012-processing-class-band-reject-envelope.md)
2022
2037
  for the band-vs-tier split). Per ADR-0001 §F6
@@ -2104,7 +2119,13 @@ paths:
2104
2119
  Optional, best-effort. Present only on the
2105
2120
  `probe_pending` branch — suggested seconds to wait
2106
2121
  before re-polling the upload probe and retrying the
2107
- workflow. Delta-seconds (RFC 9110), mirroring the 429
2122
+ workflow. **A guest (no credential) cannot poll the probe**
2123
+ (`POST /api/uploads/{id}/probe` requires sign-in): it retries
2124
+ the create itself. After `video.probe_wait_bound_seconds` from the upload
2125
+ the create proceeds without a duration (guest unknown-duration rule). A `probe_pending` refusal does not count
2126
+ against the guest per-minute create limit and reserves no
2127
+ guest allowance credits (`schemas/anonymous-policy.yaml`
2128
+ `video`). Delta-seconds (RFC 9110), mirroring the 429
2108
2129
  login path's `Retry-After` convention. Absent until the
2109
2130
  server-side probe-staleness bound (API `e1Idv6UL`)
2110
2131
  lands; consumers MUST treat absence as "retry on your
@@ -2327,6 +2348,12 @@ paths:
2327
2348
  Retrieve the current status of a workflow with nested job and operation breakdown.
2328
2349
  Each operation includes its current progress and, when completed, its result
2329
2350
  (download URL, size, metrics).
2351
+
2352
+ A long video `compress` that the API runs as an internal fan-out
2353
+ (split, segments, concat) appears here as ONE job with ONE `compress`
2354
+ operation. See **LONG-FORM FAN-OUT: ONE PUBLIC ROW** on
2355
+ `GET /api/workflows/{id}/events`, which is normative for this
2356
+ endpoint too.
2330
2357
  operationId: getWorkflowStatus
2331
2358
  security: [{}, {bearerAuth: []}, {sessionAuth: []}] # optional (anon-OK; identity-scoped to workflow owner)
2332
2359
  x-identity-scoped: true # workflow-ownership-scoped per ADR-0016 D3
@@ -2573,6 +2600,15 @@ paths:
2573
2600
  schema:
2574
2601
  $ref: '#/components/schemas/ErrorEnvelope'
2575
2602
 
2603
+ # LONG-FORM FAN-OUT fold (section in the description below), read from
2604
+ # compression_api main 2a8dd8d5, paths under compression/src/Jobs/:
2605
+ # fold + public ids: Domain/Service/FanOutClusterFolder.php:22-47,218-239,332-354,452-545
2606
+ # ids: Domain/Service/FanOutNodeIdFactory.php:82-94,176-196
2607
+ # public op shape: Domain/ValueObject/FanOutPublicOperation.php:45,85-87
2608
+ # SSE frames: Application/Service/WorkflowSseService.php:333-350,563-671
2609
+ # create 201 row: Presentation/Http/Controller/WorkflowController.php:543-589,725-740
2610
+ # fallback path: Application/Service/LongFormFanOutBuilder.php:784-830
2611
+ # concat auto-retry: Infrastructure/Messaging/Handler/OperationResultHandler.php:712-730
2576
2612
  /api/workflows/{id}/events:
2577
2613
  get:
2578
2614
  summary: Stream workflow events (SSE)
@@ -2880,6 +2916,80 @@ paths:
2880
2916
  (the `id:` and `event:` lines) is transport-level and intentionally
2881
2917
  **not** schema-described.
2882
2918
 
2919
+ ### LONG-FORM FAN-OUT: ONE PUBLIC ROW
2920
+
2921
+ This section is normative for **every read surface**; the `/status`
2922
+ and create-201 descriptions point here rather than restate it.
2923
+
2924
+ The API may run a long video `compress` as an internal fan-out: one
2925
+ `split` job, then N parallel segment `compress` jobs, then a
2926
+ stream-copy concat (`merge`). It applies only to a root job holding a
2927
+ single `compress`, and only one such job per workflow. Today the API
2928
+ also requires that no other job depends on it; a client must not rely
2929
+ on that: if a fanned-out job has dependants, they read the joined
2930
+ output, exactly as they would read the job's output unsplit.
2931
+ **Clients never see the fan-out.** The API folds it into
2932
+ ONE public job with ONE public operation on the create 201,
2933
+ `GET /status` and this stream, and into ONE job row on
2934
+ `GET /api/workflows` (whose rows carry no operations; read the
2935
+ operation from `/status`). On `GET /downloads` the joined file is
2936
+ listed under the original `job_ref` with operation `compress`, when
2937
+ it is delivered at all: only once it is complete, only if the
2938
+ delivery selection includes that job, and only while retained. The
2939
+ internal jobs and operations do not appear on any surface, and this
2940
+ stream sends no frame for them.
2941
+
2942
+ | field | value |
2943
+ |---|---|
2944
+ | `job_ref` / `ref` | the client's **original** job ref, on every surface and every path below |
2945
+ | `job_id` | one server-chosen id for the public job, the same before and after the split expands |
2946
+ | `operation_id` / `operations[0].id` | one server-chosen id, the same on the 201, `/status` and this stream, before and after the split expands (exceptions below) |
2947
+ | `type` | `compress` (never `split` or `merge`), including the output-name marker |
2948
+ | `processing_class` (`/status`, `processing_plan`) | `long_form` |
2949
+ | `depends_on` | `[]` |
2950
+ | outputs | exactly one: the joined file |
2951
+
2952
+ **On this stream** the public operation gets zero or more
2953
+ `operation.progress` frames, then ONE `operation.completed` or ONE
2954
+ `operation.failed`, then ONE `job.completed` or `job.failed` for the
2955
+ public job. A failure can arrive with no progress frame before it,
2956
+ so the terminal frame may be the first one. These frames
2957
+ carry **no `id:` line**. `operation.completed` carries no
2958
+ `result_metadata`, and its `result` stays optional as on every
2959
+ `SseOperationCompletedData`: when it is absent, read the output from
2960
+ `GET /downloads`. `job.failed` can arrive in a later frame batch
2961
+ than `operation.failed`.
2962
+
2963
+ **Progress** is weighted by phase: split 10, segments 80 (shared
2964
+ equally), concat 10. Until the split finishes and the segments exist,
2965
+ it **stays at or below 10**: a long bar at 10% is the split running,
2966
+ not a stall. On this stream it never decreases within one connection.
2967
+ `GET /status` reads a snapshot per poll and can dip briefly between
2968
+ polls. Clients that must not show a backwards bar hold their own
2969
+ maximum per `job_ref`.
2970
+
2971
+ **Failure.** Any failed segment fails the whole public operation. The
2972
+ reported `error_code` is the causing failure; a `never_started`
2973
+ collateral code is reported only when there is no causing one.
2974
+
2975
+ **The operation id is NOT stable in two cases. Key the row on
2976
+ `job_ref`, which is.**
2977
+ 1. **Unsplittable input.** When the split finds the file cannot be
2978
+ split, the API runs one plain long-form `compress` instead. It has
2979
+ a **new** `job_id` and `operation_id`, under the same `job_ref`.
2980
+ The first id gets no terminal frame. Its progress starts again
2981
+ from 0, so a bar keyed on `job_ref` goes back from 10 to 0 once.
2982
+ 2. **Automatic retry of the concat step.** The retry is a new
2983
+ operation with a new id, and the public row then shows that id.
2984
+ User retries (`POST /api/operations/{id}/retry`) are refused for
2985
+ the internal operations.
2986
+
2987
+ **Downloads.** Before the split finishes the public job's
2988
+ `/downloads` row lists no files; while segments run it can be
2989
+ absent; it lists the one output once the concat completes. On the
2990
+ unsplittable path there is no concat: the fallback `compress` job
2991
+ is an ordinary row and lists its output when it completes.
2992
+
2883
2993
  ### AUTH ON THE STREAM HOST: the CREDENTIAL decides, not the caller
2884
2994
 
2885
2995
  **Two axes, and conflating them is what made two earlier versions of this
@@ -3586,29 +3696,13 @@ paths:
3586
3696
  a **409** — cancel it first (`POST /api/workflows/{id}/cancel`) or wait
3587
3697
  for it to finish. Archiving does NOT change the workflow's status; it
3588
3698
  stays terminal and the response echoes it unchanged.
3589
- # ⚠️ NO PUBLIC HTTP ROUTE EXISTS FOR THIS. Downgraded to `planned`
3590
- # 2026-08-12 (yi4TDKVJ, raised by sdks + codex) on POSITIVE evidence, as
3591
- # standing policy 3 requires — not on an absent attestation, which policy
3592
- # 4 says is not enough:
3593
- # * no `#[Route(...)]` matching archive/restore anywhere in
3594
- # compression_api's `src/`;
3595
- # * no `api/workflows/{id}/archive` or `/restore` path in `src/` or
3596
- # `config/`;
3597
- # * verified independently by sdks (named commit) and by codex reading
3598
- # the list controller and its repository.
3599
- #
3600
- # ⚠️ CORRECTION TO THE RELAYED EVIDENCE, because it changes the ticket
3601
- # rather than the verdict: the claim reaching this repo was that a grep
3602
- # for `archiveWorkflow|/archive|archived` over `src` and `config`
3603
- # "returns NO OUTPUT". IT DOES NOT — `ArchiveWorkflowCommand`,
3604
- # `ArchiveWorkflowCommandHandler` and a `RestoreWorkflow` command all
3605
- # EXIST, and there is an ADMIN CRUD controller that archives. So this is
3606
- # **implemented in the application layer and not exposed on the public
3607
- # API**, which is a different thing from "nothing behind it". The verdict
3608
- # is unchanged — an unroutable capability is unreachable, so `planned` is
3609
- # correct — but anyone scoping the work should know a handler already
3610
- # exists.
3611
- x-availability: planned
3699
+ # ROUTE ADDED: compression_api #804 (merge 85dd49fa, 2026-09-30) serves
3700
+ # the public POST route, owner-scoped (ownership denial 404). It was
3701
+ # `planned` since 2026-08-12 (yi4TDKVJ) because no route existed. Now
3702
+ # `beta` on a staging customer-path round-trip (e2e, 2026-09-30,
3703
+ # availability/staging-verification-log.yaml). `stable` needs a prod
3704
+ # observation once api's release carrying #804 is on prod.
3705
+ x-availability: beta
3612
3706
  operationId: archiveWorkflow
3613
3707
  security: [{bearerAuth: []}, {sessionAuth: []}] # required (explicit 401 in response set)
3614
3708
  x-identity-scoped: true # workflow-ownership-scoped per ADR-0016 D3
@@ -3700,29 +3794,13 @@ paths:
3700
3794
  `status` is the workflow's unchanged status (any `WorkflowStatus`
3701
3795
  value), not a fixed terminal subset. There is no 409: un-archiving is
3702
3796
  always safe.
3703
- # ⚠️ NO PUBLIC HTTP ROUTE EXISTS FOR THIS. Downgraded to `planned`
3704
- # 2026-08-12 (yi4TDKVJ, raised by sdks + codex) on POSITIVE evidence, as
3705
- # standing policy 3 requires — not on an absent attestation, which policy
3706
- # 4 says is not enough:
3707
- # * no `#[Route(...)]` matching archive/restore anywhere in
3708
- # compression_api's `src/`;
3709
- # * no `api/workflows/{id}/archive` or `/restore` path in `src/` or
3710
- # `config/`;
3711
- # * verified independently by sdks (named commit) and by codex reading
3712
- # the list controller and its repository.
3713
- #
3714
- # ⚠️ CORRECTION TO THE RELAYED EVIDENCE, because it changes the ticket
3715
- # rather than the verdict: the claim reaching this repo was that a grep
3716
- # for `archiveWorkflow|/archive|archived` over `src` and `config`
3717
- # "returns NO OUTPUT". IT DOES NOT — `ArchiveWorkflowCommand`,
3718
- # `ArchiveWorkflowCommandHandler` and a `RestoreWorkflow` command all
3719
- # EXIST, and there is an ADMIN CRUD controller that archives. So this is
3720
- # **implemented in the application layer and not exposed on the public
3721
- # API**, which is a different thing from "nothing behind it". The verdict
3722
- # is unchanged — an unroutable capability is unreachable, so `planned` is
3723
- # correct — but anyone scoping the work should know a handler already
3724
- # exists.
3725
- x-availability: planned
3797
+ # ROUTE ADDED: compression_api #804 (merge 85dd49fa, 2026-09-30) serves
3798
+ # the public POST route, owner-scoped (ownership denial 404). It was
3799
+ # `planned` since 2026-08-12 (yi4TDKVJ) because no route existed. Now
3800
+ # `beta` on a staging customer-path round-trip (e2e, 2026-09-30,
3801
+ # availability/staging-verification-log.yaml). `stable` needs a prod
3802
+ # observation once api's release carrying #804 is on prod.
3803
+ x-availability: beta
3726
3804
  operationId: restoreWorkflow
3727
3805
  security: [{bearerAuth: []}, {sessionAuth: []}] # required (explicit 401 in response set)
3728
3806
  x-identity-scoped: true # workflow-ownership-scoped per ADR-0016 D3
@@ -6228,12 +6306,12 @@ paths:
6228
6306
  value:
6229
6307
  success: true
6230
6308
  data:
6231
- monthly_balance: 1200
6309
+ monthly_balance: 800
6232
6310
  purchased_balance: 5000
6233
- overdraft_limit: 500
6311
+ overdraft_limit: 200
6234
6312
  overdraft_debt: 0
6235
- available_credits: 6700
6236
- monthly_allowance: 2000
6313
+ available_credits: 6000
6314
+ monthly_allowance: 1000
6237
6315
  tier: pro
6238
6316
  pro_overdrafted:
6239
6317
  summary: Pro tier in overdraft (monthly + purchased exhausted)
@@ -6242,10 +6320,10 @@ paths:
6242
6320
  data:
6243
6321
  monthly_balance: 0
6244
6322
  purchased_balance: 0
6245
- overdraft_limit: 500
6246
- overdraft_debt: 350
6247
- available_credits: 150
6248
- monthly_allowance: 2000
6323
+ overdraft_limit: 200
6324
+ overdraft_debt: 150
6325
+ available_credits: 50
6326
+ monthly_allowance: 1000
6249
6327
  tier: pro
6250
6328
  '401':
6251
6329
  description: Authentication required.
@@ -8286,7 +8364,10 @@ components:
8286
8364
  overdraft_debt:
8287
8365
  type: integer
8288
8366
  minimum: 0
8289
- description: Credits currently owed against the overdraft pool.
8367
+ description: >-
8368
+ Credits currently owed against the overdraft pool. Repaid one
8369
+ credit for one credit from the next monthly grant, on every
8370
+ plan (`schemas/pricing-policy.yaml` `overdraft.repayment_ratio`).
8290
8371
  available_credits:
8291
8372
  type: integer
8292
8373
  description: |
@@ -9893,6 +9974,14 @@ components:
9893
9974
  description: |
9894
9975
  Which guest limit was exceeded. OPEN: a consumer that does
9895
9976
  not know a value shows the envelope's localised message.
9977
+ `video_duration_seconds` is only ever sent for a MEASURED
9978
+ duration: a guest video whose duration is unknown (the probe
9979
+ could not measure one, or had not landed within
9980
+ `video.probe_wait_bound_seconds` of the upload) is allowed, not
9981
+ refused, as an ordinary guest create that reserves allowance
9982
+ credits and counts against the per-minute create limit (owner
9983
+ decision 648, `schemas/anonymous-policy.yaml`
9984
+ `video.unknown_duration`).
9896
9985
  type: string
9897
9986
  x-enum-openness: open
9898
9987
  enum:
@@ -10024,7 +10113,12 @@ components:
10024
10113
  (`ok` → re-`POST /api/workflows` the same request; `corrupt` /
10025
10114
  `unsupported_codec` → surface the probe error, do not retry).
10026
10115
  The `Retry-After` response header (when present) carries the
10027
- suggested delay in seconds before the next poll/retry.
10116
+ suggested delay in seconds before the next poll/retry. **A guest
10117
+ (no credential) cannot poll**: the probe endpoint requires
10118
+ sign-in, so a guest re-`POST`s the same create on `Retry-After`
10119
+ or its own backoff; the refusal does not count against its
10120
+ per-minute create limit or allowance
10121
+ (`schemas/anonymous-policy.yaml` `video`).
10028
10122
 
10029
10123
  Delivered alongside `ValidationErrorEnvelope`,
10030
10124
  `FeatureNotAvailableResponse`, and
@@ -10219,7 +10313,7 @@ components:
10219
10313
  server SHOULD set `required_tier` to that tier — consumers
10220
10314
  can offer an upgrade nudge. `null` (or omitted) means
10221
10315
  **no tier resolves** the overflow (e.g. enterprise already
10222
- hits the 120 GB hard ceiling per
10316
+ hits its hard ceiling per
10223
10317
  [ADR-0011](../docs/decisions/0011-per-tier-processing-class-constraints.md)
10224
10318
  D1–D4).
10225
10319
 
@@ -10271,7 +10365,7 @@ components:
10271
10365
  `required_tier` on each `ProcessingClassBandViolation` names
10272
10366
  the tier (if any) whose `per_tier_constraints` would
10273
10367
  accommodate the request; `null` means terminal (e.g. enterprise
10274
- already at the 120 GB hard ceiling).
10368
+ already at its hard ceiling).
10275
10369
 
10276
10370
  Per
10277
10371
  [ADR-0012](../docs/decisions/0012-processing-class-band-reject-envelope.md)
@@ -10730,8 +10824,9 @@ components:
10730
10824
  Recommended chunk size in bytes for multipart upload
10731
10825
  chunks (16 MiB / 16,777,216 bytes — 1024-based). Raised
10732
10826
  from 5 MiB by CON-1 (ADR-0011): S3 caps a multipart
10733
- upload at 10,000 parts, and the Enterprise envelope is a
10734
- 120 GB hard ceiling. At 16 MiB a 120 GiB object needs
10827
+ upload at 10,000 parts, and the Enterprise envelope was
10828
+ sized at 120 GB (the per-file ceiling is now 100 GiB, owner
10829
+ 649(2), which fits with margin). At 16 MiB a 120 GiB object needs
10735
10830
  7,680 parts (≤ 10,000, inside AWS's 16–64 MB recommended
10736
10831
  band); 5 MiB would need 24,576 and 10 MiB 12,288 — both
10737
10832
  exceed the S3 limit. **Wire-incompatible change** — SDKs
@@ -12482,13 +12577,16 @@ components:
12482
12577
  dropped_options:
12483
12578
  type: array
12484
12579
  description: |
12485
- Options the SERVER supplied on the caller's behalf and then
12486
- REMOVED, because the resolved execution path cannot honour
12487
- them. **Never contains a value the caller sent explicitly** —
12488
- an explicit option the path cannot honour is refused with
12489
- `422 feature_not_available`, not silently dropped. That
12490
- split is the whole rule: a caller who asked for nothing is
12491
- not punished for our default; a caller who asked for
12580
+ Options holding their DEFAULT (supplied by the server, or
12581
+ sent by the client equal to the schema default, which reads as
12582
+ defaulted — `schemas/FORMAT.md` "Container-conditional
12583
+ defaults") that were then REMOVED or SUBSTITUTED, because the
12584
+ resolved execution path or output container cannot honour
12585
+ them. **Never contains a caller's choice** — a value that
12586
+ differs from the default and cannot be honoured is refused
12587
+ (`422 feature_not_available` / `invalid_options`), not
12588
+ dropped. That split is the whole rule: a caller who asked for
12589
+ nothing is not punished for our default; a caller who asked for
12492
12590
  something is told.
12493
12591
 
12494
12592
  **Why this field exists at all.** Dropping a defaulted
@@ -12510,7 +12608,8 @@ components:
12510
12608
  DroppedOption:
12511
12609
  type: object
12512
12610
  description: |
12513
- One server-supplied option removed from a job before dispatch.
12611
+ One defaulted option (server-supplied, or sent equal to its
12612
+ schema default) removed or substituted before dispatch.
12514
12613
  **Names the THING, the WHY and the PATH** — the three parts a
12515
12614
  caller needs to act, and the three a single interpolated string
12516
12615
  would fuse into something unparseable.
@@ -12557,12 +12656,29 @@ components:
12557
12656
  caller on a guessed class is the same error as asserting
12558
12657
  a measurement never taken**, so an unmeasured basis
12559
12658
  degrades to a drop and never to a 422.
12659
+ - `container_incompatible_default` — the option held its
12660
+ schema default (omitted, or sent equal to the default),
12661
+ and the output container cannot carry that value, so the
12662
+ container's own default was applied instead; the applied
12663
+ value is in `resolved_value` (e.g. `codec` `h264` on a
12664
+ WebM output → `vp9`; `audio_codec` `copy` of AAC into
12665
+ WebM → `opus`). See `schemas/FORMAT.md`
12666
+ "Container-conditional defaults". Contract-first (api
12667
+ `PSJ1vBC7`).
12560
12668
 
12561
12669
  The class token is deliberately NOT interpolated into this
12562
12670
  string: the reason and the path are separate fields because
12563
12671
  a fused `not_available_on_<class>` is unparseable and
12564
12672
  duplicates `processing_class`.
12565
12673
  example: unavailable_on_processing_class
12674
+ resolved_value:
12675
+ type: string
12676
+ description: |
12677
+ OPTIONAL. The value the server applied in place of the
12678
+ dropped one, when it substituted a value rather than
12679
+ removing the option (`reason: container_incompatible_default`).
12680
+ Absent for a plain drop.
12681
+ example: vp9
12566
12682
 
12567
12683
  ProcessingPlan:
12568
12684
  type: object
@@ -14068,6 +14184,43 @@ components:
14068
14184
  `input_filename`. Ticket [`j2s6T2qf`](https://trello.com/c/j2s6T2qf)
14069
14185
  (FE before→after size, workflow-view launch ask).
14070
14186
  example: 491520
14187
+ input_uploaded_at:
14188
+ type: string
14189
+ format: date-time
14190
+ description: |
14191
+ OPTIONAL. When the server finished receiving the job's input
14192
+ upload: a single-shot upload's accept, or a multipart
14193
+ `complete`. For a job with several uploaded inputs (e.g. a
14194
+ merge), the LATEST of them, since the job cannot start before
14195
+ its last input arrives; inputs that are not uploads (another
14196
+ job's output, an import) are ignored. Absent when the job has no
14197
+ uploaded input, and until the API records it. Card
14198
+ [`6EOlMAz4`](https://trello.com/c/6EOlMAz4) (e2e performance
14199
+ baseline, owner decisions 630/635): with `started_at` and
14200
+ `completed_at` it separates upload, queue and processing time on
14201
+ the server clock. Contract-first: api populates it in a
14202
+ follow-up; a client must treat absence as "not recorded".
14203
+ example: "2026-09-29T21:00:00Z"
14204
+ started_at:
14205
+ type: string
14206
+ format: date-time
14207
+ description: |
14208
+ OPTIONAL. When the job's first operation started processing (the
14209
+ first progress report from a worker). Absent while the job is
14210
+ queued, and for a job that never started. Server clock. See
14211
+ `input_uploaded_at`.
14212
+ example: "2026-09-29T21:00:04Z"
14213
+ completed_at:
14214
+ type: string
14215
+ format: date-time
14216
+ description: |
14217
+ OPTIONAL. When the job reached a terminal `JobStatus`
14218
+ (`completed` or `failed`), on the server clock. Absent while
14219
+ the job is not terminal.
14220
+ `completed_at - started_at` is the job's EXECUTION SPAN: for a
14221
+ chain of operations it includes any wait between them, so it is
14222
+ not pure processing time. See `input_uploaded_at`.
14223
+ example: "2026-09-29T21:00:19Z"
14071
14224
  processing_class:
14072
14225
  $ref: '#/components/schemas/ProcessingClass'
14073
14226
  description: |
@@ -14177,7 +14330,9 @@ components:
14177
14330
  `invalid_format` (input type unsupported),
14178
14331
  `format_mismatch` (declared MIME ≠ content),
14179
14332
  `decode_failed` (input unreadable/corrupt),
14180
- `output_too_large` (output exceeded the size limit),
14333
+ `output_too_large` (output exceeded the size limit; NOT for a
14334
+ same-format `compress`, which returns the original with
14335
+ `already_optimal` instead — owner decision 645(4)),
14181
14336
  `missing_source` (source not found — fail-fast),
14182
14337
  `invalid_key` (storage key invalid),
14183
14338
  `processing_failed` (non-specific processing failure),
@@ -14276,7 +14431,35 @@ components:
14276
14431
  "already optimised", not as "same size". On an ordinary result it
14277
14432
  is absent or `false`; treat the two the same. Projected by the API from the wire
14278
14433
  `OperationMetrics.already_optimal` (ticket `roNRMilt`).
14434
+ **Charged nothing** (owner decision 645(4),
14435
+ `schemas/pricing-policy.yaml` `charge.not_charged`): the
14436
+ operation's cost is refunded; other operations in the job are
14437
+ charged as usual. Applies to a completed `compress` on the
14438
+ resolved `same_format` route (`output_format` original, absent, or
14439
+ equal to the input's format; not the format-change facade, where
14440
+ the original is not what was asked for). A same-format compress
14441
+ that cannot shrink the file returns this, never `output_too_large`.
14442
+ ⚠️ **Today this holds for SHORT-FORM compress only.** Long-form
14443
+ compress still fails `output_too_large` until lambdas ships its
14444
+ long-form copy path; do not promise "already optimised" or "no
14445
+ charge" for a long-form file before then. Contract-first: until api
14446
+ ships, the operation is charged (`charge.not_charged_api_today`).
14447
+ `already_optimal_kind` says which kind of "already optimised" it
14448
+ was.
14279
14449
  example: true
14450
+ already_optimal_kind:
14451
+ type: string
14452
+ enum: [not_smaller]
14453
+ description: |
14454
+ OPTIONAL, only with `already_optimal: true`: WHY the original was
14455
+ returned. `not_smaller` — the file was compressed and the result
14456
+ was not smaller, so there is no quality trade-off to explain. It
14457
+ is the only kind any worker produces today (no production path
14458
+ declines to encode an efficient source). Absent, or a value you do
14459
+ not know: show neutral "already optimised" copy.
14460
+ Contract-first (card `cDZuuyg8`): projected from the wire
14461
+ `OperationMetrics.already_optimal_kind` once workers emit it.
14462
+ example: not_smaller
14280
14463
  estimated_saving_pct:
14281
14464
  type: number
14282
14465
  minimum: 0
@@ -17167,6 +17350,16 @@ components:
17167
17350
  app:
17168
17351
  type: boolean
17169
17352
  description: Application is running
17353
+ build:
17354
+ type: string
17355
+ description: |
17356
+ OPTIONAL. The release the running image was built as (the API's
17357
+ `APP_VERSION`, e.g. `1.15.2-rc.1`; `dev` for a local build;
17358
+ `unknown` when unset). Unauthenticated on purpose: a timing run
17359
+ reads it before and after, so a code-only deploy in the middle
17360
+ of the run is detectable (card `6EOlMAz4`, e2e performance
17361
+ baseline). Opaque: compare for equality, do not parse.
17362
+ example: "1.15.2-rc.1"
17170
17363
 
17171
17364
  ReadinessResponse:
17172
17365
  type: object
@@ -253,7 +253,6 @@
253
253
  {
254
254
  "field": "compress.codec",
255
255
  "in": [
256
- "h264",
257
256
  "h265"
258
257
  ]
259
258
  }
@@ -860,5 +859,5 @@
860
859
  "isAnimated": "maybe"
861
860
  }
862
861
  },
863
- "schema_version": "2.218.0"
862
+ "schema_version": "2.220.0"
864
863
  }
@@ -113,8 +113,8 @@ operation:
113
113
  max_input_size_bytes: 50000000000 # 50 GB (Max self-serve band)
114
114
  max_output_size_bytes: 50000000000
115
115
  enterprise:
116
- max_input_size_bytes: 120000000000 # 120 GB (Enterprise enforced ceiling)
117
- max_output_size_bytes: 120000000000
116
+ max_input_size_bytes: 107374182400 # 100 GiB = api's Enterprise upload cap (owner 649(2))
117
+ max_output_size_bytes: 107374182400
118
118
  options:
119
119
  start_at:
120
120
  type: float
@@ -306,8 +306,8 @@ operation:
306
306
  max_input_size_bytes: 50000000000 # 50 GB (Max self-serve band)
307
307
  max_output_size_bytes: 50000000000
308
308
  enterprise:
309
- max_input_size_bytes: 120000000000 # 120 GB (Enterprise enforced ceiling)
310
- max_output_size_bytes: 120000000000
309
+ max_input_size_bytes: 107374182400 # 100 GiB = api's Enterprise upload cap (owner 649(2))
310
+ max_output_size_bytes: 107374182400
311
311
  options:
312
312
  start_at:
313
313
  type: float