@giveitsmaller/contracts 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/asyncapi/events.yaml +455 -41
- package/availability/availability.json +586 -91
- package/dist/asyncapi/OperationType.d.ts +5 -1
- package/dist/asyncapi/OperationType.js +4 -0
- package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
- package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
- package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
- package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
- package/dist/openapi/models/AuthErrorResponse.d.ts +20 -1
- package/dist/openapi/models/AuthErrorResponse.js +1 -1
- package/dist/openapi/models/AuthErrorType.d.ts +1 -1
- package/dist/openapi/models/AuthErrorType.js +1 -1
- package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
- package/dist/openapi/models/AvailabilityValue.js +1 -1
- package/dist/openapi/models/BalanceExhaustedResponse.d.ts +20 -1
- package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
- package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
- package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
- package/dist/openapi/models/CallbackEventType.d.ts +1 -1
- package/dist/openapi/models/CallbackEventType.js +1 -1
- package/dist/openapi/models/ConnectionSource.d.ts +1 -1
- package/dist/openapi/models/ConnectionSource.js +1 -1
- package/dist/openapi/models/ContactRequest.d.ts +1 -1
- package/dist/openapi/models/ContactRequest.js +1 -1
- package/dist/openapi/models/ContactSubject.d.ts +1 -1
- package/dist/openapi/models/ContactSubject.js +1 -1
- package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
- package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
- package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
- package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
- package/dist/openapi/models/CreateExternalImport422Response.d.ts +23 -0
- package/dist/openapi/models/CreateExternalImport422Response.js +51 -0
- package/dist/openapi/models/CreateWorkflow422Response.d.ts +4 -2
- package/dist/openapi/models/CreateWorkflow422Response.js +15 -1
- package/dist/openapi/models/CreditTransaction.d.ts +1 -1
- package/dist/openapi/models/CreditTransaction.js +1 -1
- package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
- package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
- package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
- package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
- package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
- package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
- package/dist/openapi/models/CreditsUsageResponse.js +1 -1
- package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
- package/dist/openapi/models/Delivery.d.ts +1 -1
- package/dist/openapi/models/Delivery.js +1 -1
- package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
- package/dist/openapi/models/DeliveryOutputRef.js +1 -1
- package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
- package/dist/openapi/models/DeliveryPlan.js +1 -1
- package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
- package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
- package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
- package/dist/openapi/models/DeliveryPlanReason.js +1 -1
- package/dist/openapi/models/DeliverySelection.d.ts +1 -1
- package/dist/openapi/models/DeliverySelection.js +1 -1
- package/dist/openapi/models/ErrorEnvelope.d.ts +20 -1
- package/dist/openapi/models/ErrorEnvelope.js +1 -1
- package/dist/openapi/models/EstimateQuality.d.ts +1 -1
- package/dist/openapi/models/EstimateQuality.js +1 -1
- package/dist/openapi/models/EstimateRange.d.ts +1 -1
- package/dist/openapi/models/EstimateRange.js +1 -1
- package/dist/openapi/models/ExternalDestination.d.ts +1 -1
- package/dist/openapi/models/ExternalDestination.js +1 -1
- package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
- package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
- package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
- package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
- package/dist/openapi/models/ExternalImportRequest.js +1 -1
- package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
- package/dist/openapi/models/ExternalImportToken.js +1 -1
- package/dist/openapi/models/ExternalSource.d.ts +1 -1
- package/dist/openapi/models/ExternalSource.js +1 -1
- package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +26 -3
- package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
- package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +20 -1
- package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
- package/dist/openapi/models/FeatureViolation.d.ts +1 -1
- package/dist/openapi/models/FeatureViolation.js +1 -1
- package/dist/openapi/models/JobDefinition.d.ts +17 -6
- package/dist/openapi/models/JobDefinition.js +1 -1
- package/dist/openapi/models/JobDownload.d.ts +1 -1
- package/dist/openapi/models/JobDownload.js +1 -1
- package/dist/openapi/models/JobInputV2.d.ts +16 -1
- package/dist/openapi/models/JobInputV2.js +1 -1
- package/dist/openapi/models/JobOutputSource.d.ts +1 -1
- package/dist/openapi/models/JobOutputSource.js +1 -1
- package/dist/openapi/models/JobResponse.d.ts +1 -1
- package/dist/openapi/models/JobResponse.js +1 -1
- package/dist/openapi/models/JobStatus.d.ts +1 -1
- package/dist/openapi/models/JobStatus.js +1 -1
- package/dist/openapi/models/JobType.d.ts +1 -1
- package/dist/openapi/models/JobType.js +1 -1
- package/dist/openapi/models/LivenessResponse.d.ts +1 -1
- package/dist/openapi/models/LivenessResponse.js +1 -1
- package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
- package/dist/openapi/models/LoginUser200Response.js +1 -1
- package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
- package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
- package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
- package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
- package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
- package/dist/openapi/models/LoginUserRequest.js +1 -1
- package/dist/openapi/models/LogoutUser200Response.d.ts +1 -1
- package/dist/openapi/models/LogoutUser200Response.js +1 -1
- package/dist/openapi/models/MetadataResponse.d.ts +1 -1
- package/dist/openapi/models/MetadataResponse.js +1 -1
- package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
- package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
- package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
- package/dist/openapi/models/MetadataResponseExif.js +1 -1
- package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
- package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
- package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
- package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
- package/dist/openapi/models/MimeGroupSchema.js +1 -1
- package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
- package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
- package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
- package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
- package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
- package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
- package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
- package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
- package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
- package/dist/openapi/models/MultipartInitiateResponse.d.ts +20 -4
- package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
- package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
- package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +43 -0
- package/dist/openapi/models/MultipartKeepaliveResponse.js +47 -0
- package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +46 -0
- package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +54 -0
- package/dist/openapi/models/MultipartPartListing.d.ts +59 -0
- package/dist/openapi/models/MultipartPartListing.js +55 -0
- package/dist/openapi/models/MultipartPresignRequest.d.ts +41 -0
- package/dist/openapi/models/MultipartPresignRequest.js +43 -0
- package/dist/openapi/models/MultipartPresignResponse.d.ts +46 -0
- package/dist/openapi/models/MultipartPresignResponse.js +48 -0
- package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +46 -0
- package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +54 -0
- package/dist/openapi/models/MultipartStatusResponse.d.ts +103 -0
- package/dist/openapi/models/MultipartStatusResponse.js +76 -0
- package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +46 -0
- package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +54 -0
- package/dist/openapi/models/OperationDefinition.d.ts +1 -1
- package/dist/openapi/models/OperationDefinition.js +1 -1
- package/dist/openapi/models/OperationDownload.d.ts +29 -1
- package/dist/openapi/models/OperationDownload.js +5 -1
- package/dist/openapi/models/OperationInputModel.d.ts +4 -3
- package/dist/openapi/models/OperationInputModel.js +4 -3
- package/dist/openapi/models/OperationResponse.d.ts +20 -1
- package/dist/openapi/models/OperationResponse.js +5 -1
- package/dist/openapi/models/OperationResult.d.ts +1 -1
- package/dist/openapi/models/OperationResult.js +1 -1
- package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
- package/dist/openapi/models/OperationResultMetrics.js +1 -1
- package/dist/openapi/models/OperationSchemaDefinition.d.ts +23 -2
- package/dist/openapi/models/OperationSchemaDefinition.js +4 -1
- package/dist/openapi/models/OperationStatus.d.ts +1 -1
- package/dist/openapi/models/OperationStatus.js +1 -1
- package/dist/openapi/models/OperationType.d.ts +10 -2
- package/dist/openapi/models/OperationType.js +11 -3
- package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
- package/dist/openapi/models/OptionSchema.d.ts +1 -1
- package/dist/openapi/models/OptionSchema.js +1 -1
- package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +47 -0
- package/dist/openapi/models/PerRoleCardinalityEntry.js +47 -0
- package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
- package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
- package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
- package/dist/openapi/models/PresignedUrlPart.js +1 -1
- package/dist/openapi/models/ProbePendingResponse.d.ts +171 -0
- package/dist/openapi/models/ProbePendingResponse.js +75 -0
- package/dist/openapi/models/ProcessingClass.d.ts +1 -1
- package/dist/openapi/models/ProcessingClass.js +1 -1
- package/dist/openapi/models/ProcessingClassBandViolation.d.ts +149 -0
- package/dist/openapi/models/ProcessingClassBandViolation.js +81 -0
- package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +174 -0
- package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +76 -0
- package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassHint.js +1 -1
- package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassReason.js +1 -1
- package/dist/openapi/models/ProcessingClassRejectReason.d.ts +53 -0
- package/dist/openapi/models/ProcessingClassRejectReason.js +71 -0
- package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
- package/dist/openapi/models/ProcessingPlan.js +1 -1
- package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
- package/dist/openapi/models/ProcessingPlanJob.js +1 -1
- package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
- package/dist/openapi/models/ReadinessResponse.js +1 -1
- package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
- package/dist/openapi/models/ResponseEnvelope.js +1 -1
- package/dist/openapi/models/RetryResponse.d.ts +1 -1
- package/dist/openapi/models/RetryResponse.js +1 -1
- package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
- package/dist/openapi/models/SseEventType.d.ts +1 -1
- package/dist/openapi/models/SseEventType.js +1 -1
- package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
- package/dist/openapi/models/SseJobCompletedData.js +1 -1
- package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
- package/dist/openapi/models/SseJobFailedData.js +1 -1
- package/dist/openapi/models/SseMultiOutputCompletion.d.ts +60 -0
- package/dist/openapi/models/SseMultiOutputCompletion.js +51 -0
- package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +38 -0
- package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +43 -0
- package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +75 -0
- package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +61 -0
- package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +74 -0
- package/dist/openapi/models/SseMultiOutputResultEntry.js +51 -0
- package/dist/openapi/models/SseOperationCompletedData.d.ts +4 -4
- package/dist/openapi/models/SseOperationCompletedData.js +4 -4
- package/dist/openapi/models/SseOperationCompletionResult.d.ts +60 -0
- package/dist/openapi/models/SseOperationCompletionResult.js +47 -0
- package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
- package/dist/openapi/models/SseOperationFailedData.js +1 -1
- package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
- package/dist/openapi/models/SseOperationProgressData.js +1 -1
- package/dist/openapi/models/SseSingleOutputCompletion.d.ts +72 -0
- package/dist/openapi/models/SseSingleOutputCompletion.js +62 -0
- package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
- package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
- package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
- package/dist/openapi/models/TierRestrictionKind.js +1 -1
- package/dist/openapi/models/TierRestrictionResponse.d.ts +20 -1
- package/dist/openapi/models/TierRestrictionResponse.js +1 -1
- package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
- package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
- package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +20 -1
- package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
- package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
- package/dist/openapi/models/UploadFile403Response.js +1 -1
- package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
- package/dist/openapi/models/UploadFile422Response.js +1 -1
- package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
- package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
- package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
- package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
- package/dist/openapi/models/UploadProbeResponse.d.ts +4 -2
- package/dist/openapi/models/UploadProbeResponse.js +1 -1
- package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
- package/dist/openapi/models/UploadProbeStatus.js +1 -1
- package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +56 -0
- package/dist/openapi/models/UploadProbeSuccessEnvelope.js +54 -0
- package/dist/openapi/models/UploadResponse.d.ts +1 -1
- package/dist/openapi/models/UploadResponse.js +1 -1
- package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +20 -1
- package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
- package/dist/openapi/models/UploadSource.d.ts +1 -1
- package/dist/openapi/models/UploadSource.js +1 -1
- package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
- package/dist/openapi/models/UploadThresholds.d.ts +11 -4
- package/dist/openapi/models/UploadThresholds.js +2 -2
- package/dist/openapi/models/UserTier.d.ts +1 -1
- package/dist/openapi/models/UserTier.js +1 -1
- package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
- package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
- package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
- package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
- package/dist/openapi/models/WarningType.d.ts +1 -1
- package/dist/openapi/models/WarningType.js +1 -1
- package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
- package/dist/openapi/models/WebhookOperationContext.js +1 -1
- package/dist/openapi/models/WebhookPayload.d.ts +1 -1
- package/dist/openapi/models/WebhookPayload.js +1 -1
- package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
- package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
- package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
- package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
- package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
- package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
- package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
- package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
- package/dist/openapi/models/WorkflowEdge.js +1 -1
- package/dist/openapi/models/WorkflowExpiredResponse.d.ts +20 -1
- package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
- package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
- package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
- package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
- package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
- package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
- package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
- package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
- package/dist/openapi/models/WorkflowProcessing.js +1 -1
- package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
- package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowSource.d.ts +1 -1
- package/dist/openapi/models/WorkflowSource.js +1 -1
- package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
- package/dist/openapi/models/WorkflowStatus.js +1 -1
- package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
- package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
- package/dist/openapi/models/WorkflowWarning.js +1 -1
- package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
- package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
- package/dist/openapi/models/index.d.ts +21 -0
- package/dist/openapi/models/index.js +21 -0
- package/dist/openapi/runtime.d.ts +1 -1
- package/dist/openapi/runtime.js +1 -1
- package/dist/operations/audio_overlay.metadata.js +4 -4
- package/dist/operations/audio_to_video.d.ts +20 -0
- package/dist/operations/audio_to_video.js +17 -0
- package/dist/operations/audio_to_video.metadata.d.ts +2 -0
- package/dist/operations/audio_to_video.metadata.js +29 -0
- package/dist/operations/audio_watermark.metadata.js +4 -4
- package/dist/operations/compress.metadata.js +3 -3
- package/dist/operations/convert.metadata.js +2 -2
- package/dist/operations/custom_luma.metadata.js +2 -2
- package/dist/operations/image_watermark.d.ts +0 -18
- package/dist/operations/image_watermark.js +0 -12
- package/dist/operations/image_watermark.metadata.js +0 -41
- package/dist/operations/index.d.ts +8 -0
- package/dist/operations/index.js +8 -0
- package/dist/operations/merge.metadata.js +3 -3
- package/dist/operations/metadata-types.d.ts +17 -0
- package/dist/operations/split.d.ts +50 -0
- package/dist/operations/split.js +34 -0
- package/dist/operations/split.metadata.d.ts +2 -0
- package/dist/operations/split.metadata.js +103 -0
- package/dist/operations/thumbnail.metadata.js +1 -1
- package/dist/operations/video_text_watermark.d.ts +31 -0
- package/dist/operations/video_text_watermark.js +22 -0
- package/dist/operations/video_text_watermark.metadata.d.ts +2 -0
- package/dist/operations/video_text_watermark.metadata.js +65 -0
- package/dist/operations/video_watermark.d.ts +18 -0
- package/dist/operations/video_watermark.js +13 -0
- package/dist/operations/video_watermark.metadata.d.ts +2 -0
- package/dist/operations/video_watermark.metadata.js +52 -0
- package/openapi/api.yaml +1543 -121
- package/operations/schemas/audio_overlay.yaml +18 -6
- package/operations/schemas/audio_to_video.yaml +122 -0
- package/operations/schemas/audio_watermark.yaml +14 -6
- package/operations/schemas/compress.yaml +10 -4
- package/operations/schemas/convert.yaml +10 -3
- package/operations/schemas/custom_luma.yaml +10 -3
- package/operations/schemas/image_watermark.yaml +15 -96
- package/operations/schemas/merge.yaml +10 -4
- package/operations/schemas/split.yaml +309 -0
- package/operations/schemas/thumbnail.yaml +16 -3
- package/operations/schemas/video_text_watermark.yaml +174 -0
- package/operations/schemas/video_watermark.yaml +136 -0
- package/package.json +8 -3
- package/dist/asyncapi/AnonymousSchema_13.d.ts +0 -6
- package/dist/asyncapi/AnonymousSchema_13.js +0 -7
- package/dist/asyncapi/AnonymousSchema_152.d.ts +0 -5
- package/dist/asyncapi/AnonymousSchema_152.js +0 -6
- package/dist/openapi/models/ExportConfig.d.ts +0 -63
- package/dist/openapi/models/ExportConfig.js +0 -59
- package/dist/openapi/models/JobInput.d.ts +0 -53
- package/dist/openapi/models/JobInput.js +0 -47
- package/dist/openapi/models/JobSource.d.ts +0 -43
- package/dist/openapi/models/JobSource.js +0 -45
- package/dist/operations/watermark.d.ts +0 -28
- package/dist/operations/watermark.js +0 -19
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"capabilities_version":
|
|
2
|
+
"capabilities_version": 38,
|
|
3
3
|
"environment": "baseline",
|
|
4
4
|
"generated_at": null,
|
|
5
5
|
"operations": {
|
|
@@ -182,8 +182,14 @@
|
|
|
182
182
|
"availability": "planned",
|
|
183
183
|
"constraints": {
|
|
184
184
|
"max_input_duration": "PT12H",
|
|
185
|
-
"max_input_size_bytes":
|
|
186
|
-
"max_output_size_bytes":
|
|
185
|
+
"max_input_size_bytes": 5000000000,
|
|
186
|
+
"max_output_size_bytes": 5000000000
|
|
187
|
+
},
|
|
188
|
+
"per_tier_constraints": {
|
|
189
|
+
"enterprise": {
|
|
190
|
+
"max_input_size_bytes": 120000000000,
|
|
191
|
+
"max_output_size_bytes": 120000000000
|
|
192
|
+
}
|
|
187
193
|
},
|
|
188
194
|
"required_tier": "pro"
|
|
189
195
|
},
|
|
@@ -338,8 +344,14 @@
|
|
|
338
344
|
"availability": "planned",
|
|
339
345
|
"constraints": {
|
|
340
346
|
"max_input_duration": "PT12H",
|
|
341
|
-
"max_input_size_bytes":
|
|
342
|
-
"max_output_size_bytes":
|
|
347
|
+
"max_input_size_bytes": 5000000000,
|
|
348
|
+
"max_output_size_bytes": 5000000000
|
|
349
|
+
},
|
|
350
|
+
"per_tier_constraints": {
|
|
351
|
+
"enterprise": {
|
|
352
|
+
"max_input_size_bytes": 120000000000,
|
|
353
|
+
"max_output_size_bytes": 120000000000
|
|
354
|
+
}
|
|
343
355
|
},
|
|
344
356
|
"required_tier": "pro"
|
|
345
357
|
},
|
|
@@ -356,6 +368,80 @@
|
|
|
356
368
|
},
|
|
357
369
|
"min_inputs": 2
|
|
358
370
|
},
|
|
371
|
+
"audio_to_video": {
|
|
372
|
+
"availability": "planned",
|
|
373
|
+
"default": false,
|
|
374
|
+
"description": "Produce a video from an audio input plus an OPTIONAL still image\noverlay. Use cases: podcast \u2192 YouTube uploads, audio-only tracks\nthat need a video container for platforms requiring it, branded\naudio releases with a static cover image.\n\n**Role asymmetry.** First role-based operation on the contract\nwith an OPTIONAL role \u2014 REQUIRED `base` (audio source) +\nOPTIONAL `overlay` (still image, 0..1). When `overlay` is\nomitted, the video uses a solid `background_color`. The\nmachine-readable cardinality lives in `per_role_cardinality`\non this schema (per ADR-0015). API consumption site:\n`OperationInputRoleValidator` (rule table) consumed by\n`SchemaValidationService.php` in `compression_api`.\n\n**Input vs output asymmetry.** The single `mime_groups.audio`\nblock keys the INPUT MIME family (the `base` role input is\naudio). The OUTPUT is always video \u2014 `output_format` controls\nthe container; `mime_groups` is NOT the output type. Mirrors\nthe `audio_overlay.video` group pattern (input-keyed).\n\nRe-encode required (audio \u2192 video composition always re-encodes).\nLower framerate + FFmpeg `-tune stillimage` keeps file size\ntiny when the overlay is a still image (the common case).\n\nPer ticket [`SlluxMBN`](https://trello.com/c/SlluxMBN) +\nADR-0015. `availability: planned` until the cross-repo Lambda\nsupport ships; the API rejects workflow-create with\n`feature_not_available` (422) until then.\n",
|
|
375
|
+
"input_model": "multi",
|
|
376
|
+
"max_inputs": 2,
|
|
377
|
+
"mime_groups": {
|
|
378
|
+
"audio": {
|
|
379
|
+
"mimes": [
|
|
380
|
+
"audio/mpeg",
|
|
381
|
+
"audio/aac",
|
|
382
|
+
"audio/wav",
|
|
383
|
+
"audio/x-wav",
|
|
384
|
+
"audio/flac",
|
|
385
|
+
"audio/ogg",
|
|
386
|
+
"audio/opus",
|
|
387
|
+
"audio/x-m4a"
|
|
388
|
+
],
|
|
389
|
+
"options": {
|
|
390
|
+
"background_color": {
|
|
391
|
+
"default": "#000000",
|
|
392
|
+
"description": "Hex `#RRGGBB` solid background colour. Used only when\n`overlay` is omitted (no image input). When an `overlay`\nimage is provided, the background colour is invisible\nbehind the image (subject to `image_fit`).\n",
|
|
393
|
+
"type": "string"
|
|
394
|
+
},
|
|
395
|
+
"framerate": {
|
|
396
|
+
"default": 2,
|
|
397
|
+
"description": "Output video framerate. Default `2` fps \u2014 combined with\nFFmpeg `-tune stillimage`, keeps the file size tiny for\nthe common case of a single still overlay. Raise for\nanimated overlays (not supported in V1 \u2014 overlay must be\na still image) or platform requirements (e.g. YouTube\nrecommends 24+ fps; some platforms accept lower).\n",
|
|
398
|
+
"max": 60,
|
|
399
|
+
"min": 1,
|
|
400
|
+
"type": "integer"
|
|
401
|
+
},
|
|
402
|
+
"image_fit": {
|
|
403
|
+
"default": "contain",
|
|
404
|
+
"description": "How to fit the overlay image into the output frame.\n`contain` = letterbox (preserve aspect ratio, may show\nbackground); `cover` = crop (fill the frame, may crop\nthe image); `stretch` = distort to fit (preserves no\naspect ratio). Default `contain` preserves the image\naesthetic.\n",
|
|
405
|
+
"type": "enum",
|
|
406
|
+
"values": [
|
|
407
|
+
"contain",
|
|
408
|
+
"cover",
|
|
409
|
+
"stretch"
|
|
410
|
+
]
|
|
411
|
+
},
|
|
412
|
+
"output_format": {
|
|
413
|
+
"default": "mp4",
|
|
414
|
+
"description": "Output container format. V1 supports `mp4` only. Future\nadditions (webm, mov) await Lambda follow-up.\n",
|
|
415
|
+
"type": "enum",
|
|
416
|
+
"values": [
|
|
417
|
+
"mp4"
|
|
418
|
+
]
|
|
419
|
+
},
|
|
420
|
+
"output_resolution": {
|
|
421
|
+
"default": "hd_720p",
|
|
422
|
+
"description": "Output video resolution. `hd_720p` = 1280\u00d7720 (default),\n`fhd_1080p` = 1920\u00d71080, `sd_480p` = 854\u00d7480. Choose\nlower for small file size; higher when the overlay image\nquality warrants it.\n",
|
|
423
|
+
"type": "enum",
|
|
424
|
+
"values": [
|
|
425
|
+
"hd_720p",
|
|
426
|
+
"fhd_1080p",
|
|
427
|
+
"sd_480p"
|
|
428
|
+
]
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
},
|
|
433
|
+
"min_inputs": 1,
|
|
434
|
+
"per_role_cardinality": {
|
|
435
|
+
"base": {
|
|
436
|
+
"max": 1,
|
|
437
|
+
"min": 1
|
|
438
|
+
},
|
|
439
|
+
"overlay": {
|
|
440
|
+
"max": 1,
|
|
441
|
+
"min": 0
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
},
|
|
359
445
|
"audio_watermark": {
|
|
360
446
|
"availability": "planned",
|
|
361
447
|
"default": false,
|
|
@@ -418,8 +504,8 @@
|
|
|
418
504
|
"availability": "planned",
|
|
419
505
|
"constraints": {
|
|
420
506
|
"max_input_duration": "PT12H",
|
|
421
|
-
"max_input_size_bytes":
|
|
422
|
-
"max_output_size_bytes":
|
|
507
|
+
"max_input_size_bytes": 120000000000,
|
|
508
|
+
"max_output_size_bytes": 120000000000
|
|
423
509
|
},
|
|
424
510
|
"required_tier": "enterprise"
|
|
425
511
|
},
|
|
@@ -487,8 +573,8 @@
|
|
|
487
573
|
"availability": "planned",
|
|
488
574
|
"constraints": {
|
|
489
575
|
"max_input_duration": "PT12H",
|
|
490
|
-
"max_input_size_bytes":
|
|
491
|
-
"max_output_size_bytes":
|
|
576
|
+
"max_input_size_bytes": 120000000000,
|
|
577
|
+
"max_output_size_bytes": 120000000000
|
|
492
578
|
},
|
|
493
579
|
"required_tier": "enterprise"
|
|
494
580
|
},
|
|
@@ -933,11 +1019,17 @@
|
|
|
933
1019
|
},
|
|
934
1020
|
"processing_class": {
|
|
935
1021
|
"long_form": {
|
|
936
|
-
"availability": "
|
|
1022
|
+
"availability": "beta",
|
|
937
1023
|
"constraints": {
|
|
938
1024
|
"max_input_duration": "PT12H",
|
|
939
|
-
"max_input_size_bytes":
|
|
940
|
-
"max_output_size_bytes":
|
|
1025
|
+
"max_input_size_bytes": 5000000000,
|
|
1026
|
+
"max_output_size_bytes": 5000000000
|
|
1027
|
+
},
|
|
1028
|
+
"per_tier_constraints": {
|
|
1029
|
+
"enterprise": {
|
|
1030
|
+
"max_input_size_bytes": 120000000000,
|
|
1031
|
+
"max_output_size_bytes": 120000000000
|
|
1032
|
+
}
|
|
941
1033
|
},
|
|
942
1034
|
"required_tier": "pro"
|
|
943
1035
|
},
|
|
@@ -1122,8 +1214,14 @@
|
|
|
1122
1214
|
"availability": "planned",
|
|
1123
1215
|
"constraints": {
|
|
1124
1216
|
"max_input_duration": "PT12H",
|
|
1125
|
-
"max_input_size_bytes":
|
|
1126
|
-
"max_output_size_bytes":
|
|
1217
|
+
"max_input_size_bytes": 5000000000,
|
|
1218
|
+
"max_output_size_bytes": 5000000000
|
|
1219
|
+
},
|
|
1220
|
+
"per_tier_constraints": {
|
|
1221
|
+
"enterprise": {
|
|
1222
|
+
"max_input_size_bytes": 120000000000,
|
|
1223
|
+
"max_output_size_bytes": 120000000000
|
|
1224
|
+
}
|
|
1127
1225
|
},
|
|
1128
1226
|
"required_tier": "pro"
|
|
1129
1227
|
},
|
|
@@ -1190,8 +1288,14 @@
|
|
|
1190
1288
|
"availability": "planned",
|
|
1191
1289
|
"constraints": {
|
|
1192
1290
|
"max_input_duration": "PT12H",
|
|
1193
|
-
"max_input_size_bytes":
|
|
1194
|
-
"max_output_size_bytes":
|
|
1291
|
+
"max_input_size_bytes": 5000000000,
|
|
1292
|
+
"max_output_size_bytes": 5000000000
|
|
1293
|
+
},
|
|
1294
|
+
"per_tier_constraints": {
|
|
1295
|
+
"enterprise": {
|
|
1296
|
+
"max_input_size_bytes": 120000000000,
|
|
1297
|
+
"max_output_size_bytes": 120000000000
|
|
1298
|
+
}
|
|
1195
1299
|
},
|
|
1196
1300
|
"required_tier": "pro"
|
|
1197
1301
|
},
|
|
@@ -1212,7 +1316,7 @@
|
|
|
1212
1316
|
},
|
|
1213
1317
|
"image_watermark": {
|
|
1214
1318
|
"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
|
|
1319
|
+
"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 bases are advertised as `planned` via\nthe parallel `image_gif` mime_group \u2014 schema is contract-defined,\ndispatch returns `feature_not_available` (422) until Lambda\nsupport ships. Per Tension 1 (ADR-0001) + plan v5 \u00a7F4 round 6.\n\n**Video bases are NOT supported by `image_watermark`.** Use the\ndedicated `video_watermark` operation\n(`schemas/operations/video_watermark.yaml`) which routes through\nFFmpeg overlay + re-encode. Per ADR-0013.\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 animated GIF bases will be\ndefined when the corresponding Lambda support ships.\nPer ADR-0004 \u00a7\"V2 JobDefinition\" + plan v5 \u00a7F1.\n",
|
|
1216
1320
|
"features": {
|
|
1217
1321
|
"multi_overlay_stack": {
|
|
1218
1322
|
"availability": "planned",
|
|
@@ -1318,74 +1422,6 @@
|
|
|
1318
1422
|
"type": "string"
|
|
1319
1423
|
}
|
|
1320
1424
|
}
|
|
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
1425
|
}
|
|
1390
1426
|
},
|
|
1391
1427
|
"min_inputs": 2
|
|
@@ -2089,10 +2125,15 @@
|
|
|
2089
2125
|
},
|
|
2090
2126
|
"processing_class": {
|
|
2091
2127
|
"long_form_re_encode": {
|
|
2092
|
-
"availability": "
|
|
2128
|
+
"availability": "beta",
|
|
2093
2129
|
"constraints": {
|
|
2094
|
-
"max_total_duration": "
|
|
2095
|
-
"max_total_input_size_bytes":
|
|
2130
|
+
"max_total_duration": "PT24H",
|
|
2131
|
+
"max_total_input_size_bytes": 5000000000
|
|
2132
|
+
},
|
|
2133
|
+
"per_tier_constraints": {
|
|
2134
|
+
"enterprise": {
|
|
2135
|
+
"max_total_input_size_bytes": 120000000000
|
|
2136
|
+
}
|
|
2096
2137
|
},
|
|
2097
2138
|
"required_tier": "pro"
|
|
2098
2139
|
},
|
|
@@ -2108,6 +2149,229 @@
|
|
|
2108
2149
|
},
|
|
2109
2150
|
"min_inputs": 2
|
|
2110
2151
|
},
|
|
2152
|
+
"split": {
|
|
2153
|
+
"availability": "planned",
|
|
2154
|
+
"default": false,
|
|
2155
|
+
"description": "Fan one input file into N outputs across GIF, PDF, audio, and\nvideo MIME families. Single-input \u2014 one input file per job, fanned\ninto N outputs per the per-mime-group catalog. Mirrors the\n`merge` / `convert` catalog-split-by-mime-group pattern.\n\n**Three modes** (audio + video; the mode discriminator gates which\nof the three options applies per the `depends_on` rules in this\nschema):\n- `interval`: split every N numeric-seconds.\n- `count`: split into N equal-duration pieces (integer 2..=200).\n- `cut_points`: explicit cut points in numeric-seconds (strictly\n increasing, no duplicates, each > 0 and < probed duration).\n\n**GIF + PDF use range-based selection** instead of three modes:\n- GIF (`image_gif`): `frame_range` REQUIRED + `output_format`\n enum {png,webp,jpg}.\n- PDF (`document_pdf`): `page_range` OR `page_groups` (mutually\n exclusive per `depends_on`).\n\n**Wire format**: numeric seconds (floats allowed for sub-second\nprecision). NOT ISO 8601 duration strings. Matches FFmpeg /\nCloudinary / Shotstack / AWS MediaConvert conventions.\n\n**200-output hard cap** per ADR-0009 \u00a7D5\n(`OperationResult.outputs[].maxItems: 200`). Preflight rejects\nrequests exceeding this BEFORE work as `invalid_options` (422).\nCap math by mode:\n- `interval`: `ceil(probed_duration / interval) <= 200`\n- `count`: enforced by the option's `min: 2 max: 200` range\n- `cut_points`: `cut_points.len() + 1 <= 200`\n- PDF: resolved page count after expansion `<= 200`\n (cross-ref [`WgCqnMRa`](https://trello.com/c/WgCqnMRa))\n- GIF: resolved frame count after expansion `<= 200`\n\n**Output naming**: 3-digit zero-padded \u2014 `output-001` ..\n`output-200`. Matches the convert PDF\u2192N precedent.\n\n**Output envelope binding** (per ADR-0014 + ADR-0009 \u00a7D2):\n- `image_gif`: `PositionIndexed` (frame stream-position 0-based\n ordinal)\n- `document_pdf`: `PageIndexed` (1-based gapless page index)\n- `audio`: `PositionIndexed` (cut stream-position ordinal)\n- `video`: `PositionIndexed` (cut stream-position ordinal)\n\n**`precision` flag** (audio + video only): `fast` (default) =\npacket-boundary approximate cuts; `exact` = re-encode-aligned\nprecise cuts. Mime_group scoping is the gate \u2014 precision does\nNOT apply to GIF or PDF (frame extraction is exact and PDF page\nselection is exact by definition).\n\n**Long-form video** routes to a separate `split-video-fargate`\nLambda (same `split` OperationType, different worker; routing\nvia `processing_class`). No schema-side discriminator beyond MIME\ndetection + `processing_class`.\n\n`availability: planned` until the cross-repo Lambda support ships\n([`vKI0CFDu`](https://trello.com/c/vKI0CFDu) + lambdas L1).\nDispatch returns `feature_not_available` (422) until then.\n\nPer ADR-0014.\n",
|
|
2156
|
+
"features": {
|
|
2157
|
+
"silence_mode_audio": {
|
|
2158
|
+
"availability": "planned",
|
|
2159
|
+
"description": "Silence-detect cut mode for audio (`mode: silence` \u2014\nCinavia/Resemble territory, server-side silence detection).\nOUT of V1 (Lambda support not yet shipped); declared as a\nfuture-work feature here so SDK consumers see the gate.\nPicked up as a separate post-launch ticket.\n"
|
|
2160
|
+
}
|
|
2161
|
+
},
|
|
2162
|
+
"input_model": "single",
|
|
2163
|
+
"mime_groups": {
|
|
2164
|
+
"audio": {
|
|
2165
|
+
"mimes": [
|
|
2166
|
+
"audio/mpeg",
|
|
2167
|
+
"audio/aac",
|
|
2168
|
+
"audio/ogg",
|
|
2169
|
+
"audio/flac",
|
|
2170
|
+
"audio/wav",
|
|
2171
|
+
"audio/mp4"
|
|
2172
|
+
],
|
|
2173
|
+
"options": {
|
|
2174
|
+
"count": {
|
|
2175
|
+
"depends_on": {
|
|
2176
|
+
"mode": "count"
|
|
2177
|
+
},
|
|
2178
|
+
"description": "Number of equal-duration output pieces. Range 2..=200\nenforced declaratively (1 = no-op, rejected;\ncap = 200-output ceiling). Only valid when `mode: count`.\n",
|
|
2179
|
+
"max": 200,
|
|
2180
|
+
"min": 2,
|
|
2181
|
+
"required": true,
|
|
2182
|
+
"type": "integer"
|
|
2183
|
+
},
|
|
2184
|
+
"cut_points": {
|
|
2185
|
+
"depends_on": {
|
|
2186
|
+
"mode": "cut_points"
|
|
2187
|
+
},
|
|
2188
|
+
"description": "Cut points in numeric seconds (float, sub-second allowed).\nArray entries; NOT a comma-separated string. MUST be\nstrictly increasing (preflight-validated against probe);\neach entry > 0 and < probed duration. `uniqueItems: true`\ncatches accidental duplicates at the OpenAPI layer; strict\nmonotonicity and the < probed-duration bound are\npreflight-checked at workflow-create. Output count =\n`cut_points.length + 1`; `maxItems: 199` expresses the\n200-output cap declaratively. Only valid when\n`mode: cut_points`.\n",
|
|
2189
|
+
"items": {
|
|
2190
|
+
"exclusiveMinimum": 0,
|
|
2191
|
+
"type": "number"
|
|
2192
|
+
},
|
|
2193
|
+
"maxItems": 199,
|
|
2194
|
+
"minItems": 1,
|
|
2195
|
+
"required": true,
|
|
2196
|
+
"type": "array",
|
|
2197
|
+
"uniqueItems": true
|
|
2198
|
+
},
|
|
2199
|
+
"interval": {
|
|
2200
|
+
"depends_on": {
|
|
2201
|
+
"mode": "interval"
|
|
2202
|
+
},
|
|
2203
|
+
"description": "Cut interval in numeric seconds (float, sub-second\nallowed). `ceil(probed_duration / interval) <= 200`\npreflight rule applies. Only valid when `mode: interval`.\n",
|
|
2204
|
+
"min": 0.001,
|
|
2205
|
+
"required": true,
|
|
2206
|
+
"type": "float"
|
|
2207
|
+
},
|
|
2208
|
+
"mode": {
|
|
2209
|
+
"default": "interval",
|
|
2210
|
+
"description": "Split strategy:\n- `interval`: cut every `interval` seconds.\n- `count`: cut into `count` equal-duration pieces.\n- `cut_points`: cut at explicit timestamps.\n",
|
|
2211
|
+
"type": "enum",
|
|
2212
|
+
"values": [
|
|
2213
|
+
"interval",
|
|
2214
|
+
"count",
|
|
2215
|
+
"cut_points"
|
|
2216
|
+
]
|
|
2217
|
+
},
|
|
2218
|
+
"precision": {
|
|
2219
|
+
"default": "fast",
|
|
2220
|
+
"description": "Cut precision. Under `fast`, audio cuts are\npacket-boundary approximate (drift bounded by codec\npacket size \u2014 typically <= 23ms for AAC, <= 26ms for\nMP3). Under `exact`, the Lambda re-encodes to align cuts\nprecisely at the requested timestamps (slower, larger\noutput, but sample-accurate). Avoid \"keyframe\" language\n\u2014 that's video-only; audio drift is packet-boundary.\n",
|
|
2221
|
+
"type": "enum",
|
|
2222
|
+
"values": [
|
|
2223
|
+
"fast",
|
|
2224
|
+
"exact"
|
|
2225
|
+
]
|
|
2226
|
+
}
|
|
2227
|
+
}
|
|
2228
|
+
},
|
|
2229
|
+
"document_pdf": {
|
|
2230
|
+
"mimes": [
|
|
2231
|
+
"application/pdf"
|
|
2232
|
+
],
|
|
2233
|
+
"options": {
|
|
2234
|
+
"mode": {
|
|
2235
|
+
"default": "page_range",
|
|
2236
|
+
"description": "PDF split strategy:\n- `page_range`: select pages via a range expression.\n- `page_groups`: group N pages per output.\n",
|
|
2237
|
+
"type": "enum",
|
|
2238
|
+
"values": [
|
|
2239
|
+
"page_range",
|
|
2240
|
+
"page_groups"
|
|
2241
|
+
]
|
|
2242
|
+
},
|
|
2243
|
+
"page_groups": {
|
|
2244
|
+
"depends_on": {
|
|
2245
|
+
"mode": "page_groups"
|
|
2246
|
+
},
|
|
2247
|
+
"description": "Group N pages per output (e.g. `page_groups: 5` on a\n50-page PDF produces 10 outputs of 5 pages each).\nRequired when `mode: page_groups`. The page-count cap\napplies to the resolved group count: `ceil(total_pages /\npage_groups) <= 200`.\n",
|
|
2248
|
+
"max": 200,
|
|
2249
|
+
"min": 2,
|
|
2250
|
+
"required": true,
|
|
2251
|
+
"type": "integer"
|
|
2252
|
+
},
|
|
2253
|
+
"page_range": {
|
|
2254
|
+
"depends_on": {
|
|
2255
|
+
"mode": "page_range"
|
|
2256
|
+
},
|
|
2257
|
+
"description": "Page-range expression (e.g. \"1-5\", \"1,3,5-7\", \"10-20\").\n1-based inclusive. Required when `mode: page_range`.\nResolved page count MUST be <= 200 (`invalid_options`\n422 if exceeded \u2014 cross-ref\n[`WgCqnMRa`](https://trello.com/c/WgCqnMRa)).\n",
|
|
2258
|
+
"pattern": "^\\d+(-\\d+)?(,\\d+(-\\d+)?)*$",
|
|
2259
|
+
"required": true,
|
|
2260
|
+
"type": "string"
|
|
2261
|
+
}
|
|
2262
|
+
}
|
|
2263
|
+
},
|
|
2264
|
+
"image_gif": {
|
|
2265
|
+
"mimes": [
|
|
2266
|
+
"image/gif"
|
|
2267
|
+
],
|
|
2268
|
+
"options": {
|
|
2269
|
+
"frame_range": {
|
|
2270
|
+
"description": "Frame range as `start-end` integer pair (e.g. \"1-100\").\nREQUIRED in V1 \u2014 no silent default. Without explicit\nrange, a 30-second GIF at 24 fps = 720 frames would blow\nthe 200-output cap on every input. Both start and end are\n1-based, inclusive. Resolved frame count MUST be <= 200\n(`invalid_options` 422 if exceeded).\n",
|
|
2271
|
+
"pattern": "^\\d+-\\d+$",
|
|
2272
|
+
"required": true,
|
|
2273
|
+
"type": "string"
|
|
2274
|
+
},
|
|
2275
|
+
"output_format": {
|
|
2276
|
+
"default": "png",
|
|
2277
|
+
"description": "Output image format for each extracted frame. Aspect ratio\nand dimensions preserved from the source GIF.\n",
|
|
2278
|
+
"type": "enum",
|
|
2279
|
+
"values": [
|
|
2280
|
+
"png",
|
|
2281
|
+
"webp",
|
|
2282
|
+
"jpg"
|
|
2283
|
+
]
|
|
2284
|
+
}
|
|
2285
|
+
}
|
|
2286
|
+
},
|
|
2287
|
+
"video": {
|
|
2288
|
+
"mimes": [
|
|
2289
|
+
"video/mp4",
|
|
2290
|
+
"video/webm"
|
|
2291
|
+
],
|
|
2292
|
+
"options": {
|
|
2293
|
+
"count": {
|
|
2294
|
+
"depends_on": {
|
|
2295
|
+
"mode": "count"
|
|
2296
|
+
},
|
|
2297
|
+
"description": "Number of equal-duration output pieces. Range 2..=200.\nOnly valid when `mode: count`.\n",
|
|
2298
|
+
"max": 200,
|
|
2299
|
+
"min": 2,
|
|
2300
|
+
"required": true,
|
|
2301
|
+
"type": "integer"
|
|
2302
|
+
},
|
|
2303
|
+
"cut_points": {
|
|
2304
|
+
"depends_on": {
|
|
2305
|
+
"mode": "cut_points"
|
|
2306
|
+
},
|
|
2307
|
+
"description": "Cut points in numeric seconds (float, sub-second allowed).\nArray entries; NOT a comma-separated string. Strictly\nincreasing (preflight-validated against probe); each entry\n> 0 and < probed duration. `uniqueItems: true` catches\naccidental duplicates at the OpenAPI layer; strict\nmonotonicity and the < probed-duration bound are\npreflight-checked at workflow-create. Output count =\n`cut_points.length + 1`; `maxItems: 199` expresses the\n200-output cap declaratively. Only valid when\n`mode: cut_points`.\n",
|
|
2308
|
+
"items": {
|
|
2309
|
+
"exclusiveMinimum": 0,
|
|
2310
|
+
"type": "number"
|
|
2311
|
+
},
|
|
2312
|
+
"maxItems": 199,
|
|
2313
|
+
"minItems": 1,
|
|
2314
|
+
"required": true,
|
|
2315
|
+
"type": "array",
|
|
2316
|
+
"uniqueItems": true
|
|
2317
|
+
},
|
|
2318
|
+
"interval": {
|
|
2319
|
+
"depends_on": {
|
|
2320
|
+
"mode": "interval"
|
|
2321
|
+
},
|
|
2322
|
+
"description": "Cut interval in numeric seconds. `ceil(probed_duration /\ninterval) <= 200`. Only valid when `mode: interval`.\n",
|
|
2323
|
+
"min": 0.001,
|
|
2324
|
+
"required": true,
|
|
2325
|
+
"type": "float"
|
|
2326
|
+
},
|
|
2327
|
+
"mode": {
|
|
2328
|
+
"default": "interval",
|
|
2329
|
+
"description": "Split strategy:\n- `interval`: cut every `interval` seconds.\n- `count`: cut into `count` equal-duration pieces.\n- `cut_points`: cut at explicit timestamps.\n",
|
|
2330
|
+
"type": "enum",
|
|
2331
|
+
"values": [
|
|
2332
|
+
"interval",
|
|
2333
|
+
"count",
|
|
2334
|
+
"cut_points"
|
|
2335
|
+
]
|
|
2336
|
+
},
|
|
2337
|
+
"precision": {
|
|
2338
|
+
"default": "fast",
|
|
2339
|
+
"description": "Cut precision. Under `fast`, video cuts are keyframe-\naligned (drift bounded by GOP size \u2014 typically up to 1-2\nseconds depending on encoder). Under `exact`, the Lambda\nre-encodes to align cuts precisely at the requested\ntimestamps (slower, larger output, but frame-accurate).\n",
|
|
2340
|
+
"type": "enum",
|
|
2341
|
+
"values": [
|
|
2342
|
+
"fast",
|
|
2343
|
+
"exact"
|
|
2344
|
+
]
|
|
2345
|
+
}
|
|
2346
|
+
},
|
|
2347
|
+
"processing_class": {
|
|
2348
|
+
"long_form": {
|
|
2349
|
+
"availability": "planned",
|
|
2350
|
+
"constraints": {
|
|
2351
|
+
"max_input_duration": "PT12H",
|
|
2352
|
+
"max_input_size_bytes": 5000000000,
|
|
2353
|
+
"max_output_size_bytes": 5000000000
|
|
2354
|
+
},
|
|
2355
|
+
"per_tier_constraints": {
|
|
2356
|
+
"enterprise": {
|
|
2357
|
+
"max_input_size_bytes": 120000000000,
|
|
2358
|
+
"max_output_size_bytes": 120000000000
|
|
2359
|
+
}
|
|
2360
|
+
},
|
|
2361
|
+
"required_tier": "pro"
|
|
2362
|
+
},
|
|
2363
|
+
"short_form": {
|
|
2364
|
+
"availability": "planned",
|
|
2365
|
+
"constraints": {
|
|
2366
|
+
"max_input_duration": "PT5M",
|
|
2367
|
+
"max_input_size_bytes": 524288000,
|
|
2368
|
+
"max_output_size_bytes": 524288000
|
|
2369
|
+
}
|
|
2370
|
+
}
|
|
2371
|
+
}
|
|
2372
|
+
}
|
|
2373
|
+
}
|
|
2374
|
+
},
|
|
2111
2375
|
"text_watermark": {
|
|
2112
2376
|
"default": false,
|
|
2113
2377
|
"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",
|
|
@@ -2259,7 +2523,7 @@
|
|
|
2259
2523
|
"depends_on": {
|
|
2260
2524
|
"source": "page"
|
|
2261
2525
|
},
|
|
2262
|
-
"description": "
|
|
2526
|
+
"description": "1-based index of the printed page to render, after print-layout pagination is applied. For office formats this is the page in the LibreOffice PDF export \u2014 NOT a 1:1 sheet/slide index: a spreadsheet sheet may span multiple printed pages and multi-sheet workbooks paginate their sheets in order. For PDF inputs it is the PDF page number directly.",
|
|
2263
2527
|
"min": 1,
|
|
2264
2528
|
"type": "integer"
|
|
2265
2529
|
},
|
|
@@ -2381,7 +2645,12 @@
|
|
|
2381
2645
|
"availability": "planned",
|
|
2382
2646
|
"constraints": {
|
|
2383
2647
|
"max_input_duration": "PT12H",
|
|
2384
|
-
"max_input_size_bytes":
|
|
2648
|
+
"max_input_size_bytes": 5000000000
|
|
2649
|
+
},
|
|
2650
|
+
"per_tier_constraints": {
|
|
2651
|
+
"enterprise": {
|
|
2652
|
+
"max_input_size_bytes": 120000000000
|
|
2653
|
+
}
|
|
2385
2654
|
},
|
|
2386
2655
|
"required_tier": "pro"
|
|
2387
2656
|
},
|
|
@@ -2395,9 +2664,235 @@
|
|
|
2395
2664
|
}
|
|
2396
2665
|
}
|
|
2397
2666
|
}
|
|
2667
|
+
},
|
|
2668
|
+
"video_text_watermark": {
|
|
2669
|
+
"availability": "planned",
|
|
2670
|
+
"default": false,
|
|
2671
|
+
"description": "Render a text overlay onto a base video using bundled Liberation\nSans (SIL OFL) via FFmpeg's `drawtext` filter. Single-input \u2014 the\ntext and its styling come from options, not from a file input.\nPer ADR-0013.\n\n**Dedicated operation, not an extension of `text_watermark`.**\n`text_watermark` renders onto images (single-pass Rust path);\n`video_text_watermark` renders per-frame via FFmpeg drawtext +\nre-encode (overlay = pixel modification, no stream-copy escape).\nDifferent runtime, different deploy unit.\n\n**Audio passthrough.** The base video's audio stream is preserved\nunchanged via FFmpeg stream-copy \u2014 the watermark applies to the\nvisual track only.\n\nTwo rendering modes (mirrors `text_watermark`):\n- `single`: one label rendered at the anchor + margin position.\n- `tiled`: text tiled across the source frames at the rotation\n angle.\n\n`availability: planned` until the cross-repo Lambda support ships;\ndispatch returns `feature_not_available` (422) until then. Per\nADR-0013 + lambdas pre-launch epic Wave A (ticket\n[`4NrRPCgh`](https://trello.com/c/4NrRPCgh)).\n",
|
|
2672
|
+
"input_model": "single",
|
|
2673
|
+
"mime_groups": {
|
|
2674
|
+
"video": {
|
|
2675
|
+
"mimes": [
|
|
2676
|
+
"video/mp4",
|
|
2677
|
+
"video/webm"
|
|
2678
|
+
],
|
|
2679
|
+
"options": {
|
|
2680
|
+
"anchor": {
|
|
2681
|
+
"default": "bottom_right",
|
|
2682
|
+
"description": "9-grid anchor position. For `watermark_mode: single`, the\ntext label is placed at this anchor + margin_x/margin_y\noffset on each frame. For `watermark_mode: tiled`, anchor\nis ignored (tiles fill the frame).\n",
|
|
2683
|
+
"type": "enum",
|
|
2684
|
+
"values": [
|
|
2685
|
+
"top_left",
|
|
2686
|
+
"top_center",
|
|
2687
|
+
"top_right",
|
|
2688
|
+
"center_left",
|
|
2689
|
+
"center",
|
|
2690
|
+
"center_right",
|
|
2691
|
+
"bottom_left",
|
|
2692
|
+
"bottom_center",
|
|
2693
|
+
"bottom_right"
|
|
2694
|
+
]
|
|
2695
|
+
},
|
|
2696
|
+
"color": {
|
|
2697
|
+
"default": "#FFFFFF80",
|
|
2698
|
+
"description": "Text colour as hex RGB (#RRGGBB) or RGBA (#RRGGBBAA).\nDefault is white with 50% alpha. Same vocabulary as\n`text_watermark.image.color`.\n",
|
|
2699
|
+
"pattern": "^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$",
|
|
2700
|
+
"type": "string"
|
|
2701
|
+
},
|
|
2702
|
+
"font_family": {
|
|
2703
|
+
"default": "liberation_sans",
|
|
2704
|
+
"description": "Font family. V2.0 ships with bundled Liberation Sans only;\nuser-uploaded fonts are a future extension (separate\nticket).\n",
|
|
2705
|
+
"type": "enum",
|
|
2706
|
+
"values": [
|
|
2707
|
+
"liberation_sans"
|
|
2708
|
+
]
|
|
2709
|
+
},
|
|
2710
|
+
"font_size": {
|
|
2711
|
+
"default": 48.0,
|
|
2712
|
+
"description": "Font size in pixels. Clamped to range.",
|
|
2713
|
+
"max": 512.0,
|
|
2714
|
+
"min": 8.0,
|
|
2715
|
+
"type": "float"
|
|
2716
|
+
},
|
|
2717
|
+
"margin_x": {
|
|
2718
|
+
"default": "0px",
|
|
2719
|
+
"description": "Horizontal offset from the anchor as pixels (e.g. \"40px\")\nor percentage of video frame width (e.g. \"5%\").\nAnchor-relative. Ignored when `watermark_mode: tiled`.\n\n**`anchor: center` exception** (watermark_mode: single\nonly). Non-zero `margin_x` combined with `anchor: center`\nis rejected by the API at workflow-create time as\n`invalid_options` (HTTP 422).\n",
|
|
2720
|
+
"pattern": "^\\d+(\\.\\d+)?(px|%)$",
|
|
2721
|
+
"type": "string"
|
|
2722
|
+
},
|
|
2723
|
+
"margin_y": {
|
|
2724
|
+
"default": "0px",
|
|
2725
|
+
"description": "Vertical offset from the anchor as pixels or percentage of\nvideo frame height. Ignored when `watermark_mode: tiled`.\n\n**`anchor: center` exception** (watermark_mode: single\nonly). Same rejection rule as `margin_x`.\n",
|
|
2726
|
+
"pattern": "^\\d+(\\.\\d+)?(px|%)$",
|
|
2727
|
+
"type": "string"
|
|
2728
|
+
},
|
|
2729
|
+
"opacity": {
|
|
2730
|
+
"default": 1.0,
|
|
2731
|
+
"description": "Text overlay opacity. Default 1.0 \u2014 the alpha channel of\n`color` already encodes transparency, so opacity is\nusually left at 1.0 and transparency is set via the color\nhex.\n",
|
|
2732
|
+
"max": 1.0,
|
|
2733
|
+
"min": 0.0,
|
|
2734
|
+
"type": "float"
|
|
2735
|
+
},
|
|
2736
|
+
"rotation": {
|
|
2737
|
+
"default": -45.0,
|
|
2738
|
+
"description": "Rotation angle in degrees. Default -45\u00b0 suits tiled mode\n(angled diagonal pattern). Clamped to range.\n",
|
|
2739
|
+
"max": 360.0,
|
|
2740
|
+
"min": -360.0,
|
|
2741
|
+
"type": "float"
|
|
2742
|
+
},
|
|
2743
|
+
"text": {
|
|
2744
|
+
"description": "Watermark text. Must be non-empty. Rendered with bundled\nLiberation Sans (SIL OFL).\n",
|
|
2745
|
+
"required": true,
|
|
2746
|
+
"type": "string"
|
|
2747
|
+
},
|
|
2748
|
+
"tile_spacing": {
|
|
2749
|
+
"depends_on": {
|
|
2750
|
+
"watermark_mode": "tiled"
|
|
2751
|
+
},
|
|
2752
|
+
"description": "Spacing between tiled labels in pixels. Defaults to\nfont_size when omitted. Only applies when watermark_mode\nis tiled.\n",
|
|
2753
|
+
"max": 1000,
|
|
2754
|
+
"min": 0,
|
|
2755
|
+
"type": "integer"
|
|
2756
|
+
},
|
|
2757
|
+
"watermark_mode": {
|
|
2758
|
+
"default": "single",
|
|
2759
|
+
"description": "Rendering mode:\n- `single`: one label placed at the anchor + margin offset\n on each frame.\n- `tiled`: repeated tiles across the entire frame at the\n rotation angle.\n",
|
|
2760
|
+
"type": "enum",
|
|
2761
|
+
"values": [
|
|
2762
|
+
"single",
|
|
2763
|
+
"tiled"
|
|
2764
|
+
]
|
|
2765
|
+
}
|
|
2766
|
+
},
|
|
2767
|
+
"processing_class": {
|
|
2768
|
+
"long_form": {
|
|
2769
|
+
"availability": "planned",
|
|
2770
|
+
"constraints": {
|
|
2771
|
+
"max_input_duration": "PT12H",
|
|
2772
|
+
"max_input_size_bytes": 5000000000,
|
|
2773
|
+
"max_output_size_bytes": 5000000000
|
|
2774
|
+
},
|
|
2775
|
+
"per_tier_constraints": {
|
|
2776
|
+
"enterprise": {
|
|
2777
|
+
"max_input_size_bytes": 120000000000,
|
|
2778
|
+
"max_output_size_bytes": 120000000000
|
|
2779
|
+
}
|
|
2780
|
+
},
|
|
2781
|
+
"required_tier": "pro"
|
|
2782
|
+
},
|
|
2783
|
+
"short_form": {
|
|
2784
|
+
"availability": "planned",
|
|
2785
|
+
"constraints": {
|
|
2786
|
+
"max_input_duration": "PT5M",
|
|
2787
|
+
"max_input_size_bytes": 524288000,
|
|
2788
|
+
"max_output_size_bytes": 524288000
|
|
2789
|
+
}
|
|
2790
|
+
}
|
|
2791
|
+
}
|
|
2792
|
+
}
|
|
2793
|
+
}
|
|
2794
|
+
},
|
|
2795
|
+
"video_watermark": {
|
|
2796
|
+
"availability": "planned",
|
|
2797
|
+
"default": false,
|
|
2798
|
+
"description": "Apply an image overlay (file or external source) onto a base video\nasset using FFmpeg's `overlay` filter. Multi-input role-based:\nexactly one input with `role: base` (the source video) + exactly\none with `role: overlay` (the watermark image). The overlay can be\nan upload, an external_import handle, or a vault connection per\n`WorkflowSource`.\n\n**Dedicated operation, not an extension of `image_watermark`.**\n`image_watermark` is pure-Rust/no-FFmpeg and handles\nimage-on-image overlay only. `video_watermark` requires FFmpeg's\noverlay filter + re-encode + a different deploy unit (no\nstream-copy escape \u2014 overlay = pixel modification). Per ADR-0013.\n\n**Audio passthrough.** The base video's audio stream is preserved\nunchanged via FFmpeg stream-copy \u2014 the watermark applies to the\nvisual track only.\n\n`availability: planned` until the cross-repo Lambda support ships;\ndispatch returns `feature_not_available` (422) until then. Per\nADR-0013 + lambdas pre-launch epic Wave A (ticket\n[`SlluxMBN`'s sibling `4NrRPCgh`](https://trello.com/c/4NrRPCgh)).\n",
|
|
2799
|
+
"features": {
|
|
2800
|
+
"multi_overlay_stack": {
|
|
2801
|
+
"availability": "planned",
|
|
2802
|
+
"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. Mirrors the same-named feature on\n`image_watermark`.\n"
|
|
2803
|
+
}
|
|
2804
|
+
},
|
|
2805
|
+
"input_model": "multi",
|
|
2806
|
+
"max_inputs": 2,
|
|
2807
|
+
"mime_groups": {
|
|
2808
|
+
"video": {
|
|
2809
|
+
"mimes": [
|
|
2810
|
+
"video/mp4",
|
|
2811
|
+
"video/webm"
|
|
2812
|
+
],
|
|
2813
|
+
"options": {
|
|
2814
|
+
"anchor": {
|
|
2815
|
+
"default": "bottom_right",
|
|
2816
|
+
"description": "9-grid anchor position on each video frame. Same vocabulary\nas `image_watermark.image` and `text_watermark.image`.\n",
|
|
2817
|
+
"type": "enum",
|
|
2818
|
+
"values": [
|
|
2819
|
+
"top_left",
|
|
2820
|
+
"top_center",
|
|
2821
|
+
"top_right",
|
|
2822
|
+
"center_left",
|
|
2823
|
+
"center",
|
|
2824
|
+
"center_right",
|
|
2825
|
+
"bottom_left",
|
|
2826
|
+
"bottom_center",
|
|
2827
|
+
"bottom_right"
|
|
2828
|
+
]
|
|
2829
|
+
},
|
|
2830
|
+
"margin_x": {
|
|
2831
|
+
"default": "0px",
|
|
2832
|
+
"description": "Horizontal offset from the anchor as pixels (e.g. \"40px\")\nor percentage of video frame width (e.g. \"5%\"). Direction\nis anchor-relative \u2014 positive moves toward the frame\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` combined with\n`anchor: center` is rejected by the API at workflow-create\ntime as `invalid_options` (HTTP 422). Same rule as the\nother watermark operations.\n",
|
|
2833
|
+
"pattern": "^\\d+(\\.\\d+)?(px|%)$",
|
|
2834
|
+
"type": "string"
|
|
2835
|
+
},
|
|
2836
|
+
"margin_y": {
|
|
2837
|
+
"default": "0px",
|
|
2838
|
+
"description": "Vertical offset from the anchor as pixels or percentage of\nvideo frame height. Anchor-relative; positive moves toward\nthe frame centre.\n\n**`anchor: center` exception.** Same rejection rule as\n`margin_x`.\n",
|
|
2839
|
+
"pattern": "^\\d+(\\.\\d+)?(px|%)$",
|
|
2840
|
+
"type": "string"
|
|
2841
|
+
},
|
|
2842
|
+
"opacity": {
|
|
2843
|
+
"default": 0.5,
|
|
2844
|
+
"description": "Overlay opacity (0 = fully transparent, 1 = fully opaque).\nClamped to range.\n",
|
|
2845
|
+
"max": 1.0,
|
|
2846
|
+
"min": 0.0,
|
|
2847
|
+
"type": "float"
|
|
2848
|
+
},
|
|
2849
|
+
"overlay_width": {
|
|
2850
|
+
"description": "Optional overlay width as pixels or percentage of video\nframe width. Aspect ratio preserved. Omit to use the\noriginal overlay size.\n",
|
|
2851
|
+
"pattern": "^\\d+(\\.\\d+)?(px|%)$",
|
|
2852
|
+
"type": "string"
|
|
2853
|
+
}
|
|
2854
|
+
},
|
|
2855
|
+
"processing_class": {
|
|
2856
|
+
"long_form": {
|
|
2857
|
+
"availability": "planned",
|
|
2858
|
+
"constraints": {
|
|
2859
|
+
"max_input_duration": "PT12H",
|
|
2860
|
+
"max_input_size_bytes": 5000000000,
|
|
2861
|
+
"max_output_size_bytes": 5000000000
|
|
2862
|
+
},
|
|
2863
|
+
"per_tier_constraints": {
|
|
2864
|
+
"enterprise": {
|
|
2865
|
+
"max_input_size_bytes": 120000000000,
|
|
2866
|
+
"max_output_size_bytes": 120000000000
|
|
2867
|
+
}
|
|
2868
|
+
},
|
|
2869
|
+
"required_tier": "pro"
|
|
2870
|
+
},
|
|
2871
|
+
"short_form": {
|
|
2872
|
+
"availability": "planned",
|
|
2873
|
+
"constraints": {
|
|
2874
|
+
"max_input_duration": "PT5M",
|
|
2875
|
+
"max_input_size_bytes": 524288000,
|
|
2876
|
+
"max_output_size_bytes": 524288000
|
|
2877
|
+
}
|
|
2878
|
+
}
|
|
2879
|
+
}
|
|
2880
|
+
}
|
|
2881
|
+
},
|
|
2882
|
+
"min_inputs": 2,
|
|
2883
|
+
"per_role_cardinality": {
|
|
2884
|
+
"base": {
|
|
2885
|
+
"max": 1,
|
|
2886
|
+
"min": 1
|
|
2887
|
+
},
|
|
2888
|
+
"overlay": {
|
|
2889
|
+
"max": 1,
|
|
2890
|
+
"min": 1
|
|
2891
|
+
}
|
|
2892
|
+
}
|
|
2398
2893
|
}
|
|
2399
2894
|
},
|
|
2400
|
-
"schema_version": "2.
|
|
2895
|
+
"schema_version": "2.15.3",
|
|
2401
2896
|
"source_commit": null,
|
|
2402
2897
|
"user_tier": null
|
|
2403
2898
|
}
|