@giveitsmaller/contracts 0.2.3 → 0.3.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 (369) hide show
  1. package/asyncapi/events.yaml +1777 -172
  2. package/availability/availability.json +2403 -0
  3. package/dist/asyncapi/AnonymousSchema_13.d.ts +6 -0
  4. package/dist/asyncapi/AnonymousSchema_13.js +7 -0
  5. package/dist/asyncapi/AnonymousSchema_152.d.ts +5 -0
  6. package/dist/asyncapi/AnonymousSchema_152.js +6 -0
  7. package/dist/asyncapi/Failure.d.ts +25 -0
  8. package/dist/asyncapi/Failure.js +1 -0
  9. package/dist/asyncapi/JobInputRole.d.ts +6 -0
  10. package/dist/asyncapi/JobInputRole.js +7 -0
  11. package/dist/asyncapi/MergeOutputType.d.ts +1 -3
  12. package/dist/asyncapi/MergeOutputType.js +0 -2
  13. package/dist/asyncapi/MultiOutputCompletion.d.ts +25 -0
  14. package/dist/asyncapi/MultiOutputCompletion.js +1 -0
  15. package/dist/asyncapi/NotificationsOperationsQueue.d.ts +4 -2
  16. package/dist/asyncapi/OperationMetrics.d.ts +3 -0
  17. package/dist/asyncapi/OperationProgress.d.ts +2 -0
  18. package/dist/asyncapi/OperationResult.d.ts +4 -19
  19. package/dist/asyncapi/OperationType.d.ts +6 -6
  20. package/dist/asyncapi/OperationType.js +5 -5
  21. package/dist/asyncapi/PageIndexed.d.ts +8 -0
  22. package/dist/asyncapi/PageIndexed.js +1 -0
  23. package/dist/asyncapi/PositionIndexed.d.ts +8 -0
  24. package/dist/asyncapi/PositionIndexed.js +1 -0
  25. package/dist/asyncapi/ProgressStatus.d.ts +3 -0
  26. package/dist/asyncapi/ProgressStatus.js +3 -0
  27. package/dist/asyncapi/ReEncodeDecision.d.ts +5 -0
  28. package/dist/asyncapi/ReEncodeDecision.js +6 -0
  29. package/dist/asyncapi/SingleOutputCompletion.d.ts +25 -0
  30. package/dist/asyncapi/SingleOutputCompletion.js +1 -0
  31. package/dist/asyncapi/SourceEntry.d.ts +2 -1
  32. package/dist/asyncapi/Unindexed.d.ts +8 -0
  33. package/dist/asyncapi/Unindexed.js +1 -0
  34. package/dist/asyncapi/UploadProbeCompletion.d.ts +16 -0
  35. package/dist/asyncapi/UploadProbeCompletion.js +1 -0
  36. package/dist/asyncapi/UploadProbeMediaMetadata.d.ts +18 -0
  37. package/dist/asyncapi/UploadProbeMediaMetadata.js +1 -0
  38. package/dist/asyncapi/UploadProbeProcessingClass.d.ts +6 -0
  39. package/dist/asyncapi/UploadProbeProcessingClass.js +7 -0
  40. package/dist/asyncapi/UploadProbeRequest.d.ts +10 -0
  41. package/dist/asyncapi/UploadProbeRequest.js +1 -0
  42. package/dist/asyncapi/UploadProbeStatus.d.ts +7 -0
  43. package/dist/asyncapi/UploadProbeStatus.js +8 -0
  44. package/dist/asyncapi/index.d.ts +13 -0
  45. package/dist/asyncapi/index.js +4 -0
  46. package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +64 -0
  47. package/dist/openapi/models/AudioWatermarkDecodeRequest.js +53 -0
  48. package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +80 -0
  49. package/dist/openapi/models/AudioWatermarkDecodeResponse.js +64 -0
  50. package/dist/openapi/models/AuthErrorResponse.d.ts +116 -0
  51. package/dist/openapi/models/AuthErrorResponse.js +66 -0
  52. package/dist/openapi/models/AuthErrorType.d.ts +73 -0
  53. package/dist/openapi/models/AuthErrorType.js +91 -0
  54. package/dist/openapi/models/AvailabilityValue.d.ts +43 -0
  55. package/dist/openapi/models/AvailabilityValue.js +61 -0
  56. package/dist/openapi/models/BalanceExhaustedResponse.d.ts +157 -0
  57. package/dist/openapi/models/BalanceExhaustedResponse.js +86 -0
  58. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +38 -0
  59. package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +43 -0
  60. package/dist/openapi/models/CallbackEventType.d.ts +2 -2
  61. package/dist/openapi/models/CallbackEventType.js +2 -2
  62. package/dist/openapi/models/ConnectionSource.d.ts +64 -0
  63. package/dist/openapi/models/ConnectionSource.js +57 -0
  64. package/dist/openapi/models/ContactRequest.d.ts +2 -2
  65. package/dist/openapi/models/ContactRequest.js +2 -2
  66. package/dist/openapi/models/ContactSubject.d.ts +2 -2
  67. package/dist/openapi/models/ContactSubject.js +2 -2
  68. package/dist/openapi/models/ContactValidationErrorResponse.d.ts +2 -2
  69. package/dist/openapi/models/ContactValidationErrorResponse.js +2 -2
  70. package/dist/openapi/models/CreateExternalImport403Response.d.ts +24 -0
  71. package/dist/openapi/models/CreateExternalImport403Response.js +58 -0
  72. package/dist/openapi/models/CreateWorkflow422Response.d.ts +23 -0
  73. package/dist/openapi/models/CreateWorkflow422Response.js +51 -0
  74. package/dist/openapi/models/CreditTransaction.d.ts +186 -0
  75. package/dist/openapi/models/CreditTransaction.js +100 -0
  76. package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +46 -0
  77. package/dist/openapi/models/CreditTransactionSourceBucket.js +64 -0
  78. package/dist/openapi/models/CreditsBalanceResponse.d.ts +84 -0
  79. package/dist/openapi/models/CreditsBalanceResponse.js +68 -0
  80. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +46 -0
  81. package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +54 -0
  82. package/dist/openapi/models/CreditsUsageResponse.d.ts +51 -0
  83. package/dist/openapi/models/CreditsUsageResponse.js +56 -0
  84. package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +46 -0
  85. package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +54 -0
  86. package/dist/openapi/models/Delivery.d.ts +98 -0
  87. package/dist/openapi/models/Delivery.js +65 -0
  88. package/dist/openapi/models/DeliveryOutputRef.d.ts +44 -0
  89. package/dist/openapi/models/DeliveryOutputRef.js +45 -0
  90. package/dist/openapi/models/DeliveryPlan.d.ts +77 -0
  91. package/dist/openapi/models/DeliveryPlan.js +72 -0
  92. package/dist/openapi/models/DeliveryPlanOutput.d.ts +53 -0
  93. package/dist/openapi/models/DeliveryPlanOutput.js +52 -0
  94. package/dist/openapi/models/DeliveryPlanReason.d.ts +35 -0
  95. package/dist/openapi/models/DeliveryPlanReason.js +53 -0
  96. package/dist/openapi/models/DeliverySelection.d.ts +62 -0
  97. package/dist/openapi/models/DeliverySelection.js +54 -0
  98. package/dist/openapi/models/ErrorEnvelope.d.ts +83 -5
  99. package/dist/openapi/models/ErrorEnvelope.js +10 -2
  100. package/dist/openapi/models/EstimateQuality.d.ts +34 -0
  101. package/dist/openapi/models/EstimateQuality.js +52 -0
  102. package/dist/openapi/models/EstimateRange.d.ts +48 -0
  103. package/dist/openapi/models/EstimateRange.js +51 -0
  104. package/dist/openapi/models/ExternalDestination.d.ts +41 -0
  105. package/dist/openapi/models/ExternalDestination.js +47 -0
  106. package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +49 -0
  107. package/dist/openapi/models/ExternalImportCreatedResponse.js +51 -0
  108. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +46 -0
  109. package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +54 -0
  110. package/dist/openapi/models/ExternalImportRequest.d.ts +92 -0
  111. package/dist/openapi/models/ExternalImportRequest.js +61 -0
  112. package/dist/openapi/models/ExternalImportToken.d.ts +51 -0
  113. package/dist/openapi/models/ExternalImportToken.js +53 -0
  114. package/dist/openapi/models/ExternalSource.d.ts +31 -0
  115. package/dist/openapi/models/ExternalSource.js +47 -0
  116. package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +140 -0
  117. package/dist/openapi/models/FeatureNotAvailableResponse.js +76 -0
  118. package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +135 -0
  119. package/dist/openapi/models/FeatureTierRestrictedResponse.js +76 -0
  120. package/dist/openapi/models/FeatureViolation.d.ts +108 -0
  121. package/dist/openapi/models/FeatureViolation.js +63 -0
  122. package/dist/openapi/models/JobDefinition.d.ts +125 -14
  123. package/dist/openapi/models/JobDefinition.js +25 -4
  124. package/dist/openapi/models/JobDownload.d.ts +2 -2
  125. package/dist/openapi/models/JobDownload.js +2 -2
  126. package/dist/openapi/models/JobInputV2.d.ts +89 -0
  127. package/dist/openapi/models/JobInputV2.js +56 -0
  128. package/dist/openapi/models/JobOutputSource.d.ts +57 -0
  129. package/dist/openapi/models/JobOutputSource.js +55 -0
  130. package/dist/openapi/models/JobResponse.d.ts +2 -2
  131. package/dist/openapi/models/JobResponse.js +2 -2
  132. package/dist/openapi/models/JobStatus.d.ts +17 -8
  133. package/dist/openapi/models/JobStatus.js +17 -8
  134. package/dist/openapi/models/JobType.d.ts +2 -2
  135. package/dist/openapi/models/JobType.js +2 -2
  136. package/dist/openapi/models/LivenessResponse.d.ts +2 -2
  137. package/dist/openapi/models/LivenessResponse.js +2 -2
  138. package/dist/openapi/models/LoginUser200Response.d.ts +46 -0
  139. package/dist/openapi/models/LoginUser200Response.js +54 -0
  140. package/dist/openapi/models/LoginUser200ResponseData.d.ts +33 -0
  141. package/dist/openapi/models/LoginUser200ResponseData.js +44 -0
  142. package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +50 -0
  143. package/dist/openapi/models/LoginUser200ResponseDataUser.js +51 -0
  144. package/dist/openapi/models/LoginUserRequest.d.ts +38 -0
  145. package/dist/openapi/models/LoginUserRequest.js +47 -0
  146. package/dist/openapi/models/LogoutUser200Response.d.ts +50 -0
  147. package/dist/openapi/models/LogoutUser200Response.js +53 -0
  148. package/dist/openapi/models/MetadataResponse.d.ts +13 -2
  149. package/dist/openapi/models/MetadataResponse.js +6 -2
  150. package/dist/openapi/models/MetadataResponseDimensions.d.ts +2 -2
  151. package/dist/openapi/models/MetadataResponseDimensions.js +2 -2
  152. package/dist/openapi/models/MetadataResponseExif.d.ts +2 -2
  153. package/dist/openapi/models/MetadataResponseExif.js +3 -3
  154. package/dist/openapi/models/MetadataResponseExifGps.d.ts +2 -2
  155. package/dist/openapi/models/MetadataResponseExifGps.js +2 -2
  156. package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +3 -3
  157. package/dist/openapi/models/MetadataSuccessEnvelope.js +2 -2
  158. package/dist/openapi/models/MimeGroupSchema.d.ts +46 -2
  159. package/dist/openapi/models/MimeGroupSchema.js +11 -2
  160. package/dist/openapi/models/MultipartCompleteRequest.d.ts +3 -3
  161. package/dist/openapi/models/MultipartCompleteRequest.js +2 -2
  162. package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +2 -2
  163. package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +2 -2
  164. package/dist/openapi/models/MultipartCompleteResponse.d.ts +7 -4
  165. package/dist/openapi/models/MultipartCompleteResponse.js +2 -2
  166. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +3 -3
  167. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +2 -2
  168. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +56 -0
  169. package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +45 -0
  170. package/dist/openapi/models/MultipartInitiateResponse.d.ts +19 -3
  171. package/dist/openapi/models/MultipartInitiateResponse.js +7 -2
  172. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +3 -3
  173. package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +2 -2
  174. package/dist/openapi/models/OperationDefinition.d.ts +2 -2
  175. package/dist/openapi/models/OperationDefinition.js +2 -2
  176. package/dist/openapi/models/OperationDownload.d.ts +2 -2
  177. package/dist/openapi/models/OperationDownload.js +2 -2
  178. package/dist/openapi/models/OperationInputModel.d.ts +4 -4
  179. package/dist/openapi/models/OperationInputModel.js +4 -4
  180. package/dist/openapi/models/OperationResponse.d.ts +2 -2
  181. package/dist/openapi/models/OperationResponse.js +2 -2
  182. package/dist/openapi/models/OperationResult.d.ts +2 -2
  183. package/dist/openapi/models/OperationResult.js +2 -2
  184. package/dist/openapi/models/OperationResultMetrics.d.ts +2 -2
  185. package/dist/openapi/models/OperationResultMetrics.js +2 -2
  186. package/dist/openapi/models/OperationSchemaDefinition.d.ts +52 -5
  187. package/dist/openapi/models/OperationSchemaDefinition.js +10 -6
  188. package/dist/openapi/models/OperationStatus.d.ts +2 -2
  189. package/dist/openapi/models/OperationStatus.js +2 -2
  190. package/dist/openapi/models/OperationType.d.ts +17 -5
  191. package/dist/openapi/models/OperationType.js +18 -6
  192. package/dist/openapi/models/OperationsSchemaResponse.d.ts +70 -10
  193. package/dist/openapi/models/OperationsSchemaResponse.js +17 -2
  194. package/dist/openapi/models/OptionSchema.d.ts +42 -4
  195. package/dist/openapi/models/OptionSchema.js +12 -2
  196. package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +80 -0
  197. package/dist/openapi/models/PerValueAvailabilityEntry.js +53 -0
  198. package/dist/openapi/models/PresignedUrlPart.d.ts +2 -2
  199. package/dist/openapi/models/PresignedUrlPart.js +3 -3
  200. package/dist/openapi/models/ProcessingClass.d.ts +35 -0
  201. package/dist/openapi/models/ProcessingClass.js +53 -0
  202. package/dist/openapi/models/ProcessingClassHint.d.ts +36 -0
  203. package/dist/openapi/models/ProcessingClassHint.js +54 -0
  204. package/dist/openapi/models/ProcessingClassReason.d.ts +46 -0
  205. package/dist/openapi/models/ProcessingClassReason.js +64 -0
  206. package/dist/openapi/models/ProcessingPlan.d.ts +70 -0
  207. package/dist/openapi/models/ProcessingPlan.js +49 -0
  208. package/dist/openapi/models/ProcessingPlanJob.d.ts +81 -0
  209. package/dist/openapi/models/ProcessingPlanJob.js +71 -0
  210. package/dist/openapi/models/ReadinessResponse.d.ts +2 -2
  211. package/dist/openapi/models/ReadinessResponse.js +2 -2
  212. package/dist/openapi/models/ResponseEnvelope.d.ts +2 -2
  213. package/dist/openapi/models/ResponseEnvelope.js +2 -2
  214. package/dist/openapi/models/RetryResponse.d.ts +5 -5
  215. package/dist/openapi/models/RetryResponse.js +2 -2
  216. package/dist/openapi/models/RetrySuccessEnvelope.d.ts +3 -3
  217. package/dist/openapi/models/RetrySuccessEnvelope.js +2 -2
  218. package/dist/openapi/models/SseEventType.d.ts +2 -2
  219. package/dist/openapi/models/SseEventType.js +2 -2
  220. package/dist/openapi/models/SseJobCompletedData.d.ts +3 -3
  221. package/dist/openapi/models/SseJobCompletedData.js +2 -2
  222. package/dist/openapi/models/SseJobFailedData.d.ts +3 -3
  223. package/dist/openapi/models/SseJobFailedData.js +2 -2
  224. package/dist/openapi/models/SseOperationCompletedData.d.ts +4 -4
  225. package/dist/openapi/models/SseOperationCompletedData.js +2 -2
  226. package/dist/openapi/models/SseOperationFailedData.d.ts +3 -3
  227. package/dist/openapi/models/SseOperationFailedData.js +2 -2
  228. package/dist/openapi/models/SseOperationProgressData.d.ts +61 -3
  229. package/dist/openapi/models/SseOperationProgressData.js +22 -2
  230. package/dist/openapi/models/SseWorkflowTerminalData.d.ts +26 -4
  231. package/dist/openapi/models/SseWorkflowTerminalData.js +4 -2
  232. package/dist/openapi/models/TierRestrictionKind.d.ts +33 -0
  233. package/dist/openapi/models/TierRestrictionKind.js +51 -0
  234. package/dist/openapi/models/TierRestrictionResponse.d.ts +154 -0
  235. package/dist/openapi/models/TierRestrictionResponse.js +83 -0
  236. package/dist/openapi/models/UploadConstraintsApplied.d.ts +70 -0
  237. package/dist/openapi/models/UploadConstraintsApplied.js +57 -0
  238. package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +136 -0
  239. package/dist/openapi/models/UploadDurationExceedsTierResponse.js +82 -0
  240. package/dist/openapi/models/UploadFile403Response.d.ts +27 -0
  241. package/dist/openapi/models/UploadFile403Response.js +47 -0
  242. package/dist/openapi/models/UploadFile422Response.d.ts +27 -0
  243. package/dist/openapi/models/UploadFile422Response.js +47 -0
  244. package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +172 -0
  245. package/dist/openapi/models/UploadProbeMediaMetadata.js +69 -0
  246. package/dist/openapi/models/UploadProbeProcessingClass.d.ts +33 -0
  247. package/dist/openapi/models/UploadProbeProcessingClass.js +51 -0
  248. package/dist/openapi/models/UploadProbeResponse.d.ts +58 -0
  249. package/dist/openapi/models/UploadProbeResponse.js +58 -0
  250. package/dist/openapi/models/UploadProbeStatus.d.ts +41 -0
  251. package/dist/openapi/models/UploadProbeStatus.js +59 -0
  252. package/dist/openapi/models/UploadResponse.d.ts +17 -3
  253. package/dist/openapi/models/UploadResponse.js +7 -2
  254. package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +136 -0
  255. package/dist/openapi/models/UploadSizeExceedsTierResponse.js +82 -0
  256. package/dist/openapi/models/UploadSource.d.ts +48 -0
  257. package/dist/openapi/models/UploadSource.js +53 -0
  258. package/dist/openapi/models/UploadSuccessEnvelope.d.ts +3 -3
  259. package/dist/openapi/models/UploadSuccessEnvelope.js +2 -2
  260. package/dist/openapi/models/UploadThresholds.d.ts +119 -0
  261. package/dist/openapi/models/UploadThresholds.js +79 -0
  262. package/dist/openapi/models/UserTier.d.ts +41 -0
  263. package/dist/openapi/models/UserTier.js +59 -0
  264. package/dist/openapi/models/ValidationErrorEnvelope.d.ts +51 -4
  265. package/dist/openapi/models/ValidationErrorEnvelope.js +10 -2
  266. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +37 -4
  267. package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +6 -2
  268. package/dist/openapi/models/WarningType.d.ts +48 -0
  269. package/dist/openapi/models/WarningType.js +66 -0
  270. package/dist/openapi/models/WebhookOperationContext.d.ts +3 -3
  271. package/dist/openapi/models/WebhookOperationContext.js +2 -2
  272. package/dist/openapi/models/WebhookPayload.d.ts +2 -2
  273. package/dist/openapi/models/WebhookPayload.js +3 -3
  274. package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +36 -0
  275. package/dist/openapi/models/WorkflowCancelBillingEffect.js +54 -0
  276. package/dist/openapi/models/WorkflowCancelResponse.d.ts +66 -0
  277. package/dist/openapi/models/WorkflowCancelResponse.js +62 -0
  278. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +46 -0
  279. package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +54 -0
  280. package/dist/openapi/models/WorkflowCreateRequest.d.ts +39 -5
  281. package/dist/openapi/models/WorkflowCreateRequest.js +11 -5
  282. package/dist/openapi/models/WorkflowCreateResponse.d.ts +63 -2
  283. package/dist/openapi/models/WorkflowCreateResponse.js +21 -2
  284. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +3 -3
  285. package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +2 -2
  286. package/dist/openapi/models/WorkflowDownloadResponse.d.ts +2 -2
  287. package/dist/openapi/models/WorkflowDownloadResponse.js +2 -2
  288. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +3 -3
  289. package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +2 -2
  290. package/dist/openapi/models/WorkflowEdge.d.ts +2 -2
  291. package/dist/openapi/models/WorkflowEdge.js +2 -2
  292. package/dist/openapi/models/WorkflowExpiredResponse.d.ts +126 -0
  293. package/dist/openapi/models/WorkflowExpiredResponse.js +75 -0
  294. package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +30 -0
  295. package/dist/openapi/models/WorkflowPauseRequiredAction.js +48 -0
  296. package/dist/openapi/models/WorkflowPausedDetail.d.ts +99 -0
  297. package/dist/openapi/models/WorkflowPausedDetail.js +65 -0
  298. package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +47 -0
  299. package/dist/openapi/models/WorkflowPausedDetailLinks.js +45 -0
  300. package/dist/openapi/models/WorkflowProcessing.d.ts +36 -0
  301. package/dist/openapi/models/WorkflowProcessing.js +42 -0
  302. package/dist/openapi/models/WorkflowResumeResponse.d.ts +55 -0
  303. package/dist/openapi/models/WorkflowResumeResponse.js +57 -0
  304. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +46 -0
  305. package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +54 -0
  306. package/dist/openapi/models/WorkflowSource.d.ts +40 -0
  307. package/dist/openapi/models/WorkflowSource.js +57 -0
  308. package/dist/openapi/models/WorkflowStatus.d.ts +31 -8
  309. package/dist/openapi/models/WorkflowStatus.js +32 -9
  310. package/dist/openapi/models/WorkflowStatusResponse.d.ts +34 -2
  311. package/dist/openapi/models/WorkflowStatusResponse.js +13 -2
  312. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +3 -3
  313. package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +2 -2
  314. package/dist/openapi/models/WorkflowWarning.d.ts +119 -0
  315. package/dist/openapi/models/WorkflowWarning.js +63 -0
  316. package/dist/openapi/models/WorkflowWarningSeverity.d.ts +29 -0
  317. package/dist/openapi/models/WorkflowWarningSeverity.js +47 -0
  318. package/dist/openapi/models/index.d.ts +75 -3
  319. package/dist/openapi/models/index.js +75 -3
  320. package/dist/openapi/runtime.d.ts +2 -2
  321. package/dist/openapi/runtime.js +17 -2
  322. package/dist/operations/archive.metadata.d.ts +2 -0
  323. package/dist/operations/archive.metadata.js +13 -0
  324. package/dist/operations/audio_overlay.d.ts +48 -0
  325. package/dist/operations/audio_overlay.js +19 -0
  326. package/dist/operations/audio_overlay.metadata.d.ts +2 -0
  327. package/dist/operations/audio_overlay.metadata.js +167 -0
  328. package/dist/operations/audio_watermark.d.ts +42 -0
  329. package/dist/operations/audio_watermark.js +37 -0
  330. package/dist/operations/audio_watermark.metadata.d.ts +2 -0
  331. package/dist/operations/audio_watermark.metadata.js +94 -0
  332. package/dist/operations/compress.metadata.d.ts +2 -0
  333. package/dist/operations/compress.metadata.js +205 -0
  334. package/dist/operations/convert.metadata.d.ts +2 -0
  335. package/dist/operations/convert.metadata.js +85 -0
  336. package/dist/operations/custom_luma.d.ts +7 -0
  337. package/dist/operations/custom_luma.js +2 -0
  338. package/dist/operations/custom_luma.metadata.d.ts +2 -0
  339. package/dist/operations/custom_luma.metadata.js +49 -0
  340. package/dist/operations/image_watermark.d.ts +54 -0
  341. package/dist/operations/image_watermark.js +37 -0
  342. package/dist/operations/image_watermark.metadata.d.ts +2 -0
  343. package/dist/operations/image_watermark.metadata.js +97 -0
  344. package/dist/operations/index.d.ts +16 -1
  345. package/dist/operations/index.js +16 -1
  346. package/dist/operations/merge.d.ts +111 -31
  347. package/dist/operations/merge.js +106 -20
  348. package/dist/operations/merge.metadata.d.ts +2 -0
  349. package/dist/operations/merge.metadata.js +385 -0
  350. package/dist/operations/metadata-types.d.ts +47 -0
  351. package/dist/operations/metadata-types.js +2 -0
  352. package/dist/operations/text_watermark.d.ts +31 -0
  353. package/dist/operations/text_watermark.js +22 -0
  354. package/dist/operations/text_watermark.metadata.d.ts +2 -0
  355. package/dist/operations/text_watermark.metadata.js +46 -0
  356. package/dist/operations/thumbnail.metadata.d.ts +2 -0
  357. package/dist/operations/thumbnail.metadata.js +88 -0
  358. package/openapi/api.yaml +5070 -449
  359. package/operations/schemas/audio_overlay.yaml +397 -0
  360. package/operations/schemas/audio_watermark.yaml +184 -0
  361. package/operations/schemas/compress.yaml +20 -3
  362. package/operations/schemas/convert.yaml +18 -3
  363. package/operations/schemas/custom_luma.yaml +109 -0
  364. package/operations/schemas/image_watermark.yaml +280 -0
  365. package/operations/schemas/merge.yaml +295 -66
  366. package/operations/schemas/text_watermark.yaml +147 -0
  367. package/operations/schemas/thumbnail.yaml +15 -0
  368. package/package.json +10 -4
  369. package/operations/schemas/watermark.yaml +0 -87
