@giveitsmaller/contracts 0.83.0 → 0.84.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 (554) 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 +12 -1
  5. package/asyncapi/README.md +1 -1
  6. package/asyncapi/events.yaml +54 -10
  7. package/availability/availability.json +6 -6
  8. package/code-builder/code-builder-metadata.json +6 -6
  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 +1 -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 +1 -1
  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 +1 -1
  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 +240 -25
  551. package/operation-capabilities/operation-capabilities.json +1 -2
  552. package/operations/schemas/compress.yaml +16 -11
  553. package/package.json +6 -4
  554. package/pricing-policy.yaml +82 -0
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.219.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:
@@ -2104,7 +2119,12 @@ 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. A `probe_pending` refusal does not count
2125
+ against the guest per-minute create limit and reserves no
2126
+ guest allowance credits (`schemas/anonymous-policy.yaml`
2127
+ `video`). Delta-seconds (RFC 9110), mirroring the 429
2108
2128
  login path's `Retry-After` convention. Absent until the
2109
2129
  server-side probe-staleness bound (API `e1Idv6UL`)
2110
2130
  lands; consumers MUST treat absence as "retry on your
@@ -2327,6 +2347,12 @@ paths:
2327
2347
  Retrieve the current status of a workflow with nested job and operation breakdown.
2328
2348
  Each operation includes its current progress and, when completed, its result
2329
2349
  (download URL, size, metrics).
2350
+
2351
+ A long video `compress` that the API runs as an internal fan-out
2352
+ (split, segments, concat) appears here as ONE job with ONE `compress`
2353
+ operation. See **LONG-FORM FAN-OUT: ONE PUBLIC ROW** on
2354
+ `GET /api/workflows/{id}/events`, which is normative for this
2355
+ endpoint too.
2330
2356
  operationId: getWorkflowStatus
2331
2357
  security: [{}, {bearerAuth: []}, {sessionAuth: []}] # optional (anon-OK; identity-scoped to workflow owner)
2332
2358
  x-identity-scoped: true # workflow-ownership-scoped per ADR-0016 D3
@@ -2573,6 +2599,15 @@ paths:
2573
2599
  schema:
2574
2600
  $ref: '#/components/schemas/ErrorEnvelope'
2575
2601
 
2602
+ # LONG-FORM FAN-OUT fold (section in the description below), read from
2603
+ # compression_api main 2a8dd8d5, paths under compression/src/Jobs/:
2604
+ # fold + public ids: Domain/Service/FanOutClusterFolder.php:22-47,218-239,332-354,452-545
2605
+ # ids: Domain/Service/FanOutNodeIdFactory.php:82-94,176-196
2606
+ # public op shape: Domain/ValueObject/FanOutPublicOperation.php:45,85-87
2607
+ # SSE frames: Application/Service/WorkflowSseService.php:333-350,563-671
2608
+ # create 201 row: Presentation/Http/Controller/WorkflowController.php:543-589,725-740
2609
+ # fallback path: Application/Service/LongFormFanOutBuilder.php:784-830
2610
+ # concat auto-retry: Infrastructure/Messaging/Handler/OperationResultHandler.php:712-730
2576
2611
  /api/workflows/{id}/events:
2577
2612
  get:
2578
2613
  summary: Stream workflow events (SSE)
@@ -2880,6 +2915,80 @@ paths:
2880
2915
  (the `id:` and `event:` lines) is transport-level and intentionally
2881
2916
  **not** schema-described.
2882
2917
 
