@giveitsmaller/contracts 0.4.0 → 0.5.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 (352) hide show
  1. package/asyncapi/events.yaml +455 -41
  2. package/availability/availability.json +527 -78
  3. package/dist/asyncapi/OperationType.d.ts +5 -1
  4. package/dist/asyncapi/OperationType.js +4 -0
  5. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
  6. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
  7. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
  8. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
  9. package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
  10. package/dist/openapi/models/AuthErrorResponse.js +1 -1
  11. package/dist/openapi/models/AuthErrorType.d.ts +1 -1
  12. package/dist/openapi/models/AuthErrorType.js +1 -1
  13. package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
  14. package/dist/openapi/models/AvailabilityValue.js +1 -1
  15. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
  16. package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
  17. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
  18. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
  19. package/dist/openapi/models/CallbackEventType.d.ts +1 -1
  20. package/dist/openapi/models/CallbackEventType.js +1 -1
  21. package/dist/openapi/models/ConnectionSource.d.ts +1 -1
  22. package/dist/openapi/models/ConnectionSource.js +1 -1
  23. package/dist/openapi/models/ContactRequest.d.ts +1 -1
  24. package/dist/openapi/models/ContactRequest.js +1 -1
  25. package/dist/openapi/models/ContactSubject.d.ts +1 -1
  26. package/dist/openapi/models/ContactSubject.js +1 -1
  27. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
  28. package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
  29. package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
  30. package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
  31. package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
  32. package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
  33. package/dist/openapi/models/CreateWorkflow422Response.d.ts +3 -2
  34. package/dist/openapi/models/CreateWorkflow422Response.js +8 -1
  35. package/dist/openapi/models/CreditTransaction.d.ts +1 -1
  36. package/dist/openapi/models/CreditTransaction.js +1 -1
  37. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
  38. package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
  39. package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
  40. package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
  41. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
  42. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
  43. package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
  44. package/dist/openapi/models/CreditsUsageResponse.js +1 -1
  45. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
  46. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
  47. package/dist/openapi/models/Delivery.d.ts +1 -1
  48. package/dist/openapi/models/Delivery.js +1 -1
  49. package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
  50. package/dist/openapi/models/DeliveryOutputRef.js +1 -1
  51. package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
  52. package/dist/openapi/models/DeliveryPlan.js +1 -1
  53. package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
  54. package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
  55. package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
  56. package/dist/openapi/models/DeliveryPlanReason.js +1 -1
  57. package/dist/openapi/models/DeliverySelection.d.ts +1 -1
  58. package/dist/openapi/models/DeliverySelection.js +1 -1
  59. package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
  60. package/dist/openapi/models/ErrorEnvelope.js +1 -1
  61. package/dist/openapi/models/EstimateQuality.d.ts +1 -1
  62. package/dist/openapi/models/EstimateQuality.js +1 -1
  63. package/dist/openapi/models/EstimateRange.d.ts +1 -1
  64. package/dist/openapi/models/EstimateRange.js +1 -1
  65. package/dist/openapi/models/ExternalDestination.d.ts +1 -1
  66. package/dist/openapi/models/ExternalDestination.js +1 -1
  67. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
  68. package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
  69. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
  70. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
  71. package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
  72. package/dist/openapi/models/ExternalImportRequest.js +1 -1
  73. package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
  74. package/dist/openapi/models/ExternalImportToken.js +1 -1
  75. package/dist/openapi/models/ExternalSource.d.ts +1 -1
  76. package/dist/openapi/models/ExternalSource.js +1 -1
  77. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
  78. package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
  79. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
  80. package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
  81. package/dist/openapi/models/FeatureViolation.d.ts +1 -1
  82. package/dist/openapi/models/FeatureViolation.js +1 -1
  83. package/dist/openapi/models/JobDefinition.d.ts +17 -6
  84. package/dist/openapi/models/JobDefinition.js +1 -1
  85. package/dist/openapi/models/JobDownload.d.ts +1 -1
  86. package/dist/openapi/models/JobDownload.js +1 -1
  87. package/dist/openapi/models/JobInputV2.d.ts +16 -1
  88. package/dist/openapi/models/JobInputV2.js +1 -1
  89. package/dist/openapi/models/JobOutputSource.d.ts +1 -1
  90. package/dist/openapi/models/JobOutputSource.js +1 -1
  91. package/dist/openapi/models/JobResponse.d.ts +1 -1
  92. package/dist/openapi/models/JobResponse.js +1 -1
  93. package/dist/openapi/models/JobStatus.d.ts +1 -1
  94. package/dist/openapi/models/JobStatus.js +1 -1
  95. package/dist/openapi/models/JobType.d.ts +1 -1
  96. package/dist/openapi/models/JobType.js +1 -1
  97. package/dist/openapi/models/LivenessResponse.d.ts +1 -1
  98. package/dist/openapi/models/LivenessResponse.js +1 -1
  99. package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
  100. package/dist/openapi/models/LoginUser200Response.js +1 -1
  101. package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
  102. package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
  103. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
  104. package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
  105. package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
  106. package/dist/openapi/models/LoginUserRequest.js +1 -1
  107. package/dist/openapi/models/LogoutUser200Response.d.ts +1 -1
  108. package/dist/openapi/models/LogoutUser200Response.js +1 -1
  109. package/dist/openapi/models/MetadataResponse.d.ts +1 -1
  110. package/dist/openapi/models/MetadataResponse.js +1 -1
  111. package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
  112. package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
  113. package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
  114. package/dist/openapi/models/MetadataResponseExif.js +1 -1
  115. package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
  116. package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
  117. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
  118. package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
  119. package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
  120. package/dist/openapi/models/MimeGroupSchema.js +1 -1
  121. package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
  122. package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
  123. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
  124. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
  125. package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
  126. package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
  127. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
  128. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
  129. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
  130. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
  131. package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
  132. package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
  133. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
  134. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
  135. package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
  136. package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
  137. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
  138. package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
  139. package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
  140. package/dist/openapi/models/MultipartPartListing.js +1 -1
  141. package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
  142. package/dist/openapi/models/MultipartPresignRequest.js +1 -1
  143. package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
  144. package/dist/openapi/models/MultipartPresignResponse.js +1 -1
  145. package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
  146. package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
  147. package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
  148. package/dist/openapi/models/MultipartStatusResponse.js +1 -1
  149. package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
  150. package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
  151. package/dist/openapi/models/OperationDefinition.d.ts +1 -1
  152. package/dist/openapi/models/OperationDefinition.js +1 -1
  153. package/dist/openapi/models/OperationDownload.d.ts +1 -1
  154. package/dist/openapi/models/OperationDownload.js +1 -1
  155. package/dist/openapi/models/OperationInputModel.d.ts +4 -3
  156. package/dist/openapi/models/OperationInputModel.js +4 -3
  157. package/dist/openapi/models/OperationResponse.d.ts +1 -1
  158. package/dist/openapi/models/OperationResponse.js +1 -1
  159. package/dist/openapi/models/OperationResult.d.ts +1 -1
  160. package/dist/openapi/models/OperationResult.js +1 -1
  161. package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
  162. package/dist/openapi/models/OperationResultMetrics.js +1 -1
  163. package/dist/openapi/models/OperationSchemaDefinition.d.ts +23 -2
  164. package/dist/openapi/models/OperationSchemaDefinition.js +4 -1
  165. package/dist/openapi/models/OperationStatus.d.ts +1 -1
  166. package/dist/openapi/models/OperationStatus.js +1 -1
  167. package/dist/openapi/models/OperationType.d.ts +10 -2
  168. package/dist/openapi/models/OperationType.js +11 -3
  169. package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
  170. package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
  171. package/dist/openapi/models/OptionSchema.d.ts +1 -1
  172. package/dist/openapi/models/OptionSchema.js +1 -1
  173. package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +47 -0
  174. package/dist/openapi/models/PerRoleCardinalityEntry.js +47 -0
  175. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
  176. package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
  177. package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
  178. package/dist/openapi/models/PresignedUrlPart.js +1 -1
  179. package/dist/openapi/models/ProbePendingResponse.d.ts +171 -0
  180. package/dist/openapi/models/ProbePendingResponse.js +75 -0
  181. package/dist/openapi/models/ProcessingClass.d.ts +1 -1
  182. package/dist/openapi/models/ProcessingClass.js +1 -1
  183. package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
  184. package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
  185. package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
  186. package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
  187. package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
  188. package/dist/openapi/models/ProcessingClassHint.js +1 -1
  189. package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
  190. package/dist/openapi/models/ProcessingClassReason.js +1 -1
  191. package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
  192. package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
  193. package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
  194. package/dist/openapi/models/ProcessingPlan.js +1 -1
  195. package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
  196. package/dist/openapi/models/ProcessingPlanJob.js +1 -1
  197. package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
  198. package/dist/openapi/models/ReadinessResponse.js +1 -1
  199. package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
  200. package/dist/openapi/models/ResponseEnvelope.js +1 -1
  201. package/dist/openapi/models/RetryResponse.d.ts +1 -1
  202. package/dist/openapi/models/RetryResponse.js +1 -1
  203. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
  204. package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
  205. package/dist/openapi/models/SseEventType.d.ts +1 -1
  206. package/dist/openapi/models/SseEventType.js +1 -1
  207. package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
  208. package/dist/openapi/models/SseJobCompletedData.js +1 -1
  209. package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
  210. package/dist/openapi/models/SseJobFailedData.js +1 -1
  211. package/dist/openapi/models/SseMultiOutputCompletion.d.ts +60 -0
  212. package/dist/openapi/models/SseMultiOutputCompletion.js +51 -0
  213. package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +38 -0
  214. package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +43 -0
  215. package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +75 -0
  216. package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +61 -0
  217. package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +74 -0
  218. package/dist/openapi/models/SseMultiOutputResultEntry.js +51 -0
  219. package/dist/openapi/models/SseOperationCompletedData.d.ts +4 -4
  220. package/dist/openapi/models/SseOperationCompletedData.js +4 -4
  221. package/dist/openapi/models/SseOperationCompletionResult.d.ts +60 -0
  222. package/dist/openapi/models/SseOperationCompletionResult.js +47 -0
  223. package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
  224. package/dist/openapi/models/SseOperationFailedData.js +1 -1
  225. package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
  226. package/dist/openapi/models/SseOperationProgressData.js +1 -1
  227. package/dist/openapi/models/SseSingleOutputCompletion.d.ts +72 -0
  228. package/dist/openapi/models/SseSingleOutputCompletion.js +62 -0
  229. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
  230. package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
  231. package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
  232. package/dist/openapi/models/TierRestrictionKind.js +1 -1
  233. package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
  234. package/dist/openapi/models/TierRestrictionResponse.js +1 -1
  235. package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
  236. package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
  237. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
  238. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
  239. package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
  240. package/dist/openapi/models/UploadFile403Response.js +1 -1
  241. package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
  242. package/dist/openapi/models/UploadFile422Response.js +1 -1
  243. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
  244. package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
  245. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
  246. package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
  247. package/dist/openapi/models/UploadProbeResponse.d.ts +4 -2
  248. package/dist/openapi/models/UploadProbeResponse.js +1 -1
  249. package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
  250. package/dist/openapi/models/UploadProbeStatus.js +1 -1
  251. package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +56 -0
  252. package/dist/openapi/models/UploadProbeSuccessEnvelope.js +54 -0
  253. package/dist/openapi/models/UploadResponse.d.ts +1 -1
  254. package/dist/openapi/models/UploadResponse.js +1 -1
  255. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
  256. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
  257. package/dist/openapi/models/UploadSource.d.ts +1 -1
  258. package/dist/openapi/models/UploadSource.js +1 -1
  259. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
  260. package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
  261. package/dist/openapi/models/UploadThresholds.d.ts +1 -1
  262. package/dist/openapi/models/UploadThresholds.js +1 -1
  263. package/dist/openapi/models/UserTier.d.ts +1 -1
  264. package/dist/openapi/models/UserTier.js +1 -1
  265. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
  266. package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
  267. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
  268. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
  269. package/dist/openapi/models/WarningType.d.ts +1 -1
  270. package/dist/openapi/models/WarningType.js +1 -1
  271. package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
  272. package/dist/openapi/models/WebhookOperationContext.js +1 -1
  273. package/dist/openapi/models/WebhookPayload.d.ts +1 -1
  274. package/dist/openapi/models/WebhookPayload.js +1 -1
  275. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
  276. package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
  277. package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
  278. package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
  279. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
  280. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
  281. package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
  282. package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
  283. package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
  284. package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
  285. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
  286. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
  287. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
  288. package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
  289. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
  290. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
  291. package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
  292. package/dist/openapi/models/WorkflowEdge.js +1 -1
  293. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
  294. package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
  295. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
  296. package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
  297. package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
  298. package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
  299. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
  300. package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
  301. package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
  302. package/dist/openapi/models/WorkflowProcessing.js +1 -1
  303. package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
  304. package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
  305. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
  306. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
  307. package/dist/openapi/models/WorkflowSource.d.ts +1 -1
  308. package/dist/openapi/models/WorkflowSource.js +1 -1
  309. package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
  310. package/dist/openapi/models/WorkflowStatus.js +1 -1
  311. package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
  312. package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
  313. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
  314. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
  315. package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
  316. package/dist/openapi/models/WorkflowWarning.js +1 -1
  317. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
  318. package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
  319. package/dist/openapi/models/index.d.ts +9 -0
  320. package/dist/openapi/models/index.js +9 -0
  321. package/dist/openapi/runtime.d.ts +1 -1
  322. package/dist/openapi/runtime.js +1 -1
  323. package/dist/operations/audio_to_video.d.ts +20 -0
  324. package/dist/operations/audio_to_video.js +17 -0
  325. package/dist/operations/audio_to_video.metadata.d.ts +2 -0
  326. package/dist/operations/audio_to_video.metadata.js +29 -0
  327. package/dist/operations/image_watermark.d.ts +0 -18
  328. package/dist/operations/image_watermark.js +0 -12
  329. package/dist/operations/image_watermark.metadata.js +0 -41
  330. package/dist/operations/index.d.ts +8 -0
  331. package/dist/operations/index.js +8 -0
  332. package/dist/operations/metadata-types.d.ts +17 -0
  333. package/dist/operations/split.d.ts +50 -0
  334. package/dist/operations/split.js +34 -0
  335. package/dist/operations/split.metadata.d.ts +2 -0
  336. package/dist/operations/split.metadata.js +103 -0
  337. package/dist/operations/video_text_watermark.d.ts +31 -0
  338. package/dist/operations/video_text_watermark.js +22 -0
  339. package/dist/operations/video_text_watermark.metadata.d.ts +2 -0
  340. package/dist/operations/video_text_watermark.metadata.js +65 -0
  341. package/dist/operations/video_watermark.d.ts +18 -0
  342. package/dist/operations/video_watermark.js +13 -0
  343. package/dist/operations/video_watermark.metadata.d.ts +2 -0
  344. package/dist/operations/video_watermark.metadata.js +52 -0
  345. package/openapi/api.yaml +523 -72
  346. package/operations/schemas/audio_to_video.yaml +122 -0
  347. package/operations/schemas/image_watermark.yaml +15 -103
  348. package/operations/schemas/split.yaml +309 -0
  349. package/operations/schemas/thumbnail.yaml +7 -1
  350. package/operations/schemas/video_text_watermark.yaml +174 -0
  351. package/operations/schemas/video_watermark.yaml +136 -0
  352. package/package.json +8 -3