@@ -1,4 +1,4 @@
1
- schema_version: "1.0.0"
1
+ schema_version: "2.1.0"
2
2
 
3
3
  operation:
4
4
  type: merge
@@ -10,11 +10,13 @@ operation:
10
10
  # All merge operations route to the single `ops-merge` Lambda via
11
11
  # `operation_type=merge` on the `operations` SNS topic. The
12
12
  # `output_type` field below is read by the merge Lambda to decide
13
- # the internal encoding path (collage/grid, animated GIF, video
14
- # slideshow/concat, audio concat, PDF concat), not to influence SNS
15
- # routing. The API publisher additionally sets `media_group` as an
16
- # informational SNS attribute on non-archive operations, but it is
17
- # not used as a routing filter.
13
+ # the internal encoding path (animated GIF, video slideshow/concat,
14
+ # audio concat), not to influence SNS routing. The V1 Lambda does
15
+ # NOT support image collage/grid or PDF concatenation those
16
+ # `output_type` values are absent from the allowlist. The API
17
+ # publisher additionally sets `media_group` as an informational SNS
18
+ # attribute on non-archive operations, but it is not used as a
19
+ # routing filter.
18
20
 
19
21
  mime_groups:
20
22
  image:
@@ -28,46 +30,9 @@ operation:
28
30
  options:
29
31
  output_type:
30
32
  type: enum
31
- values: [image, gif, video]
32
- default: image
33
- description: "Result format: static image (collage/grid), animated GIF, or slideshow video"
34
- # --- Options for output_type: image ---
35
- layout:
36
- type: enum
37
- values: [grid, horizontal, vertical]
38
- default: grid
39
- depends_on: { output_type: image }
40
- description: "How to arrange images in the collage"
41
- columns:
42
- type: integer
43
- min: 1
44
- max: 10
45
- depends_on: { output_type: image }
46
- description: "Number of columns in grid layout. Omit for auto (square-ish grid based on input count)."
47
- resize_mode:
48
- type: enum
49
- values: [fit, fill, none]
50
- default: fit
51
- depends_on: { output_type: image }
52
- description: "How to handle images of different sizes"
53
- spacing:
54
- type: integer
55
- min: 0
56
- max: 100
57
- default: 0
58
- depends_on: { output_type: image }
59
- description: "Pixel spacing between images"
60
- background:
61
- type: string
62
- default: "transparent"
63
- depends_on: { output_type: image }
64
- description: "Background color for spacing/padding (CSS color or 'transparent')"
65
- image_format:
66
- type: enum
67
- values: [jpeg, png, webp]
68
- default: png
69
- depends_on: { output_type: image }
70
- description: "Output image format for the collage"
33
+ values: [gif, video]
34
+ required: true
35
+ description: "Result format: animated GIF or slideshow video. No default — caller must pick explicitly (image/collage and document/PDF concat are not supported by the V1 merge Lambda)."
71
36
  # --- Options for output_type: gif ---
