@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.
- package/asyncapi/events.yaml +1777 -172
- package/availability/availability.json +2403 -0
- package/dist/asyncapi/AnonymousSchema_13.d.ts +6 -0
- package/dist/asyncapi/AnonymousSchema_13.js +7 -0
- package/dist/asyncapi/AnonymousSchema_152.d.ts +5 -0
- package/dist/asyncapi/AnonymousSchema_152.js +6 -0
- package/dist/asyncapi/Failure.d.ts +25 -0
- package/dist/asyncapi/Failure.js +1 -0
- package/dist/asyncapi/JobInputRole.d.ts +6 -0
- package/dist/asyncapi/JobInputRole.js +7 -0
- package/dist/asyncapi/MergeOutputType.d.ts +1 -3
- package/dist/asyncapi/MergeOutputType.js +0 -2
- package/dist/asyncapi/MultiOutputCompletion.d.ts +25 -0
- package/dist/asyncapi/MultiOutputCompletion.js +1 -0
- package/dist/asyncapi/NotificationsOperationsQueue.d.ts +4 -2
- package/dist/asyncapi/OperationMetrics.d.ts +3 -0
- package/dist/asyncapi/OperationProgress.d.ts +2 -0
- package/dist/asyncapi/OperationResult.d.ts +4 -19
- package/dist/asyncapi/OperationType.d.ts +6 -6
- package/dist/asyncapi/OperationType.js +5 -5
- package/dist/asyncapi/PageIndexed.d.ts +8 -0
- package/dist/asyncapi/PageIndexed.js +1 -0
- package/dist/asyncapi/PositionIndexed.d.ts +8 -0
- package/dist/asyncapi/PositionIndexed.js +1 -0
- package/dist/asyncapi/ProgressStatus.d.ts +3 -0
- package/dist/asyncapi/ProgressStatus.js +3 -0
- package/dist/asyncapi/ReEncodeDecision.d.ts +5 -0
- package/dist/asyncapi/ReEncodeDecision.js +6 -0
- package/dist/asyncapi/SingleOutputCompletion.d.ts +25 -0
- package/dist/asyncapi/SingleOutputCompletion.js +1 -0
- package/dist/asyncapi/SourceEntry.d.ts +2 -1
- package/dist/asyncapi/Unindexed.d.ts +8 -0
- package/dist/asyncapi/Unindexed.js +1 -0
- package/dist/asyncapi/UploadProbeCompletion.d.ts +16 -0
- package/dist/asyncapi/UploadProbeCompletion.js +1 -0
- package/dist/asyncapi/UploadProbeMediaMetadata.d.ts +18 -0
- package/dist/asyncapi/UploadProbeMediaMetadata.js +1 -0
- package/dist/asyncapi/UploadProbeProcessingClass.d.ts +6 -0
- package/dist/asyncapi/UploadProbeProcessingClass.js +7 -0
- package/dist/asyncapi/UploadProbeRequest.d.ts +10 -0
- package/dist/asyncapi/UploadProbeRequest.js +1 -0
- package/dist/asyncapi/UploadProbeStatus.d.ts +7 -0
- package/dist/asyncapi/UploadProbeStatus.js +8 -0
- package/dist/asyncapi/index.d.ts +13 -0
- package/dist/asyncapi/index.js +4 -0
- package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +64 -0
- package/dist/openapi/models/AudioWatermarkDecodeRequest.js +53 -0
- package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +80 -0
- package/dist/openapi/models/AudioWatermarkDecodeResponse.js +64 -0
- package/dist/openapi/models/AuthErrorResponse.d.ts +116 -0
- package/dist/openapi/models/AuthErrorResponse.js +66 -0
- package/dist/openapi/models/AuthErrorType.d.ts +73 -0
- package/dist/openapi/models/AuthErrorType.js +91 -0
- package/dist/openapi/models/AvailabilityValue.d.ts +43 -0
- package/dist/openapi/models/AvailabilityValue.js +61 -0
- package/dist/openapi/models/BalanceExhaustedResponse.d.ts +157 -0
- package/dist/openapi/models/BalanceExhaustedResponse.js +86 -0
- package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +38 -0
- package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +43 -0
- package/dist/openapi/models/CallbackEventType.d.ts +2 -2
- package/dist/openapi/models/CallbackEventType.js +2 -2
- package/dist/openapi/models/ConnectionSource.d.ts +64 -0
- package/dist/openapi/models/ConnectionSource.js +57 -0
- package/dist/openapi/models/ContactRequest.d.ts +2 -2
- package/dist/openapi/models/ContactRequest.js +2 -2
- package/dist/openapi/models/ContactSubject.d.ts +2 -2
- package/dist/openapi/models/ContactSubject.js +2 -2
- package/dist/openapi/models/ContactValidationErrorResponse.d.ts +2 -2
- package/dist/openapi/models/ContactValidationErrorResponse.js +2 -2
- package/dist/openapi/models/CreateExternalImport403Response.d.ts +24 -0
- package/dist/openapi/models/CreateExternalImport403Response.js +58 -0
- package/dist/openapi/models/CreateWorkflow422Response.d.ts +23 -0
- package/dist/openapi/models/CreateWorkflow422Response.js +51 -0
- package/dist/openapi/models/CreditTransaction.d.ts +186 -0
- package/dist/openapi/models/CreditTransaction.js +100 -0
- package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +46 -0
- package/dist/openapi/models/CreditTransactionSourceBucket.js +64 -0
- package/dist/openapi/models/CreditsBalanceResponse.d.ts +84 -0
- package/dist/openapi/models/CreditsBalanceResponse.js +68 -0
- package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +46 -0
- package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +54 -0
- package/dist/openapi/models/CreditsUsageResponse.d.ts +51 -0
- package/dist/openapi/models/CreditsUsageResponse.js +56 -0
- package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +46 -0
- package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +54 -0
- package/dist/openapi/models/Delivery.d.ts +98 -0
- package/dist/openapi/models/Delivery.js +65 -0
- package/dist/openapi/models/DeliveryOutputRef.d.ts +44 -0
- package/dist/openapi/models/DeliveryOutputRef.js +45 -0
- package/dist/openapi/models/DeliveryPlan.d.ts +77 -0
- package/dist/openapi/models/DeliveryPlan.js +72 -0
- package/dist/openapi/models/DeliveryPlanOutput.d.ts +53 -0
- package/dist/openapi/models/DeliveryPlanOutput.js +52 -0
- package/dist/openapi/models/DeliveryPlanReason.d.ts +35 -0
- package/dist/openapi/models/DeliveryPlanReason.js +53 -0
- package/dist/openapi/models/DeliverySelection.d.ts +62 -0
- package/dist/openapi/models/DeliverySelection.js +54 -0
- package/dist/openapi/models/ErrorEnvelope.d.ts +83 -5
- package/dist/openapi/models/ErrorEnvelope.js +10 -2
- package/dist/openapi/models/EstimateQuality.d.ts +34 -0
- package/dist/openapi/models/EstimateQuality.js +52 -0
- package/dist/openapi/models/EstimateRange.d.ts +48 -0
- package/dist/openapi/models/EstimateRange.js +51 -0
- package/dist/openapi/models/ExternalDestination.d.ts +41 -0
- package/dist/openapi/models/ExternalDestination.js +47 -0
- package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +49 -0
- package/dist/openapi/models/ExternalImportCreatedResponse.js +51 -0
- package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +46 -0
- package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +54 -0
- package/dist/openapi/models/ExternalImportRequest.d.ts +92 -0
- package/dist/openapi/models/ExternalImportRequest.js +61 -0
- package/dist/openapi/models/ExternalImportToken.d.ts +51 -0
- package/dist/openapi/models/ExternalImportToken.js +53 -0
- package/dist/openapi/models/ExternalSource.d.ts +31 -0
- package/dist/openapi/models/ExternalSource.js +47 -0
- package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +140 -0
- package/dist/openapi/models/FeatureNotAvailableResponse.js +76 -0
- package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +135 -0
- package/dist/openapi/models/FeatureTierRestrictedResponse.js +76 -0
- package/dist/openapi/models/FeatureViolation.d.ts +108 -0
- package/dist/openapi/models/FeatureViolation.js +63 -0
- package/dist/openapi/models/JobDefinition.d.ts +125 -14
- package/dist/openapi/models/JobDefinition.js +25 -4
- package/dist/openapi/models/JobDownload.d.ts +2 -2
- package/dist/openapi/models/JobDownload.js +2 -2
- package/dist/openapi/models/JobInputV2.d.ts +89 -0
- package/dist/openapi/models/JobInputV2.js +56 -0
- package/dist/openapi/models/JobOutputSource.d.ts +57 -0
- package/dist/openapi/models/JobOutputSource.js +55 -0
- package/dist/openapi/models/JobResponse.d.ts +2 -2
- package/dist/openapi/models/JobResponse.js +2 -2
- package/dist/openapi/models/JobStatus.d.ts +17 -8
- package/dist/openapi/models/JobStatus.js +17 -8
- package/dist/openapi/models/JobType.d.ts +2 -2
- package/dist/openapi/models/JobType.js +2 -2
- package/dist/openapi/models/LivenessResponse.d.ts +2 -2
- package/dist/openapi/models/LivenessResponse.js +2 -2
- package/dist/openapi/models/LoginUser200Response.d.ts +46 -0
- package/dist/openapi/models/LoginUser200Response.js +54 -0
- package/dist/openapi/models/LoginUser200ResponseData.d.ts +33 -0
- package/dist/openapi/models/LoginUser200ResponseData.js +44 -0
- package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +50 -0
- package/dist/openapi/models/LoginUser200ResponseDataUser.js +51 -0
- package/dist/openapi/models/LoginUserRequest.d.ts +38 -0
- package/dist/openapi/models/LoginUserRequest.js +47 -0
- package/dist/openapi/models/LogoutUser200Response.d.ts +50 -0
- package/dist/openapi/models/LogoutUser200Response.js +53 -0
- package/dist/openapi/models/MetadataResponse.d.ts +13 -2
- package/dist/openapi/models/MetadataResponse.js +6 -2
- package/dist/openapi/models/MetadataResponseDimensions.d.ts +2 -2
- package/dist/openapi/models/MetadataResponseDimensions.js +2 -2
- package/dist/openapi/models/MetadataResponseExif.d.ts +2 -2
- package/dist/openapi/models/MetadataResponseExif.js +3 -3
- package/dist/openapi/models/MetadataResponseExifGps.d.ts +2 -2
- package/dist/openapi/models/MetadataResponseExifGps.js +2 -2
- package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +3 -3
- package/dist/openapi/models/MetadataSuccessEnvelope.js +2 -2
- package/dist/openapi/models/MimeGroupSchema.d.ts +46 -2
- package/dist/openapi/models/MimeGroupSchema.js +11 -2
- package/dist/openapi/models/MultipartCompleteRequest.d.ts +3 -3
- package/dist/openapi/models/MultipartCompleteRequest.js +2 -2
- package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +2 -2
- package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +2 -2
- package/dist/openapi/models/MultipartCompleteResponse.d.ts +7 -4
- package/dist/openapi/models/MultipartCompleteResponse.js +2 -2
- package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +3 -3
- package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +2 -2
- package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +56 -0
- package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +45 -0
- package/dist/openapi/models/MultipartInitiateResponse.d.ts +19 -3
- package/dist/openapi/models/MultipartInitiateResponse.js +7 -2
- package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +3 -3
- package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +2 -2
- package/dist/openapi/models/OperationDefinition.d.ts +2 -2
- package/dist/openapi/models/OperationDefinition.js +2 -2
- package/dist/openapi/models/OperationDownload.d.ts +2 -2
- package/dist/openapi/models/OperationDownload.js +2 -2
- package/dist/openapi/models/OperationInputModel.d.ts +4 -4
- package/dist/openapi/models/OperationInputModel.js +4 -4
- package/dist/openapi/models/OperationResponse.d.ts +2 -2
- package/dist/openapi/models/OperationResponse.js +2 -2
- package/dist/openapi/models/OperationResult.d.ts +2 -2
- package/dist/openapi/models/OperationResult.js +2 -2
- package/dist/openapi/models/OperationResultMetrics.d.ts +2 -2
- package/dist/openapi/models/OperationResultMetrics.js +2 -2
- package/dist/openapi/models/OperationSchemaDefinition.d.ts +52 -5
- package/dist/openapi/models/OperationSchemaDefinition.js +10 -6
- package/dist/openapi/models/OperationStatus.d.ts +2 -2
- package/dist/openapi/models/OperationStatus.js +2 -2
- package/dist/openapi/models/OperationType.d.ts +17 -5
- package/dist/openapi/models/OperationType.js +18 -6
- package/dist/openapi/models/OperationsSchemaResponse.d.ts +70 -10
- package/dist/openapi/models/OperationsSchemaResponse.js +17 -2
- package/dist/openapi/models/OptionSchema.d.ts +42 -4
- package/dist/openapi/models/OptionSchema.js +12 -2
- package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +80 -0
- package/dist/openapi/models/PerValueAvailabilityEntry.js +53 -0
- package/dist/openapi/models/PresignedUrlPart.d.ts +2 -2
- package/dist/openapi/models/PresignedUrlPart.js +3 -3
- package/dist/openapi/models/ProcessingClass.d.ts +35 -0
- package/dist/openapi/models/ProcessingClass.js +53 -0
- package/dist/openapi/models/ProcessingClassHint.d.ts +36 -0
- package/dist/openapi/models/ProcessingClassHint.js +54 -0
- package/dist/openapi/models/ProcessingClassReason.d.ts +46 -0
- package/dist/openapi/models/ProcessingClassReason.js +64 -0
- package/dist/openapi/models/ProcessingPlan.d.ts +70 -0
- package/dist/openapi/models/ProcessingPlan.js +49 -0
- package/dist/openapi/models/ProcessingPlanJob.d.ts +81 -0
- package/dist/openapi/models/ProcessingPlanJob.js +71 -0
- package/dist/openapi/models/ReadinessResponse.d.ts +2 -2
- package/dist/openapi/models/ReadinessResponse.js +2 -2
- package/dist/openapi/models/ResponseEnvelope.d.ts +2 -2
- package/dist/openapi/models/ResponseEnvelope.js +2 -2
- package/dist/openapi/models/RetryResponse.d.ts +5 -5
- package/dist/openapi/models/RetryResponse.js +2 -2
- package/dist/openapi/models/RetrySuccessEnvelope.d.ts +3 -3
- package/dist/openapi/models/RetrySuccessEnvelope.js +2 -2
- package/dist/openapi/models/SseEventType.d.ts +2 -2
- package/dist/openapi/models/SseEventType.js +2 -2
- package/dist/openapi/models/SseJobCompletedData.d.ts +3 -3
- package/dist/openapi/models/SseJobCompletedData.js +2 -2
- package/dist/openapi/models/SseJobFailedData.d.ts +3 -3
- package/dist/openapi/models/SseJobFailedData.js +2 -2
- package/dist/openapi/models/SseOperationCompletedData.d.ts +4 -4
- package/dist/openapi/models/SseOperationCompletedData.js +2 -2
- package/dist/openapi/models/SseOperationFailedData.d.ts +3 -3
- package/dist/openapi/models/SseOperationFailedData.js +2 -2
- package/dist/openapi/models/SseOperationProgressData.d.ts +61 -3
- package/dist/openapi/models/SseOperationProgressData.js +22 -2
- package/dist/openapi/models/SseWorkflowTerminalData.d.ts +26 -4
- package/dist/openapi/models/SseWorkflowTerminalData.js +4 -2
- package/dist/openapi/models/TierRestrictionKind.d.ts +33 -0
- package/dist/openapi/models/TierRestrictionKind.js +51 -0
- package/dist/openapi/models/TierRestrictionResponse.d.ts +154 -0
- package/dist/openapi/models/TierRestrictionResponse.js +83 -0
- package/dist/openapi/models/UploadConstraintsApplied.d.ts +70 -0
- package/dist/openapi/models/UploadConstraintsApplied.js +57 -0
- package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +136 -0
- package/dist/openapi/models/UploadDurationExceedsTierResponse.js +82 -0
- package/dist/openapi/models/UploadFile403Response.d.ts +27 -0
- package/dist/openapi/models/UploadFile403Response.js +47 -0
- package/dist/openapi/models/UploadFile422Response.d.ts +27 -0
- package/dist/openapi/models/UploadFile422Response.js +47 -0
- package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +172 -0
- package/dist/openapi/models/UploadProbeMediaMetadata.js +69 -0
- package/dist/openapi/models/UploadProbeProcessingClass.d.ts +33 -0
- package/dist/openapi/models/UploadProbeProcessingClass.js +51 -0
- package/dist/openapi/models/UploadProbeResponse.d.ts +58 -0
- package/dist/openapi/models/UploadProbeResponse.js +58 -0
- package/dist/openapi/models/UploadProbeStatus.d.ts +41 -0
- package/dist/openapi/models/UploadProbeStatus.js +59 -0
- package/dist/openapi/models/UploadResponse.d.ts +17 -3
- package/dist/openapi/models/UploadResponse.js +7 -2
- package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +136 -0
- package/dist/openapi/models/UploadSizeExceedsTierResponse.js +82 -0
- package/dist/openapi/models/UploadSource.d.ts +48 -0
- package/dist/openapi/models/UploadSource.js +53 -0
- package/dist/openapi/models/UploadSuccessEnvelope.d.ts +3 -3
- package/dist/openapi/models/UploadSuccessEnvelope.js +2 -2
- package/dist/openapi/models/UploadThresholds.d.ts +119 -0
- package/dist/openapi/models/UploadThresholds.js +79 -0
- package/dist/openapi/models/UserTier.d.ts +41 -0
- package/dist/openapi/models/UserTier.js +59 -0
- package/dist/openapi/models/ValidationErrorEnvelope.d.ts +51 -4
- package/dist/openapi/models/ValidationErrorEnvelope.js +10 -2
- package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +37 -4
- package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +6 -2
- package/dist/openapi/models/WarningType.d.ts +48 -0
- package/dist/openapi/models/WarningType.js +66 -0
- package/dist/openapi/models/WebhookOperationContext.d.ts +3 -3
- package/dist/openapi/models/WebhookOperationContext.js +2 -2
- package/dist/openapi/models/WebhookPayload.d.ts +2 -2
- package/dist/openapi/models/WebhookPayload.js +3 -3
- package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +36 -0
- package/dist/openapi/models/WorkflowCancelBillingEffect.js +54 -0
- package/dist/openapi/models/WorkflowCancelResponse.d.ts +66 -0
- package/dist/openapi/models/WorkflowCancelResponse.js +62 -0
- package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +46 -0
- package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +54 -0
- package/dist/openapi/models/WorkflowCreateRequest.d.ts +39 -5
- package/dist/openapi/models/WorkflowCreateRequest.js +11 -5
- package/dist/openapi/models/WorkflowCreateResponse.d.ts +63 -2
- package/dist/openapi/models/WorkflowCreateResponse.js +21 -2
- package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +3 -3
- package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +2 -2
- package/dist/openapi/models/WorkflowDownloadResponse.d.ts +2 -2
- package/dist/openapi/models/WorkflowDownloadResponse.js +2 -2
- package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +3 -3
- package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +2 -2
- package/dist/openapi/models/WorkflowEdge.d.ts +2 -2
- package/dist/openapi/models/WorkflowEdge.js +2 -2
- package/dist/openapi/models/WorkflowExpiredResponse.d.ts +126 -0
- package/dist/openapi/models/WorkflowExpiredResponse.js +75 -0
- package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +30 -0
- package/dist/openapi/models/WorkflowPauseRequiredAction.js +48 -0
- package/dist/openapi/models/WorkflowPausedDetail.d.ts +99 -0
- package/dist/openapi/models/WorkflowPausedDetail.js +65 -0
- package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +47 -0
- package/dist/openapi/models/WorkflowPausedDetailLinks.js +45 -0
- package/dist/openapi/models/WorkflowProcessing.d.ts +36 -0
- package/dist/openapi/models/WorkflowProcessing.js +42 -0
- package/dist/openapi/models/WorkflowResumeResponse.d.ts +55 -0
- package/dist/openapi/models/WorkflowResumeResponse.js +57 -0
- package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +46 -0
- package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +54 -0
- package/dist/openapi/models/WorkflowSource.d.ts +40 -0
- package/dist/openapi/models/WorkflowSource.js +57 -0
- package/dist/openapi/models/WorkflowStatus.d.ts +31 -8
- package/dist/openapi/models/WorkflowStatus.js +32 -9
- package/dist/openapi/models/WorkflowStatusResponse.d.ts +34 -2
- package/dist/openapi/models/WorkflowStatusResponse.js +13 -2
- package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +3 -3
- package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +2 -2
- package/dist/openapi/models/WorkflowWarning.d.ts +119 -0
- package/dist/openapi/models/WorkflowWarning.js +63 -0
- package/dist/openapi/models/WorkflowWarningSeverity.d.ts +29 -0
- package/dist/openapi/models/WorkflowWarningSeverity.js +47 -0
- package/dist/openapi/models/index.d.ts +75 -3
- package/dist/openapi/models/index.js +75 -3
- package/dist/openapi/runtime.d.ts +2 -2
- package/dist/openapi/runtime.js +17 -2
- package/dist/operations/archive.metadata.d.ts +2 -0
- package/dist/operations/archive.metadata.js +13 -0
- package/dist/operations/audio_overlay.d.ts +48 -0
- package/dist/operations/audio_overlay.js +19 -0
- package/dist/operations/audio_overlay.metadata.d.ts +2 -0
- package/dist/operations/audio_overlay.metadata.js +167 -0
- package/dist/operations/audio_watermark.d.ts +42 -0
- package/dist/operations/audio_watermark.js +37 -0
- package/dist/operations/audio_watermark.metadata.d.ts +2 -0
- package/dist/operations/audio_watermark.metadata.js +94 -0
- package/dist/operations/compress.metadata.d.ts +2 -0
- package/dist/operations/compress.metadata.js +205 -0
- package/dist/operations/convert.metadata.d.ts +2 -0
- package/dist/operations/convert.metadata.js +85 -0
- package/dist/operations/custom_luma.d.ts +7 -0
- package/dist/operations/custom_luma.js +2 -0
- package/dist/operations/custom_luma.metadata.d.ts +2 -0
- package/dist/operations/custom_luma.metadata.js +49 -0
- package/dist/operations/image_watermark.d.ts +54 -0
- package/dist/operations/image_watermark.js +37 -0
- package/dist/operations/image_watermark.metadata.d.ts +2 -0
- package/dist/operations/image_watermark.metadata.js +97 -0
- package/dist/operations/index.d.ts +16 -1
- package/dist/operations/index.js +16 -1
- package/dist/operations/merge.d.ts +111 -31
- package/dist/operations/merge.js +106 -20
- package/dist/operations/merge.metadata.d.ts +2 -0
- package/dist/operations/merge.metadata.js +385 -0
- package/dist/operations/metadata-types.d.ts +47 -0
- package/dist/operations/metadata-types.js +2 -0
- package/dist/operations/text_watermark.d.ts +31 -0
- package/dist/operations/text_watermark.js +22 -0
- package/dist/operations/text_watermark.metadata.d.ts +2 -0
- package/dist/operations/text_watermark.metadata.js +46 -0
- package/dist/operations/thumbnail.metadata.d.ts +2 -0
- package/dist/operations/thumbnail.metadata.js +88 -0
- package/openapi/api.yaml +5070 -449
- package/operations/schemas/audio_overlay.yaml +397 -0
- package/operations/schemas/audio_watermark.yaml +184 -0
- package/operations/schemas/compress.yaml +20 -3
- package/operations/schemas/convert.yaml +18 -3
- package/operations/schemas/custom_luma.yaml +109 -0
- package/operations/schemas/image_watermark.yaml +280 -0
- package/operations/schemas/merge.yaml +295 -66
- package/operations/schemas/text_watermark.yaml +147 -0
- package/operations/schemas/thumbnail.yaml +15 -0
- package/package.json +10 -4
- package/operations/schemas/watermark.yaml +0 -87
|
@@ -0,0 +1,2403 @@
|
|
|
1
|
+
{
|
|
2
|
+
"capabilities_version": 28,
|
|
3
|
+
"environment": "baseline",
|
|
4
|
+
"generated_at": null,
|
|
5
|
+
"operations": {
|
|
6
|
+
"archive": {
|
|
7
|
+
"accepts_mixed_types": true,
|
|
8
|
+
"default": false,
|
|
9
|
+
"description": "Bundle multiple files into a single archive",
|
|
10
|
+
"input_model": "multi",
|
|
11
|
+
"max_inputs": 50,
|
|
12
|
+
"min_inputs": 2,
|
|
13
|
+
"options": {
|
|
14
|
+
"folder_structure": {
|
|
15
|
+
"default": "flat",
|
|
16
|
+
"description": "flat = all files in root, by_job = subfolder per source job",
|
|
17
|
+
"type": "enum",
|
|
18
|
+
"values": [
|
|
19
|
+
"flat",
|
|
20
|
+
"by_job"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
"format": {
|
|
24
|
+
"default": "zip",
|
|
25
|
+
"description": "Archive format",
|
|
26
|
+
"type": "enum",
|
|
27
|
+
"values": [
|
|
28
|
+
"zip",
|
|
29
|
+
"tar.gz"
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"audio_overlay": {
|
|
35
|
+
"availability": "planned",
|
|
36
|
+
"default": false,
|
|
37
|
+
"description": "Mix a secondary audio asset (overlay) over a primary audio or\nvideo base. Use cases: DJ tags, podcast intros/outros, station\nIDs, jingles, branded mid-rolls.\n\n**Industry naming.** This is \"audio overlay\" or \"audio branding\"\n\u2014 NOT \"audio watermark\". Audio watermarking is steganographic\n(imperceptible identifier embedded in audio for ownership /\nforensic tracking) and is owned by the separate `audio_watermark`\noperation (planned per ticket I20).\n\nMulti-input (Path B with `role: base` + `role: overlay` per\n`JobInputV2.role`). `min_inputs: 2 = max_inputs: 2` for V2.0;\nmulti-overlay support is advertised as a planned feature\n(`features.multi_overlay_stack`) but Lambda-side implementation\ndeferred.\n\nThe overlay can be uploaded directly, imported externally, or\nreferenced from a vault connection per `WorkflowSource` (from\nI10). The base is whatever single-asset source the workflow\nupstream has \u2014 for `mime_groups.audio`, the base is the primary\naudio track; for `mime_groups.video`, the overlay is mixed into\nthe video's audio track and the visual track passes through\nuntouched.\n\nPer ADR-0001 \u00a71.3 (Tension 1 \u2014 `planned` operations return\n`feature_not_available` 422 until Lambda support ships). Per\nADR-0004 \u00a7\"V2 JobDefinition\" + plan v5 \u00a7F1 round 6.\n",
|
|
38
|
+
"features": {
|
|
39
|
+
"multi_overlay_stack": {
|
|
40
|
+
"availability": "planned",
|
|
41
|
+
"description": "Allow up to 8 overlay inputs per job (currently capped at 1\noverlay). Per-overlay placement via\n`JobInputV2.per_input_options`. Lambda-side support not yet\nconfirmed; tagged `planned` per ADR-0001 \u00a71.4. Mirrors the\nsame-named feature on `image_watermark`.\n"
|
|
42
|
+
},
|
|
43
|
+
"sync_to_silence": {
|
|
44
|
+
"availability": "planned",
|
|
45
|
+
"description": "Anchor overlay placement to detected silence regions in the\nbase track (e.g. drop a podcast jingle into the natural\nbreath after the host says \"back in a sec\"). Server-side\nsilence detection runs at workflow-create time; the actual\noverlay start position is reported on\n`OperationMetrics.overlay_anchor_ms`. Gates two extra\noptions: `silence_threshold_db` and `min_silence_ms`. Lambda\nsupport not yet shipped.\n"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"input_model": "multi",
|
|
49
|
+
"max_inputs": 2,
|
|
50
|
+
"mime_groups": {
|
|
51
|
+
"audio": {
|
|
52
|
+
"availability": "planned",
|
|
53
|
+
"mimes": [
|
|
54
|
+
"audio/mpeg",
|
|
55
|
+
"audio/aac",
|
|
56
|
+
"audio/wav",
|
|
57
|
+
"audio/ogg",
|
|
58
|
+
"audio/flac"
|
|
59
|
+
],
|
|
60
|
+
"options": {
|
|
61
|
+
"duck_attack_ms": {
|
|
62
|
+
"default": 50,
|
|
63
|
+
"depends_on": {
|
|
64
|
+
"mode": "duck"
|
|
65
|
+
},
|
|
66
|
+
"description": "Time (milliseconds) for the ducker to reach full\nattenuation once the overlay crosses `duck_threshold`.\nOnly applies when `mode: duck`.\n",
|
|
67
|
+
"max": 5000,
|
|
68
|
+
"min": 0,
|
|
69
|
+
"type": "integer"
|
|
70
|
+
},
|
|
71
|
+
"duck_ratio": {
|
|
72
|
+
"default": 4.0,
|
|
73
|
+
"depends_on": {
|
|
74
|
+
"mode": "duck"
|
|
75
|
+
},
|
|
76
|
+
"description": "Side-chain compression ratio. Higher values produce more\naggressive ducking. Only applies when `mode: duck`.\n",
|
|
77
|
+
"max": 20.0,
|
|
78
|
+
"min": 1.0,
|
|
79
|
+
"type": "float"
|
|
80
|
+
},
|
|
81
|
+
"duck_release_ms": {
|
|
82
|
+
"default": 300,
|
|
83
|
+
"depends_on": {
|
|
84
|
+
"mode": "duck"
|
|
85
|
+
},
|
|
86
|
+
"description": "Time (milliseconds) for the ducker to release back to\nunity gain after the overlay drops below\n`duck_threshold`. Only applies when `mode: duck`.\n",
|
|
87
|
+
"max": 5000,
|
|
88
|
+
"min": 0,
|
|
89
|
+
"type": "integer"
|
|
90
|
+
},
|
|
91
|
+
"duck_threshold": {
|
|
92
|
+
"default": -20.0,
|
|
93
|
+
"depends_on": {
|
|
94
|
+
"mode": "duck"
|
|
95
|
+
},
|
|
96
|
+
"description": "Side-chain threshold (dB). Base audio is ducked when the\noverlay exceeds this level. Only applies when `mode: duck`.\n",
|
|
97
|
+
"max": 0.0,
|
|
98
|
+
"min": -60.0,
|
|
99
|
+
"type": "float"
|
|
100
|
+
},
|
|
101
|
+
"duration": {
|
|
102
|
+
"description": "Maximum duration (seconds) of the overlay AS PLAYED \u2014 the\noverlay asset is trimmed to this length if longer. Omit\n(or set 0) to play the overlay's full natural length.\n**Disambiguation:** this is overlay-trim duration, NOT\noutput duration. The output duration always matches the\nbase track's duration.\n",
|
|
103
|
+
"min": 0.0,
|
|
104
|
+
"type": "float"
|
|
105
|
+
},
|
|
106
|
+
"fade_in_ms": {
|
|
107
|
+
"default": 0,
|
|
108
|
+
"description": "Linear fade-in applied to the overlay (milliseconds).\nDefault 0 = hard start.\n",
|
|
109
|
+
"max": 10000,
|
|
110
|
+
"min": 0,
|
|
111
|
+
"type": "integer"
|
|
112
|
+
},
|
|
113
|
+
"fade_out_ms": {
|
|
114
|
+
"default": 0,
|
|
115
|
+
"description": "Linear fade-out applied to the overlay (milliseconds).\nDefault 0 = hard stop.\n",
|
|
116
|
+
"max": 10000,
|
|
117
|
+
"min": 0,
|
|
118
|
+
"type": "integer"
|
|
119
|
+
},
|
|
120
|
+
"loop": {
|
|
121
|
+
"default": false,
|
|
122
|
+
"description": "When true, the overlay loops continuously across the\nduration of the base track (or up to the trimmed\n`duration`). Useful for ambient bed music / background\nstings.\n",
|
|
123
|
+
"type": "boolean"
|
|
124
|
+
},
|
|
125
|
+
"loop_interval": {
|
|
126
|
+
"default": 0.0,
|
|
127
|
+
"depends_on": {
|
|
128
|
+
"loop": true
|
|
129
|
+
},
|
|
130
|
+
"description": "Silence gap (seconds) inserted between overlay loops.\nDefault 0 = back-to-back. Only applies when `loop: true`.\n",
|
|
131
|
+
"max": 600.0,
|
|
132
|
+
"min": 0.0,
|
|
133
|
+
"type": "float"
|
|
134
|
+
},
|
|
135
|
+
"min_silence_ms": {
|
|
136
|
+
"availability": "planned",
|
|
137
|
+
"default": 500,
|
|
138
|
+
"description": "Minimum silence duration (milliseconds) to qualify as an\nanchor region for `sync_to_silence`. Inert until that\nfeature flips to stable.\n",
|
|
139
|
+
"max": 30000,
|
|
140
|
+
"min": 50,
|
|
141
|
+
"type": "integer"
|
|
142
|
+
},
|
|
143
|
+
"mode": {
|
|
144
|
+
"default": "mix",
|
|
145
|
+
"description": "How the overlay combines with the base audio:\n- `mix`: simple sum (overlay + base; both audible).\n- `duck`: side-chain compress the base under the overlay\n (base attenuates while overlay plays \u2014 broadcast pattern).\n- `replace`: mute the base for the overlay's duration\n (overlay only; useful for hard-cut station IDs).\n",
|
|
146
|
+
"per_value_availability": {
|
|
147
|
+
"duck": {
|
|
148
|
+
"availability": "planned"
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"type": "enum",
|
|
152
|
+
"values": [
|
|
153
|
+
"mix",
|
|
154
|
+
"duck",
|
|
155
|
+
"replace"
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
"overlay_gain_db": {
|
|
159
|
+
"default": -3.0,
|
|
160
|
+
"description": "Gain applied to the overlay in decibels before mixing.\nDefault -3 dB matches typical podcast intro / DJ-tag\nlevel. Positive values amplify (clip risk); negative\nvalues attenuate. Clamped to range.\n",
|
|
161
|
+
"max": 12.0,
|
|
162
|
+
"min": -60.0,
|
|
163
|
+
"type": "float"
|
|
164
|
+
},
|
|
165
|
+
"silence_threshold_db": {
|
|
166
|
+
"availability": "planned",
|
|
167
|
+
"default": -50.0,
|
|
168
|
+
"description": "Silence threshold (dB) for the `sync_to_silence` feature.\nBase audio below this level for at least `min_silence_ms`\nqualifies as a silence region into which the overlay can\nbe anchored. Inert until\n`features.sync_to_silence.availability` flips to stable.\n",
|
|
169
|
+
"max": -10.0,
|
|
170
|
+
"min": -80.0,
|
|
171
|
+
"type": "float"
|
|
172
|
+
},
|
|
173
|
+
"start_at": {
|
|
174
|
+
"default": 0.0,
|
|
175
|
+
"description": "Start position (seconds) on the base track at which the\noverlay begins playing. Default 0.0 = mix from the\nbeginning. Inert when\n`features.sync_to_silence.availability` flips to\n`stable` and `mode: sync_to_silence` is selected\n(placement is then anchored to detected silence).\n",
|
|
176
|
+
"min": 0.0,
|
|
177
|
+
"type": "float"
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"processing_class": {
|
|
181
|
+
"long_form": {
|
|
182
|
+
"availability": "planned",
|
|
183
|
+
"constraints": {
|
|
184
|
+
"max_input_duration": "PT12H",
|
|
185
|
+
"max_input_size_bytes": 21474836480,
|
|
186
|
+
"max_output_size_bytes": 21474836480
|
|
187
|
+
},
|
|
188
|
+
"required_tier": "pro"
|
|
189
|
+
},
|
|
190
|
+
"short_form": {
|
|
191
|
+
"availability": "planned",
|
|
192
|
+
"constraints": {
|
|
193
|
+
"max_input_duration": "PT5M",
|
|
194
|
+
"max_input_size_bytes": 524288000,
|
|
195
|
+
"max_output_size_bytes": 524288000
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
},
|
|
200
|
+
"video": {
|
|
201
|
+
"availability": "planned",
|
|
202
|
+
"mimes": [
|
|
203
|
+
"video/mp4",
|
|
204
|
+
"video/webm"
|
|
205
|
+
],
|
|
206
|
+
"options": {
|
|
207
|
+
"duck_attack_ms": {
|
|
208
|
+
"default": 50,
|
|
209
|
+
"depends_on": {
|
|
210
|
+
"mode": "duck"
|
|
211
|
+
},
|
|
212
|
+
"description": "Ducker attack (milliseconds). Only applies when `mode: duck`.",
|
|
213
|
+
"max": 5000,
|
|
214
|
+
"min": 0,
|
|
215
|
+
"type": "integer"
|
|
216
|
+
},
|
|
217
|
+
"duck_ratio": {
|
|
218
|
+
"default": 4.0,
|
|
219
|
+
"depends_on": {
|
|
220
|
+
"mode": "duck"
|
|
221
|
+
},
|
|
222
|
+
"description": "Side-chain compression ratio. Only applies when `mode: duck`.",
|
|
223
|
+
"max": 20.0,
|
|
224
|
+
"min": 1.0,
|
|
225
|
+
"type": "float"
|
|
226
|
+
},
|
|
227
|
+
"duck_release_ms": {
|
|
228
|
+
"default": 300,
|
|
229
|
+
"depends_on": {
|
|
230
|
+
"mode": "duck"
|
|
231
|
+
},
|
|
232
|
+
"description": "Ducker release (milliseconds). Only applies when `mode: duck`.",
|
|
233
|
+
"max": 5000,
|
|
234
|
+
"min": 0,
|
|
235
|
+
"type": "integer"
|
|
236
|
+
},
|
|
237
|
+
"duck_threshold": {
|
|
238
|
+
"default": -20.0,
|
|
239
|
+
"depends_on": {
|
|
240
|
+
"mode": "duck"
|
|
241
|
+
},
|
|
242
|
+
"description": "Side-chain threshold (dB). Only applies when `mode: duck`.",
|
|
243
|
+
"max": 0.0,
|
|
244
|
+
"min": -60.0,
|
|
245
|
+
"type": "float"
|
|
246
|
+
},
|
|
247
|
+
"duration": {
|
|
248
|
+
"description": "Maximum duration (seconds) of the overlay AS PLAYED. The\noverlay asset is trimmed to this length if longer. Output\nvideo duration always matches the base.\n",
|
|
249
|
+
"min": 0.0,
|
|
250
|
+
"type": "float"
|
|
251
|
+
},
|
|
252
|
+
"fade_in_ms": {
|
|
253
|
+
"default": 0,
|
|
254
|
+
"description": "Linear fade-in applied to the overlay (milliseconds).",
|
|
255
|
+
"max": 10000,
|
|
256
|
+
"min": 0,
|
|
257
|
+
"type": "integer"
|
|
258
|
+
},
|
|
259
|
+
"fade_out_ms": {
|
|
260
|
+
"default": 0,
|
|
261
|
+
"description": "Linear fade-out applied to the overlay (milliseconds).",
|
|
262
|
+
"max": 10000,
|
|
263
|
+
"min": 0,
|
|
264
|
+
"type": "integer"
|
|
265
|
+
},
|
|
266
|
+
"loop": {
|
|
267
|
+
"default": false,
|
|
268
|
+
"description": "When true, the overlay loops continuously across the\nduration of the base video.\n",
|
|
269
|
+
"type": "boolean"
|
|
270
|
+
},
|
|
271
|
+
"loop_interval": {
|
|
272
|
+
"default": 0.0,
|
|
273
|
+
"depends_on": {
|
|
274
|
+
"loop": true
|
|
275
|
+
},
|
|
276
|
+
"description": "Silence gap (seconds) between overlay loops.",
|
|
277
|
+
"max": 600.0,
|
|
278
|
+
"min": 0.0,
|
|
279
|
+
"type": "float"
|
|
280
|
+
},
|
|
281
|
+
"min_silence_ms": {
|
|
282
|
+
"availability": "planned",
|
|
283
|
+
"default": 500,
|
|
284
|
+
"description": "Minimum silence duration (milliseconds) for\n`sync_to_silence`. Inert until that feature flips to\nstable.\n",
|
|
285
|
+
"max": 30000,
|
|
286
|
+
"min": 50,
|
|
287
|
+
"type": "integer"
|
|
288
|
+
},
|
|
289
|
+
"mode": {
|
|
290
|
+
"default": "mix",
|
|
291
|
+
"description": "Same modes as the audio mime_group. `replace` mutes the\nbase video's audio for the overlay's duration.\n",
|
|
292
|
+
"per_value_availability": {
|
|
293
|
+
"duck": {
|
|
294
|
+
"availability": "planned"
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
"type": "enum",
|
|
298
|
+
"values": [
|
|
299
|
+
"mix",
|
|
300
|
+
"duck",
|
|
301
|
+
"replace"
|
|
302
|
+
]
|
|
303
|
+
},
|
|
304
|
+
"no_audio_track_behaviour": {
|
|
305
|
+
"default": "reject",
|
|
306
|
+
"description": "Controls behaviour when the base video has no audio\ntrack:\n- `reject`: workflow-create returns 422 (default \u2014 surfaces\n the problem at the API edge rather than producing a\n surprising silent-base output).\n- `create_silent`: synthesise a silent base track at the\n video's framerate and mix the overlay into that.\n- `replace`: same as `create_silent` but signals intent\n (\"the overlay IS the audio track\"), letting Lambda\n skip the base-track synthesis when the overlay covers\n the full video duration.\n",
|
|
307
|
+
"type": "enum",
|
|
308
|
+
"values": [
|
|
309
|
+
"reject",
|
|
310
|
+
"create_silent",
|
|
311
|
+
"replace"
|
|
312
|
+
]
|
|
313
|
+
},
|
|
314
|
+
"overlay_gain_db": {
|
|
315
|
+
"default": -3.0,
|
|
316
|
+
"description": "Gain applied to the overlay in decibels before mixing.",
|
|
317
|
+
"max": 12.0,
|
|
318
|
+
"min": -60.0,
|
|
319
|
+
"type": "float"
|
|
320
|
+
},
|
|
321
|
+
"silence_threshold_db": {
|
|
322
|
+
"availability": "planned",
|
|
323
|
+
"default": -50.0,
|
|
324
|
+
"description": "Silence threshold (dB) for `sync_to_silence`. Inert\nuntil that feature flips to stable.\n",
|
|
325
|
+
"max": -10.0,
|
|
326
|
+
"min": -80.0,
|
|
327
|
+
"type": "float"
|
|
328
|
+
},
|
|
329
|
+
"start_at": {
|
|
330
|
+
"default": 0.0,
|
|
331
|
+
"description": "Start position (seconds) on the base video's audio track\nat which the overlay begins playing.\n",
|
|
332
|
+
"min": 0.0,
|
|
333
|
+
"type": "float"
|
|
334
|
+
}
|
|
335
|
+
},
|
|
336
|
+
"processing_class": {
|
|
337
|
+
"long_form": {
|
|
338
|
+
"availability": "planned",
|
|
339
|
+
"constraints": {
|
|
340
|
+
"max_input_duration": "PT12H",
|
|
341
|
+
"max_input_size_bytes": 21474836480,
|
|
342
|
+
"max_output_size_bytes": 21474836480
|
|
343
|
+
},
|
|
344
|
+
"required_tier": "pro"
|
|
345
|
+
},
|
|
346
|
+
"short_form": {
|
|
347
|
+
"availability": "planned",
|
|
348
|
+
"constraints": {
|
|
349
|
+
"max_input_duration": "PT5M",
|
|
350
|
+
"max_input_size_bytes": 524288000,
|
|
351
|
+
"max_output_size_bytes": 524288000
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
"min_inputs": 2
|
|
358
|
+
},
|
|
359
|
+
"audio_watermark": {
|
|
360
|
+
"availability": "planned",
|
|
361
|
+
"default": false,
|
|
362
|
+
"description": "Embed a steganographic forensic watermark into an audio asset (or\na video's audio track). The watermark is psychoacoustically masked\nto be inaudible and engineered to survive lossy compression,\ntranscoding, broadcast chains, and analog-hole capture (Cinavia /\nResemble PerTh territory).\n\n**Industry naming.** This is *audio watermarking* (steganographic;\nused for ownership, forensic tracking, content provenance) \u2014 NOT\n*audio overlay* (audible mixing of secondary audio for branding).\nAudio overlay is owned by the separate `audio_overlay` operation\n(per ticket I19).\n\nSingle-input. Watermark embedding takes the base asset and writes\nout an indistinguishable-to-the-ear copy with the encoded payload.\n\n**Decode endpoint.** A paired `POST /api/audio-watermark/decode`\nendpoint extracts the embedded watermark from a previously-marked\nasset, returning `{watermark_id, payload?, confidence, method,\ndetected_at}`. Decode is **own-watermarks-only** (rate-limited\n+ audited; the decoder will refuse to extract from media the\ncaller did not mark themselves) \u2014 pin per spike S11 acceptance.\n\nPer ADR-0001 \u00a71.3 (Tension 1 \u2014 `planned` operations return\n`feature_not_available` 422 until Lambda support ships).\nPer plan v5 \u00a7F1 round 6 (codex narrowed methods enum from 5 to 3,\ndropping `spread_spectrum` / `echo_hiding` / `phase_coding` \u2014\ntextbook families, not product choices).\n",
|
|
363
|
+
"input_model": "single",
|
|
364
|
+
"mime_groups": {
|
|
365
|
+
"audio": {
|
|
366
|
+
"availability": "planned",
|
|
367
|
+
"mimes": [
|
|
368
|
+
"audio/mpeg",
|
|
369
|
+
"audio/aac",
|
|
370
|
+
"audio/wav",
|
|
371
|
+
"audio/ogg",
|
|
372
|
+
"audio/flac"
|
|
373
|
+
],
|
|
374
|
+
"options": {
|
|
375
|
+
"density": {
|
|
376
|
+
"default": "normal",
|
|
377
|
+
"description": "Watermark spatial density along the asset duration:\n- `sparse`: payload bits inserted at wider intervals;\n decode confidence drops on short clips.\n- `normal` (default): balanced.\n- `dense`: maximum decode confidence on short clips at\n the cost of slightly higher perceptual risk.\n",
|
|
378
|
+
"type": "enum",
|
|
379
|
+
"values": [
|
|
380
|
+
"sparse",
|
|
381
|
+
"normal",
|
|
382
|
+
"dense"
|
|
383
|
+
]
|
|
384
|
+
},
|
|
385
|
+
"method": {
|
|
386
|
+
"default": "auto",
|
|
387
|
+
"description": "Watermarking algorithm:\n- `auto`: server selects the best available method for the\n input (currently maps to `psychoacoustic`; will widen as\n `neural` ships).\n- `psychoacoustic`: classical masking-curve embedding.\n Resemble's open-source PerTh library provides the path-\n to-prod reference implementation. Survives MP3/AAC at\n moderate bitrates and broadcast chains.\n- `neural`: ML-based embedding (deep generative). Higher\n survival under aggressive transcoding + analog-hole\n capture; longer encoding time + non-deterministic.\n",
|
|
388
|
+
"per_value_availability": {
|
|
389
|
+
"neural": {
|
|
390
|
+
"availability": "planned"
|
|
391
|
+
}
|
|
392
|
+
},
|
|
393
|
+
"type": "enum",
|
|
394
|
+
"values": [
|
|
395
|
+
"auto",
|
|
396
|
+
"psychoacoustic",
|
|
397
|
+
"neural"
|
|
398
|
+
]
|
|
399
|
+
},
|
|
400
|
+
"payload": {
|
|
401
|
+
"description": "Optional caller-supplied payload to embed (max 256\ncharacters). Use cases: ownership marker, distribution\nchannel ID, license key. When omitted, the server\ngenerates a UUID-v7 `watermark_id` and embeds that\ninstead; the generated ID is returned on\n`OperationResult` so the caller can subsequently call\nthe decode endpoint to verify.\n",
|
|
402
|
+
"required": false,
|
|
403
|
+
"type": "string"
|
|
404
|
+
},
|
|
405
|
+
"robustness": {
|
|
406
|
+
"default": "compression_resistant",
|
|
407
|
+
"description": "Survival profile:\n- `light`: minimal payload-strength; smallest perceptual\n footprint. Survives a single re-encode pass at moderate\n bitrate.\n- `compression_resistant` (default): survives multiple\n MP3/AAC re-encodes at typical streaming bitrates.\n- `broadcast_grade`: survives broadcast compression\n chains, EQ, dynamic-range compression, and analog-hole\n capture (microphone re-recording). Higher embedding\n time + slightly larger perceptual footprint.\n",
|
|
408
|
+
"type": "enum",
|
|
409
|
+
"values": [
|
|
410
|
+
"light",
|
|
411
|
+
"compression_resistant",
|
|
412
|
+
"broadcast_grade"
|
|
413
|
+
]
|
|
414
|
+
}
|
|
415
|
+
},
|
|
416
|
+
"processing_class": {
|
|
417
|
+
"long_form": {
|
|
418
|
+
"availability": "planned",
|
|
419
|
+
"constraints": {
|
|
420
|
+
"max_input_duration": "PT12H",
|
|
421
|
+
"max_input_size_bytes": 21474836480,
|
|
422
|
+
"max_output_size_bytes": 21474836480
|
|
423
|
+
},
|
|
424
|
+
"required_tier": "enterprise"
|
|
425
|
+
},
|
|
426
|
+
"short_form": {
|
|
427
|
+
"availability": "planned",
|
|
428
|
+
"constraints": {
|
|
429
|
+
"max_input_duration": "PT5M",
|
|
430
|
+
"max_input_size_bytes": 524288000,
|
|
431
|
+
"max_output_size_bytes": 524288000
|
|
432
|
+
},
|
|
433
|
+
"required_tier": "enterprise"
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
},
|
|
437
|
+
"video": {
|
|
438
|
+
"availability": "planned",
|
|
439
|
+
"mimes": [
|
|
440
|
+
"video/mp4",
|
|
441
|
+
"video/webm"
|
|
442
|
+
],
|
|
443
|
+
"options": {
|
|
444
|
+
"density": {
|
|
445
|
+
"default": "normal",
|
|
446
|
+
"description": "Watermark density along the asset duration.",
|
|
447
|
+
"type": "enum",
|
|
448
|
+
"values": [
|
|
449
|
+
"sparse",
|
|
450
|
+
"normal",
|
|
451
|
+
"dense"
|
|
452
|
+
]
|
|
453
|
+
},
|
|
454
|
+
"method": {
|
|
455
|
+
"default": "auto",
|
|
456
|
+
"description": "Watermarking algorithm. Same semantics as the `audio`\nmime_group; embedded into the video's audio track only.\n",
|
|
457
|
+
"per_value_availability": {
|
|
458
|
+
"neural": {
|
|
459
|
+
"availability": "planned"
|
|
460
|
+
}
|
|
461
|
+
},
|
|
462
|
+
"type": "enum",
|
|
463
|
+
"values": [
|
|
464
|
+
"auto",
|
|
465
|
+
"psychoacoustic",
|
|
466
|
+
"neural"
|
|
467
|
+
]
|
|
468
|
+
},
|
|
469
|
+
"payload": {
|
|
470
|
+
"description": "Optional caller-supplied payload to embed (max 256\ncharacters). When omitted, the server generates a UUID-v7\n`watermark_id` and embeds that instead.\n",
|
|
471
|
+
"required": false,
|
|
472
|
+
"type": "string"
|
|
473
|
+
},
|
|
474
|
+
"robustness": {
|
|
475
|
+
"default": "compression_resistant",
|
|
476
|
+
"description": "Survival profile. Same semantics as audio mime_group.",
|
|
477
|
+
"type": "enum",
|
|
478
|
+
"values": [
|
|
479
|
+
"light",
|
|
480
|
+
"compression_resistant",
|
|
481
|
+
"broadcast_grade"
|
|
482
|
+
]
|
|
483
|
+
}
|
|
484
|
+
},
|
|
485
|
+
"processing_class": {
|
|
486
|
+
"long_form": {
|
|
487
|
+
"availability": "planned",
|
|
488
|
+
"constraints": {
|
|
489
|
+
"max_input_duration": "PT12H",
|
|
490
|
+
"max_input_size_bytes": 21474836480,
|
|
491
|
+
"max_output_size_bytes": 21474836480
|
|
492
|
+
},
|
|
493
|
+
"required_tier": "enterprise"
|
|
494
|
+
},
|
|
495
|
+
"short_form": {
|
|
496
|
+
"availability": "planned",
|
|
497
|
+
"constraints": {
|
|
498
|
+
"max_input_duration": "PT5M",
|
|
499
|
+
"max_input_size_bytes": 524288000,
|
|
500
|
+
"max_output_size_bytes": 524288000
|
|
501
|
+
},
|
|
502
|
+
"required_tier": "enterprise"
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
},
|
|
507
|
+
"required_tier": "enterprise"
|
|
508
|
+
},
|
|
509
|
+
"compress": {
|
|
510
|
+
"default": true,
|
|
511
|
+
"description": "Reduce file size while maintaining acceptable quality",
|
|
512
|
+
"input_model": "single",
|
|
513
|
+
"mime_groups": {
|
|
514
|
+
"audio": {
|
|
515
|
+
"mimes": [
|
|
516
|
+
"audio/mpeg",
|
|
517
|
+
"audio/aac",
|
|
518
|
+
"audio/ogg",
|
|
519
|
+
"audio/flac",
|
|
520
|
+
"audio/wav",
|
|
521
|
+
"audio/mp4"
|
|
522
|
+
],
|
|
523
|
+
"options": {
|
|
524
|
+
"bitrate": {
|
|
525
|
+
"default": 128,
|
|
526
|
+
"description": "Output bitrate in kbps",
|
|
527
|
+
"type": "enum",
|
|
528
|
+
"value_type": "integer",
|
|
529
|
+
"values": [
|
|
530
|
+
64,
|
|
531
|
+
96,
|
|
532
|
+
128,
|
|
533
|
+
192,
|
|
534
|
+
256,
|
|
535
|
+
320
|
|
536
|
+
]
|
|
537
|
+
},
|
|
538
|
+
"channels": {
|
|
539
|
+
"description": "Number of audio channels (1 = mono, 2 = stereo)",
|
|
540
|
+
"max": 2,
|
|
541
|
+
"min": 1,
|
|
542
|
+
"type": "integer"
|
|
543
|
+
},
|
|
544
|
+
"normalize": {
|
|
545
|
+
"default": false,
|
|
546
|
+
"description": "Apply loudness normalization (EBU R128 / -14 LUFS target)",
|
|
547
|
+
"type": "boolean"
|
|
548
|
+
},
|
|
549
|
+
"sample_rate": {
|
|
550
|
+
"description": "Audio sample rate in Hz",
|
|
551
|
+
"type": "enum",
|
|
552
|
+
"value_type": "integer",
|
|
553
|
+
"values": [
|
|
554
|
+
22050,
|
|
555
|
+
44100,
|
|
556
|
+
48000
|
|
557
|
+
]
|
|
558
|
+
},
|
|
559
|
+
"trim_end": {
|
|
560
|
+
"description": "Trim from end in seconds",
|
|
561
|
+
"min": 0,
|
|
562
|
+
"type": "float"
|
|
563
|
+
},
|
|
564
|
+
"trim_start": {
|
|
565
|
+
"description": "Trim from beginning in seconds",
|
|
566
|
+
"min": 0,
|
|
567
|
+
"type": "float"
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
},
|
|
571
|
+
"document_epub": {
|
|
572
|
+
"mimes": [
|
|
573
|
+
"application/epub+zip"
|
|
574
|
+
],
|
|
575
|
+
"options": {
|
|
576
|
+
"font_subsetting": {
|
|
577
|
+
"default": true,
|
|
578
|
+
"description": "Subset embedded fonts to only include glyphs used in the document. Significant size reduction for books with large font files",
|
|
579
|
+
"type": "boolean"
|
|
580
|
+
},
|
|
581
|
+
"image_quality": {
|
|
582
|
+
"default": 80,
|
|
583
|
+
"description": "Recompress embedded images at this quality level",
|
|
584
|
+
"max": 100,
|
|
585
|
+
"min": 1,
|
|
586
|
+
"type": "integer"
|
|
587
|
+
},
|
|
588
|
+
"strip_unused_css": {
|
|
589
|
+
"default": false,
|
|
590
|
+
"description": "Remove CSS rules not referenced by any content. Risk: may affect rendering in some readers",
|
|
591
|
+
"type": "boolean"
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
},
|
|
595
|
+
"document_odf": {
|
|
596
|
+
"mimes": [
|
|
597
|
+
"application/vnd.oasis.opendocument.text",
|
|
598
|
+
"application/vnd.oasis.opendocument.spreadsheet",
|
|
599
|
+
"application/vnd.oasis.opendocument.presentation"
|
|
600
|
+
],
|
|
601
|
+
"options": {
|
|
602
|
+
"image_quality": {
|
|
603
|
+
"default": 80,
|
|
604
|
+
"description": "Recompress embedded images at this quality level",
|
|
605
|
+
"max": 100,
|
|
606
|
+
"min": 1,
|
|
607
|
+
"type": "integer"
|
|
608
|
+
},
|
|
609
|
+
"strip_metadata": {
|
|
610
|
+
"default": true,
|
|
611
|
+
"description": "Remove document metadata (author, revision history, comments)",
|
|
612
|
+
"type": "boolean"
|
|
613
|
+
},
|
|
614
|
+
"strip_unused_styles": {
|
|
615
|
+
"default": false,
|
|
616
|
+
"description": "Remove style definitions not referenced in document content",
|
|
617
|
+
"type": "boolean"
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
},
|
|
621
|
+
"document_office": {
|
|
622
|
+
"mimes": [
|
|
623
|
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
624
|
+
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
625
|
+
"application/vnd.openxmlformats-officedocument.presentationml.presentation"
|
|
626
|
+
],
|
|
627
|
+
"options": {
|
|
628
|
+
"image_quality": {
|
|
629
|
+
"default": 80,
|
|
630
|
+
"description": "Recompress embedded images at this quality level (1 = smallest, 100 = best)",
|
|
631
|
+
"max": 100,
|
|
632
|
+
"min": 1,
|
|
633
|
+
"type": "integer"
|
|
634
|
+
},
|
|
635
|
+
"strip_hidden_data": {
|
|
636
|
+
"default": true,
|
|
637
|
+
"description": "Remove revisions, comments, personal info, hidden rows/columns, and speaker notes",
|
|
638
|
+
"type": "boolean"
|
|
639
|
+
},
|
|
640
|
+
"strip_macros": {
|
|
641
|
+
"default": true,
|
|
642
|
+
"description": "Remove VBA macros and ActiveX controls",
|
|
643
|
+
"type": "boolean"
|
|
644
|
+
},
|
|
645
|
+
"strip_unused_fonts": {
|
|
646
|
+
"default": false,
|
|
647
|
+
"description": "Remove embedded fonts not referenced in the document. Risk: may affect rendering on systems without the font installed",
|
|
648
|
+
"type": "boolean"
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
},
|
|
652
|
+
"document_pdf": {
|
|
653
|
+
"mimes": [
|
|
654
|
+
"application/pdf"
|
|
655
|
+
],
|
|
656
|
+
"options": {
|
|
657
|
+
"colorspace": {
|
|
658
|
+
"default": "unchanged",
|
|
659
|
+
"description": "Output color space",
|
|
660
|
+
"type": "enum",
|
|
661
|
+
"values": [
|
|
662
|
+
"unchanged",
|
|
663
|
+
"rgb",
|
|
664
|
+
"cmyk",
|
|
665
|
+
"grayscale"
|
|
666
|
+
]
|
|
667
|
+
},
|
|
668
|
+
"flatten_forms": {
|
|
669
|
+
"default": false,
|
|
670
|
+
"description": "Flatten interactive form fields into static content",
|
|
671
|
+
"type": "boolean"
|
|
672
|
+
},
|
|
673
|
+
"pages": {
|
|
674
|
+
"description": "Page selection (e.g. '1-5,8,10-12'). Omit to keep all pages.",
|
|
675
|
+
"type": "string"
|
|
676
|
+
},
|
|
677
|
+
"profile": {
|
|
678
|
+
"default": "web",
|
|
679
|
+
"description": "Optimization profile. web = aggressive (downsample images, strip metadata), print = preserve quality, archive = PDF/A compliance, max = smallest file",
|
|
680
|
+
"type": "enum",
|
|
681
|
+
"values": [
|
|
682
|
+
"web",
|
|
683
|
+
"print",
|
|
684
|
+
"archive",
|
|
685
|
+
"max"
|
|
686
|
+
]
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
},
|
|
690
|
+
"image": {
|
|
691
|
+
"mimes": [
|
|
692
|
+
"image/jpeg",
|
|
693
|
+
"image/png",
|
|
694
|
+
"image/gif",
|
|
695
|
+
"image/webp",
|
|
696
|
+
"image/svg+xml",
|
|
697
|
+
"image/tiff",
|
|
698
|
+
"image/bmp",
|
|
699
|
+
"image/vnd.microsoft.icon",
|
|
700
|
+
"image/avif",
|
|
701
|
+
"image/heic"
|
|
702
|
+
],
|
|
703
|
+
"options": {
|
|
704
|
+
"auto_orient": {
|
|
705
|
+
"default": true,
|
|
706
|
+
"description": "Auto-rotate based on EXIF orientation",
|
|
707
|
+
"type": "boolean"
|
|
708
|
+
},
|
|
709
|
+
"fit": {
|
|
710
|
+
"default": "max",
|
|
711
|
+
"depends_on": {
|
|
712
|
+
"height": "set",
|
|
713
|
+
"logic": "or",
|
|
714
|
+
"width": "set"
|
|
715
|
+
},
|
|
716
|
+
"description": "Resize mode. max = fit within bounds, crop = fill and trim, scale = force exact dimensions. Only applies when width or height is set.",
|
|
717
|
+
"type": "enum",
|
|
718
|
+
"values": [
|
|
719
|
+
"max",
|
|
720
|
+
"crop",
|
|
721
|
+
"scale"
|
|
722
|
+
]
|
|
723
|
+
},
|
|
724
|
+
"height": {
|
|
725
|
+
"description": "Maximum output height in pixels",
|
|
726
|
+
"max": 16384,
|
|
727
|
+
"min": 1,
|
|
728
|
+
"type": "integer"
|
|
729
|
+
},
|
|
730
|
+
"icc_profile": {
|
|
731
|
+
"default": "preserve",
|
|
732
|
+
"description": "ICC color profile handling. preserve = keep original, strip = remove, srgb = convert to sRGB",
|
|
733
|
+
"type": "enum",
|
|
734
|
+
"values": [
|
|
735
|
+
"preserve",
|
|
736
|
+
"strip",
|
|
737
|
+
"srgb"
|
|
738
|
+
]
|
|
739
|
+
},
|
|
740
|
+
"metadata": {
|
|
741
|
+
"default": "all",
|
|
742
|
+
"description": "Metadata handling. all = strip everything (smallest file), none = keep all EXIF/IPTC/XMP, copyright = keep only copyright/author fields, sensitive = keep EXIF but strip GPS/location (GDPR-friendly)",
|
|
743
|
+
"type": "enum",
|
|
744
|
+
"values": [
|
|
745
|
+
"all",
|
|
746
|
+
"none",
|
|
747
|
+
"copyright",
|
|
748
|
+
"sensitive"
|
|
749
|
+
]
|
|
750
|
+
},
|
|
751
|
+
"mode": {
|
|
752
|
+
"default": "lossy",
|
|
753
|
+
"description": "Compression algorithm. lossy = smaller file, lossless = no quality loss, auto = best for format",
|
|
754
|
+
"type": "enum",
|
|
755
|
+
"values": [
|
|
756
|
+
"lossy",
|
|
757
|
+
"lossless",
|
|
758
|
+
"auto"
|
|
759
|
+
]
|
|
760
|
+
},
|
|
761
|
+
"output_format": {
|
|
762
|
+
"default": "original",
|
|
763
|
+
"description": "Output format. original = keep input format, auto = best for browser support (AVIF > WebP > JPEG based on Accept header hint), smallest = try all supported formats and return the smallest file",
|
|
764
|
+
"type": "enum",
|
|
765
|
+
"values": [
|
|
766
|
+
"original",
|
|
767
|
+
"auto",
|
|
768
|
+
"smallest",
|
|
769
|
+
"jpeg",
|
|
770
|
+
"png",
|
|
771
|
+
"webp",
|
|
772
|
+
"avif"
|
|
773
|
+
]
|
|
774
|
+
},
|
|
775
|
+
"progressive": {
|
|
776
|
+
"default": true,
|
|
777
|
+
"description": "Enable progressive rendering (JPEG only). Renders low-quality preview first, then refines.",
|
|
778
|
+
"type": "boolean"
|
|
779
|
+
},
|
|
780
|
+
"quality": {
|
|
781
|
+
"default": 80,
|
|
782
|
+
"depends_on": {
|
|
783
|
+
"mode": "lossy"
|
|
784
|
+
},
|
|
785
|
+
"description": "Compression quality (1 = smallest file, 100 = best quality). Only applies to lossy mode.",
|
|
786
|
+
"max": 100,
|
|
787
|
+
"min": 1,
|
|
788
|
+
"type": "integer"
|
|
789
|
+
},
|
|
790
|
+
"width": {
|
|
791
|
+
"description": "Maximum output width in pixels",
|
|
792
|
+
"max": 16384,
|
|
793
|
+
"min": 1,
|
|
794
|
+
"type": "integer"
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
},
|
|
798
|
+
"video": {
|
|
799
|
+
"mimes": [
|
|
800
|
+
"video/mp4",
|
|
801
|
+
"video/webm",
|
|
802
|
+
"video/ogg"
|
|
803
|
+
],
|
|
804
|
+
"options": {
|
|
805
|
+
"audio_bitrate": {
|
|
806
|
+
"default": 128,
|
|
807
|
+
"description": "Audio track bitrate in kbps",
|
|
808
|
+
"type": "enum",
|
|
809
|
+
"value_type": "integer",
|
|
810
|
+
"values": [
|
|
811
|
+
64,
|
|
812
|
+
96,
|
|
813
|
+
128,
|
|
814
|
+
192,
|
|
815
|
+
256,
|
|
816
|
+
320
|
|
817
|
+
]
|
|
818
|
+
},
|
|
819
|
+
"audio_codec": {
|
|
820
|
+
"default": "aac",
|
|
821
|
+
"description": "Audio codec. aac = widest compatibility, opus = best quality/size, copy = passthrough",
|
|
822
|
+
"type": "enum",
|
|
823
|
+
"values": [
|
|
824
|
+
"aac",
|
|
825
|
+
"opus",
|
|
826
|
+
"vorbis",
|
|
827
|
+
"copy"
|
|
828
|
+
]
|
|
829
|
+
},
|
|
830
|
+
"codec": {
|
|
831
|
+
"default": "h264",
|
|
832
|
+
"description": "Video codec. h264 = widest compatibility, h265/av1 = better compression but slower",
|
|
833
|
+
"type": "enum",
|
|
834
|
+
"values": [
|
|
835
|
+
"h264",
|
|
836
|
+
"h265",
|
|
837
|
+
"vp9",
|
|
838
|
+
"av1"
|
|
839
|
+
]
|
|
840
|
+
},
|
|
841
|
+
"crf": {
|
|
842
|
+
"default": 23,
|
|
843
|
+
"depends_on": {
|
|
844
|
+
"encoding_mode": "crf"
|
|
845
|
+
},
|
|
846
|
+
"description": "Constant Rate Factor (0 = lossless, 51 = worst, 23 = visually good). Only applies to CRF mode.",
|
|
847
|
+
"max": 51,
|
|
848
|
+
"min": 0,
|
|
849
|
+
"type": "integer"
|
|
850
|
+
},
|
|
851
|
+
"encoding_mode": {
|
|
852
|
+
"default": "crf",
|
|
853
|
+
"description": "crf = constant quality (variable file size), target_size = constrained file size (two-pass)",
|
|
854
|
+
"type": "enum",
|
|
855
|
+
"values": [
|
|
856
|
+
"crf",
|
|
857
|
+
"target_size"
|
|
858
|
+
]
|
|
859
|
+
},
|
|
860
|
+
"faststart": {
|
|
861
|
+
"default": true,
|
|
862
|
+
"description": "Move MP4 moov atom to start for progressive web playback (MP4 only)",
|
|
863
|
+
"type": "boolean"
|
|
864
|
+
},
|
|
865
|
+
"fit": {
|
|
866
|
+
"default": "max",
|
|
867
|
+
"depends_on": {
|
|
868
|
+
"height": "set",
|
|
869
|
+
"logic": "or",
|
|
870
|
+
"width": "set"
|
|
871
|
+
},
|
|
872
|
+
"description": "Resize mode. max = fit within bounds (preserves ratio), crop/scale/pad = exact dimensions. Only applies when width or height is set.",
|
|
873
|
+
"type": "enum",
|
|
874
|
+
"values": [
|
|
875
|
+
"max",
|
|
876
|
+
"crop",
|
|
877
|
+
"scale",
|
|
878
|
+
"pad"
|
|
879
|
+
]
|
|
880
|
+
},
|
|
881
|
+
"fps": {
|
|
882
|
+
"description": "Output frame rate",
|
|
883
|
+
"max": 120,
|
|
884
|
+
"min": 1,
|
|
885
|
+
"type": "float"
|
|
886
|
+
},
|
|
887
|
+
"height": {
|
|
888
|
+
"description": "Output height in pixels",
|
|
889
|
+
"max": 4320,
|
|
890
|
+
"min": 1,
|
|
891
|
+
"type": "integer"
|
|
892
|
+
},
|
|
893
|
+
"preset": {
|
|
894
|
+
"default": "medium",
|
|
895
|
+
"description": "Encoding speed vs compression ratio trade-off",
|
|
896
|
+
"type": "enum",
|
|
897
|
+
"values": [
|
|
898
|
+
"ultrafast",
|
|
899
|
+
"superfast",
|
|
900
|
+
"veryfast",
|
|
901
|
+
"faster",
|
|
902
|
+
"fast",
|
|
903
|
+
"medium",
|
|
904
|
+
"slow",
|
|
905
|
+
"slower",
|
|
906
|
+
"veryslow"
|
|
907
|
+
]
|
|
908
|
+
},
|
|
909
|
+
"target_size_bytes": {
|
|
910
|
+
"depends_on": {
|
|
911
|
+
"encoding_mode": "target_size"
|
|
912
|
+
},
|
|
913
|
+
"description": "Target output file size in bytes (min 1MB). Two-pass encoding to meet this target.",
|
|
914
|
+
"min": 1048576,
|
|
915
|
+
"type": "integer"
|
|
916
|
+
},
|
|
917
|
+
"trim_end": {
|
|
918
|
+
"description": "Trim from end in seconds",
|
|
919
|
+
"min": 0,
|
|
920
|
+
"type": "float"
|
|
921
|
+
},
|
|
922
|
+
"trim_start": {
|
|
923
|
+
"description": "Trim from beginning in seconds",
|
|
924
|
+
"min": 0,
|
|
925
|
+
"type": "float"
|
|
926
|
+
},
|
|
927
|
+
"width": {
|
|
928
|
+
"description": "Output width in pixels",
|
|
929
|
+
"max": 7680,
|
|
930
|
+
"min": 1,
|
|
931
|
+
"type": "integer"
|
|
932
|
+
}
|
|
933
|
+
},
|
|
934
|
+
"processing_class": {
|
|
935
|
+
"long_form": {
|
|
936
|
+
"availability": "planned",
|
|
937
|
+
"constraints": {
|
|
938
|
+
"max_input_duration": "PT12H",
|
|
939
|
+
"max_input_size_bytes": 21474836480,
|
|
940
|
+
"max_output_size_bytes": 21474836480
|
|
941
|
+
},
|
|
942
|
+
"required_tier": "pro"
|
|
943
|
+
},
|
|
944
|
+
"short_form": {
|
|
945
|
+
"availability": "stable",
|
|
946
|
+
"constraints": {
|
|
947
|
+
"max_input_duration": "PT5M",
|
|
948
|
+
"max_input_size_bytes": 524288000,
|
|
949
|
+
"max_output_size_bytes": 524288000
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
},
|
|
956
|
+
"convert": {
|
|
957
|
+
"default": false,
|
|
958
|
+
"description": "Convert file to a different format",
|
|
959
|
+
"input_model": "single",
|
|
960
|
+
"mime_groups": {
|
|
961
|
+
"audio": {
|
|
962
|
+
"mimes": [
|
|
963
|
+
"audio/mpeg",
|
|
964
|
+
"audio/aac",
|
|
965
|
+
"audio/ogg",
|
|
966
|
+
"audio/flac",
|
|
967
|
+
"audio/wav",
|
|
968
|
+
"audio/mp4"
|
|
969
|
+
],
|
|
970
|
+
"options": {
|
|
971
|
+
"bitrate": {
|
|
972
|
+
"default": 128,
|
|
973
|
+
"depends_on": {
|
|
974
|
+
"output_format": [
|
|
975
|
+
"mp3",
|
|
976
|
+
"aac",
|
|
977
|
+
"ogg"
|
|
978
|
+
]
|
|
979
|
+
},
|
|
980
|
+
"description": "Output bitrate in kbps (lossy formats only)",
|
|
981
|
+
"type": "enum",
|
|
982
|
+
"value_type": "integer",
|
|
983
|
+
"values": [
|
|
984
|
+
64,
|
|
985
|
+
96,
|
|
986
|
+
128,
|
|
987
|
+
192,
|
|
988
|
+
256,
|
|
989
|
+
320
|
|
990
|
+
]
|
|
991
|
+
},
|
|
992
|
+
"output_format": {
|
|
993
|
+
"description": "Target format",
|
|
994
|
+
"required": true,
|
|
995
|
+
"type": "enum",
|
|
996
|
+
"values": [
|
|
997
|
+
"mp3",
|
|
998
|
+
"aac",
|
|
999
|
+
"ogg",
|
|
1000
|
+
"flac",
|
|
1001
|
+
"wav"
|
|
1002
|
+
]
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
1005
|
+
},
|
|
1006
|
+
"document_pdf": {
|
|
1007
|
+
"mimes": [
|
|
1008
|
+
"application/pdf"
|
|
1009
|
+
],
|
|
1010
|
+
"options": {
|
|
1011
|
+
"dpi": {
|
|
1012
|
+
"default": 150,
|
|
1013
|
+
"description": "Render resolution in DPI",
|
|
1014
|
+
"max": 600,
|
|
1015
|
+
"min": 72,
|
|
1016
|
+
"type": "integer"
|
|
1017
|
+
},
|
|
1018
|
+
"output_format": {
|
|
1019
|
+
"description": "Target image format (renders PDF pages as images)",
|
|
1020
|
+
"required": true,
|
|
1021
|
+
"type": "enum",
|
|
1022
|
+
"values": [
|
|
1023
|
+
"png",
|
|
1024
|
+
"jpeg"
|
|
1025
|
+
]
|
|
1026
|
+
},
|
|
1027
|
+
"pages": {
|
|
1028
|
+
"default": "1",
|
|
1029
|
+
"description": "Page selection (e.g. '1-5,8'). Each page produces a separate output file.",
|
|
1030
|
+
"type": "string"
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
1033
|
+
},
|
|
1034
|
+
"image": {
|
|
1035
|
+
"mimes": [
|
|
1036
|
+
"image/jpeg",
|
|
1037
|
+
"image/png",
|
|
1038
|
+
"image/gif",
|
|
1039
|
+
"image/webp",
|
|
1040
|
+
"image/svg+xml",
|
|
1041
|
+
"image/tiff",
|
|
1042
|
+
"image/bmp",
|
|
1043
|
+
"image/vnd.microsoft.icon",
|
|
1044
|
+
"image/avif",
|
|
1045
|
+
"image/heic"
|
|
1046
|
+
],
|
|
1047
|
+
"options": {
|
|
1048
|
+
"background": {
|
|
1049
|
+
"depends_on": {
|
|
1050
|
+
"output_format": "jpeg"
|
|
1051
|
+
},
|
|
1052
|
+
"description": "Background colour (hex, e.g. '#ffffff') for transparent images converted to JPEG",
|
|
1053
|
+
"type": "string"
|
|
1054
|
+
},
|
|
1055
|
+
"output_format": {
|
|
1056
|
+
"description": "Target format",
|
|
1057
|
+
"required": true,
|
|
1058
|
+
"type": "enum",
|
|
1059
|
+
"values": [
|
|
1060
|
+
"jpeg",
|
|
1061
|
+
"png",
|
|
1062
|
+
"webp",
|
|
1063
|
+
"avif",
|
|
1064
|
+
"gif",
|
|
1065
|
+
"tiff"
|
|
1066
|
+
]
|
|
1067
|
+
},
|
|
1068
|
+
"quality": {
|
|
1069
|
+
"default": 85,
|
|
1070
|
+
"depends_on": {
|
|
1071
|
+
"output_format": [
|
|
1072
|
+
"jpeg",
|
|
1073
|
+
"webp",
|
|
1074
|
+
"avif"
|
|
1075
|
+
]
|
|
1076
|
+
},
|
|
1077
|
+
"description": "Output quality for lossy formats",
|
|
1078
|
+
"max": 100,
|
|
1079
|
+
"min": 1,
|
|
1080
|
+
"type": "integer"
|
|
1081
|
+
}
|
|
1082
|
+
}
|
|
1083
|
+
},
|
|
1084
|
+
"video": {
|
|
1085
|
+
"mimes": [
|
|
1086
|
+
"video/mp4",
|
|
1087
|
+
"video/webm",
|
|
1088
|
+
"video/ogg"
|
|
1089
|
+
],
|
|
1090
|
+
"options": {
|
|
1091
|
+
"codec": {
|
|
1092
|
+
"description": "Video codec for target format. Defaults to format's standard codec.",
|
|
1093
|
+
"type": "enum",
|
|
1094
|
+
"values": [
|
|
1095
|
+
"h264",
|
|
1096
|
+
"h265",
|
|
1097
|
+
"vp9",
|
|
1098
|
+
"av1"
|
|
1099
|
+
]
|
|
1100
|
+
},
|
|
1101
|
+
"output_format": {
|
|
1102
|
+
"description": "Target format",
|
|
1103
|
+
"required": true,
|
|
1104
|
+
"type": "enum",
|
|
1105
|
+
"values": [
|
|
1106
|
+
"mp4",
|
|
1107
|
+
"webm",
|
|
1108
|
+
"ogg",
|
|
1109
|
+
"gif"
|
|
1110
|
+
]
|
|
1111
|
+
},
|
|
1112
|
+
"quality": {
|
|
1113
|
+
"default": 23,
|
|
1114
|
+
"description": "CRF value (0 = lossless, 51 = worst)",
|
|
1115
|
+
"max": 51,
|
|
1116
|
+
"min": 0,
|
|
1117
|
+
"type": "integer"
|
|
1118
|
+
}
|
|
1119
|
+
},
|
|
1120
|
+
"processing_class": {
|
|
1121
|
+
"long_form": {
|
|
1122
|
+
"availability": "planned",
|
|
1123
|
+
"constraints": {
|
|
1124
|
+
"max_input_duration": "PT12H",
|
|
1125
|
+
"max_input_size_bytes": 21474836480,
|
|
1126
|
+
"max_output_size_bytes": 21474836480
|
|
1127
|
+
},
|
|
1128
|
+
"required_tier": "pro"
|
|
1129
|
+
},
|
|
1130
|
+
"short_form": {
|
|
1131
|
+
"availability": "stable",
|
|
1132
|
+
"constraints": {
|
|
1133
|
+
"max_input_duration": "PT5M",
|
|
1134
|
+
"max_input_size_bytes": 524288000,
|
|
1135
|
+
"max_output_size_bytes": 524288000
|
|
1136
|
+
}
|
|
1137
|
+
}
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1141
|
+
},
|
|
1142
|
+
"custom_luma": {
|
|
1143
|
+
"availability": "planned",
|
|
1144
|
+
"default": false,
|
|
1145
|
+
"description": "Apply a caller-uploaded luma matte (transition-mask) over a base\nvideo to produce a custom luma-matte transition effect. Inspired\nby Cloudinary's deprecated luma-matte custom transitions and\nintended as a paid-tier (`pro`+) creative feature.\n\n**NOT** related to FFmpeg's `xfade=custom` filter (which is an\nexpression-mode parameter on the same `xfade` filter). The\n`merge.transition.custom` value is tagged `planned` with\ndocumentation_url pointing at this operation; once `custom_luma`\nships, the merge slot is repurposed to a \"use the dedicated\n`custom_luma` operation instead\" advisory.\n\nMulti-input: exactly one input with `role: base` (the source\nvideo being transitioned) + exactly one input with\n`role: transition_mask` (the luma matte \u2014 a video whose pixel\nluminance drives the transition reveal \u2014 bright = revealed,\ndark = held). The mask can be uploaded directly, imported\nexternally, or referenced from a vault connection per\n`WorkflowSource` (from I10).\n\nPer ADR-0001 \u00a71.3 (Tension 1 \u2014 `planned` operations return\n`feature_not_available` HTTP 422 until Lambda support ships).\nPer ADR-0004 \u00a7\"V2 JobDefinition\" + plan v5 \u00a7F4 round 6\n(codex-corrected \u2014 `xfade=custom` is an expression, not a\ntransition; this operation is the deliberate alternative).\n",
|
|
1146
|
+
"input_model": "multi",
|
|
1147
|
+
"max_inputs": 2,
|
|
1148
|
+
"mime_groups": {
|
|
1149
|
+
"video": {
|
|
1150
|
+
"mimes": [
|
|
1151
|
+
"video/mp4",
|
|
1152
|
+
"video/webm"
|
|
1153
|
+
],
|
|
1154
|
+
"options": {
|
|
1155
|
+
"duration": {
|
|
1156
|
+
"default": 1.0,
|
|
1157
|
+
"description": "Transition duration in seconds. The mask is time-stretched\nor trimmed to this duration when applied.\n",
|
|
1158
|
+
"max": 30.0,
|
|
1159
|
+
"min": 0.1,
|
|
1160
|
+
"type": "float"
|
|
1161
|
+
},
|
|
1162
|
+
"mask_blur": {
|
|
1163
|
+
"default": 0.0,
|
|
1164
|
+
"description": "Gaussian blur radius (pixels) applied to the luma matte\nbefore compositing. Softens the transition edge. Default\n0.0 = no blur. Larger values produce a more diffused\ntransition.\n",
|
|
1165
|
+
"max": 10.0,
|
|
1166
|
+
"min": 0.0,
|
|
1167
|
+
"type": "float"
|
|
1168
|
+
},
|
|
1169
|
+
"mask_contrast": {
|
|
1170
|
+
"default": 1.0,
|
|
1171
|
+
"description": "Contrast multiplier applied to the luma matte before\ncompositing. Sharpens (>1) or softens (<1) the\ntransition edge. Default 1.0 = no contrast adjustment.\n",
|
|
1172
|
+
"max": 4.0,
|
|
1173
|
+
"min": 0.0,
|
|
1174
|
+
"type": "float"
|
|
1175
|
+
},
|
|
1176
|
+
"mask_invert": {
|
|
1177
|
+
"default": false,
|
|
1178
|
+
"description": "When true, inverts the luma matte (bright \u2194 dark). Lets\ncallers reuse a single mask asset for both reveal and\nhide directions.\n",
|
|
1179
|
+
"type": "boolean"
|
|
1180
|
+
},
|
|
1181
|
+
"start_offset": {
|
|
1182
|
+
"default": 0.0,
|
|
1183
|
+
"description": "Offset (seconds) from the base clip start at which the\ntransition begins. The transition runs for `duration`\nseconds starting at `start_offset`.\n",
|
|
1184
|
+
"min": 0.0,
|
|
1185
|
+
"type": "float"
|
|
1186
|
+
}
|
|
1187
|
+
},
|
|
1188
|
+
"processing_class": {
|
|
1189
|
+
"long_form": {
|
|
1190
|
+
"availability": "planned",
|
|
1191
|
+
"constraints": {
|
|
1192
|
+
"max_input_duration": "PT12H",
|
|
1193
|
+
"max_input_size_bytes": 21474836480,
|
|
1194
|
+
"max_output_size_bytes": 21474836480
|
|
1195
|
+
},
|
|
1196
|
+
"required_tier": "pro"
|
|
1197
|
+
},
|
|
1198
|
+
"short_form": {
|
|
1199
|
+
"availability": "planned",
|
|
1200
|
+
"constraints": {
|
|
1201
|
+
"max_input_duration": "PT5M",
|
|
1202
|
+
"max_input_size_bytes": 524288000,
|
|
1203
|
+
"max_output_size_bytes": 524288000
|
|
1204
|
+
},
|
|
1205
|
+
"required_tier": "pro"
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1208
|
+
}
|
|
1209
|
+
},
|
|
1210
|
+
"min_inputs": 2,
|
|
1211
|
+
"required_tier": "pro"
|
|
1212
|
+
},
|
|
1213
|
+
"image_watermark": {
|
|
1214
|
+
"default": false,
|
|
1215
|
+
"description": "Apply an image overlay (file or external source) onto a base media\nasset. Multi-input: exactly one input with role: base (the source\nasset) + exactly one with role: overlay (the watermark). The overlay\ncan be an upload, an external_import handle, or a vault connection\nper WorkflowSource (ticket I10).\n\nStable today for static-image bases (image/jpeg, image/png,\nimage/webp); animated GIF and video bases are advertised as\n`planned` via parallel mime_groups (`image_gif`, `video`) \u2014 schema\nis contract-defined, dispatch returns `feature_not_available` (422)\nuntil Lambda support ships. Per Tension 1 (ADR-0001) +\nplan v5 \u00a7F4 round 6.\n\n**Audio is explicitly NOT supported.** For audio overlay (DJ tags,\npodcast intros, jingles), use the `audio_overlay` operation\n(declared in schemas/operations/audio_overlay.yaml at\n`availability: planned`).\n\nSource capped at 25 megapixels for image bases (V1 watermark\nprecedent retained); per-frame caps for GIF / video bases will be\ndefined when the corresponding Lambda support ships.\nPer ADR-0004 \u00a7\"V2 JobDefinition\" + plan v5 \u00a7F1.\n",
|
|
1216
|
+
"features": {
|
|
1217
|
+
"multi_overlay_stack": {
|
|
1218
|
+
"availability": "planned",
|
|
1219
|
+
"description": "Allow up to 8 overlay inputs per job (currently capped at 1\noverlay). Per-overlay placement via JobInputV2.per_input_options.\nLambda-side support not yet confirmed; tagged planned per\nADR-0001 \u00a71.4. Scope is image-base only at the time this feature\nwas specified; extension to GIF / video bases tracks alongside\nthe corresponding mime_group `planned` \u2192 `stable` flips.\n"
|
|
1220
|
+
}
|
|
1221
|
+
},
|
|
1222
|
+
"input_model": "multi",
|
|
1223
|
+
"max_inputs": 2,
|
|
1224
|
+
"mime_groups": {
|
|
1225
|
+
"image": {
|
|
1226
|
+
"mimes": [
|
|
1227
|
+
"image/jpeg",
|
|
1228
|
+
"image/png",
|
|
1229
|
+
"image/webp"
|
|
1230
|
+
],
|
|
1231
|
+
"options": {
|
|
1232
|
+
"anchor": {
|
|
1233
|
+
"default": "bottom_right",
|
|
1234
|
+
"description": "9-grid anchor position on the base image. Mirrors\nMux/Cloudinary positioning. Combined with margin_x and\nmargin_y for fine-grained offset from the anchor point.\n",
|
|
1235
|
+
"type": "enum",
|
|
1236
|
+
"values": [
|
|
1237
|
+
"top_left",
|
|
1238
|
+
"top_center",
|
|
1239
|
+
"top_right",
|
|
1240
|
+
"center_left",
|
|
1241
|
+
"center",
|
|
1242
|
+
"center_right",
|
|
1243
|
+
"bottom_left",
|
|
1244
|
+
"bottom_center",
|
|
1245
|
+
"bottom_right"
|
|
1246
|
+
]
|
|
1247
|
+
},
|
|
1248
|
+
"margin_x": {
|
|
1249
|
+
"default": "0px",
|
|
1250
|
+
"description": "Horizontal offset from the anchor as either pixels (e.g.\n\"40px\") or percentage of base image width (e.g. \"5%\").\nDirection is anchor-relative \u2014 positive moves toward image\ncentre.\n\n**`anchor: center` exception.** When the anchor is `center`\nthe centre is the centre \u2014 there is no anchor-relative\ndirection. Non-zero `margin_x` (anything other than the\ndefault `\"0px\"` or the equivalent `\"0%\"`) combined with\n`anchor: center` is rejected by the API at workflow-create\ntime as `invalid_options` (HTTP 422). To nudge a\nroughly-centred overlay, pick a peripheral anchor (e.g.\n`top_left`) and use `margin_x` / `margin_y` to position it.\n",
|
|
1251
|
+
"pattern": "^\\d+(\\.\\d+)?(px|%)$",
|
|
1252
|
+
"type": "string"
|
|
1253
|
+
},
|
|
1254
|
+
"margin_y": {
|
|
1255
|
+
"default": "0px",
|
|
1256
|
+
"description": "Vertical offset from the anchor as either pixels (e.g.\n\"20px\") or percentage of base image height (e.g. \"3%\").\nDirection is anchor-relative \u2014 positive moves toward image\ncentre.\n\n**`anchor: center` exception.** Same rejection rule as\n`margin_x` \u2014 non-zero `margin_y` with `anchor: center` is\nrejected by the API at workflow-create time as\n`invalid_options` (HTTP 422).\n",
|
|
1257
|
+
"pattern": "^\\d+(\\.\\d+)?(px|%)$",
|
|
1258
|
+
"type": "string"
|
|
1259
|
+
},
|
|
1260
|
+
"opacity": {
|
|
1261
|
+
"default": 0.5,
|
|
1262
|
+
"description": "Overlay opacity (0 = fully transparent, 1 = fully opaque).\nClamped to range.\n",
|
|
1263
|
+
"max": 1.0,
|
|
1264
|
+
"min": 0.0,
|
|
1265
|
+
"type": "float"
|
|
1266
|
+
},
|
|
1267
|
+
"overlay_width": {
|
|
1268
|
+
"description": "Optional overlay width as either pixels (e.g. \"200px\") or\npercentage of base image width (e.g. \"30%\"). Aspect ratio is\npreserved. Omit to use the original overlay size.\n",
|
|
1269
|
+
"pattern": "^\\d+(\\.\\d+)?(px|%)$",
|
|
1270
|
+
"type": "string"
|
|
1271
|
+
}
|
|
1272
|
+
}
|
|
1273
|
+
},
|
|
1274
|
+
"image_gif": {
|
|
1275
|
+
"availability": "planned",
|
|
1276
|
+
"mimes": [
|
|
1277
|
+
"image/gif"
|
|
1278
|
+
],
|
|
1279
|
+
"options": {
|
|
1280
|
+
"anchor": {
|
|
1281
|
+
"default": "bottom_right",
|
|
1282
|
+
"description": "9-grid anchor position on the base GIF (applied uniformly\nacross frames). Same semantics as the `image` group.\n",
|
|
1283
|
+
"type": "enum",
|
|
1284
|
+
"values": [
|
|
1285
|
+
"top_left",
|
|
1286
|
+
"top_center",
|
|
1287
|
+
"top_right",
|
|
1288
|
+
"center_left",
|
|
1289
|
+
"center",
|
|
1290
|
+
"center_right",
|
|
1291
|
+
"bottom_left",
|
|
1292
|
+
"bottom_center",
|
|
1293
|
+
"bottom_right"
|
|
1294
|
+
]
|
|
1295
|
+
},
|
|
1296
|
+
"margin_x": {
|
|
1297
|
+
"default": "0px",
|
|
1298
|
+
"description": "Horizontal offset from the anchor in pixels or percentage of\nbase width. Anchor-relative; positive moves toward the\nframe centre.\n\n**`anchor: center` exception.** Same rejection rule as the\n`image` mime_group \u2014 non-zero `margin_x` with\n`anchor: center` is rejected by the API at workflow-create\ntime as `invalid_options` (HTTP 422).\n",
|
|
1299
|
+
"pattern": "^\\d+(\\.\\d+)?(px|%)$",
|
|
1300
|
+
"type": "string"
|
|
1301
|
+
},
|
|
1302
|
+
"margin_y": {
|
|
1303
|
+
"default": "0px",
|
|
1304
|
+
"description": "Vertical offset from the anchor in pixels or percentage of\nbase height. Anchor-relative; positive moves toward the\nframe centre.\n\n**`anchor: center` exception.** Same rejection rule as the\n`image` mime_group \u2014 non-zero `margin_y` with\n`anchor: center` is rejected by the API at workflow-create\ntime as `invalid_options` (HTTP 422).\n",
|
|
1305
|
+
"pattern": "^\\d+(\\.\\d+)?(px|%)$",
|
|
1306
|
+
"type": "string"
|
|
1307
|
+
},
|
|
1308
|
+
"opacity": {
|
|
1309
|
+
"default": 0.5,
|
|
1310
|
+
"description": "Overlay opacity (0 = fully transparent, 1 = fully opaque).\nClamped to range.\n",
|
|
1311
|
+
"max": 1.0,
|
|
1312
|
+
"min": 0.0,
|
|
1313
|
+
"type": "float"
|
|
1314
|
+
},
|
|
1315
|
+
"overlay_width": {
|
|
1316
|
+
"description": "Optional overlay width as pixels or percentage of base\nwidth. Aspect ratio preserved. Omit to use the original\noverlay size.\n",
|
|
1317
|
+
"pattern": "^\\d+(\\.\\d+)?(px|%)$",
|
|
1318
|
+
"type": "string"
|
|
1319
|
+
}
|
|
1320
|
+
}
|
|
1321
|
+
},
|
|
1322
|
+
"video": {
|
|
1323
|
+
"availability": "planned",
|
|
1324
|
+
"mimes": [
|
|
1325
|
+
"video/mp4",
|
|
1326
|
+
"video/webm"
|
|
1327
|
+
],
|
|
1328
|
+
"options": {
|
|
1329
|
+
"anchor": {
|
|
1330
|
+
"default": "bottom_right",
|
|
1331
|
+
"description": "9-grid anchor position on each video frame. Same semantics\nas the `image` group.\n",
|
|
1332
|
+
"type": "enum",
|
|
1333
|
+
"values": [
|
|
1334
|
+
"top_left",
|
|
1335
|
+
"top_center",
|
|
1336
|
+
"top_right",
|
|
1337
|
+
"center_left",
|
|
1338
|
+
"center",
|
|
1339
|
+
"center_right",
|
|
1340
|
+
"bottom_left",
|
|
1341
|
+
"bottom_center",
|
|
1342
|
+
"bottom_right"
|
|
1343
|
+
]
|
|
1344
|
+
},
|
|
1345
|
+
"margin_x": {
|
|
1346
|
+
"default": "0px",
|
|
1347
|
+
"description": "Horizontal offset from the anchor in pixels or percentage of\nvideo frame width. Anchor-relative; positive moves toward\nthe frame centre.\n\n**`anchor: center` exception.** Same rejection rule as the\n`image` mime_group \u2014 non-zero `margin_x` with\n`anchor: center` is rejected by the API at workflow-create\ntime as `invalid_options` (HTTP 422).\n",
|
|
1348
|
+
"pattern": "^\\d+(\\.\\d+)?(px|%)$",
|
|
1349
|
+
"type": "string"
|
|
1350
|
+
},
|
|
1351
|
+
"margin_y": {
|
|
1352
|
+
"default": "0px",
|
|
1353
|
+
"description": "Vertical offset from the anchor in pixels or percentage of\nvideo frame height. Anchor-relative; positive moves toward\nthe frame centre.\n\n**`anchor: center` exception.** Same rejection rule as the\n`image` mime_group \u2014 non-zero `margin_y` with\n`anchor: center` is rejected by the API at workflow-create\ntime as `invalid_options` (HTTP 422).\n",
|
|
1354
|
+
"pattern": "^\\d+(\\.\\d+)?(px|%)$",
|
|
1355
|
+
"type": "string"
|
|
1356
|
+
},
|
|
1357
|
+
"opacity": {
|
|
1358
|
+
"default": 0.5,
|
|
1359
|
+
"description": "Overlay opacity (0 = fully transparent, 1 = fully opaque).\nClamped to range.\n",
|
|
1360
|
+
"max": 1.0,
|
|
1361
|
+
"min": 0.0,
|
|
1362
|
+
"type": "float"
|
|
1363
|
+
},
|
|
1364
|
+
"overlay_width": {
|
|
1365
|
+
"description": "Optional overlay width as pixels or percentage of video\nframe width. Aspect ratio preserved. Omit to use the\noriginal overlay size.\n",
|
|
1366
|
+
"pattern": "^\\d+(\\.\\d+)?(px|%)$",
|
|
1367
|
+
"type": "string"
|
|
1368
|
+
}
|
|
1369
|
+
},
|
|
1370
|
+
"processing_class": {
|
|
1371
|
+
"long_form": {
|
|
1372
|
+
"availability": "planned",
|
|
1373
|
+
"constraints": {
|
|
1374
|
+
"max_input_duration": "PT12H",
|
|
1375
|
+
"max_input_size_bytes": 21474836480,
|
|
1376
|
+
"max_output_size_bytes": 21474836480
|
|
1377
|
+
},
|
|
1378
|
+
"required_tier": "pro"
|
|
1379
|
+
},
|
|
1380
|
+
"short_form": {
|
|
1381
|
+
"availability": "planned",
|
|
1382
|
+
"constraints": {
|
|
1383
|
+
"max_input_duration": "PT5M",
|
|
1384
|
+
"max_input_size_bytes": 524288000,
|
|
1385
|
+
"max_output_size_bytes": 524288000
|
|
1386
|
+
}
|
|
1387
|
+
}
|
|
1388
|
+
}
|
|
1389
|
+
}
|
|
1390
|
+
},
|
|
1391
|
+
"min_inputs": 2
|
|
1392
|
+
},
|
|
1393
|
+
"merge": {
|
|
1394
|
+
"default": false,
|
|
1395
|
+
"description": "Combine multiple files into one",
|
|
1396
|
+
"input_model": "multi",
|
|
1397
|
+
"max_inputs": 10,
|
|
1398
|
+
"mime_groups": {
|
|
1399
|
+
"audio": {
|
|
1400
|
+
"mimes": [
|
|
1401
|
+
"audio/mpeg",
|
|
1402
|
+
"audio/aac",
|
|
1403
|
+
"audio/wav",
|
|
1404
|
+
"audio/ogg",
|
|
1405
|
+
"audio/flac"
|
|
1406
|
+
],
|
|
1407
|
+
"options": {
|
|
1408
|
+
"crossfade_duration": {
|
|
1409
|
+
"default": 0,
|
|
1410
|
+
"depends_on": {
|
|
1411
|
+
"transition": "crossfade"
|
|
1412
|
+
},
|
|
1413
|
+
"description": "Crossfade duration in seconds",
|
|
1414
|
+
"max": 10.0,
|
|
1415
|
+
"min": 0,
|
|
1416
|
+
"type": "float"
|
|
1417
|
+
},
|
|
1418
|
+
"gap_duration": {
|
|
1419
|
+
"default": 0,
|
|
1420
|
+
"description": "Silence duration between clips in seconds",
|
|
1421
|
+
"max": 10.0,
|
|
1422
|
+
"min": 0,
|
|
1423
|
+
"type": "float"
|
|
1424
|
+
},
|
|
1425
|
+
"normalize_audio": {
|
|
1426
|
+
"default": true,
|
|
1427
|
+
"description": "Normalize audio levels across all clips",
|
|
1428
|
+
"type": "boolean"
|
|
1429
|
+
},
|
|
1430
|
+
"output_type": {
|
|
1431
|
+
"description": "Output format for audio merge (concatenation). Currently fixed at 'audio'. Optional \u2014 API injects this default post-validation so callers may omit it.",
|
|
1432
|
+
"required": false,
|
|
1433
|
+
"type": "enum",
|
|
1434
|
+
"values": [
|
|
1435
|
+
"audio"
|
|
1436
|
+
]
|
|
1437
|
+
},
|
|
1438
|
+
"transition": {
|
|
1439
|
+
"default": "none",
|
|
1440
|
+
"description": "Default transition between clips. Audio-only catalog\n(acrossfade-backed); see FORMAT.md \u00a7\"Audio vs visual\ntransition catalogs (merge)\" for additions policy. Future\nvalues (e.g. `fade_curve` variants) will be added with\n`per_value_availability` per ADR-0001 \u00a71.4.\n",
|
|
1441
|
+
"type": "enum",
|
|
1442
|
+
"values": [
|
|
1443
|
+
"none",
|
|
1444
|
+
"crossfade"
|
|
1445
|
+
]
|
|
1446
|
+
}
|
|
1447
|
+
},
|
|
1448
|
+
"per_input_options": {
|
|
1449
|
+
"crossfade_duration": {
|
|
1450
|
+
"depends_on": {
|
|
1451
|
+
"transition": "crossfade"
|
|
1452
|
+
},
|
|
1453
|
+
"description": "Override crossfade duration for this join point",
|
|
1454
|
+
"max": 10.0,
|
|
1455
|
+
"min": 0,
|
|
1456
|
+
"type": "float"
|
|
1457
|
+
},
|
|
1458
|
+
"gap_duration": {
|
|
1459
|
+
"description": "Override gap duration for this join point",
|
|
1460
|
+
"max": 10.0,
|
|
1461
|
+
"min": 0,
|
|
1462
|
+
"type": "float"
|
|
1463
|
+
},
|
|
1464
|
+
"transition": {
|
|
1465
|
+
"description": "Override transition for the join point preceding this\ninput. Audio-only catalog (acrossfade-backed); see\nFORMAT.md \u00a7\"Audio vs visual transition catalogs (merge)\".\n",
|
|
1466
|
+
"type": "enum",
|
|
1467
|
+
"values": [
|
|
1468
|
+
"none",
|
|
1469
|
+
"crossfade"
|
|
1470
|
+
]
|
|
1471
|
+
}
|
|
1472
|
+
}
|
|
1473
|
+
},
|
|
1474
|
+
"image": {
|
|
1475
|
+
"mimes": [
|
|
1476
|
+
"image/jpeg",
|
|
1477
|
+
"image/png",
|
|
1478
|
+
"image/webp",
|
|
1479
|
+
"image/gif",
|
|
1480
|
+
"image/tiff",
|
|
1481
|
+
"image/bmp"
|
|
1482
|
+
],
|
|
1483
|
+
"options": {
|
|
1484
|
+
"delay": {
|
|
1485
|
+
"default": 500,
|
|
1486
|
+
"depends_on": {
|
|
1487
|
+
"output_type": "gif"
|
|
1488
|
+
},
|
|
1489
|
+
"description": "Milliseconds between frames",
|
|
1490
|
+
"max": 5000,
|
|
1491
|
+
"min": 10,
|
|
1492
|
+
"type": "integer"
|
|
1493
|
+
},
|
|
1494
|
+
"duration_per_image": {
|
|
1495
|
+
"default": 3.0,
|
|
1496
|
+
"depends_on": {
|
|
1497
|
+
"output_type": "video"
|
|
1498
|
+
},
|
|
1499
|
+
"description": "Seconds each image is displayed",
|
|
1500
|
+
"max": 30.0,
|
|
1501
|
+
"min": 0.5,
|
|
1502
|
+
"type": "float"
|
|
1503
|
+
},
|
|
1504
|
+
"fps": {
|
|
1505
|
+
"default": 30,
|
|
1506
|
+
"depends_on": {
|
|
1507
|
+
"output_type": "video"
|
|
1508
|
+
},
|
|
1509
|
+
"description": "Output frame rate",
|
|
1510
|
+
"max": 60,
|
|
1511
|
+
"min": 1,
|
|
1512
|
+
"type": "integer"
|
|
1513
|
+
},
|
|
1514
|
+
"loop_count": {
|
|
1515
|
+
"default": 0,
|
|
1516
|
+
"depends_on": {
|
|
1517
|
+
"output_type": "gif"
|
|
1518
|
+
},
|
|
1519
|
+
"description": "Number of loops (0 = infinite)",
|
|
1520
|
+
"max": 100,
|
|
1521
|
+
"min": 0,
|
|
1522
|
+
"type": "integer"
|
|
1523
|
+
},
|
|
1524
|
+
"output_type": {
|
|
1525
|
+
"description": "Result format: animated GIF or slideshow video. No default \u2014 caller must pick explicitly (image/collage and document/PDF concat are not supported by the V1 merge Lambda).",
|
|
1526
|
+
"required": true,
|
|
1527
|
+
"type": "enum",
|
|
1528
|
+
"values": [
|
|
1529
|
+
"gif",
|
|
1530
|
+
"video"
|
|
1531
|
+
]
|
|
1532
|
+
},
|
|
1533
|
+
"transition": {
|
|
1534
|
+
"default": "none",
|
|
1535
|
+
"depends_on": {
|
|
1536
|
+
"output_type": "video"
|
|
1537
|
+
},
|
|
1538
|
+
"description": "Transition effect between images in the slideshow output.\nCatalog from FFmpeg 7.1.1 xfade filter (per ADR-0007). See\nper_value_availability for per-value rollout state. The\n`none` value is a sentinel (\"no transition / hard cut\"),\nnot an FFmpeg preset.\n",
|
|
1539
|
+
"per_value_availability": {
|
|
1540
|
+
"circleclose": {
|
|
1541
|
+
"availability": "beta"
|
|
1542
|
+
},
|
|
1543
|
+
"circlecrop": {
|
|
1544
|
+
"availability": "beta"
|
|
1545
|
+
},
|
|
1546
|
+
"circleopen": {
|
|
1547
|
+
"availability": "beta"
|
|
1548
|
+
},
|
|
1549
|
+
"custom": {
|
|
1550
|
+
"availability": "planned",
|
|
1551
|
+
"documentation_url": "https://trello.com/c/EPUE5Vs1"
|
|
1552
|
+
},
|
|
1553
|
+
"diagbl": {
|
|
1554
|
+
"availability": "beta"
|
|
1555
|
+
},
|
|
1556
|
+
"diagtl": {
|
|
1557
|
+
"availability": "beta"
|
|
1558
|
+
},
|
|
1559
|
+
"diagtr": {
|
|
1560
|
+
"availability": "beta"
|
|
1561
|
+
},
|
|
1562
|
+
"distance": {
|
|
1563
|
+
"availability": "experimental"
|
|
1564
|
+
},
|
|
1565
|
+
"hblur": {
|
|
1566
|
+
"availability": "experimental"
|
|
1567
|
+
},
|
|
1568
|
+
"hlslice": {
|
|
1569
|
+
"availability": "experimental"
|
|
1570
|
+
},
|
|
1571
|
+
"pixelize": {
|
|
1572
|
+
"availability": "experimental"
|
|
1573
|
+
},
|
|
1574
|
+
"radial": {
|
|
1575
|
+
"availability": "beta"
|
|
1576
|
+
},
|
|
1577
|
+
"rectcrop": {
|
|
1578
|
+
"availability": "beta"
|
|
1579
|
+
},
|
|
1580
|
+
"slidedown": {
|
|
1581
|
+
"availability": "beta"
|
|
1582
|
+
},
|
|
1583
|
+
"slideleft": {
|
|
1584
|
+
"availability": "beta"
|
|
1585
|
+
},
|
|
1586
|
+
"slideright": {
|
|
1587
|
+
"availability": "beta"
|
|
1588
|
+
},
|
|
1589
|
+
"slideup": {
|
|
1590
|
+
"availability": "beta"
|
|
1591
|
+
},
|
|
1592
|
+
"smoothdown": {
|
|
1593
|
+
"availability": "beta"
|
|
1594
|
+
},
|
|
1595
|
+
"smoothleft": {
|
|
1596
|
+
"availability": "beta"
|
|
1597
|
+
},
|
|
1598
|
+
"smoothright": {
|
|
1599
|
+
"availability": "beta"
|
|
1600
|
+
},
|
|
1601
|
+
"smoothup": {
|
|
1602
|
+
"availability": "beta"
|
|
1603
|
+
},
|
|
1604
|
+
"squeezeh": {
|
|
1605
|
+
"availability": "experimental"
|
|
1606
|
+
},
|
|
1607
|
+
"vlslice": {
|
|
1608
|
+
"availability": "experimental"
|
|
1609
|
+
},
|
|
1610
|
+
"wipebl": {
|
|
1611
|
+
"availability": "planned",
|
|
1612
|
+
"eta": "2026-Q3"
|
|
1613
|
+
},
|
|
1614
|
+
"wipetl": {
|
|
1615
|
+
"availability": "planned",
|
|
1616
|
+
"eta": "2026-Q3"
|
|
1617
|
+
},
|
|
1618
|
+
"wipetr": {
|
|
1619
|
+
"availability": "planned",
|
|
1620
|
+
"eta": "2026-Q3"
|
|
1621
|
+
}
|
|
1622
|
+
},
|
|
1623
|
+
"type": "enum",
|
|
1624
|
+
"values": [
|
|
1625
|
+
"none",
|
|
1626
|
+
"fade",
|
|
1627
|
+
"fadeblack",
|
|
1628
|
+
"fadewhite",
|
|
1629
|
+
"dissolve",
|
|
1630
|
+
"wipeleft",
|
|
1631
|
+
"wiperight",
|
|
1632
|
+
"wipeup",
|
|
1633
|
+
"wipedown",
|
|
1634
|
+
"crossfade",
|
|
1635
|
+
"smoothleft",
|
|
1636
|
+
"smoothright",
|
|
1637
|
+
"smoothup",
|
|
1638
|
+
"smoothdown",
|
|
1639
|
+
"circleopen",
|
|
1640
|
+
"circleclose",
|
|
1641
|
+
"circlecrop",
|
|
1642
|
+
"rectcrop",
|
|
1643
|
+
"slideleft",
|
|
1644
|
+
"slideright",
|
|
1645
|
+
"slideup",
|
|
1646
|
+
"slidedown",
|
|
1647
|
+
"radial",
|
|
1648
|
+
"diagtl",
|
|
1649
|
+
"diagtr",
|
|
1650
|
+
"diagbl",
|
|
1651
|
+
"pixelize",
|
|
1652
|
+
"hlslice",
|
|
1653
|
+
"vlslice",
|
|
1654
|
+
"hblur",
|
|
1655
|
+
"distance",
|
|
1656
|
+
"squeezeh",
|
|
1657
|
+
"custom",
|
|
1658
|
+
"wipetl",
|
|
1659
|
+
"wipetr",
|
|
1660
|
+
"wipebl"
|
|
1661
|
+
]
|
|
1662
|
+
},
|
|
1663
|
+
"transition_duration": {
|
|
1664
|
+
"default": 0.5,
|
|
1665
|
+
"depends_on": {
|
|
1666
|
+
"output_type": "video"
|
|
1667
|
+
},
|
|
1668
|
+
"description": "Duration of transition effect in seconds",
|
|
1669
|
+
"max": 5.0,
|
|
1670
|
+
"min": 0.1,
|
|
1671
|
+
"type": "float"
|
|
1672
|
+
},
|
|
1673
|
+
"video_format": {
|
|
1674
|
+
"default": "mp4",
|
|
1675
|
+
"depends_on": {
|
|
1676
|
+
"output_type": "video"
|
|
1677
|
+
},
|
|
1678
|
+
"description": "Output video container format",
|
|
1679
|
+
"type": "enum",
|
|
1680
|
+
"values": [
|
|
1681
|
+
"mp4",
|
|
1682
|
+
"webm"
|
|
1683
|
+
]
|
|
1684
|
+
}
|
|
1685
|
+
}
|
|
1686
|
+
},
|
|
1687
|
+
"video": {
|
|
1688
|
+
"mimes": [
|
|
1689
|
+
"video/mp4",
|
|
1690
|
+
"video/webm"
|
|
1691
|
+
],
|
|
1692
|
+
"options": {
|
|
1693
|
+
"codec": {
|
|
1694
|
+
"default": "h264",
|
|
1695
|
+
"depends_on": {
|
|
1696
|
+
"re_encode_mode": [
|
|
1697
|
+
"auto",
|
|
1698
|
+
"always"
|
|
1699
|
+
]
|
|
1700
|
+
},
|
|
1701
|
+
"description": "Output codec when merge re-encodes. Inert when stream-copy\nconcat is selected (re_encode_mode=auto + compatible inputs).\n",
|
|
1702
|
+
"per_value_availability": {
|
|
1703
|
+
"av1": {
|
|
1704
|
+
"availability": "beta"
|
|
1705
|
+
}
|
|
1706
|
+
},
|
|
1707
|
+
"type": "enum",
|
|
1708
|
+
"values": [
|
|
1709
|
+
"h264",
|
|
1710
|
+
"h265",
|
|
1711
|
+
"vp9",
|
|
1712
|
+
"av1"
|
|
1713
|
+
]
|
|
1714
|
+
},
|
|
1715
|
+
"crf": {
|
|
1716
|
+
"default": 23,
|
|
1717
|
+
"depends_on": {
|
|
1718
|
+
"encoding_mode": "crf",
|
|
1719
|
+
"re_encode_mode": [
|
|
1720
|
+
"auto",
|
|
1721
|
+
"always"
|
|
1722
|
+
]
|
|
1723
|
+
},
|
|
1724
|
+
"description": "Constant Rate Factor when encoding_mode=crf. Lower = higher quality / larger file.",
|
|
1725
|
+
"max": 51,
|
|
1726
|
+
"min": 0,
|
|
1727
|
+
"type": "integer"
|
|
1728
|
+
},
|
|
1729
|
+
"crossfade_duration": {
|
|
1730
|
+
"default": 1.0,
|
|
1731
|
+
"depends_on": {
|
|
1732
|
+
"transition": "crossfade"
|
|
1733
|
+
},
|
|
1734
|
+
"description": "Crossfade duration in seconds",
|
|
1735
|
+
"max": 5.0,
|
|
1736
|
+
"min": 0.1,
|
|
1737
|
+
"type": "float"
|
|
1738
|
+
},
|
|
1739
|
+
"encoding_mode": {
|
|
1740
|
+
"default": "crf",
|
|
1741
|
+
"depends_on": {
|
|
1742
|
+
"re_encode_mode": [
|
|
1743
|
+
"auto",
|
|
1744
|
+
"always"
|
|
1745
|
+
]
|
|
1746
|
+
},
|
|
1747
|
+
"description": "CRF (quality-targeted) vs target_size (two-pass to fixed file size).\n`target_size` is currently `codec=h264` only \u2014 libx265 / libvpx-vp9 / libsvtav1 each\nrequire a different two-pass invocation and are tracked as separate per-codec\nLambda follow-ups. The contract narrows `target_size_bytes.depends_on` with\n`codec: [h264]`, which rejects `encoding_mode=target_size + codec \u2208 {h265, vp9, av1}`\nas `invalid_options` **when `target_size_bytes` is present in the request**. Fully\ngating `encoding_mode=target_size` itself on codec (so that omitting\n`target_size_bytes` is also rejected) awaits a `per_value_depends_on` schema\nvocab extension (ticket bsV3FWM5); Lambda continues to catch the residual\n`target_size + non-h264 + no target_size_bytes` case in the meantime.\n",
|
|
1748
|
+
"type": "enum",
|
|
1749
|
+
"values": [
|
|
1750
|
+
"crf",
|
|
1751
|
+
"target_size"
|
|
1752
|
+
]
|
|
1753
|
+
},
|
|
1754
|
+
"normalize_audio": {
|
|
1755
|
+
"default": true,
|
|
1756
|
+
"description": "Normalize audio levels across all clips",
|
|
1757
|
+
"type": "boolean"
|
|
1758
|
+
},
|
|
1759
|
+
"output_type": {
|
|
1760
|
+
"description": "Output format for video merge (concatenation). Currently fixed at 'video'. Optional \u2014 API injects this default post-validation so callers may omit it.",
|
|
1761
|
+
"required": false,
|
|
1762
|
+
"type": "enum",
|
|
1763
|
+
"values": [
|
|
1764
|
+
"video"
|
|
1765
|
+
]
|
|
1766
|
+
},
|
|
1767
|
+
"preset": {
|
|
1768
|
+
"default": "medium",
|
|
1769
|
+
"depends_on": {
|
|
1770
|
+
"re_encode_mode": [
|
|
1771
|
+
"auto",
|
|
1772
|
+
"always"
|
|
1773
|
+
]
|
|
1774
|
+
},
|
|
1775
|
+
"description": "Encoder speed/compression trade-off when re-encoding.",
|
|
1776
|
+
"type": "enum",
|
|
1777
|
+
"values": [
|
|
1778
|
+
"ultrafast",
|
|
1779
|
+
"superfast",
|
|
1780
|
+
"veryfast",
|
|
1781
|
+
"faster",
|
|
1782
|
+
"fast",
|
|
1783
|
+
"medium",
|
|
1784
|
+
"slow",
|
|
1785
|
+
"slower",
|
|
1786
|
+
"veryslow"
|
|
1787
|
+
]
|
|
1788
|
+
},
|
|
1789
|
+
"re_encode_mode": {
|
|
1790
|
+
"default": "auto",
|
|
1791
|
+
"description": "Re-encode policy for video concat.\n- `auto`: probe inputs and choose stream-copy concat (when\n codec/container/timebase/framerate/resolution/pixel-format\n match) or full re-encode.\n- `always`: force re-encode (use when caller wants\n normalised output options).\n- `never`: return 422 `REQUIRES_REENCODE` if inputs are not\n concat-compatible.\nCompatibility algorithm is server-side and deliberately\nopaque (per plan v5 \u00a7F8.2). The actual path taken is\nreported on `OperationMetrics.re_encode_decision`.\n",
|
|
1792
|
+
"type": "enum",
|
|
1793
|
+
"values": [
|
|
1794
|
+
"auto",
|
|
1795
|
+
"always",
|
|
1796
|
+
"never"
|
|
1797
|
+
]
|
|
1798
|
+
},
|
|
1799
|
+
"target_resolution": {
|
|
1800
|
+
"depends_on": {
|
|
1801
|
+
"re_encode_mode": [
|
|
1802
|
+
"auto",
|
|
1803
|
+
"always"
|
|
1804
|
+
]
|
|
1805
|
+
},
|
|
1806
|
+
"description": "Output dimensions WxH (e.g. \"1920x1080\"). Omit to inherit from inputs.",
|
|
1807
|
+
"pattern": "^\\d+x\\d+$",
|
|
1808
|
+
"type": "string"
|
|
1809
|
+
},
|
|
1810
|
+
"target_size_bytes": {
|
|
1811
|
+
"depends_on": {
|
|
1812
|
+
"codec": [
|
|
1813
|
+
"h264"
|
|
1814
|
+
],
|
|
1815
|
+
"encoding_mode": "target_size",
|
|
1816
|
+
"re_encode_mode": [
|
|
1817
|
+
"auto",
|
|
1818
|
+
"always"
|
|
1819
|
+
]
|
|
1820
|
+
},
|
|
1821
|
+
"description": "Two-pass target file size in bytes (minimum 1 MiB). Required when\n`encoding_mode=target_size`. h264-only today; see `encoding_mode` description\nfor per-codec rollout status.\n\nPractical floor: a ~100 kbps post-AAC video bitrate (i.e. `target_size_bytes`\ncorresponding to less than ~100 kbps of video after subtracting the 160 kbps\nAAC audio track over the merged duration) is silently floored by libx264 and\nthe resulting file will not honour the requested `target_size_bytes`.\nPublishers targeting very small outputs should size accordingly.\n",
|
|
1822
|
+
"min": 1048576,
|
|
1823
|
+
"type": "integer"
|
|
1824
|
+
},
|
|
1825
|
+
"transition": {
|
|
1826
|
+
"default": "none",
|
|
1827
|
+
"description": "Default transition between clips. Catalog from FFmpeg 7.1.1\nxfade filter (per ADR-0007). See per_value_availability for\nper-value rollout state.\n",
|
|
1828
|
+
"per_value_availability": {
|
|
1829
|
+
"circleclose": {
|
|
1830
|
+
"availability": "beta"
|
|
1831
|
+
},
|
|
1832
|
+
"circlecrop": {
|
|
1833
|
+
"availability": "beta"
|
|
1834
|
+
},
|
|
1835
|
+
"circleopen": {
|
|
1836
|
+
"availability": "beta"
|
|
1837
|
+
},
|
|
1838
|
+
"custom": {
|
|
1839
|
+
"availability": "planned",
|
|
1840
|
+
"documentation_url": "https://trello.com/c/EPUE5Vs1"
|
|
1841
|
+
},
|
|
1842
|
+
"diagbl": {
|
|
1843
|
+
"availability": "beta"
|
|
1844
|
+
},
|
|
1845
|
+
"diagtl": {
|
|
1846
|
+
"availability": "beta"
|
|
1847
|
+
},
|
|
1848
|
+
"diagtr": {
|
|
1849
|
+
"availability": "beta"
|
|
1850
|
+
},
|
|
1851
|
+
"distance": {
|
|
1852
|
+
"availability": "experimental"
|
|
1853
|
+
},
|
|
1854
|
+
"hblur": {
|
|
1855
|
+
"availability": "experimental"
|
|
1856
|
+
},
|
|
1857
|
+
"hlslice": {
|
|
1858
|
+
"availability": "experimental"
|
|
1859
|
+
},
|
|
1860
|
+
"pixelize": {
|
|
1861
|
+
"availability": "experimental"
|
|
1862
|
+
},
|
|
1863
|
+
"radial": {
|
|
1864
|
+
"availability": "beta"
|
|
1865
|
+
},
|
|
1866
|
+
"rectcrop": {
|
|
1867
|
+
"availability": "beta"
|
|
1868
|
+
},
|
|
1869
|
+
"slidedown": {
|
|
1870
|
+
"availability": "beta"
|
|
1871
|
+
},
|
|
1872
|
+
"slideleft": {
|
|
1873
|
+
"availability": "beta"
|
|
1874
|
+
},
|
|
1875
|
+
"slideright": {
|
|
1876
|
+
"availability": "beta"
|
|
1877
|
+
},
|
|
1878
|
+
"slideup": {
|
|
1879
|
+
"availability": "beta"
|
|
1880
|
+
},
|
|
1881
|
+
"smoothdown": {
|
|
1882
|
+
"availability": "beta"
|
|
1883
|
+
},
|
|
1884
|
+
"smoothleft": {
|
|
1885
|
+
"availability": "beta"
|
|
1886
|
+
},
|
|
1887
|
+
"smoothright": {
|
|
1888
|
+
"availability": "beta"
|
|
1889
|
+
},
|
|
1890
|
+
"smoothup": {
|
|
1891
|
+
"availability": "beta"
|
|
1892
|
+
},
|
|
1893
|
+
"squeezeh": {
|
|
1894
|
+
"availability": "experimental"
|
|
1895
|
+
},
|
|
1896
|
+
"vlslice": {
|
|
1897
|
+
"availability": "experimental"
|
|
1898
|
+
},
|
|
1899
|
+
"wipebl": {
|
|
1900
|
+
"availability": "planned",
|
|
1901
|
+
"eta": "2026-Q3"
|
|
1902
|
+
},
|
|
1903
|
+
"wipetl": {
|
|
1904
|
+
"availability": "planned",
|
|
1905
|
+
"eta": "2026-Q3"
|
|
1906
|
+
},
|
|
1907
|
+
"wipetr": {
|
|
1908
|
+
"availability": "planned",
|
|
1909
|
+
"eta": "2026-Q3"
|
|
1910
|
+
}
|
|
1911
|
+
},
|
|
1912
|
+
"type": "enum",
|
|
1913
|
+
"values": [
|
|
1914
|
+
"none",
|
|
1915
|
+
"fade",
|
|
1916
|
+
"fadeblack",
|
|
1917
|
+
"fadewhite",
|
|
1918
|
+
"dissolve",
|
|
1919
|
+
"wipeleft",
|
|
1920
|
+
"wiperight",
|
|
1921
|
+
"wipeup",
|
|
1922
|
+
"wipedown",
|
|
1923
|
+
"crossfade",
|
|
1924
|
+
"smoothleft",
|
|
1925
|
+
"smoothright",
|
|
1926
|
+
"smoothup",
|
|
1927
|
+
"smoothdown",
|
|
1928
|
+
"circleopen",
|
|
1929
|
+
"circleclose",
|
|
1930
|
+
"circlecrop",
|
|
1931
|
+
"rectcrop",
|
|
1932
|
+
"slideleft",
|
|
1933
|
+
"slideright",
|
|
1934
|
+
"slideup",
|
|
1935
|
+
"slidedown",
|
|
1936
|
+
"radial",
|
|
1937
|
+
"diagtl",
|
|
1938
|
+
"diagtr",
|
|
1939
|
+
"diagbl",
|
|
1940
|
+
"pixelize",
|
|
1941
|
+
"hlslice",
|
|
1942
|
+
"vlslice",
|
|
1943
|
+
"hblur",
|
|
1944
|
+
"distance",
|
|
1945
|
+
"squeezeh",
|
|
1946
|
+
"custom",
|
|
1947
|
+
"wipetl",
|
|
1948
|
+
"wipetr",
|
|
1949
|
+
"wipebl"
|
|
1950
|
+
]
|
|
1951
|
+
}
|
|
1952
|
+
},
|
|
1953
|
+
"per_input_options": {
|
|
1954
|
+
"crossfade_duration": {
|
|
1955
|
+
"depends_on": {
|
|
1956
|
+
"transition": "crossfade"
|
|
1957
|
+
},
|
|
1958
|
+
"description": "Override crossfade duration for this join point",
|
|
1959
|
+
"max": 5.0,
|
|
1960
|
+
"min": 0.1,
|
|
1961
|
+
"type": "float"
|
|
1962
|
+
},
|
|
1963
|
+
"transition": {
|
|
1964
|
+
"description": "Override transition for the join point preceding this input.",
|
|
1965
|
+
"per_value_availability": {
|
|
1966
|
+
"circleclose": {
|
|
1967
|
+
"availability": "beta"
|
|
1968
|
+
},
|
|
1969
|
+
"circlecrop": {
|
|
1970
|
+
"availability": "beta"
|
|
1971
|
+
},
|
|
1972
|
+
"circleopen": {
|
|
1973
|
+
"availability": "beta"
|
|
1974
|
+
},
|
|
1975
|
+
"custom": {
|
|
1976
|
+
"availability": "planned",
|
|
1977
|
+
"documentation_url": "https://trello.com/c/EPUE5Vs1"
|
|
1978
|
+
},
|
|
1979
|
+
"diagbl": {
|
|
1980
|
+
"availability": "beta"
|
|
1981
|
+
},
|
|
1982
|
+
"diagtl": {
|
|
1983
|
+
"availability": "beta"
|
|
1984
|
+
},
|
|
1985
|
+
"diagtr": {
|
|
1986
|
+
"availability": "beta"
|
|
1987
|
+
},
|
|
1988
|
+
"distance": {
|
|
1989
|
+
"availability": "experimental"
|
|
1990
|
+
},
|
|
1991
|
+
"hblur": {
|
|
1992
|
+
"availability": "experimental"
|
|
1993
|
+
},
|
|
1994
|
+
"hlslice": {
|
|
1995
|
+
"availability": "experimental"
|
|
1996
|
+
},
|
|
1997
|
+
"pixelize": {
|
|
1998
|
+
"availability": "experimental"
|
|
1999
|
+
},
|
|
2000
|
+
"radial": {
|
|
2001
|
+
"availability": "beta"
|
|
2002
|
+
},
|
|
2003
|
+
"rectcrop": {
|
|
2004
|
+
"availability": "beta"
|
|
2005
|
+
},
|
|
2006
|
+
"slidedown": {
|
|
2007
|
+
"availability": "beta"
|
|
2008
|
+
},
|
|
2009
|
+
"slideleft": {
|
|
2010
|
+
"availability": "beta"
|
|
2011
|
+
},
|
|
2012
|
+
"slideright": {
|
|
2013
|
+
"availability": "beta"
|
|
2014
|
+
},
|
|
2015
|
+
"slideup": {
|
|
2016
|
+
"availability": "beta"
|
|
2017
|
+
},
|
|
2018
|
+
"smoothdown": {
|
|
2019
|
+
"availability": "beta"
|
|
2020
|
+
},
|
|
2021
|
+
"smoothleft": {
|
|
2022
|
+
"availability": "beta"
|
|
2023
|
+
},
|
|
2024
|
+
"smoothright": {
|
|
2025
|
+
"availability": "beta"
|
|
2026
|
+
},
|
|
2027
|
+
"smoothup": {
|
|
2028
|
+
"availability": "beta"
|
|
2029
|
+
},
|
|
2030
|
+
"squeezeh": {
|
|
2031
|
+
"availability": "experimental"
|
|
2032
|
+
},
|
|
2033
|
+
"vlslice": {
|
|
2034
|
+
"availability": "experimental"
|
|
2035
|
+
},
|
|
2036
|
+
"wipebl": {
|
|
2037
|
+
"availability": "planned",
|
|
2038
|
+
"eta": "2026-Q3"
|
|
2039
|
+
},
|
|
2040
|
+
"wipetl": {
|
|
2041
|
+
"availability": "planned",
|
|
2042
|
+
"eta": "2026-Q3"
|
|
2043
|
+
},
|
|
2044
|
+
"wipetr": {
|
|
2045
|
+
"availability": "planned",
|
|
2046
|
+
"eta": "2026-Q3"
|
|
2047
|
+
}
|
|
2048
|
+
},
|
|
2049
|
+
"type": "enum",
|
|
2050
|
+
"values": [
|
|
2051
|
+
"none",
|
|
2052
|
+
"fade",
|
|
2053
|
+
"fadeblack",
|
|
2054
|
+
"fadewhite",
|
|
2055
|
+
"dissolve",
|
|
2056
|
+
"wipeleft",
|
|
2057
|
+
"wiperight",
|
|
2058
|
+
"wipeup",
|
|
2059
|
+
"wipedown",
|
|
2060
|
+
"crossfade",
|
|
2061
|
+
"smoothleft",
|
|
2062
|
+
"smoothright",
|
|
2063
|
+
"smoothup",
|
|
2064
|
+
"smoothdown",
|
|
2065
|
+
"circleopen",
|
|
2066
|
+
"circleclose",
|
|
2067
|
+
"circlecrop",
|
|
2068
|
+
"rectcrop",
|
|
2069
|
+
"slideleft",
|
|
2070
|
+
"slideright",
|
|
2071
|
+
"slideup",
|
|
2072
|
+
"slidedown",
|
|
2073
|
+
"radial",
|
|
2074
|
+
"diagtl",
|
|
2075
|
+
"diagtr",
|
|
2076
|
+
"diagbl",
|
|
2077
|
+
"pixelize",
|
|
2078
|
+
"hlslice",
|
|
2079
|
+
"vlslice",
|
|
2080
|
+
"hblur",
|
|
2081
|
+
"distance",
|
|
2082
|
+
"squeezeh",
|
|
2083
|
+
"custom",
|
|
2084
|
+
"wipetl",
|
|
2085
|
+
"wipetr",
|
|
2086
|
+
"wipebl"
|
|
2087
|
+
]
|
|
2088
|
+
}
|
|
2089
|
+
},
|
|
2090
|
+
"processing_class": {
|
|
2091
|
+
"long_form_re_encode": {
|
|
2092
|
+
"availability": "planned",
|
|
2093
|
+
"constraints": {
|
|
2094
|
+
"max_total_duration": "PT12H",
|
|
2095
|
+
"max_total_input_size_bytes": 21474836480
|
|
2096
|
+
},
|
|
2097
|
+
"required_tier": "pro"
|
|
2098
|
+
},
|
|
2099
|
+
"short_form_concat": {
|
|
2100
|
+
"availability": "stable",
|
|
2101
|
+
"constraints": {
|
|
2102
|
+
"max_total_duration": "PT5M",
|
|
2103
|
+
"max_total_input_size_bytes": 1073741824
|
|
2104
|
+
}
|
|
2105
|
+
}
|
|
2106
|
+
}
|
|
2107
|
+
}
|
|
2108
|
+
},
|
|
2109
|
+
"min_inputs": 2
|
|
2110
|
+
},
|
|
2111
|
+
"text_watermark": {
|
|
2112
|
+
"default": false,
|
|
2113
|
+
"description": "Render a text overlay onto an image using bundled Liberation Sans\n(SIL OFL). Single-input \u2014 text comes from options, not from a file\ninput. Source capped at 25 megapixels (V1 watermark precedent\nretained). Per ADR-0004 \u00a7\"V2 JobDefinition\" + plan v5 \u00a7F1.\n\nTwo rendering modes:\n- `single`: one label rendered at the anchor + margin position.\n- `tiled`: text tiled across the source image (Cinavia / Adobe Stock\n pattern); rotation default -45\u00b0 and tile_spacing controls density.\n",
|
|
2114
|
+
"input_model": "single",
|
|
2115
|
+
"mime_groups": {
|
|
2116
|
+
"image": {
|
|
2117
|
+
"mimes": [
|
|
2118
|
+
"image/jpeg",
|
|
2119
|
+
"image/png",
|
|
2120
|
+
"image/webp"
|
|
2121
|
+
],
|
|
2122
|
+
"options": {
|
|
2123
|
+
"anchor": {
|
|
2124
|
+
"default": "bottom_right",
|
|
2125
|
+
"description": "9-grid anchor position. For watermark_mode: single, the text\nlabel is placed at this anchor + margin_x/margin_y offset.\nFor watermark_mode: tiled, anchor is ignored (tiles fill the\nsource image).\n",
|
|
2126
|
+
"type": "enum",
|
|
2127
|
+
"values": [
|
|
2128
|
+
"top_left",
|
|
2129
|
+
"top_center",
|
|
2130
|
+
"top_right",
|
|
2131
|
+
"center_left",
|
|
2132
|
+
"center",
|
|
2133
|
+
"center_right",
|
|
2134
|
+
"bottom_left",
|
|
2135
|
+
"bottom_center",
|
|
2136
|
+
"bottom_right"
|
|
2137
|
+
]
|
|
2138
|
+
},
|
|
2139
|
+
"color": {
|
|
2140
|
+
"default": "#FFFFFF80",
|
|
2141
|
+
"description": "Text colour as hex RGB (#RRGGBB) or RGBA (#RRGGBBAA).\nDefault is white with 50% alpha.\n",
|
|
2142
|
+
"pattern": "^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$",
|
|
2143
|
+
"type": "string"
|
|
2144
|
+
},
|
|
2145
|
+
"font_family": {
|
|
2146
|
+
"default": "liberation_sans",
|
|
2147
|
+
"description": "Font family. V2.0 ships with bundled Liberation Sans only;\nuser-uploaded fonts are a future extension (separate ticket).\n",
|
|
2148
|
+
"type": "enum",
|
|
2149
|
+
"values": [
|
|
2150
|
+
"liberation_sans"
|
|
2151
|
+
]
|
|
2152
|
+
},
|
|
2153
|
+
"font_size": {
|
|
2154
|
+
"default": 48.0,
|
|
2155
|
+
"description": "Font size in pixels. Clamped to range.",
|
|
2156
|
+
"max": 512.0,
|
|
2157
|
+
"min": 8.0,
|
|
2158
|
+
"type": "float"
|
|
2159
|
+
},
|
|
2160
|
+
"margin_x": {
|
|
2161
|
+
"default": "0px",
|
|
2162
|
+
"description": "Horizontal offset from the anchor as pixels (e.g. \"40px\") or\npercentage of base width (e.g. \"5%\"). Direction is\nanchor-relative. Ignored when watermark_mode: tiled.\n\n**`anchor: center` exception** (watermark_mode: single only).\nWhen the anchor is `center` the centre is the centre \u2014 there\nis no anchor-relative direction. Non-zero `margin_x`\n(anything other than the default `\"0px\"` or the equivalent\n`\"0%\"`) combined with `anchor: center` is rejected by the\nAPI at workflow-create time as `invalid_options` (HTTP 422).\nTo nudge a roughly-centred label, pick a peripheral anchor\n(e.g. `top_left`) and use `margin_x` / `margin_y` to\nposition it. Not applicable to watermark_mode: tiled, where\nanchor + margin are ignored entirely.\n",
|
|
2163
|
+
"pattern": "^\\d+(\\.\\d+)?(px|%)$",
|
|
2164
|
+
"type": "string"
|
|
2165
|
+
},
|
|
2166
|
+
"margin_y": {
|
|
2167
|
+
"default": "0px",
|
|
2168
|
+
"description": "Vertical offset from the anchor as pixels or percentage of\nbase height. Ignored when watermark_mode: tiled.\n\n**`anchor: center` exception** (watermark_mode: single only).\nSame rejection rule as `margin_x` \u2014 non-zero `margin_y` with\n`anchor: center` is rejected by the API at workflow-create\ntime as `invalid_options` (HTTP 422).\n",
|
|
2169
|
+
"pattern": "^\\d+(\\.\\d+)?(px|%)$",
|
|
2170
|
+
"type": "string"
|
|
2171
|
+
},
|
|
2172
|
+
"opacity": {
|
|
2173
|
+
"default": 1.0,
|
|
2174
|
+
"description": "Text overlay opacity. Default 1.0 \u2014 the alpha channel of\n`color` already encodes transparency, so opacity is usually\nleft at 1.0 and transparency is set via the color hex.\n",
|
|
2175
|
+
"max": 1.0,
|
|
2176
|
+
"min": 0.0,
|
|
2177
|
+
"type": "float"
|
|
2178
|
+
},
|
|
2179
|
+
"rotation": {
|
|
2180
|
+
"default": -45.0,
|
|
2181
|
+
"description": "Rotation angle in degrees. Default -45\u00b0 suits tiled mode\n(angled diagonal pattern). Clamped to range. Tiled canvas is\ncapped at 25 megapixels pre-rotation with 5000 px maximum\nside length.\n",
|
|
2182
|
+
"max": 360.0,
|
|
2183
|
+
"min": -360.0,
|
|
2184
|
+
"type": "float"
|
|
2185
|
+
},
|
|
2186
|
+
"text": {
|
|
2187
|
+
"description": "Watermark text. Must be non-empty. Rendered with bundled\nLiberation Sans (SIL OFL). A single text overlay is capped\nat 4 megapixels before rendering fails.\n",
|
|
2188
|
+
"required": true,
|
|
2189
|
+
"type": "string"
|
|
2190
|
+
},
|
|
2191
|
+
"tile_spacing": {
|
|
2192
|
+
"depends_on": {
|
|
2193
|
+
"watermark_mode": "tiled"
|
|
2194
|
+
},
|
|
2195
|
+
"description": "Spacing between tiled labels in pixels. Defaults to font_size\nwhen omitted. Only applies when watermark_mode is tiled.\n",
|
|
2196
|
+
"max": 1000,
|
|
2197
|
+
"min": 0,
|
|
2198
|
+
"type": "integer"
|
|
2199
|
+
},
|
|
2200
|
+
"watermark_mode": {
|
|
2201
|
+
"default": "single",
|
|
2202
|
+
"description": "Rendering mode:\n- `single`: one label placed at the anchor + margin offset.\n- `tiled`: repeated tiles across the entire source image at\n the rotation angle.\n",
|
|
2203
|
+
"type": "enum",
|
|
2204
|
+
"values": [
|
|
2205
|
+
"single",
|
|
2206
|
+
"tiled"
|
|
2207
|
+
]
|
|
2208
|
+
}
|
|
2209
|
+
}
|
|
2210
|
+
}
|
|
2211
|
+
}
|
|
2212
|
+
},
|
|
2213
|
+
"thumbnail": {
|
|
2214
|
+
"default": false,
|
|
2215
|
+
"description": "Generate a preview image from the source file",
|
|
2216
|
+
"input_model": "single",
|
|
2217
|
+
"mime_groups": {
|
|
2218
|
+
"document": {
|
|
2219
|
+
"mimes": [
|
|
2220
|
+
"application/pdf",
|
|
2221
|
+
"application/epub+zip",
|
|
2222
|
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
2223
|
+
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
2224
|
+
"application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
2225
|
+
"application/vnd.oasis.opendocument.text",
|
|
2226
|
+
"application/vnd.oasis.opendocument.spreadsheet",
|
|
2227
|
+
"application/vnd.oasis.opendocument.presentation"
|
|
2228
|
+
],
|
|
2229
|
+
"options": {
|
|
2230
|
+
"fit": {
|
|
2231
|
+
"default": "crop",
|
|
2232
|
+
"description": "Resize mode",
|
|
2233
|
+
"type": "enum",
|
|
2234
|
+
"values": [
|
|
2235
|
+
"max",
|
|
2236
|
+
"crop",
|
|
2237
|
+
"scale"
|
|
2238
|
+
]
|
|
2239
|
+
},
|
|
2240
|
+
"format": {
|
|
2241
|
+
"default": "jpg",
|
|
2242
|
+
"description": "Output format for the thumbnail",
|
|
2243
|
+
"type": "enum",
|
|
2244
|
+
"values": [
|
|
2245
|
+
"jpg",
|
|
2246
|
+
"png",
|
|
2247
|
+
"webp"
|
|
2248
|
+
]
|
|
2249
|
+
},
|
|
2250
|
+
"height": {
|
|
2251
|
+
"description": "Thumbnail height in pixels",
|
|
2252
|
+
"max": 4096,
|
|
2253
|
+
"min": 1,
|
|
2254
|
+
"required": true,
|
|
2255
|
+
"type": "integer"
|
|
2256
|
+
},
|
|
2257
|
+
"page": {
|
|
2258
|
+
"default": 1,
|
|
2259
|
+
"depends_on": {
|
|
2260
|
+
"source": "page"
|
|
2261
|
+
},
|
|
2262
|
+
"description": "Page/sheet/slide number to render",
|
|
2263
|
+
"min": 1,
|
|
2264
|
+
"type": "integer"
|
|
2265
|
+
},
|
|
2266
|
+
"source": {
|
|
2267
|
+
"default": "page",
|
|
2268
|
+
"description": "page = render a specific page/slide, cover = extract cover image (EPUB only, ignored for other formats)",
|
|
2269
|
+
"type": "enum",
|
|
2270
|
+
"values": [
|
|
2271
|
+
"page",
|
|
2272
|
+
"cover"
|
|
2273
|
+
]
|
|
2274
|
+
},
|
|
2275
|
+
"width": {
|
|
2276
|
+
"description": "Thumbnail width in pixels",
|
|
2277
|
+
"max": 4096,
|
|
2278
|
+
"min": 1,
|
|
2279
|
+
"required": true,
|
|
2280
|
+
"type": "integer"
|
|
2281
|
+
}
|
|
2282
|
+
}
|
|
2283
|
+
},
|
|
2284
|
+
"image": {
|
|
2285
|
+
"mimes": [
|
|
2286
|
+
"image/jpeg",
|
|
2287
|
+
"image/png",
|
|
2288
|
+
"image/gif",
|
|
2289
|
+
"image/webp",
|
|
2290
|
+
"image/tiff",
|
|
2291
|
+
"image/bmp",
|
|
2292
|
+
"image/avif",
|
|
2293
|
+
"image/heic"
|
|
2294
|
+
],
|
|
2295
|
+
"options": {
|
|
2296
|
+
"fit": {
|
|
2297
|
+
"default": "crop",
|
|
2298
|
+
"description": "Resize mode",
|
|
2299
|
+
"type": "enum",
|
|
2300
|
+
"values": [
|
|
2301
|
+
"max",
|
|
2302
|
+
"crop",
|
|
2303
|
+
"scale"
|
|
2304
|
+
]
|
|
2305
|
+
},
|
|
2306
|
+
"format": {
|
|
2307
|
+
"default": "jpg",
|
|
2308
|
+
"description": "Output format for the thumbnail",
|
|
2309
|
+
"type": "enum",
|
|
2310
|
+
"values": [
|
|
2311
|
+
"jpg",
|
|
2312
|
+
"png",
|
|
2313
|
+
"webp"
|
|
2314
|
+
]
|
|
2315
|
+
},
|
|
2316
|
+
"height": {
|
|
2317
|
+
"description": "Thumbnail height in pixels",
|
|
2318
|
+
"max": 4096,
|
|
2319
|
+
"min": 1,
|
|
2320
|
+
"required": true,
|
|
2321
|
+
"type": "integer"
|
|
2322
|
+
},
|
|
2323
|
+
"width": {
|
|
2324
|
+
"description": "Thumbnail width in pixels",
|
|
2325
|
+
"max": 4096,
|
|
2326
|
+
"min": 1,
|
|
2327
|
+
"required": true,
|
|
2328
|
+
"type": "integer"
|
|
2329
|
+
}
|
|
2330
|
+
}
|
|
2331
|
+
},
|
|
2332
|
+
"video": {
|
|
2333
|
+
"mimes": [
|
|
2334
|
+
"video/mp4",
|
|
2335
|
+
"video/webm",
|
|
2336
|
+
"video/ogg"
|
|
2337
|
+
],
|
|
2338
|
+
"options": {
|
|
2339
|
+
"fit": {
|
|
2340
|
+
"default": "crop",
|
|
2341
|
+
"description": "Resize mode",
|
|
2342
|
+
"type": "enum",
|
|
2343
|
+
"values": [
|
|
2344
|
+
"max",
|
|
2345
|
+
"crop",
|
|
2346
|
+
"scale"
|
|
2347
|
+
]
|
|
2348
|
+
},
|
|
2349
|
+
"format": {
|
|
2350
|
+
"default": "jpg",
|
|
2351
|
+
"description": "Output format for the thumbnail",
|
|
2352
|
+
"type": "enum",
|
|
2353
|
+
"values": [
|
|
2354
|
+
"jpg",
|
|
2355
|
+
"png",
|
|
2356
|
+
"webp"
|
|
2357
|
+
]
|
|
2358
|
+
},
|
|
2359
|
+
"height": {
|
|
2360
|
+
"description": "Thumbnail height in pixels",
|
|
2361
|
+
"max": 4096,
|
|
2362
|
+
"min": 1,
|
|
2363
|
+
"required": true,
|
|
2364
|
+
"type": "integer"
|
|
2365
|
+
},
|
|
2366
|
+
"timestamp": {
|
|
2367
|
+
"default": "00:00:01",
|
|
2368
|
+
"description": "Frame to extract (HH:MM:SS or seconds)",
|
|
2369
|
+
"type": "string"
|
|
2370
|
+
},
|
|
2371
|
+
"width": {
|
|
2372
|
+
"description": "Thumbnail width in pixels",
|
|
2373
|
+
"max": 4096,
|
|
2374
|
+
"min": 1,
|
|
2375
|
+
"required": true,
|
|
2376
|
+
"type": "integer"
|
|
2377
|
+
}
|
|
2378
|
+
},
|
|
2379
|
+
"processing_class": {
|
|
2380
|
+
"long_form": {
|
|
2381
|
+
"availability": "planned",
|
|
2382
|
+
"constraints": {
|
|
2383
|
+
"max_input_duration": "PT12H",
|
|
2384
|
+
"max_input_size_bytes": 21474836480
|
|
2385
|
+
},
|
|
2386
|
+
"required_tier": "pro"
|
|
2387
|
+
},
|
|
2388
|
+
"short_form": {
|
|
2389
|
+
"availability": "stable",
|
|
2390
|
+
"constraints": {
|
|
2391
|
+
"max_input_duration": "PT5M",
|
|
2392
|
+
"max_input_size_bytes": 524288000
|
|
2393
|
+
}
|
|
2394
|
+
}
|
|
2395
|
+
}
|
|
2396
|
+
}
|
|
2397
|
+
}
|
|
2398
|
+
}
|
|
2399
|
+
},
|
|
2400
|
+
"schema_version": "2.7.1",
|
|
2401
|
+
"source_commit": null,
|
|
2402
|
+
"user_tier": null
|
|
2403
|
+
}
|