@@ -0,0 +1,122 @@
1
+ schema_version: "2.0.0"
2
+
3
+ operation:
4
+ type: audio_to_video
5
+ availability: planned
6
+ description: |
7
+ Produce a video from an audio input plus an OPTIONAL still image
8
+ overlay. Use cases: podcast → YouTube uploads, audio-only tracks
9
+ that need a video container for platforms requiring it, branded
10
+ audio releases with a static cover image.
11
+
12
+ **Role asymmetry.** First role-based operation on the contract
13
+ with an OPTIONAL role — REQUIRED `base` (audio source) +
14
+ OPTIONAL `overlay` (still image, 0..1). When `overlay` is
15
+ omitted, the video uses a solid `background_color`. The
16
+ machine-readable cardinality lives in `per_role_cardinality`
17
+ on this schema (per ADR-0015). API consumption site:
18
+ `OperationInputRoleValidator` (rule table) consumed by
19
+ `SchemaValidationService.php` in `compression_api`.
20
+
21
+ **Input vs output asymmetry.** The single `mime_groups.audio`
22
+ block keys the INPUT MIME family (the `base` role input is
23
+ audio). The OUTPUT is always video — `output_format` controls
24
+ the container; `mime_groups` is NOT the output type. Mirrors
25
+ the `audio_overlay.video` group pattern (input-keyed).
26
+
27
+ Re-encode required (audio → video composition always re-encodes).
28
+ Lower framerate + FFmpeg `-tune stillimage` keeps file size
29
+ tiny when the overlay is a still image (the common case).
30
+
31
+ Per ticket [`SlluxMBN`](https://trello.com/c/SlluxMBN) +
32
+ ADR-0015. `availability: planned` until the cross-repo Lambda
33
+ support ships; the API rejects workflow-create with
34
+ `feature_not_available` (422) until then.
35
+
36
+ default: false
37
+ input_model: multi
38
+ min_inputs: 1
39
+ max_inputs: 2
40
+
41
+ # Per-role input-count constraints — first role-based op with
42
+ # an OPTIONAL role. See ADR-0015 for the vocab primitive.
43
+ # Arithmetic-consistency rule (CI-checked):
44
+ # - sum(role.min) == min_inputs (1 + 0 = 1)
45
+ # - sum(role.max) == max_inputs (1 + 1 = 2)
46
+ per_role_cardinality:
47
+ base:
48
+ min: 1
49
+ max: 1
50
+ overlay:
51
+ min: 0
52
+ max: 1
53
+
54
+ mime_groups:
55
+ audio:
56
+ # INPUT MIME family for the `base` role. Output is video via
57
+ # `output_format` — NOT determined by this mime_group key.
58
+ mimes:
59
+ - audio/mpeg
60
+ - audio/aac
61
+ - audio/wav
62
+ - audio/x-wav
63
+ - audio/flac
64
+ - audio/ogg
65
+ - audio/opus
66
+ - audio/x-m4a
67
+ options:
68
+ output_resolution:
69
+ type: enum
70
+ values: [hd_720p, fhd_1080p, sd_480p]
71
+ default: hd_720p
72
+ description: |
73
+ Output video resolution. `hd_720p` = 1280×720 (default),
74
+ `fhd_1080p` = 1920×1080, `sd_480p` = 854×480. Choose
75
+ lower for small file size; higher when the overlay image
76
+ quality warrants it.
77
+ background_color:
78
+ type: string
79
+ default: "#000000"
80
+ description: |
81
+ Hex `#RRGGBB` solid background colour. Used only when
82
+ `overlay` is omitted (no image input). When an `overlay`
83
+ image is provided, the background colour is invisible
84
+ behind the image (subject to `image_fit`).
85
+ image_fit:
86
+ type: enum
87
+ values: [contain, cover, stretch]
88
+ default: contain
89
+ description: |
90
+ How to fit the overlay image into the output frame.
91
+ `contain` = letterbox (preserve aspect ratio, may show
92
+ background); `cover` = crop (fill the frame, may crop
93
+ the image); `stretch` = distort to fit (preserves no
94
+ aspect ratio). Default `contain` preserves the image
95
+ aesthetic.
96
+ framerate:
97
+ type: integer
98
+ min: 1
99
+ max: 60
100
+ default: 2
101
+ description: |
102
+ Output video framerate. Default `2` fps — combined with
103
+ FFmpeg `-tune stillimage`, keeps the file size tiny for
104
+ the common case of a single still overlay. Raise for
105
+ animated overlays (not supported in V1 — overlay must be
106
+ a still image) or platform requirements (e.g. YouTube
107
+ recommends 24+ fps; some platforms accept lower).
108
+ output_format:
109
+ type: enum
110
+ values: [mp4]
111
+ default: mp4
112
+ description: |
113
+ Output container format. V1 supports `mp4` only. Future
114
+ additions (webm, mov) await Lambda follow-up.
115
+
116
+ # NOTE: role-MIME constraint (base MUST be audio, overlay MUST be
117
+ # image) is documented in prose only for V1. ADR-0015 records this
118
+ # as future-work — a `per_role_mime_compat` vocab primitive can be
119
+ # added when a second role-based op needs the asymmetry (today
120
+ # only audio_to_video has it). The API edge validator enforces
121
+ # the role→MIME constraint at workflow-create time per the prose
122
+ # contract.
@@ -10,11 +10,15 @@ operation:
10
10
  per WorkflowSource (ticket I10).
11
11
 
12
12
  Stable today for static-image bases (image/jpeg, image/png,
13
- image/webp); animated GIF and video bases are advertised as
14
- `planned` via parallel mime_groups (`image_gif`, `video`) — schema
15
- is contract-defined, dispatch returns `feature_not_available` (422)
16
- until Lambda support ships. Per Tension 1 (ADR-0001) +
17
- plan v5 §F4 round 6.
13
+ image/webp); animated GIF bases are advertised as `planned` via
14
+ the parallel `image_gif` mime_group — schema is contract-defined,
15
+ dispatch returns `feature_not_available` (422) until Lambda
16
+ support ships. Per Tension 1 (ADR-0001) + plan v5 §F4 round 6.
17
+
18
+ **Video bases are NOT supported by `image_watermark`.** Use the
19
+ dedicated `video_watermark` operation
20
+ (`schemas/operations/video_watermark.yaml`) which routes through
21
+ FFmpeg overlay + re-encode. Per ADR-0013.
18
22
 