72
37
  delay:
73
38
  type: integer
@@ -93,10 +58,62 @@ operation:
93
58
  description: "Seconds each image is displayed"
94
59
  transition:
95
60
  type: enum
96
- values: [none, fade, slide]
61
+ # Catalog from FFmpeg 7.1.1 xfade filter (per ADR-0007). The
62
+ # `none` value is a sentinel meaning "no transition / hard
63
+ # cut" — Lambda short-circuits the xfade filter chain rather
64
+ # than passing it through. All other values map directly to
65
+ # FFmpeg `xfade` filter `transition=` parameter.
66
+ values: [none, fade, fadeblack, fadewhite, dissolve,
67
+ wipeleft, wiperight, wipeup, wipedown, crossfade,
68
+ smoothleft, smoothright, smoothup, smoothdown,
69
+ circleopen, circleclose, circlecrop, rectcrop,
70
+ slideleft, slideright, slideup, slidedown,
71
+ radial, diagtl, diagtr, diagbl,
72
+ pixelize, hlslice, vlslice, hblur, distance, squeezeh,
73
+ custom, wipetl, wipetr, wipebl]
97
74
  default: none
98
75
  depends_on: { output_type: video }
99
- description: "Transition effect between images"
76
+ description: |
77
+ Transition effect between images in the slideshow output.
78
+ Catalog from FFmpeg 7.1.1 xfade filter (per ADR-0007). See
79
+ per_value_availability for per-value rollout state. The
80
+ `none` value is a sentinel ("no transition / hard cut"),
81
+ not an FFmpeg preset.
82
+ per_value_availability:
83
+ # Untagged values default to stable per ADR-0001 §1.4.
84
+ smoothleft: { availability: beta }
85
+ smoothright: { availability: beta }
86
+ smoothup: { availability: beta }
87
+ smoothdown: { availability: beta }
88
+ circleopen: { availability: beta }
89
+ circleclose: { availability: beta }
90
+ circlecrop: { availability: beta }
91
+ rectcrop: { availability: beta }
92
+ slideleft: { availability: beta }
93
+ slideright: { availability: beta }
94
+ slideup: { availability: beta }
95
+ slidedown: { availability: beta }
96
+ radial: { availability: beta }
97
+ diagtl: { availability: beta }
98
+ diagtr: { availability: beta }
99
+ diagbl: { availability: beta }
100
+ pixelize: { availability: experimental }
101
+ hlslice: { availability: experimental }
102
+ vlslice: { availability: experimental }
103
+ hblur: { availability: experimental }
104
+ distance: { availability: experimental }
105
+ squeezeh: { availability: experimental }
106
+ # `custom` is `planned` indefinitely as an advisory — for
107
+ # caller-uploaded luma-matte transitions, use the dedicated
108
+ # `custom_luma` operation (multi-input with role: base +
109
+ # transition_mask) per ticket I29 (EPUE5Vs1). FFmpeg's
110
+ # xfade=custom is an expression-mode parameter, not the
111
+ # shape callers want; the dedicated operation is the
112
+ # supported path.
113
+ custom: { availability: planned, documentation_url: "https://trello.com/c/EPUE5Vs1" }
114
+ wipetl: { availability: planned, eta: "2026-Q3" }
115
+ wipetr: { availability: planned, eta: "2026-Q3" }
116
+ wipebl: { availability: planned, eta: "2026-Q3" }
100
117
  transition_duration:
101
118
  type: float
102
119
  min: 0.1
@@ -122,12 +139,81 @@ operation:
122
139
  mimes:
123
140
  - video/mp4
124
141
  - video/webm
142
+ processing_class:
143
+ # F8 long-form video tier (per ticket I15-CONS). Merge uses
144
+ # alias class names because its differentiator is concat-
145
+ # compatibility (I16-CONS re_encode_mode) rather than just
146
+ # size/duration — a small merge can still need long_form
147
+ # when inputs require re-encoding.
148
+ short_form_concat:
149
+ availability: stable
150
+ constraints:
151
+ max_total_duration: "PT5M"
152
+ max_total_input_size_bytes: 1073741824 # 1 GiB combined
153
+ long_form_re_encode:
154
+ availability: planned
155
+ required_tier: pro
156
+ constraints:
157
+ max_total_duration: "PT12H"
158
+ max_total_input_size_bytes: 21474836480
125
159
  options:
160
+ output_type:
161
+ type: enum
162
+ values: [video]
163
+ required: false
164
+ description: "Output format for video merge (concatenation). Currently fixed at 'video'. Optional — API injects this default post-validation so callers may omit it."
126
165
  transition:
127
166
  type: enum
128
- values: [none, crossfade]
167
+ # Same catalog + per_value_availability as merge.image.transition.
168
+ # Catalog from FFmpeg 7.1.1 xfade filter (per ADR-0007). The
169
+ # `none` value is a sentinel ("no transition / hard cut").
170
+ values: [none, fade, fadeblack, fadewhite, dissolve,
171
+ wipeleft, wiperight, wipeup, wipedown, crossfade,
172
+ smoothleft, smoothright, smoothup, smoothdown,
173
+ circleopen, circleclose, circlecrop, rectcrop,
174
+ slideleft, slideright, slideup, slidedown,
175
+ radial, diagtl, diagtr, diagbl,
176
+ pixelize, hlslice, vlslice, hblur, distance, squeezeh,
177
+ custom, wipetl, wipetr, wipebl]
129
178
  default: none