2918
+ ### LONG-FORM FAN-OUT: ONE PUBLIC ROW
2919
+
2920
+ This section is normative for **every read surface**; the `/status`
2921
+ and create-201 descriptions point here rather than restate it.
2922
+
2923
+ The API may run a long video `compress` as an internal fan-out: one
2924
+ `split` job, then N parallel segment `compress` jobs, then a
2925
+ stream-copy concat (`merge`). It applies only to a root job holding a
2926
+ single `compress`, and only one such job per workflow. Today the API
2927
+ also requires that no other job depends on it; a client must not rely
2928
+ on that: if a fanned-out job has dependants, they read the joined
2929
+ output, exactly as they would read the job's output unsplit.
2930
+ **Clients never see the fan-out.** The API folds it into
2931
+ ONE public job with ONE public operation on the create 201,
2932
+ `GET /status` and this stream, and into ONE job row on
2933
+ `GET /api/workflows` (whose rows carry no operations; read the
2934
+ operation from `/status`). On `GET /downloads` the joined file is
2935
+ listed under the original `job_ref` with operation `compress`, when
2936
+ it is delivered at all: only once it is complete, only if the
2937
+ delivery selection includes that job, and only while retained. The
2938
+ internal jobs and operations do not appear on any surface, and this
2939
+ stream sends no frame for them.
2940
+
2941
+ | field | value |
2942
+ |---|---|
2943
+ | `job_ref` / `ref` | the client's **original** job ref, on every surface and every path below |
2944
+ | `job_id` | one server-chosen id for the public job, the same before and after the split expands |
2945
+ | `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) |
2946
+ | `type` | `compress` (never `split` or `merge`), including the output-name marker |
2947
+ | `processing_class` (`/status`, `processing_plan`) | `long_form` |
2948
+ | `depends_on` | `[]` |
2949
+ | outputs | exactly one: the joined file |
2950
+
2951
+ **On this stream** the public operation gets zero or more
2952
+ `operation.progress` frames, then ONE `operation.completed` or ONE
2953
+ `operation.failed`, then ONE `job.completed` or `job.failed` for the
2954
+ public job. A failure can arrive with no progress frame before it,
2955
+ so the terminal frame may be the first one. These frames
2956
+ carry **no `id:` line**. `operation.completed` carries no
2957
+ `result_metadata`, and its `result` stays optional as on every
2958
+ `SseOperationCompletedData`: when it is absent, read the output from
2959
+ `GET /downloads`. `job.failed` can arrive in a later frame batch
2960
+ than `operation.failed`.
2961
+
2962
+ **Progress** is weighted by phase: split 10, segments 80 (shared
2963
+ equally), concat 10. Until the split finishes and the segments exist,
2964
+ it **stays at or below 10**: a long bar at 10% is the split running,
2965
+ not a stall. On this stream it never decreases within one connection.
2966
+ `GET /status` reads a snapshot per poll and can dip briefly between
2967
+ polls. Clients that must not show a backwards bar hold their own
2968
+ maximum per `job_ref`.
2969
+
2970
+ **Failure.** Any failed segment fails the whole public operation. The
2971
+ reported `error_code` is the causing failure; a `never_started`
2972
+ collateral code is reported only when there is no causing one.
2973
+
2974
+ **The operation id is NOT stable in two cases. Key the row on
2975
+ `job_ref`, which is.**
2976
+ 1. **Unsplittable input.** When the split finds the file cannot be
2977
+ split, the API runs one plain long-form `compress` instead. It has
2978
+ a **new** `job_id` and `operation_id`, under the same `job_ref`.
2979
+ The first id gets no terminal frame. Its progress starts again
2980
+ from 0, so a bar keyed on `job_ref` goes back from 10 to 0 once.
2981
+ 2. **Automatic retry of the concat step.** The retry is a new
2982
+ operation with a new id, and the public row then shows that id.
2983
+ User retries (`POST /api/operations/{id}/retry`) are refused for
2984
+ the internal operations.
2985
+
2986
+ **Downloads.** Before the split finishes the public job's
2987
+ `/downloads` row lists no files; while segments run it can be
2988
+ absent; it lists the one output once the concat completes. On the
2989
+ unsplittable path there is no concat: the fallback `compress` job
2990
+ is an ordinary row and lists its output when it completes.
2991
+
2883
2992
  ### AUTH ON THE STREAM HOST: the CREDENTIAL decides, not the caller
2884
2993
 
2885
2994
  **Two axes, and conflating them is what made two earlier versions of this
@@ -6228,12 +6337,12 @@ paths:
6228
6337
  value:
6229
6338
  success: true
6230
6339
  data:
6231
- monthly_balance: 1200
6340
+ monthly_balance: 800
6232
6341
  purchased_balance: 5000
6233
- overdraft_limit: 500
6342
+ overdraft_limit: 200
6234
6343
  overdraft_debt: 0
6235
- available_credits: 6700
6236
- monthly_allowance: 2000
6344
+ available_credits: 6000
6345
+ monthly_allowance: 1000
6237
6346
  tier: pro
6238
6347
  pro_overdrafted:
6239
6348
  summary: Pro tier in overdraft (monthly + purchased exhausted)
@@ -6242,10 +6351,10 @@ paths:
6242
6351
  data:
6243
6352
  monthly_balance: 0
6244
6353
  purchased_balance: 0
6245
- overdraft_limit: 500
6246
- overdraft_debt: 350
6247
- available_credits: 150
6248
- monthly_allowance: 2000
6354
+ overdraft_limit: 200
6355
+ overdraft_debt: 150
6356
+ available_credits: 50
6357
+ monthly_allowance: 1000
6249
6358
  tier: pro
6250
6359
  '401':
6251
6360
  description: Authentication required.
@@ -8286,7 +8395,10 @@ components:
8286
8395
  overdraft_debt:
8287
8396
  type: integer
8288
8397
  minimum: 0
8289
- description: Credits currently owed against the overdraft pool.
8398
+ description: >-
8399
+ Credits currently owed against the overdraft pool. Repaid one
8400
+ credit for one credit from the next monthly grant, on every
8401
+ plan (`schemas/pricing-policy.yaml` `overdraft.repayment_ratio`).
8290
8402
  available_credits:
8291
8403
  type: integer
8292
8404
  description: |
@@ -10024,7 +10136,12 @@ components:
10024
10136
  (`ok` → re-`POST /api/workflows` the same request; `corrupt` /
10025
10137
  `unsupported_codec` → surface the probe error, do not retry).
10026
10138
  The `Retry-After` response header (when present) carries the
10027
- suggested delay in seconds before the next poll/retry.
10139
+ suggested delay in seconds before the next poll/retry. **A guest
10140
+ (no credential) cannot poll**: the probe endpoint requires
10141
+ sign-in, so a guest re-`POST`s the same create on `Retry-After`
10142
+ or its own backoff; the refusal does not count against its
10143
+ per-minute create limit or allowance
10144
+ (`schemas/anonymous-policy.yaml` `video`).
10028
10145
 
10029
10146
  Delivered alongside `ValidationErrorEnvelope`,
10030
10147
  `FeatureNotAvailableResponse`, and
@@ -12482,13 +12599,16 @@ components:
12482
12599
  dropped_options:
12483
12600
  type: array
12484
12601
  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
12602
+ Options holding their DEFAULT (supplied by the server, or
12603
+ sent by the client equal to the schema default, which reads as
12604
+ defaulted — `schemas/FORMAT.md` "Container-conditional
12605
+ defaults") that were then REMOVED or SUBSTITUTED, because the
12606
+ resolved execution path or output container cannot honour
12607
+ them. **Never contains a caller's choice** — a value that
12608
+ differs from the default and cannot be honoured is refused
12609
+ (`422 feature_not_available` / `invalid_options`), not
12610
+ dropped. That split is the whole rule: a caller who asked for
12611
+ nothing is not punished for our default; a caller who asked for
12492
12612
  something is told.
12493
12613
 
12494
12614
  **Why this field exists at all.** Dropping a defaulted
@@ -12510,7 +12630,8 @@ components:
12510
12630
  DroppedOption:
12511
12631
  type: object
12512
12632
  description: |
12513
- One server-supplied option removed from a job before dispatch.
12633
+ One defaulted option (server-supplied, or sent equal to its
12634
+ schema default) removed or substituted before dispatch.
12514
12635
  **Names the THING, the WHY and the PATH** — the three parts a
12515
12636
  caller needs to act, and the three a single interpolated string
12516
12637
  would fuse into something unparseable.
@@ -12557,12 +12678,29 @@ components:
12557
12678
  caller on a guessed class is the same error as asserting
12558
12679
  a measurement never taken**, so an unmeasured basis
12559
12680
  degrades to a drop and never to a 422.
12681
+ - `container_incompatible_default` — the option held its
12682
+ schema default (omitted, or sent equal to the default),
12683
+ and the output container cannot carry that value, so the
12684
+ container's own default was applied instead; the applied
12685
+ value is in `resolved_value` (e.g. `codec` `h264` on a
12686
+ WebM output → `vp9`; `audio_codec` `copy` of AAC into
12687
+ WebM → `opus`). See `schemas/FORMAT.md`
12688
+ "Container-conditional defaults". Contract-first (api
12689
+ `PSJ1vBC7`).
12560
12690
 
12561
12691
  The class token is deliberately NOT interpolated into this
12562
12692
  string: the reason and the path are separate fields because
12563
12693
  a fused `not_available_on_<class>` is unparseable and
12564
12694
  duplicates `processing_class`.
12565
12695
  example: unavailable_on_processing_class
12696
+ resolved_value:
12697
+ type: string
12698
+ description: |
12699
+ OPTIONAL. The value the server applied in place of the
12700
+ dropped one, when it substituted a value rather than
12701
+ removing the option (`reason: container_incompatible_default`).
12702
+ Absent for a plain drop.
12703
+ example: vp9
12566
12704
 
12567
12705
  ProcessingPlan:
12568
12706
  type: object
@@ -14068,6 +14206,43 @@ components:
14068
14206
  `input_filename`. Ticket [`j2s6T2qf`](https://trello.com/c/j2s6T2qf)
14069
14207
  (FE before→after size, workflow-view launch ask).
14070
14208
  example: 491520
14209
+ input_uploaded_at:
14210
+ type: string
14211
+ format: date-time
14212
+ description: |
14213
+ OPTIONAL. When the server finished receiving the job's input
14214
+ upload: a single-shot upload's accept, or a multipart
14215
+ `complete`. For a job with several uploaded inputs (e.g. a
14216
+ merge), the LATEST of them, since the job cannot start before
14217
+ its last input arrives; inputs that are not uploads (another
14218
+ job's output, an import) are ignored. Absent when the job has no
14219
+ uploaded input, and until the API records it. Card
14220
+ [`6EOlMAz4`](https://trello.com/c/6EOlMAz4) (e2e performance
14221
+ baseline, owner decisions 630/635): with `started_at` and
14222
+ `completed_at` it separates upload, queue and processing time on
14223
+ the server clock. Contract-first: api populates it in a
14224
+ follow-up; a client must treat absence as "not recorded".
14225
+ example: "2026-09-29T21:00:00Z"
14226
+ started_at:
14227
+ type: string
14228
+ format: date-time
14229
+ description: |
14230
+ OPTIONAL. When the job's first operation started processing (the
14231
+ first progress report from a worker). Absent while the job is
14232
+ queued, and for a job that never started. Server clock. See
14233
+ `input_uploaded_at`.
14234
+ example: "2026-09-29T21:00:04Z"
14235
+ completed_at:
14236
+ type: string
14237
+ format: date-time
14238
+ description: |
14239
+ OPTIONAL. When the job reached a terminal `JobStatus`
14240
+ (`completed` or `failed`), on the server clock. Absent while
14241
+ the job is not terminal.
14242
+ `completed_at - started_at` is the job's EXECUTION SPAN: for a
14243
+ chain of operations it includes any wait between them, so it is
14244
+ not pure processing time. See `input_uploaded_at`.
14245
+ example: "2026-09-29T21:00:19Z"
14071
14246
  processing_class:
14072
14247
  $ref: '#/components/schemas/ProcessingClass'
14073
14248
  description: |
@@ -14177,7 +14352,9 @@ components:
14177
14352
  `invalid_format` (input type unsupported),
14178
14353
  `format_mismatch` (declared MIME ≠ content),
14179
14354
  `decode_failed` (input unreadable/corrupt),
14180
- `output_too_large` (output exceeded the size limit),
14355
+ `output_too_large` (output exceeded the size limit; NOT for a
14356
+ same-format `compress`, which returns the original with
14357
+ `already_optimal` instead — owner decision 645(4)),
14181
14358
  `missing_source` (source not found — fail-fast),
14182
14359
  `invalid_key` (storage key invalid),
14183
14360
  `processing_failed` (non-specific processing failure),
@@ -14276,7 +14453,35 @@ components:
14276
14453
  "already optimised", not as "same size". On an ordinary result it
14277
14454
  is absent or `false`; treat the two the same. Projected by the API from the wire
14278
14455
  `OperationMetrics.already_optimal` (ticket `roNRMilt`).
14456
+ **Charged nothing** (owner decision 645(4),
14457
+ `schemas/pricing-policy.yaml` `charge.not_charged`): the
14458
+ operation's cost is refunded; other operations in the job are
14459
+ charged as usual. Applies to a completed `compress` on the
14460
+ resolved `same_format` route (`output_format` original, absent, or
14461
+ equal to the input's format; not the format-change facade, where
14462
+ the original is not what was asked for). A same-format compress
14463
+ that cannot shrink the file returns this, never `output_too_large`.
14464
+ ⚠️ **Today this holds for SHORT-FORM compress only.** Long-form
14465
+ compress still fails `output_too_large` until lambdas ships its
14466
+ long-form copy path; do not promise "already optimised" or "no
14467
+ charge" for a long-form file before then. Contract-first: until api
14468
+ ships, the operation is charged (`charge.not_charged_api_today`).
14469
+ `already_optimal_kind` says which kind of "already optimised" it
14470
+ was.
14279
14471
  example: true
14472
+ already_optimal_kind:
14473
+ type: string
14474
+ enum: [not_smaller]
14475
+ description: |
14476
+ OPTIONAL, only with `already_optimal: true`: WHY the original was
14477
+ returned. `not_smaller` — the file was compressed and the result
14478
+ was not smaller, so there is no quality trade-off to explain. It
14479
+ is the only kind any worker produces today (no production path
14480
+ declines to encode an efficient source). Absent, or a value you do
14481
+ not know: show neutral "already optimised" copy.
14482
+ Contract-first (card `cDZuuyg8`): projected from the wire
14483
+ `OperationMetrics.already_optimal_kind` once workers emit it.
14484
+ example: not_smaller
14280
14485
  estimated_saving_pct:
14281
14486
  type: number
14282
14487
  minimum: 0
@@ -17167,6 +17372,16 @@ components:
17167
17372
  app:
17168
17373
  type: boolean
17169
17374
  description: Application is running
17375
+ build:
17376
+ type: string
17377
+ description: |
17378
+ OPTIONAL. The release the running image was built as (the API's
17379
+ `APP_VERSION`, e.g. `1.15.2-rc.1`; `dev` for a local build;
17380
+ `unknown` when unset). Unauthenticated on purpose: a timing run
17381
+ reads it before and after, so a code-only deploy in the middle
17382
+ of the run is detectable (card `6EOlMAz4`, e2e performance
17383
+ baseline). Opaque: compare for equality, do not parse.
17384
+ example: "1.15.2-rc.1"
17170
17385
 
17171
17386
  ReadinessResponse:
17172
17387
  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.219.0"
864
863
  }
@@ -1217,9 +1217,10 @@ operation:
1217
1217
  Output container. original = keep the input container (default, same-format
1218
1218
  compression). Other values change the container as part of the same job, keeping
1219
1219
  the size cap. When set, the RESOLVED target container determines the valid
1220
- codec/audio_codec/faststart sets — an absent/default codec resolves to a
1221
- container-valid one (e.g. webm -> vp9) and is never rejected; only a
1222
- caller-EXPLICIT incompatible value is rejected.
1220
+ codec/audio_codec/faststart sets — an absent or default-equal value (sent equal
1221
+ to its default counts as the default) resolves to a container-valid one (e.g.
1222
+ webm -> vp9), is never rejected, and is reported in dropped_options; only a
1223
+ NON-default incompatible value is rejected.
1223
1224
  codec:
1224
1225
  type: enum
1225
1226
  values: [h264, h265, vp9, av1]
@@ -1241,8 +1242,10 @@ operation:
1241
1242
  the input container): for a container that cannot carry it (e.g. WebM, which
1242
1243
  carries VP8/VP9/AV1) the server resolves a container-valid codec (WebM -> vp9).
1243
1244
  A DEFAULT value is never rejected — including an explicit `output_format: webm`
1244
- left at the default `h264` (resolves to vp9, not rejected); only a
1245
- caller-EXPLICIT incompatible codec is rejected.
1245
+ left at the default `h264` (resolves to vp9, not rejected). A value equal to the
1246
+ default counts as the default even when sent, and the substitution is reported
1247
+ in dropped_options. Only a NON-default codec the container cannot carry is
1248
+ rejected (e.g. h265 on WebM).
1246
1249
  encoding_mode:
1247
1250
  type: enum
1248
1251
  values: [crf, target_size]
@@ -1395,9 +1398,9 @@ operation:
1395
1398
  Move the MP4/MOV moov atom to the front so the file starts playing before it is
1396
1399
  fully downloaded (progressive web playback). MP4/MOV only. CONTAINER-CONDITIONAL
1397
1400
  against the RESOLVED output container (the explicit `output_format` if set, else
1398
- the input): the default (true) is silently inapplicable for a container with no
1399
- moov atom (e.g. WebM) — that is NOT a rejection. Only a caller-EXPLICIT
1400
- faststart:true on such a container is rejected.
1401
+ the input): on a container with no moov atom (e.g. WebM) the default (true),
1402
+ omitted or sent, is dropped and reported in dropped_options — never a rejection.
1403
+ false there asks for nothing and is accepted.
1401
1404
  audio_codec:
1402
1405
  type: enum
1403
1406
  values: [aac, opus, vorbis, copy]
@@ -1422,9 +1425,11 @@ operation:
1422
1425
  the container, an absent/default audio_codec resolves to a container-valid codec
1423
1426
  via the facade (e.g. webm -> opus), NOT a blind copy of an incompatible stream —
1424
1427
  a DEFAULT is never rejected (the exact per-container resolution, incl. ogg
1425
- vorbis-vs-opus, is an output_format stable-flip prerequisite). A caller-EXPLICIT
1426
- codec the resolved container cannot carry (e.g. aac on a webm target) is
1427
- rejected.
1428
+ vorbis-vs-opus, is an output_format stable-flip prerequisite). `copy` sent
1429
+ explicitly counts as the default: if the source audio cannot be copied into the
1430
+ target container it is re-encoded to the container default (webm -> opus) and
1431
+ reported in dropped_options. A NON-default codec the resolved container cannot
1432
+ carry (e.g. aac on a webm target) is rejected.
1428
1433
  audio_bitrate:
1429
1434
  type: enum
1430
1435
  value_type: integer
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@giveitsmaller/contracts",
3
- "version": "0.83.0",
4
- "description": "Generated contract types for GISL (Give It Smaller). Generated from compression_contracts spec v2.218.0.",
5
- "gislContractsSpec": "v2.218.0",
3
+ "version": "0.84.0",
4
+ "description": "Generated contract types for GISL (Give It Smaller). Generated from compression_contracts spec v2.219.0.",
5
+ "gislContractsSpec": "v2.219.0",
6
6
  "license": "Apache-2.0",
7
7
  "homepage": "https://docs.giveitsmaller.com",
8
8
  "bugs": {
@@ -32,6 +32,7 @@
32
32
  "./asyncapi/events.yaml": "./asyncapi/events.yaml",
33
33
  "./resolution-bands.yaml": "./resolution-bands.yaml",
34
34
  "./anonymous-policy.yaml": "./anonymous-policy.yaml",
35
+ "./pricing-policy.yaml": "./pricing-policy.yaml",
35
36
  "./availability/availability.json": "./availability/availability.json",
36
37
  "./accepted-options/accepted-options.json": "./accepted-options/accepted-options.json",
37
38
  "./accepted-options/image-output-routes.json": "./accepted-options/image-output-routes.json",
@@ -67,7 +68,8 @@
67
68
  "operation-capabilities/operation-capabilities.json",
68
69
  "code-builder/code-builder-metadata.json",
69
70
  "resolution-bands.yaml",
70
- "anonymous-policy.yaml"
71
+ "anonymous-policy.yaml",
72
+ "pricing-policy.yaml"
71
73
  ],
72
74
  "scripts": {
73
75
  "clean": "node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"",
@@ -0,0 +1,82 @@
1
+ # Pricing policy — the ONE declaration of how a workflow is charged
2
+ # (card 8Y2fppO9; owner decisions 610(4) 2026-09-26 and 635 2026-09-29).
3
+ #
4
+ # 1.1.0 (card cDZuuyg8, owner decision 645(4) 2026-09-30): an already-optimised
5
+ # compress is not charged (`charge.not_charged`). Additive.
6
+ #
7
+ # Read by: api (pins its billing constants to it: OperationCostCalculator,
8
+ # CreditReservationService, UserTier::overdraftLimit), the frontend's pricing
9
+ # copy, the SDKs, and tests/test_pricing_policy.py (holds the relations below).
10
+ #
11
+ # ⚠️ CONTRACT-FIRST. Two of these rules are AHEAD of api main 2a8dd8d5, and
12
+ # `api_today` under each says what the API does until it ships the change.
13
+ # A consumer reading this file for a PRICE must not assume the new rule is
14
+ # live until api's release notes say so.
15
+
16
+ schema_version: "1.1.0"
17
+
18
+ charge:
19
+ # Owner 610(4)(a) + 635(1): pay only for successful results, PER JOB.
20
+ # A job that completes is charged; a job that fails (after its retries) is
21
+ # refunded, as is cancelled work. A multi-job workflow with one failed job
22
+ # is charged for the jobs that completed.
23
+ basis: per_completed_job
24
+ refunded_on: [job_failed, workflow_cancelled]
25
+ # A workflow paused for insufficient credits has its reservation RELEASED
26
+ # at the pause and reserved again on resume (so a pause that expires
27
+ # unresumed owes nothing). api main: CreditReservationService
28
+ # releaseForPause / ResumeWorkflowCommandHandler.
29
+ on_pause: released_then_reserved_again_on_resume
30
+ # Reserved at create for the whole workflow (402 balance_exhausted if the
31
+ # caller cannot afford it), settled per job as jobs end.
32
+ reserved_at: workflow_create
33
+ # A long-form fan-out is settled at what it actually used; the unused
34
+ # part of its worst-case reservation is refunded.
35
+ fan_out_settlement: actual_usage
36
+ # Owner 645(4): an OPERATION that could not make the file smaller and
37
+ # returned the original is NOT charged; its cost is refunded. The job's
38
+ # other operations are charged as usual. Per operation, not per job. The
39
+ # FULL predicate, all of which must hold (a flag alone is not enough: the
40
+ # metrics object rides on every result):
41
+ not_charged:
42
+ - when:
43
+ operation_type: compress
44
+ status: completed
45
+ route: same_format # resolved: output_format original/absent OR equal to the input format
46
+ metric: already_optimal # metrics.already_optimal == true
47
+ not_charged_api_today: already_optimal_operations_are_charged
48
+ # api main 2a8dd8d5 refunds the WHOLE reservation when any job fails, so a
49
+ # partially_failed workflow is charged nothing (OperationResultHandler
50
+ # releaseReservationOnFailure). Changing to per-job is api's follow-up.
51
+ api_today: whole_workflow_refund_on_any_job_failure
52
+
53
+ upload:
54
+ # Owner 610(4)(b) + 635(2): uploading costs nothing. Larger files cost more
55
+ # to PROCESS, through the size surcharge below.
56
+ charged: false
57
+
58
+ size_surcharge:
59
+ # Added to each operation's weight. The size is the JOB's input (its
60
+ # primary upload), applied to every operation of the job, not each
61
+ # operation's intermediate input (api CreateWorkflowCommandHandler).
62
+ basis: job_input_bytes
63
+ # surcharge per operation:
64
+ # surcharge = min(max_credits, floor((bytes - free_bytes) / step_bytes))
65
+ # for bytes > free_bytes, else 0.
66
+ # Binary units: 52,428,800 B = 50 MiB (api OperationCostCalculator).
67
+ free_bytes: 52428800
68
+ step_bytes: 52428800
69
+ credits_per_step: 1
70
+ max_credits: 500
71
+
72
+ overdraft:
73
+ # Owner 610(4)(c) + 635(3). The limit is per account and is returned by
74
+ # GET /api/v2/credits/balance (`overdraft_limit`), which is the source for
75
+ # any caller; only the Basic value is policy.
76
+ basic_limit: 0
77
+ # Overdraft debt is repaid ONE credit for ONE credit from the next monthly
78
+ # grant, on every paid plan. There is no per-plan multiplier.
79
+ repayment_ratio: 1
80
+ # api main already repays 1:1 (CreditAccount); its unused per-plan
81
+ # multipliers (UserTier::overdraftRate) are deleted in api's follow-up.
82
+ api_today: repays_1_to_1_unused_per_plan_multiplier_present