19
23
  **Audio is explicitly NOT supported.** For audio overlay (DJ tags,
20
24
  podcast intros, jingles), use the `audio_overlay` operation
@@ -22,7 +26,7 @@ operation:
22
26
  `availability: planned`).
23
27
 
24
28
  Source capped at 25 megapixels for image bases (V1 watermark
25
- precedent retained); per-frame caps for GIF / video bases will be
29
+ precedent retained); per-frame caps for animated GIF bases will be
26
30
  defined when the corresponding Lambda support ships.
27
31
  Per ADR-0004 §"V2 JobDefinition" + plan v5 §F1.
28
32
  default: false
@@ -188,100 +192,8 @@ operation:
188
192
  width. Aspect ratio preserved. Omit to use the original
189
193
  overlay size.
190
194
 
191
- # Video base single planned block covering common web video
192
- # containers. Per-frame megapixel cap, codec acceptance and frame-
193
- # rate constraints will be defined when the video-watermark Lambda
194
- # ships (follow-up cross-repo ticket; tracked in plan v5 §F4
195
- # round 6).
196
- video:
197
- availability: planned
198
- mimes:
199
- - video/mp4
200
- - video/webm
201
- processing_class:
202
- # F8 long-form tier (per ticket I15-CONS Decisions §2). Both
203
- # classes `planned` because the video mime_group itself is
204
- # `planned` at the group level. Forward-compatible with future
205
- # Lambda activation.
206
- short_form:
207
- availability: planned
208
- constraints:
209
- max_input_duration: "PT5M"
210
- max_input_size_bytes: 524288000
211
- max_output_size_bytes: 524288000
212
- long_form:
213
- # Stays planned (CON-1 flips only compress.video.long_form +
214
- # merge.video.long_form_re_encode). Per-tier caps per ADR-0011 —
215
- # advertised shape; availability gates execution off (422).
216
- availability: planned
217
- required_tier: pro
218
- constraints: # baseline = Pro
219
- max_input_duration: "PT12H"
220
- max_input_size_bytes: 5000000000 # 5 GB (Pro)
221
- max_output_size_bytes: 5000000000
222
- per_tier_constraints:
223
- enterprise:
224
- max_input_size_bytes: 120000000000 # 120 GB (Enterprise enforced ceiling)
225
- max_output_size_bytes: 120000000000
226
- options:
227
- anchor:
228
- type: enum
229
- values:
230
- - top_left
231
- - top_center
232
- - top_right
233
- - center_left
234
- - center
235
- - center_right
236
- - bottom_left
237
- - bottom_center
238
- - bottom_right
239
- default: bottom_right
240
- description: |
241
- 9-grid anchor position on each video frame. Same semantics
242
- as the `image` group.
243
-
244
- margin_x:
245
- type: string
246
- pattern: '^\d+(\.\d+)?(px|%)$'
247
- default: "0px"
248
- description: |
249
- Horizontal offset from the anchor in pixels or percentage of
250
- video frame width. Anchor-relative; positive moves toward
251
- the frame centre.
252
-
253
- **`anchor: center` exception.** Same rejection rule as the
254
- `image` mime_group — non-zero `margin_x` with
255
- `anchor: center` is rejected by the API at workflow-create
256
- time as `invalid_options` (HTTP 422).
257
-
258
- margin_y:
259
- type: string
260
- pattern: '^\d+(\.\d+)?(px|%)$'
261
- default: "0px"
262
- description: |
263
- Vertical offset from the anchor in pixels or percentage of
264
- video frame height. Anchor-relative; positive moves toward
265
- the frame centre.
266
-
267
- **`anchor: center` exception.** Same rejection rule as the
268
- `image` mime_group — non-zero `margin_y` with
269
- `anchor: center` is rejected by the API at workflow-create
270
- time as `invalid_options` (HTTP 422).
271
-
272
- opacity:
273
- type: float
274
- min: 0.0
275
- max: 1.0
276
- default: 0.5
277
- description: |
278
- Overlay opacity (0 = fully transparent, 1 = fully opaque).
279
- Clamped to range.
280
-
281
- overlay_width:
282
- type: string
283
- pattern: '^\d+(\.\d+)?(px|%)$'
284
- description: |
285
- Optional overlay width as pixels or percentage of video
286
- frame width. Aspect ratio preserved. Omit to use the
287
- original overlay size.
195
+ # Video base mime_group REMOVED per ADR-0013 video watermarking
196
+ # is now owned by the dedicated `video_watermark` operation
197
+ # (`schemas/operations/video_watermark.yaml`). The previous
198
+ # `availability: planned` advertising had no consumers; the
199
+ # dedicated operation is the canonical landing site.
@@ -0,0 +1,309 @@
1
+ schema_version: "2.0.0"
2
+
3
+ operation:
4
+ type: split
5
+ availability: planned
6
+ description: |
7
+ Fan one input file into N outputs across GIF, PDF, audio, and
8
+ video MIME families. Single-input — one input file per job, fanned
9
+ into N outputs per the per-mime-group catalog. Mirrors the
10
+ `merge` / `convert` catalog-split-by-mime-group pattern.
11
+
12
+ **Three modes** (audio + video; the mode discriminator gates which
13
+ of the three options applies per the `depends_on` rules in this
14
+ schema):
15
+ - `interval`: split every N numeric-seconds.
16
+ - `count`: split into N equal-duration pieces (integer 2..=200).
17
+ - `cut_points`: explicit cut points in numeric-seconds (strictly
18
+ increasing, no duplicates, each > 0 and < probed duration).
19
+
20
+ **GIF + PDF use range-based selection** instead of three modes:
21
+ - GIF (`image_gif`): `frame_range` REQUIRED + `output_format`
22
+ enum {png,webp,jpg}.
23
+ - PDF (`document_pdf`): `page_range` OR `page_groups` (mutually
24
+ exclusive per `depends_on`).
25
+
26
+ **Wire format**: numeric seconds (floats allowed for sub-second
27
+ precision). NOT ISO 8601 duration strings. Matches FFmpeg /
28
+ Cloudinary / Shotstack / AWS MediaConvert conventions.
29
+
30
+ **200-output hard cap** per ADR-0009 §D5
31
+ (`OperationResult.outputs[].maxItems: 200`). Preflight rejects
32
+ requests exceeding this BEFORE work as `invalid_options` (422).
33
+ Cap math by mode:
34
+ - `interval`: `ceil(probed_duration / interval) <= 200`
35
+ - `count`: enforced by the option's `min: 2 max: 200` range
36
+ - `cut_points`: `cut_points.len() + 1 <= 200`
37
+ - PDF: resolved page count after expansion `<= 200`
38
+ (cross-ref [`WgCqnMRa`](https://trello.com/c/WgCqnMRa))
39
+ - GIF: resolved frame count after expansion `<= 200`
40
+
41
+ **Output naming**: 3-digit zero-padded — `output-001` ..
42
+ `output-200`. Matches the convert PDF→N precedent.
43
+
44
+ **Output envelope binding** (per ADR-0014 + ADR-0009 §D2):
45
+ - `image_gif`: `PositionIndexed` (frame stream-position 0-based
46
+ ordinal)
47
+ - `document_pdf`: `PageIndexed` (1-based gapless page index)
48
+ - `audio`: `PositionIndexed` (cut stream-position ordinal)
49
+ - `video`: `PositionIndexed` (cut stream-position ordinal)
50
+
51
+ **`precision` flag** (audio + video only): `fast` (default) =
52
+ packet-boundary approximate cuts; `exact` = re-encode-aligned
53
+ precise cuts. Mime_group scoping is the gate — precision does
54
+ NOT apply to GIF or PDF (frame extraction is exact and PDF page
55
+ selection is exact by definition).
56
+
57
+ **Long-form video** routes to a separate `split-video-fargate`
58
+ Lambda (same `split` OperationType, different worker; routing
59
+ via `processing_class`). No schema-side discriminator beyond MIME
60
+ detection + `processing_class`.
61
+
62
+ `availability: planned` until the cross-repo Lambda support ships
63
+ ([`vKI0CFDu`](https://trello.com/c/vKI0CFDu) + lambdas L1).
64
+ Dispatch returns `feature_not_available` (422) until then.
65
+
66
+ Per ADR-0014.
67
+ default: false
68
+ input_model: single
69
+
70
+ features:
71
+ silence_mode_audio:
72
+ availability: planned
73
+ description: |
74
+ Silence-detect cut mode for audio (`mode: silence` —
75
+ Cinavia/Resemble territory, server-side silence detection).
76
+ OUT of V1 (Lambda support not yet shipped); declared as a
77
+ future-work feature here so SDK consumers see the gate.
78
+ Picked up as a separate post-launch ticket.
79
+
80
+ mime_groups:
81
+ # Animated GIF base — parallel mime_group naming follows the
82
+ # `image_gif` precedent established by `image_watermark.image_gif`.
83
+ image_gif:
84
+ mimes:
85
+ - image/gif
86
+ options:
87
+ frame_range:
88
+ type: string
89
+ required: true
90
+ pattern: '^\d+-\d+$'
91
+ description: |
92
+ Frame range as `start-end` integer pair (e.g. "1-100").
93
+ REQUIRED in V1 — no silent default. Without explicit
94
+ range, a 30-second GIF at 24 fps = 720 frames would blow
95
+ the 200-output cap on every input. Both start and end are
96
+ 1-based, inclusive. Resolved frame count MUST be <= 200
97
+ (`invalid_options` 422 if exceeded).
98
+
99
+ output_format:
100
+ type: enum
101
+ values: [png, webp, jpg]
102
+ default: png
103
+ description: |
104
+ Output image format for each extracted frame. Aspect ratio
105
+ and dimensions preserved from the source GIF.
106
+
107
+ # PDF base — page-split via qpdf or pdftk equivalent.
108
+ document_pdf:
109
+ mimes:
110
+ - application/pdf
111
+ options:
112
+ mode:
113
+ type: enum
114
+ values: [page_range, page_groups]
115
+ default: page_range
116
+ description: |
117
+ PDF split strategy:
118
+ - `page_range`: select pages via a range expression.
119
+ - `page_groups`: group N pages per output.
120
+
121
+ page_range:
122
+ type: string
123
+ pattern: '^\d+(-\d+)?(,\d+(-\d+)?)*$'
124
+ required: true
125
+ depends_on: { mode: page_range }
126
+ description: |
127
+ Page-range expression (e.g. "1-5", "1,3,5-7", "10-20").
128
+ 1-based inclusive. Required when `mode: page_range`.
129
+ Resolved page count MUST be <= 200 (`invalid_options`
130
+ 422 if exceeded — cross-ref
131
+ [`WgCqnMRa`](https://trello.com/c/WgCqnMRa)).
132
+
133
+ page_groups:
134
+ type: integer
135
+ min: 2
136
+ max: 200
137
+ required: true
138
+ depends_on: { mode: page_groups }
139
+ description: |
140
+ Group N pages per output (e.g. `page_groups: 5` on a
141
+ 50-page PDF produces 10 outputs of 5 pages each).
142
+ Required when `mode: page_groups`. The page-count cap
143
+ applies to the resolved group count: `ceil(total_pages /
144
+ page_groups) <= 200`.
145
+
146
+ # Audio base — three modes + precision flag.
147
+ audio:
148
+ mimes:
149
+ - audio/mpeg
150
+ - audio/aac
151
+ - audio/ogg
152
+ - audio/flac
153
+ - audio/wav
154
+ - audio/mp4
155
+ options:
156
+ mode:
157
+ type: enum
158
+ values: [interval, count, cut_points]
159
+ default: interval
160
+ description: |
161
+ Split strategy:
162
+ - `interval`: cut every `interval` seconds.
163
+ - `count`: cut into `count` equal-duration pieces.
164
+ - `cut_points`: cut at explicit timestamps.
165
+
166
+ interval:
167
+ type: float
168
+ min: 0.001
169
+ required: true
170
+ depends_on: { mode: interval }
171
+ description: |
172
+ Cut interval in numeric seconds (float, sub-second
173
+ allowed). `ceil(probed_duration / interval) <= 200`
174
+ preflight rule applies. Only valid when `mode: interval`.
175
+
176
+ count:
177
+ type: integer
178
+ min: 2
179
+ max: 200
180
+ required: true
181
+ depends_on: { mode: count }
182
+ description: |
183
+ Number of equal-duration output pieces. Range 2..=200
184
+ enforced declaratively (1 = no-op, rejected;
185
+ cap = 200-output ceiling). Only valid when `mode: count`.
186
+
187
+ cut_points:
188
+ type: array
189
+ items:
190
+ type: number
191
+ exclusiveMinimum: 0
192
+ minItems: 1
193
+ maxItems: 199
194
+ uniqueItems: true
195
+ required: true
196
+ depends_on: { mode: cut_points }
197
+ description: |
198
+ Cut points in numeric seconds (float, sub-second allowed).
199
+ Array entries; NOT a comma-separated string. MUST be
200
+ strictly increasing (preflight-validated against probe);
201
+ each entry > 0 and < probed duration. `uniqueItems: true`
202
+ catches accidental duplicates at the OpenAPI layer; strict
203
+ monotonicity and the < probed-duration bound are
204
+ preflight-checked at workflow-create. Output count =
205
+ `cut_points.length + 1`; `maxItems: 199` expresses the
206
+ 200-output cap declaratively. Only valid when
207
+ `mode: cut_points`.
208
+
209
+ precision:
210
+ type: enum
211
+ values: [fast, exact]
212
+ default: fast
213
+ description: |
214
+ Cut precision. Under `fast`, audio cuts are
215
+ packet-boundary approximate (drift bounded by codec
216
+ packet size — typically <= 23ms for AAC, <= 26ms for
217
+ MP3). Under `exact`, the Lambda re-encodes to align cuts
218
+ precisely at the requested timestamps (slower, larger
219
+ output, but sample-accurate). Avoid "keyframe" language
220
+ — that's video-only; audio drift is packet-boundary.
221
+
222
+ # Video base — same three modes + precision + processing_class.
223
+ # Long-form routes to `split-video-fargate` (same OperationType,
224
+ # different worker per `processing_class`).
225
+ video:
226
+ mimes:
227
+ - video/mp4
228
+ - video/webm
229
+ processing_class:
230
+ short_form:
231
+ availability: planned
232
+ constraints:
233
+ max_input_duration: "PT5M"
234
+ max_input_size_bytes: 524288000
235
+ max_output_size_bytes: 524288000
236
+ long_form:
237
+ # Routes to split-video-fargate worker per ADR-0014.
238
+ availability: planned
239
+ required_tier: pro
240
+ constraints: # baseline = Pro
241
+ max_input_duration: "PT12H"
242
+ max_input_size_bytes: 5000000000 # 5 GB (Pro)
243
+ max_output_size_bytes: 5000000000
244
+ per_tier_constraints:
245
+ enterprise:
246
+ max_input_size_bytes: 120000000000 # 120 GB
247
+ max_output_size_bytes: 120000000000
248
+ options:
249
+ mode:
250
+ type: enum
251
+ values: [interval, count, cut_points]
252
+ default: interval
253
+ description: |
254
+ Split strategy:
255
+ - `interval`: cut every `interval` seconds.
256
+ - `count`: cut into `count` equal-duration pieces.
257
+ - `cut_points`: cut at explicit timestamps.
258
+
259
+ interval:
260
+ type: float
261
+ min: 0.001
262
+ required: true
263
+ depends_on: { mode: interval }
264
+ description: |
265
+ Cut interval in numeric seconds. `ceil(probed_duration /
266
+ interval) <= 200`. Only valid when `mode: interval`.
267
+
268
+ count:
269
+ type: integer
270
+ min: 2
271
+ max: 200
272
+ required: true
273
+ depends_on: { mode: count }
274
+ description: |
275
+ Number of equal-duration output pieces. Range 2..=200.
276
+ Only valid when `mode: count`.
277
+
278
+ cut_points:
279
+ type: array
280
+ items:
281
+ type: number
282
+ exclusiveMinimum: 0
283
+ minItems: 1
284
+ maxItems: 199
285
+ uniqueItems: true
286
+ required: true
287
+ depends_on: { mode: cut_points }
288
+ description: |
289
+ Cut points in numeric seconds (float, sub-second allowed).
290
+ Array entries; NOT a comma-separated string. Strictly
291
+ increasing (preflight-validated against probe); each entry
292
+ > 0 and < probed duration. `uniqueItems: true` catches
293
+ accidental duplicates at the OpenAPI layer; strict
294
+ monotonicity and the < probed-duration bound are
295
+ preflight-checked at workflow-create. Output count =
296
+ `cut_points.length + 1`; `maxItems: 199` expresses the
297
+ 200-output cap declaratively. Only valid when
298
+ `mode: cut_points`.
299
+
300
+ precision:
301
+ type: enum
302
+ values: [fast, exact]
303
+ default: fast
304
+ description: |
305
+ Cut precision. Under `fast`, video cuts are keyframe-
306
+ aligned (drift bounded by GOP size — typically up to 1-2
307
+ seconds depending on encoder). Under `exact`, the Lambda
308
+ re-encodes to align cuts precisely at the requested
309
+ timestamps (slower, larger output, but frame-accurate).
@@ -117,7 +117,13 @@ operation:
117
117
  min: 1
118
118
  default: 1
119
119
  depends_on: { source: page }
120
- description: "Page/sheet/slide number to render"
120
+ description: >-
121
+ 1-based index of the printed page to render, after print-layout
122
+ pagination is applied. For office formats this is the page in the
123
+ LibreOffice PDF export — NOT a 1:1 sheet/slide index: a spreadsheet
124
+ sheet may span multiple printed pages and multi-sheet workbooks
125
+ paginate their sheets in order. For PDF inputs it is the PDF page
126
+ number directly.
121
127
  width:
122
128
  type: integer
123
129
  min: 1