130
- description: "Default transition between clips"
179
+ description: |
180
+ Default transition between clips. Catalog from FFmpeg 7.1.1
181
+ xfade filter (per ADR-0007). See per_value_availability for
182
+ per-value rollout state.
183
+ per_value_availability:
184
+ smoothleft: { availability: beta }
185
+ smoothright: { availability: beta }
186
+ smoothup: { availability: beta }
187
+ smoothdown: { availability: beta }
188
+ circleopen: { availability: beta }
189
+ circleclose: { availability: beta }
190
+ circlecrop: { availability: beta }
191
+ rectcrop: { availability: beta }
192
+ slideleft: { availability: beta }
193
+ slideright: { availability: beta }
194
+ slideup: { availability: beta }
195
+ slidedown: { availability: beta }
196
+ radial: { availability: beta }
197
+ diagtl: { availability: beta }
198
+ diagtr: { availability: beta }
199
+ diagbl: { availability: beta }
200
+ pixelize: { availability: experimental }
201
+ hlslice: { availability: experimental }
202
+ vlslice: { availability: experimental }
203
+ hblur: { availability: experimental }
204
+ distance: { availability: experimental }
205
+ squeezeh: { availability: experimental }
206
+ # `custom` is `planned` indefinitely as an advisory — for
207
+ # caller-uploaded luma-matte transitions, use the dedicated
208
+ # `custom_luma` operation (multi-input with role: base +
209
+ # transition_mask) per ticket I29 (EPUE5Vs1). FFmpeg's
210
+ # xfade=custom is an expression-mode parameter, not the
211
+ # shape callers want; the dedicated operation is the
212
+ # supported path.
213
+ custom: { availability: planned, documentation_url: "https://trello.com/c/EPUE5Vs1" }
214
+ wipetl: { availability: planned, eta: "2026-Q3" }
215
+ wipetr: { availability: planned, eta: "2026-Q3" }
216
+ wipebl: { availability: planned, eta: "2026-Q3" }
131
217
  crossfade_duration:
132
218
  type: float
133
219
  min: 0.1
@@ -139,11 +225,138 @@ operation:
139
225
  type: boolean
140
226
  default: true
141
227
  description: "Normalize audio levels across all clips"
228
+
229
+ re_encode_mode:
230
+ type: enum
231
+ values: [auto, always, never]
232
+ default: auto
233
+ description: |
234
+ Re-encode policy for video concat.
235
+ - `auto`: probe inputs and choose stream-copy concat (when
236
+ codec/container/timebase/framerate/resolution/pixel-format
237
+ match) or full re-encode.
238
+ - `always`: force re-encode (use when caller wants
239
+ normalised output options).
240
+ - `never`: return 422 `REQUIRES_REENCODE` if inputs are not
241
+ concat-compatible.
242
+ Compatibility algorithm is server-side and deliberately
243
+ opaque (per plan v5 §F8.2). The actual path taken is
244
+ reported on `OperationMetrics.re_encode_decision`.
245
+
246
+ codec:
247
+ type: enum
248
+ values: [h264, h265, vp9, av1]
249
+ default: h264
250
+ depends_on: { re_encode_mode: [auto, always] }
251
+ description: |
252
+ Output codec when merge re-encodes. Inert when stream-copy
253
+ concat is selected (re_encode_mode=auto + compatible inputs).
254
+ per_value_availability:
255
+ # AV1 encoder presence in mwader/static-ffmpeg:7.1.1 needs
256
+ # anti-drift confirmation per ADR-0006; tagged beta until
257
+ # I32 strict mode confirms.
258
+ av1: { availability: beta }
259
+
260
+ crf:
261
+ type: integer
262
+ min: 0
263
+ max: 51
264
+ default: 23
265
+ depends_on: { re_encode_mode: [auto, always], encoding_mode: crf }
266
+ description: "Constant Rate Factor when encoding_mode=crf. Lower = higher quality / larger file."
267
+
268
+ preset:
269
+ type: enum
270
+ values: [ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow]
271
+ default: medium
272
+ depends_on: { re_encode_mode: [auto, always] }
273
+ description: "Encoder speed/compression trade-off when re-encoding."
274
+
275
+ target_resolution:
276
+ type: string
277
+ pattern: '^\d+x\d+$'
278
+ depends_on: { re_encode_mode: [auto, always] }
279
+ description: "Output dimensions WxH (e.g. \"1920x1080\"). Omit to inherit from inputs."
280
+
281
+ encoding_mode:
282
+ type: enum
283
+ values: [crf, target_size]
284
+ default: crf
285
+ depends_on: { re_encode_mode: [auto, always] }
286
+ description: |
287
+ CRF (quality-targeted) vs target_size (two-pass to fixed file size).
288
+ `target_size` is currently `codec=h264` only — libx265 / libvpx-vp9 / libsvtav1 each
289
+ require a different two-pass invocation and are tracked as separate per-codec
290
+ Lambda follow-ups. The contract narrows `target_size_bytes.depends_on` with
291
+ `codec: [h264]`, which rejects `encoding_mode=target_size + codec ∈ {h265, vp9, av1}`
292
+ as `invalid_options` **when `target_size_bytes` is present in the request**. Fully
293
+ gating `encoding_mode=target_size` itself on codec (so that omitting
294
+ `target_size_bytes` is also rejected) awaits a `per_value_depends_on` schema
295
+ vocab extension (ticket bsV3FWM5); Lambda continues to catch the residual
296
+ `target_size + non-h264 + no target_size_bytes` case in the meantime.
297
+
298
+ target_size_bytes:
299
+ type: integer
300
+ min: 1048576
301
+ depends_on: { re_encode_mode: [auto, always], encoding_mode: target_size, codec: [h264] }
302
+ description: |
303
+ Two-pass target file size in bytes (minimum 1 MiB). Required when
304
+ `encoding_mode=target_size`. h264-only today; see `encoding_mode` description
305
+ for per-codec rollout status.
306
+
307
+ Practical floor: a ~100 kbps post-AAC video bitrate (i.e. `target_size_bytes`
308
+ corresponding to less than ~100 kbps of video after subtracting the 160 kbps
309
+ AAC audio track over the merged duration) is silently floored by libx264 and
310
+ the resulting file will not honour the requested `target_size_bytes`.
311
+ Publishers targeting very small outputs should size accordingly.
312
+
142
313
  per_input_options:
143
314
  transition:
144
315
  type: enum
