@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
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
schema_version: "2.0.0"
|
|
2
|
+
|
|
3
|
+
operation:
|
|
4
|
+
type: split
|
|
5
|
+
availability: planned
|
|
6
|
+
description: |
|
|
7
|
+
Fan one input file into N outputs across GIF, PDF, audio, and
|
|
8
|
+
video MIME families. Single-input — one input file per job, fanned
|
|
9
|
+
into N outputs per the per-mime-group catalog. Mirrors the
|
|
10
|
+
`merge` / `convert` catalog-split-by-mime-group pattern.
|
|
11
|
+
|
|
12
|
+
**Three modes** (audio + video; the mode discriminator gates which
|
|
13
|
+
of the three options applies per the `depends_on` rules in this
|
|
14
|
+
schema):
|
|
15
|
+
- `interval`: split every N numeric-seconds.
|
|
16
|
+
- `count`: split into N equal-duration pieces (integer 2..=200).
|
|
17
|
+
- `cut_points`: explicit cut points in numeric-seconds (strictly
|
|
18
|
+
increasing, no duplicates, each > 0 and < probed duration).
|
|
19
|
+
|
|
20
|
+
**GIF + PDF use range-based selection** instead of three modes:
|
|
21
|
+
- GIF (`image_gif`): `frame_range` REQUIRED + `output_format`
|
|
22
|
+
enum {png,webp,jpg}.
|
|
23
|
+
- PDF (`document_pdf`): `page_range` OR `page_groups` (mutually
|
|
24
|
+
exclusive per `depends_on`).
|
|
25
|
+
|
|
26
|
+
**Wire format**: numeric seconds (floats allowed for sub-second
|
|
27
|
+
precision). NOT ISO 8601 duration strings. Matches FFmpeg /
|
|
28
|
+
Cloudinary / Shotstack / AWS MediaConvert conventions.
|
|
29
|
+
|
|
30
|
+
**200-output hard cap** per ADR-0009 §D5
|
|
31
|
+
(`OperationResult.outputs[].maxItems: 200`). Preflight rejects
|
|
32
|
+
requests exceeding this BEFORE work as `invalid_options` (422).
|
|
33
|
+
Cap math by mode:
|
|
34
|
+
- `interval`: `ceil(probed_duration / interval) <= 200`
|
|
35
|
+
- `count`: enforced by the option's `min: 2 max: 200` range
|
|
36
|
+
- `cut_points`: `cut_points.len() + 1 <= 200`
|
|
37
|
+
- PDF: resolved page count after expansion `<= 200`
|
|
38
|
+
(cross-ref [`WgCqnMRa`](https://trello.com/c/WgCqnMRa))
|
|
39
|
+
- GIF: resolved frame count after expansion `<= 200`
|
|
40
|
+
|
|
41
|
+
**Output naming**: 3-digit zero-padded — `output-001` ..
|
|
42
|
+
`output-200`. Matches the convert PDF→N precedent.
|
|
43
|
+
|
|
44
|
+
**Output envelope binding** (per ADR-0014 + ADR-0009 §D2):
|
|
45
|
+
- `image_gif`: `PositionIndexed` (frame stream-position 0-based
|
|
46
|
+
ordinal)
|
|
47
|
+
- `document_pdf`: `PageIndexed` (1-based gapless page index)
|
|
48
|
+
- `audio`: `PositionIndexed` (cut stream-position ordinal)
|
|
49
|
+
- `video`: `PositionIndexed` (cut stream-position ordinal)
|
|
50
|
+
|
|
51
|
+
**`precision` flag** (audio + video only): `fast` (default) =
|
|
52
|
+
packet-boundary approximate cuts; `exact` = re-encode-aligned
|
|
53
|
+
precise cuts. Mime_group scoping is the gate — precision does
|
|
54
|
+
NOT apply to GIF or PDF (frame extraction is exact and PDF page
|
|
55
|
+
selection is exact by definition).
|
|
56
|
+
|
|
57
|
+
**Long-form video** routes to a separate `split-video-fargate`
|
|
58
|
+
Lambda (same `split` OperationType, different worker; routing
|
|
59
|
+
via `processing_class`). No schema-side discriminator beyond MIME
|
|
60
|
+
detection + `processing_class`.
|
|
61
|
+
|
|
62
|
+
`availability: planned` until the cross-repo Lambda support ships
|
|
63
|
+
([`vKI0CFDu`](https://trello.com/c/vKI0CFDu) + lambdas L1).
|
|
64
|
+
Dispatch returns `feature_not_available` (422) until then.
|
|
65
|
+
|
|
66
|
+
Per ADR-0014.
|
|
67
|
+
default: false
|
|
68
|
+
input_model: single
|
|
69
|
+
|
|
70
|
+
features:
|
|
71
|
+
silence_mode_audio:
|
|
72
|
+
availability: planned
|
|
73
|
+
description: |
|
|
74
|
+
Silence-detect cut mode for audio (`mode: silence` —
|
|
75
|
+
Cinavia/Resemble territory, server-side silence detection).
|
|
76
|
+
OUT of V1 (Lambda support not yet shipped); declared as a
|
|
77
|
+
future-work feature here so SDK consumers see the gate.
|
|
78
|
+
Picked up as a separate post-launch ticket.
|
|
79
|
+
|
|
80
|
+
mime_groups:
|
|
81
|
+
# Animated GIF base — parallel mime_group naming follows the
|
|
82
|
+
# `image_gif` precedent established by `image_watermark.image_gif`.
|
|
83
|
+
image_gif:
|
|
84
|
+
mimes:
|
|
85
|
+
- image/gif
|
|
86
|
+
options:
|
|
87
|
+
frame_range:
|
|
88
|
+
type: string
|
|
89
|
+
required: true
|
|
90
|
+
pattern: '^\d+-\d+$'
|
|
91
|
+
description: |
|
|
92
|
+
Frame range as `start-end` integer pair (e.g. "1-100").
|
|
93
|
+
REQUIRED in V1 — no silent default. Without explicit
|
|
94
|
+
range, a 30-second GIF at 24 fps = 720 frames would blow
|
|
95
|
+
the 200-output cap on every input. Both start and end are
|
|
96
|
+
1-based, inclusive. Resolved frame count MUST be <= 200
|
|
97
|
+
(`invalid_options` 422 if exceeded).
|
|
98
|
+
|
|
99
|
+
output_format:
|
|
100
|
+
type: enum
|
|
101
|
+
values: [png, webp, jpg]
|
|
102
|
+
default: png
|
|
103
|
+
description: |
|
|
104
|
+
Output image format for each extracted frame. Aspect ratio
|
|
105
|
+
and dimensions preserved from the source GIF.
|
|
106
|
+
|
|
107
|
+
# PDF base — page-split via qpdf or pdftk equivalent.
|
|
108
|
+
document_pdf:
|
|
109
|
+
mimes:
|
|
110
|
+
- application/pdf
|
|
111
|
+
options:
|
|
112
|
+
mode:
|
|
113
|
+
type: enum
|
|
114
|
+
values: [page_range, page_groups]
|
|
115
|
+
default: page_range
|
|
116
|
+
description: |
|
|
117
|
+
PDF split strategy:
|
|
118
|
+
- `page_range`: select pages via a range expression.
|
|
119
|
+
- `page_groups`: group N pages per output.
|
|
120
|
+
|
|
121
|
+
page_range:
|
|
122
|
+
type: string
|
|
123
|
+
pattern: '^\d+(-\d+)?(,\d+(-\d+)?)*$'
|
|
124
|
+
required: true
|
|
125
|
+
depends_on: { mode: page_range }
|
|
126
|
+
description: |
|
|
127
|
+
Page-range expression (e.g. "1-5", "1,3,5-7", "10-20").
|
|
128
|
+
1-based inclusive. Required when `mode: page_range`.
|
|
129
|
+
Resolved page count MUST be <= 200 (`invalid_options`
|
|
130
|
+
422 if exceeded — cross-ref
|
|
131
|
+
[`WgCqnMRa`](https://trello.com/c/WgCqnMRa)).
|
|
132
|
+
|
|
133
|
+
page_groups:
|
|
134
|
+
type: integer
|
|
135
|
+
min: 2
|
|
136
|
+
max: 200
|
|
137
|
+
required: true
|
|
138
|
+
depends_on: { mode: page_groups }
|
|
139
|
+
description: |
|
|
140
|
+
Group N pages per output (e.g. `page_groups: 5` on a
|
|
141
|
+
50-page PDF produces 10 outputs of 5 pages each).
|
|
142
|
+
Required when `mode: page_groups`. The page-count cap
|
|
143
|
+
applies to the resolved group count: `ceil(total_pages /
|
|
144
|
+
page_groups) <= 200`.
|
|
145
|
+
|
|
146
|
+
# Audio base — three modes + precision flag.
|
|
147
|
+
audio:
|
|
148
|
+
mimes:
|
|
149
|
+
- audio/mpeg
|
|
150
|
+
- audio/aac
|
|
151
|
+
- audio/ogg
|
|
152
|
+
- audio/flac
|
|
153
|
+
- audio/wav
|
|
154
|
+
- audio/mp4
|
|
155
|
+
options:
|
|
156
|
+
mode:
|
|
157
|
+
type: enum
|
|
158
|
+
values: [interval, count, cut_points]
|
|
159
|
+
default: interval
|
|
160
|
+
description: |
|
|
161
|
+
Split strategy:
|
|
162
|
+
- `interval`: cut every `interval` seconds.
|
|
163
|
+
- `count`: cut into `count` equal-duration pieces.
|
|
164
|
+
- `cut_points`: cut at explicit timestamps.
|
|
165
|
+
|
|
166
|
+
interval:
|
|
167
|
+
type: float
|
|
168
|
+
min: 0.001
|
|
169
|
+
required: true
|
|
170
|
+
depends_on: { mode: interval }
|
|
171
|
+
description: |
|
|
172
|
+
Cut interval in numeric seconds (float, sub-second
|
|
173
|
+
allowed). `ceil(probed_duration / interval) <= 200`
|
|
174
|
+
preflight rule applies. Only valid when `mode: interval`.
|
|
175
|
+
|
|
176
|
+
count:
|
|
177
|
+
type: integer
|
|
178
|
+
min: 2
|
|
179
|
+
max: 200
|
|
180
|
+
required: true
|
|
181
|
+
depends_on: { mode: count }
|
|
182
|
+
description: |
|
|
183
|
+
Number of equal-duration output pieces. Range 2..=200
|
|
184
|
+
enforced declaratively (1 = no-op, rejected;
|
|
185
|
+
cap = 200-output ceiling). Only valid when `mode: count`.
|
|
186
|
+
|
|
187
|
+
cut_points:
|
|
188
|
+
type: array
|
|
189
|
+
items:
|
|
190
|
+
type: number
|
|
191
|
+
exclusiveMinimum: 0
|
|
192
|
+
minItems: 1
|
|
193
|
+
maxItems: 199
|
|
194
|
+
uniqueItems: true
|
|
195
|
+
required: true
|
|
196
|
+
depends_on: { mode: cut_points }
|
|
197
|
+
description: |
|
|
198
|
+
Cut points in numeric seconds (float, sub-second allowed).
|
|
199
|
+
Array entries; NOT a comma-separated string. MUST be
|
|
200
|
+
strictly increasing (preflight-validated against probe);
|
|
201
|
+
each entry > 0 and < probed duration. `uniqueItems: true`
|
|
202
|
+
catches accidental duplicates at the OpenAPI layer; strict
|
|
203
|
+
monotonicity and the < probed-duration bound are
|
|
204
|
+
preflight-checked at workflow-create. Output count =
|
|
205
|
+
`cut_points.length + 1`; `maxItems: 199` expresses the
|
|
206
|
+
200-output cap declaratively. Only valid when
|
|
207
|
+
`mode: cut_points`.
|
|
208
|
+
|
|
209
|
+
precision:
|
|
210
|
+
type: enum
|
|
211
|
+
values: [fast, exact]
|
|
212
|
+
default: fast
|
|
213
|
+
description: |
|
|
214
|
+
Cut precision. Under `fast`, audio cuts are
|
|
215
|
+
packet-boundary approximate (drift bounded by codec
|
|
216
|
+
packet size — typically <= 23ms for AAC, <= 26ms for
|
|
217
|
+
MP3). Under `exact`, the Lambda re-encodes to align cuts
|
|
218
|
+
precisely at the requested timestamps (slower, larger
|
|
219
|
+
output, but sample-accurate). Avoid "keyframe" language
|
|
220
|
+
— that's video-only; audio drift is packet-boundary.
|
|
221
|
+
|
|
222
|
+
# Video base — same three modes + precision + processing_class.
|
|
223
|
+
# Long-form routes to `split-video-fargate` (same OperationType,
|
|
224
|
+
# different worker per `processing_class`).
|
|
225
|
+
video:
|
|
226
|
+
mimes:
|
|
227
|
+
- video/mp4
|
|
228
|
+
- video/webm
|
|
229
|
+
processing_class:
|
|
230
|
+
short_form:
|
|
231
|
+
availability: planned
|
|
232
|
+
constraints:
|
|
233
|
+
max_input_duration: "PT5M"
|
|
234
|
+
max_input_size_bytes: 524288000
|
|
235
|
+
max_output_size_bytes: 524288000
|
|
236
|
+
long_form:
|
|
237
|
+
# Routes to split-video-fargate worker per ADR-0014.
|
|
238
|
+
availability: planned
|
|
239
|
+
required_tier: pro
|
|
240
|
+
constraints: # baseline = Pro
|
|
241
|
+
max_input_duration: "PT12H"
|
|
242
|
+
max_input_size_bytes: 5000000000 # 5 GB (Pro)
|
|
243
|
+
max_output_size_bytes: 5000000000
|
|
244
|
+
per_tier_constraints:
|
|
245
|
+
enterprise:
|
|
246
|
+
max_input_size_bytes: 120000000000 # 120 GB
|
|
247
|
+
max_output_size_bytes: 120000000000
|
|
248
|
+
options:
|
|
249
|
+
mode:
|
|
250
|
+
type: enum
|
|
251
|
+
values: [interval, count, cut_points]
|
|
252
|
+
default: interval
|
|
253
|
+
description: |
|
|
254
|
+
Split strategy:
|
|
255
|
+
- `interval`: cut every `interval` seconds.
|
|
256
|
+
- `count`: cut into `count` equal-duration pieces.
|
|
257
|
+
- `cut_points`: cut at explicit timestamps.
|
|
258
|
+
|
|
259
|
+
interval:
|
|
260
|
+
type: float
|
|
261
|
+
min: 0.001
|
|
262
|
+
required: true
|
|
263
|
+
depends_on: { mode: interval }
|
|
264
|
+
description: |
|
|
265
|
+
Cut interval in numeric seconds. `ceil(probed_duration /
|
|
266
|
+
interval) <= 200`. Only valid when `mode: interval`.
|
|
267
|
+
|
|
268
|
+
count:
|
|
269
|
+
type: integer
|
|
270
|
+
min: 2
|
|
271
|
+
max: 200
|
|
272
|
+
required: true
|
|
273
|
+
depends_on: { mode: count }
|
|
274
|
+
description: |
|
|
275
|
+
Number of equal-duration output pieces. Range 2..=200.
|
|
276
|
+
Only valid when `mode: count`.
|
|
277
|
+
|
|
278
|
+
cut_points:
|
|
279
|
+
type: array
|
|
280
|
+
items:
|
|
281
|
+
type: number
|
|
282
|
+
exclusiveMinimum: 0
|
|
283
|
+
minItems: 1
|
|
284
|
+
maxItems: 199
|
|
285
|
+
uniqueItems: true
|
|
286
|
+
required: true
|
|
287
|
+
depends_on: { mode: cut_points }
|
|
288
|
+
description: |
|
|
289
|
+
Cut points in numeric seconds (float, sub-second allowed).
|
|
290
|
+
Array entries; NOT a comma-separated string. Strictly
|
|
291
|
+
increasing (preflight-validated against probe); each entry
|
|
292
|
+
> 0 and < probed duration. `uniqueItems: true` catches
|
|
293
|
+
accidental duplicates at the OpenAPI layer; strict
|
|
294
|
+
monotonicity and the < probed-duration bound are
|
|
295
|
+
preflight-checked at workflow-create. Output count =
|
|
296
|
+
`cut_points.length + 1`; `maxItems: 199` expresses the
|
|
297
|
+
200-output cap declaratively. Only valid when
|
|
298
|
+
`mode: cut_points`.
|
|
299
|
+
|
|
300
|
+
precision:
|
|
301
|
+
type: enum
|
|
302
|
+
values: [fast, exact]
|
|
303
|
+
default: fast
|
|
304
|
+
description: |
|
|
305
|
+
Cut precision. Under `fast`, video cuts are keyframe-
|
|
306
|
+
aligned (drift bounded by GOP size — typically up to 1-2
|
|
307
|
+
seconds depending on encoder). Under `exact`, the Lambda
|
|
308
|
+
re-encodes to align cuts precisely at the requested
|
|
309
|
+
timestamps (slower, larger output, but frame-accurate).
|
|
@@ -56,11 +56,18 @@ operation:
|
|
|
56
56
|
max_input_duration: "PT5M"
|
|
57
57
|
max_input_size_bytes: 524288000
|
|
58
58
|
long_form:
|
|
59
|
+
# Stays planned (CON-1 flips only compress.video.long_form +
|
|
60
|
+
# merge.video.long_form_re_encode). Per-tier caps per ADR-0011 —
|
|
61
|
+
# advertised shape; availability gates execution off (422).
|
|
62
|
+
# No max_output_size_bytes: thumbnail output is a single bounded image.
|
|
59
63
|
availability: planned
|
|
60
64
|
required_tier: pro
|
|
61
|
-
constraints:
|
|
65
|
+
constraints: # baseline = Pro
|
|
62
66
|
max_input_duration: "PT12H"
|
|
63
|
-
max_input_size_bytes:
|
|
67
|
+
max_input_size_bytes: 5000000000 # 5 GB (Pro)
|
|
68
|
+
per_tier_constraints:
|
|
69
|
+
enterprise:
|
|
70
|
+
max_input_size_bytes: 120000000000 # 120 GB (Enterprise enforced ceiling)
|
|
64
71
|
options:
|
|
65
72
|
timestamp:
|
|
66
73
|
type: string
|
|
@@ -110,7 +117,13 @@ operation:
|
|
|
110
117
|
min: 1
|
|
111
118
|
default: 1
|
|
112
119
|
depends_on: { source: page }
|
|
113
|
-
description:
|
|
120
|
+
description: >-
|
|
121
|
+
1-based index of the printed page to render, after print-layout
|
|
122
|
+
pagination is applied. For office formats this is the page in the
|
|
123
|
+
LibreOffice PDF export — NOT a 1:1 sheet/slide index: a spreadsheet
|
|
124
|
+
sheet may span multiple printed pages and multi-sheet workbooks
|
|
125
|
+
paginate their sheets in order. For PDF inputs it is the PDF page
|
|
126
|
+
number directly.
|
|
114
127
|
width:
|
|
115
128
|
type: integer
|
|
116
129
|
min: 1
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
schema_version: "2.0.0"
|
|
2
|
+
|
|
3
|
+
operation:
|
|
4
|
+
type: video_text_watermark
|
|
5
|
+
availability: planned
|
|
6
|
+
description: |
|
|
7
|
+
Render a text overlay onto a base video using bundled Liberation
|
|
8
|
+
Sans (SIL OFL) via FFmpeg's `drawtext` filter. Single-input — the
|
|
9
|
+
text and its styling come from options, not from a file input.
|
|
10
|
+
Per ADR-0013.
|
|
11
|
+
|
|
12
|
+
**Dedicated operation, not an extension of `text_watermark`.**
|
|
13
|
+
`text_watermark` renders onto images (single-pass Rust path);
|
|
14
|
+
`video_text_watermark` renders per-frame via FFmpeg drawtext +
|
|
15
|
+
re-encode (overlay = pixel modification, no stream-copy escape).
|
|
16
|
+
Different runtime, different deploy unit.
|
|
17
|
+
|
|
18
|
+
**Audio passthrough.** The base video's audio stream is preserved
|
|
19
|
+
unchanged via FFmpeg stream-copy — the watermark applies to the
|
|
20
|
+
visual track only.
|
|
21
|
+
|
|
22
|
+
Two rendering modes (mirrors `text_watermark`):
|
|
23
|
+
- `single`: one label rendered at the anchor + margin position.
|
|
24
|
+
- `tiled`: text tiled across the source frames at the rotation
|
|
25
|
+
angle.
|
|
26
|
+
|
|
27
|
+
`availability: planned` until the cross-repo Lambda support ships;
|
|
28
|
+
dispatch returns `feature_not_available` (422) until then. Per
|
|
29
|
+
ADR-0013 + lambdas pre-launch epic Wave A (ticket
|
|
30
|
+
[`4NrRPCgh`](https://trello.com/c/4NrRPCgh)).
|
|
31
|
+
default: false
|
|
32
|
+
input_model: single
|
|
33
|
+
|
|
34
|
+
mime_groups:
|
|
35
|
+
video:
|
|
36
|
+
mimes:
|
|
37
|
+
- video/mp4
|
|
38
|
+
- video/webm
|
|
39
|
+
processing_class:
|
|
40
|
+
short_form:
|
|
41
|
+
availability: planned
|
|
42
|
+
constraints:
|
|
43
|
+
max_input_duration: "PT5M"
|
|
44
|
+
max_input_size_bytes: 524288000
|
|
45
|
+
max_output_size_bytes: 524288000
|
|
46
|
+
long_form:
|
|
47
|
+
availability: planned
|
|
48
|
+
required_tier: pro
|
|
49
|
+
constraints: # baseline = Pro
|
|
50
|
+
max_input_duration: "PT12H"
|
|
51
|
+
max_input_size_bytes: 5000000000 # 5 GB (Pro)
|
|
52
|
+
max_output_size_bytes: 5000000000
|
|
53
|
+
per_tier_constraints:
|
|
54
|
+
enterprise:
|
|
55
|
+
max_input_size_bytes: 120000000000 # 120 GB (Enterprise enforced ceiling)
|
|
56
|
+
max_output_size_bytes: 120000000000
|
|
57
|
+
options:
|
|
58
|
+
text:
|
|
59
|
+
type: string
|
|
60
|
+
required: true
|
|
61
|
+
description: |
|
|
62
|
+
Watermark text. Must be non-empty. Rendered with bundled
|
|
63
|
+
Liberation Sans (SIL OFL).
|
|
64
|
+
|
|
65
|
+
font_size:
|
|
66
|
+
type: float
|
|
67
|
+
min: 8.0
|
|
68
|
+
max: 512.0
|
|
69
|
+
default: 48.0
|
|
70
|
+
description: Font size in pixels. Clamped to range.
|
|
71
|
+
|
|
72
|
+
color:
|
|
73
|
+
type: string
|
|
74
|
+
default: "#FFFFFF80"
|
|
75
|
+
pattern: '^#[0-9A-Fa-f]{6}([0-9A-Fa-f]{2})?$'
|
|
76
|
+
description: |
|
|
77
|
+
Text colour as hex RGB (#RRGGBB) or RGBA (#RRGGBBAA).
|
|
78
|
+
Default is white with 50% alpha. Same vocabulary as
|
|
79
|
+
`text_watermark.image.color`.
|
|
80
|
+
|
|
81
|
+
font_family:
|
|
82
|
+
type: enum
|
|
83
|
+
values:
|
|
84
|
+
- liberation_sans
|
|
85
|
+
default: liberation_sans
|
|
86
|
+
description: |
|
|
87
|
+
Font family. V2.0 ships with bundled Liberation Sans only;
|
|
88
|
+
user-uploaded fonts are a future extension (separate
|
|
89
|
+
ticket).
|
|
90
|
+
|
|
91
|
+
rotation:
|
|
92
|
+
type: float
|
|
93
|
+
min: -360.0
|
|
94
|
+
max: 360.0
|
|
95
|
+
default: -45.0
|
|
96
|
+
description: |
|
|
97
|
+
Rotation angle in degrees. Default -45° suits tiled mode
|
|
98
|
+
(angled diagonal pattern). Clamped to range.
|
|
99
|
+
|
|
100
|
+
watermark_mode:
|
|
101
|
+
type: enum
|
|
102
|
+
values: [single, tiled]
|
|
103
|
+
default: single
|
|
104
|
+
description: |
|
|
105
|
+
Rendering mode:
|
|
106
|
+
- `single`: one label placed at the anchor + margin offset
|
|
107
|
+
on each frame.
|
|
108
|
+
- `tiled`: repeated tiles across the entire frame at the
|
|
109
|
+
rotation angle.
|
|
110
|
+
|
|
111
|
+
tile_spacing:
|
|
112
|
+
type: integer
|
|
113
|
+
min: 0
|
|
114
|
+
max: 1000
|
|
115
|
+
depends_on: { watermark_mode: tiled }
|
|
116
|
+
description: |
|
|
117
|
+
Spacing between tiled labels in pixels. Defaults to
|
|
118
|
+
font_size when omitted. Only applies when watermark_mode
|
|
119
|
+
is tiled.
|
|
120
|
+
|
|
121
|
+
anchor:
|
|
122
|
+
type: enum
|
|
123
|
+
values:
|
|
124
|
+
- top_left
|
|
125
|
+
- top_center
|
|
126
|
+
- top_right
|
|
127
|
+
- center_left
|
|
128
|
+
- center
|
|
129
|
+
- center_right
|
|
130
|
+
- bottom_left
|
|
131
|
+
- bottom_center
|
|
132
|
+
- bottom_right
|
|
133
|
+
default: bottom_right
|
|
134
|
+
description: |
|
|
135
|
+
9-grid anchor position. For `watermark_mode: single`, the
|
|
136
|
+
text label is placed at this anchor + margin_x/margin_y
|
|
137
|
+
offset on each frame. For `watermark_mode: tiled`, anchor
|
|
138
|
+
is ignored (tiles fill the frame).
|
|
139
|
+
|
|
140
|
+
margin_x:
|
|
141
|
+
type: string
|
|
142
|
+
pattern: '^\d+(\.\d+)?(px|%)$'
|
|
143
|
+
default: "0px"
|
|
144
|
+
description: |
|
|
145
|
+
Horizontal offset from the anchor as pixels (e.g. "40px")
|
|
146
|
+
or percentage of video frame width (e.g. "5%").
|
|
147
|
+
Anchor-relative. Ignored when `watermark_mode: tiled`.
|
|
148
|
+
|
|
149
|
+
**`anchor: center` exception** (watermark_mode: single
|
|
150
|
+
only). Non-zero `margin_x` combined with `anchor: center`
|
|
151
|
+
is rejected by the API at workflow-create time as
|
|
152
|
+
`invalid_options` (HTTP 422).
|
|
153
|
+
|
|
154
|
+
margin_y:
|
|
155
|
+
type: string
|
|
156
|
+
pattern: '^\d+(\.\d+)?(px|%)$'
|
|
157
|
+
default: "0px"
|
|
158
|
+
description: |
|
|
159
|
+
Vertical offset from the anchor as pixels or percentage of
|
|
160
|
+
video frame height. Ignored when `watermark_mode: tiled`.
|
|
161
|
+
|
|
162
|
+
**`anchor: center` exception** (watermark_mode: single
|
|
163
|
+
only). Same rejection rule as `margin_x`.
|
|
164
|
+
|
|
165
|
+
opacity:
|
|
166
|
+
type: float
|
|
167
|
+
min: 0.0
|
|
168
|
+
max: 1.0
|
|
169
|
+
default: 1.0
|
|
170
|
+
description: |
|
|
171
|
+
Text overlay opacity. Default 1.0 — the alpha channel of
|
|
172
|
+
`color` already encodes transparency, so opacity is
|
|
173
|
+
usually left at 1.0 and transparency is set via the color
|
|
174
|
+
hex.
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
schema_version: "2.0.0"
|
|
2
|
+
|
|
3
|
+
operation:
|
|
4
|
+
type: video_watermark
|
|
5
|
+
availability: planned
|
|
6
|
+
description: |
|
|
7
|
+
Apply an image overlay (file or external source) onto a base video
|
|
8
|
+
asset using FFmpeg's `overlay` filter. Multi-input role-based:
|
|
9
|
+
exactly one input with `role: base` (the source video) + exactly
|
|
10
|
+
one with `role: overlay` (the watermark image). The overlay can be
|
|
11
|
+
an upload, an external_import handle, or a vault connection per
|
|
12
|
+
`WorkflowSource`.
|
|
13
|
+
|
|
14
|
+
**Dedicated operation, not an extension of `image_watermark`.**
|
|
15
|
+
`image_watermark` is pure-Rust/no-FFmpeg and handles
|
|
16
|
+
image-on-image overlay only. `video_watermark` requires FFmpeg's
|
|
17
|
+
overlay filter + re-encode + a different deploy unit (no
|
|
18
|
+
stream-copy escape — overlay = pixel modification). Per ADR-0013.
|
|
19
|
+
|
|
20
|
+
**Audio passthrough.** The base video's audio stream is preserved
|
|
21
|
+
unchanged via FFmpeg stream-copy — the watermark applies to the
|
|
22
|
+
visual track only.
|
|
23
|
+
|
|
24
|
+
`availability: planned` until the cross-repo Lambda support ships;
|
|
25
|
+
dispatch returns `feature_not_available` (422) until then. Per
|
|
26
|
+
ADR-0013 + lambdas pre-launch epic Wave A (ticket
|
|
27
|
+
[`SlluxMBN`'s sibling `4NrRPCgh`](https://trello.com/c/4NrRPCgh)).
|
|
28
|
+
default: false
|
|
29
|
+
input_model: multi
|
|
30
|
+
min_inputs: 2
|
|
31
|
+
max_inputs: 2
|
|
32
|
+
|
|
33
|
+
per_role_cardinality:
|
|
34
|
+
base:
|
|
35
|
+
min: 1
|
|
36
|
+
max: 1
|
|
37
|
+
overlay:
|
|
38
|
+
min: 1
|
|
39
|
+
max: 1
|
|
40
|
+
|
|
41
|
+
features:
|
|
42
|
+
multi_overlay_stack:
|
|
43
|
+
availability: planned
|
|
44
|
+
description: |
|
|
45
|
+
Allow up to 8 overlay inputs per job (currently capped at 1
|
|
46
|
+
overlay). Per-overlay placement via JobInputV2.per_input_options.
|
|
47
|
+
Lambda-side support not yet confirmed; tagged planned per
|
|
48
|
+
ADR-0001 §1.4. Mirrors the same-named feature on
|
|
49
|
+
`image_watermark`.
|
|
50
|
+
|
|
51
|
+
mime_groups:
|
|
52
|
+
video:
|
|
53
|
+
mimes:
|
|
54
|
+
- video/mp4
|
|
55
|
+
- video/webm
|
|
56
|
+
processing_class:
|
|
57
|
+
short_form:
|
|
58
|
+
availability: planned
|
|
59
|
+
constraints:
|
|
60
|
+
max_input_duration: "PT5M"
|
|
61
|
+
max_input_size_bytes: 524288000
|
|
62
|
+
max_output_size_bytes: 524288000
|
|
63
|
+
long_form:
|
|
64
|
+
availability: planned
|
|
65
|
+
required_tier: pro
|
|
66
|
+
constraints: # baseline = Pro
|
|
67
|
+
max_input_duration: "PT12H"
|
|
68
|
+
max_input_size_bytes: 5000000000 # 5 GB (Pro)
|
|
69
|
+
max_output_size_bytes: 5000000000
|
|
70
|
+
per_tier_constraints:
|
|
71
|
+
enterprise:
|
|
72
|
+
max_input_size_bytes: 120000000000 # 120 GB (Enterprise enforced ceiling)
|
|
73
|
+
max_output_size_bytes: 120000000000
|
|
74
|
+
options:
|
|
75
|
+
anchor:
|
|
76
|
+
type: enum
|
|
77
|
+
values:
|
|
78
|
+
- top_left
|
|
79
|
+
- top_center
|
|
80
|
+
- top_right
|
|
81
|
+
- center_left
|
|
82
|
+
- center
|
|
83
|
+
- center_right
|
|
84
|
+
- bottom_left
|
|
85
|
+
- bottom_center
|
|
86
|
+
- bottom_right
|
|
87
|
+
default: bottom_right
|
|
88
|
+
description: |
|
|
89
|
+
9-grid anchor position on each video frame. Same vocabulary
|
|
90
|
+
as `image_watermark.image` and `text_watermark.image`.
|
|
91
|
+
|
|
92
|
+
margin_x:
|
|
93
|
+
type: string
|
|
94
|
+
pattern: '^\d+(\.\d+)?(px|%)$'
|
|
95
|
+
default: "0px"
|
|
96
|
+
description: |
|
|
97
|
+
Horizontal offset from the anchor as pixels (e.g. "40px")
|
|
98
|
+
or percentage of video frame width (e.g. "5%"). Direction
|
|
99
|
+
is anchor-relative — positive moves toward the frame
|
|
100
|
+
centre.
|
|
101
|
+
|
|
102
|
+
**`anchor: center` exception.** When the anchor is `center`
|
|
103
|
+
the centre is the centre — there is no anchor-relative
|
|
104
|
+
direction. Non-zero `margin_x` combined with
|
|
105
|
+
`anchor: center` is rejected by the API at workflow-create
|
|
106
|
+
time as `invalid_options` (HTTP 422). Same rule as the
|
|
107
|
+
other watermark operations.
|
|
108
|
+
|
|
109
|
+
margin_y:
|
|
110
|
+
type: string
|
|
111
|
+
pattern: '^\d+(\.\d+)?(px|%)$'
|
|
112
|
+
default: "0px"
|
|
113
|
+
description: |
|
|
114
|
+
Vertical offset from the anchor as pixels or percentage of
|
|
115
|
+
video frame height. Anchor-relative; positive moves toward
|
|
116
|
+
the frame centre.
|
|
117
|
+
|
|
118
|
+
**`anchor: center` exception.** Same rejection rule as
|
|
119
|
+
`margin_x`.
|
|
120
|
+
|
|
121
|
+
opacity:
|
|
122
|
+
type: float
|
|
123
|
+
min: 0.0
|
|
124
|
+
max: 1.0
|
|
125
|
+
default: 0.5
|
|
126
|
+
description: |
|
|
127
|
+
Overlay opacity (0 = fully transparent, 1 = fully opaque).
|
|
128
|
+
Clamped to range.
|
|
129
|
+
|
|
130
|
+
overlay_width:
|
|
131
|
+
type: string
|
|
132
|
+
pattern: '^\d+(\.\d+)?(px|%)$'
|
|
133
|
+
description: |
|
|
134
|
+
Optional overlay width as pixels or percentage of video
|
|
135
|
+
frame width. Aspect ratio preserved. Omit to use the
|
|
136
|
+
original overlay size.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@giveitsmaller/contracts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Generated contract types for GISL (Give It Smaller)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -28,14 +28,18 @@
|
|
|
28
28
|
"./availability/availability.json": "./availability/availability.json",
|
|
29
29
|
"./operations/schemas/archive.yaml": "./operations/schemas/archive.yaml",
|
|
30
30
|
"./operations/schemas/audio_overlay.yaml": "./operations/schemas/audio_overlay.yaml",
|
|
31
|
+
"./operations/schemas/audio_to_video.yaml": "./operations/schemas/audio_to_video.yaml",
|
|
31
32
|
"./operations/schemas/audio_watermark.yaml": "./operations/schemas/audio_watermark.yaml",
|
|
32
33
|
"./operations/schemas/compress.yaml": "./operations/schemas/compress.yaml",
|
|
33
34
|
"./operations/schemas/convert.yaml": "./operations/schemas/convert.yaml",
|
|
34
35
|
"./operations/schemas/custom_luma.yaml": "./operations/schemas/custom_luma.yaml",
|
|
35
36
|
"./operations/schemas/image_watermark.yaml": "./operations/schemas/image_watermark.yaml",
|
|
36
37
|
"./operations/schemas/merge.yaml": "./operations/schemas/merge.yaml",
|
|
38
|
+
"./operations/schemas/split.yaml": "./operations/schemas/split.yaml",
|
|
37
39
|
"./operations/schemas/text_watermark.yaml": "./operations/schemas/text_watermark.yaml",
|
|
38
|
-
"./operations/schemas/thumbnail.yaml": "./operations/schemas/thumbnail.yaml"
|
|
40
|
+
"./operations/schemas/thumbnail.yaml": "./operations/schemas/thumbnail.yaml",
|
|
41
|
+
"./operations/schemas/video_text_watermark.yaml": "./operations/schemas/video_text_watermark.yaml",
|
|
42
|
+
"./operations/schemas/video_watermark.yaml": "./operations/schemas/video_watermark.yaml"
|
|
39
43
|
},
|
|
40
44
|
"files": [
|
|
41
45
|
"dist/",
|
|
@@ -45,7 +49,8 @@
|
|
|
45
49
|
"availability/availability.json"
|
|
46
50
|
],
|
|
47
51
|
"scripts": {
|
|
48
|
-
"
|
|
52
|
+
"clean": "node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"",
|
|
53
|
+
"build": "npm run clean && tsc",
|
|
49
54
|
"prepack": "npm run build"
|
|
50
55
|
},
|
|
51
56
|
"devDependencies": {
|