@giveitsmaller/contracts 0.2.0 → 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 +3617 -0
  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 +4 -4
  161. package/dist/openapi/models/MultipartCompleteRequest.js +5 -5
  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 +53 -0
  165. package/dist/openapi/models/MultipartCompleteResponse.js +53 -0
  166. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +46 -0
  167. package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +54 -0
  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 +20 -4
  171. package/dist/openapi/models/MultipartInitiateResponse.js +10 -5
  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 +77 -3
  319. package/dist/openapi/models/index.js +77 -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 +7154 -0
  359. package/operations/schemas/archive.yaml +22 -0
  360. package/operations/schemas/audio_overlay.yaml +397 -0
  361. package/operations/schemas/audio_watermark.yaml +184 -0
  362. package/operations/schemas/compress.yaml +297 -0
  363. package/operations/schemas/convert.yaml +119 -0
  364. package/operations/schemas/custom_luma.yaml +109 -0
  365. package/operations/schemas/image_watermark.yaml +280 -0
  366. package/operations/schemas/merge.yaml +440 -0
  367. package/operations/schemas/text_watermark.yaml +147 -0
  368. package/operations/schemas/thumbnail.yaml +135 -0
  369. package/package.json +20 -3
@@ -0,0 +1,440 @@
1
+ schema_version: "2.1.0"
2
+
3
+ operation:
4
+ type: merge
5
+ description: "Combine multiple files into one"
6
+ default: false
7
+ input_model: multi
8
+ min_inputs: 2
9
+ max_inputs: 10
10
+ # All merge operations route to the single `ops-merge` Lambda via
11
+ # `operation_type=merge` on the `operations` SNS topic. The
12
+ # `output_type` field below is read by the merge Lambda to decide
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.
20
+
21
+ mime_groups:
22
+ image:
23
+ mimes:
24
+ - image/jpeg
25
+ - image/png
26
+ - image/webp
27
+ - image/gif
28
+ - image/tiff
29
+ - image/bmp
30
+ options:
31
+ output_type:
32
+ type: enum
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)."
36
+ # --- Options for output_type: gif ---
37
+ delay:
38
+ type: integer
39
+ min: 10
40
+ max: 5000
41
+ default: 500
42
+ depends_on: { output_type: gif }
43
+ description: "Milliseconds between frames"
44
+ loop_count:
45
+ type: integer
46
+ min: 0
47
+ max: 100
48
+ default: 0
49
+ depends_on: { output_type: gif }
50
+ description: "Number of loops (0 = infinite)"
51
+ # --- Options for output_type: video ---
52
+ duration_per_image:
53
+ type: float
54
+ min: 0.5
55
+ max: 30.0
56
+ default: 3.0
57
+ depends_on: { output_type: video }
58
+ description: "Seconds each image is displayed"
59
+ transition:
60
+ type: enum
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]
74
+ default: none
75
+ depends_on: { output_type: video }
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" }
117
+ transition_duration:
118
+ type: float
119
+ min: 0.1
120
+ max: 5.0
121
+ default: 0.5
122
+ depends_on: { output_type: video }
123
+ description: "Duration of transition effect in seconds"
124
+ fps:
125
+ type: integer
126
+ min: 1
127
+ max: 60
128
+ default: 30
129
+ depends_on: { output_type: video }
130
+ description: "Output frame rate"
131
+ video_format:
132
+ type: enum
133
+ values: [mp4, webm]
134
+ default: mp4
135
+ depends_on: { output_type: video }
136
+ description: "Output video container format"
137
+
138
+ video:
139
+ mimes:
140
+ - video/mp4
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
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."
165
+ transition:
166
+ type: enum
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]
178
+ default: none
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" }
217
+ crossfade_duration:
218
+ type: float
219
+ min: 0.1
220
+ max: 5.0
221
+ default: 1.0
222
+ depends_on: { transition: crossfade }
223
+ description: "Crossfade duration in seconds"
224
+ normalize_audio:
225
+ type: boolean
226
+ default: true
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
+
313
+ per_input_options:
314
+ transition:
315
+ type: enum
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" }
360
+ crossfade_duration:
361
+ type: float
362
+ min: 0.1
363
+ max: 5.0
364
+ depends_on: { transition: crossfade }
365
+ description: "Override crossfade duration for this join point"
366
+
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.
377
+ mimes:
378
+ - audio/mpeg
379
+ - audio/aac
380
+ - audio/wav
381
+ - audio/ogg
382
+ - audio/flac
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."
389
+ transition:
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.
395
+ values: [none, crossfade]
396
+ default: none
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.
403
+ crossfade_duration:
404
+ type: float
405
+ min: 0
406
+ max: 10.0
407
+ default: 0
408
+ depends_on: { transition: crossfade }
409
+ description: "Crossfade duration in seconds"
410
+ gap_duration:
411
+ type: float
412
+ min: 0
413
+ max: 10.0
414
+ default: 0
415
+ description: "Silence duration between clips in seconds"
416
+ normalize_audio:
417
+ type: boolean
418
+ default: true
419
+ description: "Normalize audio levels across all clips"
420
+ per_input_options:
421
+ transition:
422
+ type: enum
423
+ # Mirrors merge.audio.options.transition; same audio_transition
424
+ # catalog. Per ticket I18.
425
+ values: [none, crossfade]
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)".
430
+ crossfade_duration:
431
+ type: float
432
+ min: 0
433
+ max: 10.0
434
+ depends_on: { transition: crossfade }
435
+ description: "Override crossfade duration for this join point"
436
+ gap_duration:
437
+ type: float
438
+ min: 0
439
+ max: 10.0
440
+ description: "Override gap duration for this join point"
@@ -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.