145
- values: [none, crossfade]
146
- description: "Override transition for the join point preceding this input"
316
+ # Same catalog as global transition; mirrors per_value_availability.
317
+ values: [none, fade, fadeblack, fadewhite, dissolve,
318
+ wipeleft, wiperight, wipeup, wipedown, crossfade,
319
+ smoothleft, smoothright, smoothup, smoothdown,
320
+ circleopen, circleclose, circlecrop, rectcrop,
321
+ slideleft, slideright, slideup, slidedown,
322
+ radial, diagtl, diagtr, diagbl,
323
+ pixelize, hlslice, vlslice, hblur, distance, squeezeh,
324
+ custom, wipetl, wipetr, wipebl]
325
+ description: "Override transition for the join point preceding this input."
326
+ per_value_availability:
327
+ smoothleft: { availability: beta }
328
+ smoothright: { availability: beta }
329
+ smoothup: { availability: beta }
330
+ smoothdown: { availability: beta }
331
+ circleopen: { availability: beta }
332
+ circleclose: { availability: beta }
333
+ circlecrop: { availability: beta }
334
+ rectcrop: { availability: beta }
335
+ slideleft: { availability: beta }
336
+ slideright: { availability: beta }
337
+ slideup: { availability: beta }
338
+ slidedown: { availability: beta }
339
+ radial: { availability: beta }
340
+ diagtl: { availability: beta }
341
+ diagtr: { availability: beta }
342
+ diagbl: { availability: beta }
343
+ pixelize: { availability: experimental }
344
+ hlslice: { availability: experimental }
345
+ vlslice: { availability: experimental }
346
+ hblur: { availability: experimental }
347
+ distance: { availability: experimental }
348
+ squeezeh: { availability: experimental }
349
+ # `custom` is `planned` indefinitely as an advisory — for
350
+ # caller-uploaded luma-matte transitions, use the dedicated
351
+ # `custom_luma` operation (multi-input with role: base +
352
+ # transition_mask) per ticket I29 (EPUE5Vs1). FFmpeg's
353
+ # xfade=custom is an expression-mode parameter, not the
354
+ # shape callers want; the dedicated operation is the
355
+ # supported path.
356
+ custom: { availability: planned, documentation_url: "https://trello.com/c/EPUE5Vs1" }
357
+ wipetl: { availability: planned, eta: "2026-Q3" }
358
+ wipetr: { availability: planned, eta: "2026-Q3" }
359
+ wipebl: { availability: planned, eta: "2026-Q3" }
147
360
  crossfade_duration:
148
361
  type: float
149
362
  min: 0.1
@@ -152,6 +365,15 @@ operation:
152
365
  description: "Override crossfade duration for this join point"
153
366
 
154
367
  audio:
368
+ # Audio transition catalog is intentionally separate from the
369
+ # visual xfade catalog used by merge.image / merge.video — audio
370
+ # uses FFmpeg's `acrossfade` filter, which is fundamentally
371
+ # different from `xfade` (visual). The two catalogs share no
372
+ # values and SDK codegen treats them as distinct enum types.
373
+ # See FORMAT.md §"Audio vs visual transition catalogs (merge)"
374
+ # for the convention and the rules for adding values to either
375
+ # catalog. Per ticket I18 (Trello FVuNcRJa) — visual-vs-audio
376
+ # enum split codification.
155
377
  mimes:
156
378
  - audio/mpeg
157
379
  - audio/aac
@@ -159,11 +381,25 @@ operation:
159
381
  - audio/ogg
160
382
  - audio/flac
161
383
  options:
384
+ output_type:
385
+ type: enum
386
+ values: [audio]
387
+ required: false
388
+ description: "Output format for audio merge (concatenation). Currently fixed at 'audio'. Optional — API injects this default post-validation so callers may omit it."
162
389
  transition:
163
390
  type: enum
391
+ # audio_transition catalog (per ticket I18, FORMAT.md §"Audio
392
+ # vs visual transition catalogs"). Backed by FFmpeg's
393
+ # `acrossfade` filter; values share no ground with the visual
394
+ # xfade catalog on merge.image / merge.video.
164
395
  values: [none, crossfade]
165
396
  default: none
166
- description: "Default transition between clips"
397
+ description: |
398
+ Default transition between clips. Audio-only catalog
399
+ (acrossfade-backed); see FORMAT.md §"Audio vs visual
400
+ transition catalogs (merge)" for additions policy. Future
401
+ values (e.g. `fade_curve` variants) will be added with
402
+ `per_value_availability` per ADR-0001 §1.4.
167
403
  crossfade_duration:
168
404
  type: float
169
405
  min: 0
@@ -184,8 +420,13 @@ operation:
184
420
  per_input_options:
185
421
  transition:
186
422
  type: enum
423
+ # Mirrors merge.audio.options.transition; same audio_transition
424
+ # catalog. Per ticket I18.
187
425
  values: [none, crossfade]
188
- description: "Override transition for the join point preceding this input"
426
+ description: |
427
+ Override transition for the join point preceding this
428
+ input. Audio-only catalog (acrossfade-backed); see
429
+ FORMAT.md §"Audio vs visual transition catalogs (merge)".
189
430
  crossfade_duration:
190
431
  type: float
191
432
  min: 0
@@ -197,15 +438,3 @@ operation:
197
438
  min: 0
198
439
  max: 10.0
199
440
  description: "Override gap duration for this join point"
200
-
201
- document:
202
- mimes:
203
- - application/pdf
204
- options:
205
- page_range:
206
- type: string
207
- description: "Default page range per input, e.g. '1-3,5'. Null = all pages."
208
- per_input_options:
209
- page_range:
210
- type: string
211
- description: "Override page range for this specific input document"
@@ -0,0 +1,147 @@
1
+ schema_version: "2.0.0"
2
+
3
+ operation:
4
+ type: text_watermark
5
+ description: |
6
+ Render a text overlay onto an image using bundled Liberation Sans
7
+ (SIL OFL). Single-input — text comes from options, not from a file
8
+ input. Source capped at 25 megapixels (V1 watermark precedent
9
+ retained). Per ADR-0004 §"V2 JobDefinition" + plan v5 §F1.
10
+
11
+ Two rendering modes:
12
+ - `single`: one label rendered at the anchor + margin position.
13
+ - `tiled`: text tiled across the source image (Cinavia / Adobe Stock
14
+ pattern); rotation default -45° and tile_spacing controls density.
15
+ default: false
16
+ input_model: single
17
+
18
+ mime_groups:
19
+ image:
20
+ mimes:
21
+ - image/jpeg
22
+ - image/png
23
+ - image/webp
24
+ options:
25
+ text:
26
+ type: string
27
+ required: true
28
+ description: |
29
+ Watermark text. Must be non-empty. Rendered with bundled
30
+ Liberation Sans (SIL OFL). A single text overlay is capped
31
+ at 4 megapixels before rendering fails.
32
+
33
+ font_size:
34
+ type: float
35
+ min: 8.0
36
+ max: 512.0
37
+ default: 48.0
38
+ description: Font size in pixels. Clamped to range.
39
+
40
+ color:
41
+ type: string
42
+ default: "#FFFFFF80"
43
+ pattern: '^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$'
44
+ description: |
45
+ Text colour as hex RGB (#RRGGBB) or RGBA (#RRGGBBAA).
46
+ Default is white with 50% alpha.
47
+
48
+ font_family:
49
+ type: enum
50
+ values:
51
+ - liberation_sans
52
+ default: liberation_sans
53
+ description: |
54
+ Font family. V2.0 ships with bundled Liberation Sans only;
55
+ user-uploaded fonts are a future extension (separate ticket).
56
+
57
+ rotation:
58
+ type: float
59
+ min: -360.0
60
+ max: 360.0
61
+ default: -45.0
62
+ description: |
63
+ Rotation angle in degrees. Default -45° suits tiled mode
64
+ (angled diagonal pattern). Clamped to range. Tiled canvas is
65
+ capped at 25 megapixels pre-rotation with 5000 px maximum
66
+ side length.
67
+
68
+ watermark_mode:
69
+ type: enum
70
+ values: [single, tiled]
71
+ default: single
72
+ description: |
73
+ Rendering mode:
74
+ - `single`: one label placed at the anchor + margin offset.
75
+ - `tiled`: repeated tiles across the entire source image at
76
+ the rotation angle.
77
+
78
+ tile_spacing:
79
+ type: integer
80
+ min: 0
81
+ max: 1000
82
+ depends_on: { watermark_mode: tiled }
83
+ description: |
84
+ Spacing between tiled labels in pixels. Defaults to font_size
85
+ when omitted. Only applies when watermark_mode is tiled.
86
+
87
+ anchor:
88
+ type: enum
89
+ values:
90
+ - top_left
91
+ - top_center
92
+ - top_right
93
+ - center_left
94
+ - center
95
+ - center_right
96
+ - bottom_left
97
+ - bottom_center
98
+ - bottom_right
99
+ default: bottom_right
100
+ description: |
101
+ 9-grid anchor position. For watermark_mode: single, the text
102
+ label is placed at this anchor + margin_x/margin_y offset.
103
+ For watermark_mode: tiled, anchor is ignored (tiles fill the
104
+ source image).
105
+
106
+ margin_x:
107
+ type: string
108
+ pattern: '^\d+(\.\d+)?(px|%)$'
109
+ default: "0px"
110
+ description: |
111
+ Horizontal offset from the anchor as pixels (e.g. "40px") or
112
+ percentage of base width (e.g. "5%"). Direction is
113
+ anchor-relative. Ignored when watermark_mode: tiled.
114
+
115
+ **`anchor: center` exception** (watermark_mode: single only).
116
+ When the anchor is `center` the centre is the centre — there
117
+ is no anchor-relative direction. Non-zero `margin_x`
118
+ (anything other than the default `"0px"` or the equivalent
119
+ `"0%"`) combined with `anchor: center` is rejected by the
120
+ API at workflow-create time as `invalid_options` (HTTP 422).
121
+ To nudge a roughly-centred label, pick a peripheral anchor
122
+ (e.g. `top_left`) and use `margin_x` / `margin_y` to
123
+ position it. Not applicable to watermark_mode: tiled, where
124
+ anchor + margin are ignored entirely.
125
+
126
+ margin_y:
127
+ type: string
128
+ pattern: '^\d+(\.\d+)?(px|%)$'
129
+ default: "0px"
130
+ description: |
131
+ Vertical offset from the anchor as pixels or percentage of
132
+ base height. Ignored when watermark_mode: tiled.
133
+
134
+ **`anchor: center` exception** (watermark_mode: single only).
135
+ Same rejection rule as `margin_x` — non-zero `margin_y` with
136
+ `anchor: center` is rejected by the API at workflow-create
137
+ time as `invalid_options` (HTTP 422).
138
+
139
+ opacity:
140
+ type: float
141
+ min: 0.0
142
+ max: 1.0
143
+ default: 1.0
144
+ description: |
145
+ Text overlay opacity. Default 1.0 — the alpha channel of
146
+ `color` already encodes transparency, so opacity is usually
147
+ left at 1.0 and transparency is set via the color hex.
@@ -46,6 +46,21 @@ operation:
46
46
  - video/mp4
47
47
  - video/webm
48
48
  - video/ogg
49
+ processing_class:
50
+ # F8 long-form video tier (per ticket I15-CONS). Thumbnail
51
+ # extracts a single frame, so size/duration caps reflect
52
+ # input file scanning rather than full processing time.
53
+ short_form:
54
+ availability: stable
55
+ constraints:
56
+ max_input_duration: "PT5M"
57
+ max_input_size_bytes: 524288000
58
+ long_form:
59
+ availability: planned
60
+ required_tier: pro
61
+ constraints:
62
+ max_input_duration: "PT12H"
63
+ max_input_size_bytes: 21474836480
49
64
  options:
50
65
  timestamp:
51
66
  type: string
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@giveitsmaller/contracts",
3
- "version": "0.2.3",
3
+ "version": "0.3.0",
4
4
  "description": "Generated contract types for GISL (Give It Smaller)",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -25,18 +25,24 @@
25
25
  },
26
26
  "./openapi/api.yaml": "./openapi/api.yaml",
27
27
  "./asyncapi/events.yaml": "./asyncapi/events.yaml",
28
+ "./availability/availability.json": "./availability/availability.json",
28
29
  "./operations/schemas/archive.yaml": "./operations/schemas/archive.yaml",
30
+ "./operations/schemas/audio_overlay.yaml": "./operations/schemas/audio_overlay.yaml",
31
+ "./operations/schemas/audio_watermark.yaml": "./operations/schemas/audio_watermark.yaml",
29
32
  "./operations/schemas/compress.yaml": "./operations/schemas/compress.yaml",
30
33
  "./operations/schemas/convert.yaml": "./operations/schemas/convert.yaml",
34
+ "./operations/schemas/custom_luma.yaml": "./operations/schemas/custom_luma.yaml",
35
+ "./operations/schemas/image_watermark.yaml": "./operations/schemas/image_watermark.yaml",
31
36
  "./operations/schemas/merge.yaml": "./operations/schemas/merge.yaml",
32
- "./operations/schemas/thumbnail.yaml": "./operations/schemas/thumbnail.yaml",
33
- "./operations/schemas/watermark.yaml": "./operations/schemas/watermark.yaml"
37
+ "./operations/schemas/text_watermark.yaml": "./operations/schemas/text_watermark.yaml",
38
+ "./operations/schemas/thumbnail.yaml": "./operations/schemas/thumbnail.yaml"
34
39
  },
35
40
  "files": [
36
41
  "dist/",
37
42
  "openapi/api.yaml",
38
43
  "asyncapi/events.yaml",
39
- "operations/schemas/"
44
+ "operations/schemas/",
45
+ "availability/availability.json"
40
46
  ],
41
47
  "scripts": {
42
48
  "build": "tsc",