@giveitsmaller/contracts 0.4.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 +527 -78
- 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 +1 -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 +1 -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 +1 -1
- package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
- package/dist/openapi/models/CreateWorkflow422Response.d.ts +3 -2
- package/dist/openapi/models/CreateWorkflow422Response.js +8 -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 +1 -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 +1 -1
- package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
- package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -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 +1 -1
- 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 +1 -1
- package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
- package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
- package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
- package/dist/openapi/models/MultipartPartListing.js +1 -1
- package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
- package/dist/openapi/models/MultipartPresignRequest.js +1 -1
- package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
- package/dist/openapi/models/MultipartPresignResponse.js +1 -1
- package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
- package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
- package/dist/openapi/models/MultipartStatusResponse.js +1 -1
- package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
- package/dist/openapi/models/OperationDefinition.d.ts +1 -1
- package/dist/openapi/models/OperationDefinition.js +1 -1
- package/dist/openapi/models/OperationDownload.d.ts +1 -1
- package/dist/openapi/models/OperationDownload.js +1 -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 +1 -1
- package/dist/openapi/models/OperationResponse.js +1 -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 +1 -1
- package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
- package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
- 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 +1 -1
- package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
- 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 +1 -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 +1 -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 +1 -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 +1 -1
- package/dist/openapi/models/UploadThresholds.js +1 -1
- 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 +1 -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 +9 -0
- package/dist/openapi/models/index.js +9 -0
- package/dist/openapi/runtime.d.ts +1 -1
- package/dist/openapi/runtime.js +1 -1
- 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/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/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/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 +523 -72
- package/operations/schemas/audio_to_video.yaml +122 -0
- package/operations/schemas/image_watermark.yaml +15 -103
- package/operations/schemas/split.yaml +309 -0
- package/operations/schemas/thumbnail.yaml +7 -1
- package/operations/schemas/video_text_watermark.yaml +174 -0
- package/operations/schemas/video_watermark.yaml +136 -0
- package/package.json +8 -3
package/openapi/api.yaml
CHANGED
|
@@ -75,7 +75,7 @@ info:
|
|
|
75
75
|
of truth instead of hardcoding magic numbers. A runtime
|
|
76
76
|
`GET /api/uploads/limits` endpoint for dynamic discovery
|
|
77
77
|
(per-tier / per-environment overrides) is a deferred follow-up.
|
|
78
|
-
version: 2.
|
|
78
|
+
version: 2.15.3
|
|
79
79
|
contact:
|
|
80
80
|
name: API Support
|
|
81
81
|
|
|
@@ -968,82 +968,92 @@ paths:
|
|
|
968
968
|
responses:
|
|
969
969
|
'200':
|
|
970
970
|
description: |
|
|
971
|
-
Probe completed. The `probe_status` field indicates
|
|
971
|
+
Probe completed. The `data.probe_status` field indicates
|
|
972
972
|
whether the file is workflow-ready (`ok`) or has issues
|
|
973
973
|
that warrant exclusion / re-upload.
|
|
974
974
|
content:
|
|
975
975
|
application/json:
|
|
976
976
|
schema:
|
|
977
|
-
$ref: '#/components/schemas/
|
|
977
|
+
$ref: '#/components/schemas/UploadProbeSuccessEnvelope'
|
|
978
978
|
examples:
|
|
979
979
|
ok_short_form:
|
|
980
980
|
summary: Short-form clip probed cleanly
|
|
981
981
|
value:
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
982
|
+
success: true
|
|
983
|
+
data:
|
|
984
|
+
file_id: "019539ab-1111-7000-8000-000000000001"
|
|
985
|
+
probe_status: "ok"
|
|
986
|
+
media_metadata:
|
|
987
|
+
duration_seconds: 187
|
|
988
|
+
width: 1920
|
|
989
|
+
height: 1080
|
|
990
|
+
codec: "h264"
|
|
991
|
+
container: "mp4"
|
|
992
|
+
audio_layout: "stereo"
|
|
993
|
+
probed_at: "2026-04-26T13:50:00Z"
|
|
994
|
+
processing_class_pre_assignment: "short_form"
|
|
993
995
|
ok_long_form:
|
|
994
996
|
summary: Long-form clip — full M2 union populated (video + audio fields)
|
|
995
997
|
value:
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
998
|
+
success: true
|
|
999
|
+
data:
|
|
1000
|
+
file_id: "019539ab-1111-7000-8000-000000000002"
|
|
1001
|
+
probe_status: "ok"
|
|
1002
|
+
media_metadata:
|
|
1003
|
+
duration_seconds: 5400
|
|
1004
|
+
width: 3840
|
|
1005
|
+
height: 2160
|
|
1006
|
+
codec: "h265"
|
|
1007
|
+
audio_codec: "aac"
|
|
1008
|
+
container: "mp4"
|
|
1009
|
+
fps: 23.976
|
|
1010
|
+
bitrate_bps: 18000000
|
|
1011
|
+
audio_layout: "stereo"
|
|
1012
|
+
channels: 2
|
|
1013
|
+
sample_rate_hz: 48000
|
|
1014
|
+
probed_at: "2026-04-26T13:50:00Z"
|
|
1015
|
+
processing_class_pre_assignment: "long_form"
|
|
1012
1016
|
corrupt:
|
|
1013
1017
|
summary: File header damaged — caller should exclude
|
|
1014
1018
|
value:
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1019
|
+
success: true
|
|
1020
|
+
data:
|
|
1021
|
+
file_id: "019539ab-1111-7000-8000-000000000003"
|
|
1022
|
+
probe_status: "corrupt"
|
|
1023
|
+
media_metadata:
|
|
1024
|
+
probed_at: "2026-04-26T13:50:00Z"
|
|
1025
|
+
processing_class_pre_assignment: "blocked"
|
|
1020
1026
|
unsupported_codec:
|
|
1021
1027
|
summary: Container readable but codec unsupported
|
|
1022
1028
|
value:
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1029
|
+
success: true
|
|
1030
|
+
data:
|
|
1031
|
+
file_id: "019539ab-1111-7000-8000-000000000004"
|
|
1032
|
+
probe_status: "unsupported_codec"
|
|
1033
|
+
media_metadata:
|
|
1034
|
+
duration_seconds: 600
|
|
1035
|
+
width: 1280
|
|
1036
|
+
height: 720
|
|
1037
|
+
codec: "prores_4444"
|
|
1038
|
+
container: "mov"
|
|
1039
|
+
probed_at: "2026-04-26T13:50:00Z"
|
|
1040
|
+
processing_class_pre_assignment: "blocked"
|
|
1033
1041
|
blocked_by_tier:
|
|
1034
1042
|
summary: Free-tier caller probes a long-form clip
|
|
1035
1043
|
value:
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1044
|
+
success: true
|
|
1045
|
+
data:
|
|
1046
|
+
file_id: "019539ab-1111-7000-8000-000000000005"
|
|
1047
|
+
probe_status: "ok"
|
|
1048
|
+
media_metadata:
|
|
1049
|
+
duration_seconds: 5400
|
|
1050
|
+
width: 1920
|
|
1051
|
+
height: 1080
|
|
1052
|
+
codec: "h264"
|
|
1053
|
+
container: "mp4"
|
|
1054
|
+
audio_layout: "stereo"
|
|
1055
|
+
probed_at: "2026-04-26T13:50:00Z"
|
|
1056
|
+
processing_class_pre_assignment: "blocked"
|
|
1047
1057
|
'401':
|
|
1048
1058
|
description: Authentication required.
|
|
1049
1059
|
content:
|
|
@@ -1495,8 +1505,12 @@ paths:
|
|
|
1495
1505
|
duck-type against. `FeatureNotAvailableResponse` carries
|
|
1496
1506
|
`error_type: feature_not_available` + `violations[]`;
|
|
1497
1507
|
`ProcessingClassExceedsBandResponse` carries `error_type:
|
|
1498
|
-
processing_class_exceeds_band` + `violations[]`.
|
|
1499
|
-
`
|
|
1508
|
+
processing_class_exceeds_band` + `violations[]`.
|
|
1509
|
+
`ProbePendingResponse` carries `error_type: probe_pending`
|
|
1510
|
+
+ `job_ref` (and NO `violations[]` / `details[]`), emitted
|
|
1511
|
+
when the probe-pending gate is on and a job's upload has
|
|
1512
|
+
not yet been probed. The `REQUIRES_REENCODE` flavour reuses
|
|
1513
|
+
`ValidationErrorEnvelope`
|
|
1500
1514
|
(a user-fixable validation error in the same family as
|
|
1501
1515
|
`INVALID_OPTIONS`) and is distinguished by the stable
|
|
1502
1516
|
`error: "REQUIRES_REENCODE"` string code rather than a new
|
|
@@ -1508,6 +1522,21 @@ paths:
|
|
|
1508
1522
|
here because `ValidationErrorEnvelope` has no `error_type`
|
|
1509
1523
|
field; OpenAPI 3.1 discriminators require the property to
|
|
1510
1524
|
be present on every branch).
|
|
1525
|
+
headers:
|
|
1526
|
+
Retry-After:
|
|
1527
|
+
required: false
|
|
1528
|
+
description: |
|
|
1529
|
+
Optional, best-effort. Present only on the
|
|
1530
|
+
`probe_pending` branch — suggested seconds to wait
|
|
1531
|
+
before re-polling the upload probe and retrying the
|
|
1532
|
+
workflow. Delta-seconds (RFC 9110), mirroring the 429
|
|
1533
|
+
login path's `Retry-After` convention. Absent until the
|
|
1534
|
+
server-side probe-staleness bound (API `e1Idv6UL`)
|
|
1535
|
+
lands; consumers MUST treat absence as "retry on your
|
|
1536
|
+
own backoff schedule."
|
|
1537
|
+
schema:
|
|
1538
|
+
type: integer
|
|
1539
|
+
minimum: 0
|
|
1511
1540
|
content:
|
|
1512
1541
|
application/json:
|
|
1513
1542
|
schema:
|
|
@@ -1515,6 +1544,7 @@ paths:
|
|
|
1515
1544
|
- $ref: '#/components/schemas/ValidationErrorEnvelope'
|
|
1516
1545
|
- $ref: '#/components/schemas/FeatureNotAvailableResponse'
|
|
1517
1546
|
- $ref: '#/components/schemas/ProcessingClassExceedsBandResponse'
|
|
1547
|
+
- $ref: '#/components/schemas/ProbePendingResponse'
|
|
1518
1548
|
examples:
|
|
1519
1549
|
validation_error:
|
|
1520
1550
|
summary: Generic validation error (legacy shape)
|
|
@@ -1541,6 +1571,19 @@ paths:
|
|
|
1541
1571
|
documentation_url: "https://docs.giveitsmaller.com/operations/audio_overlay"
|
|
1542
1572
|
- feature: "operation.merge.mime_group.image.option.transition.dissolve"
|
|
1543
1573
|
availability: "experimental"
|
|
1574
|
+
probe_pending:
|
|
1575
|
+
summary: |
|
|
1576
|
+
Probe-pending gate is on and a single-op video
|
|
1577
|
+
compress references an upload whose server-side
|
|
1578
|
+
probe has not yet landed. Client polls the upload
|
|
1579
|
+
probe endpoint, then re-POSTs the workflow. The
|
|
1580
|
+
`Retry-After` header (5s here) hints the poll delay.
|
|
1581
|
+
value:
|
|
1582
|
+
success: false
|
|
1583
|
+
error: "Upload probe has not completed; poll the upload probe endpoint and retry"
|
|
1584
|
+
error_type: "probe_pending"
|
|
1585
|
+
job_ref: "job_0"
|
|
1586
|
+
message_key: "error.probe_pending"
|
|
1544
1587
|
processing_class_exceeds_band_combined_size:
|
|
1545
1588
|
summary: |
|
|
1546
1589
|
merge job whose summed inputs (130 GB) exceed the
|
|
@@ -1766,6 +1809,35 @@ paths:
|
|
|
1766
1809
|
event: workflow.completed
|
|
1767
1810
|
data: {"workflow_id":"wf-uuid","status":"completed"}
|
|
1768
1811
|
```
|
|
1812
|
+
|
|
1813
|
+
**Reconnect & delivery semantics:**
|
|
1814
|
+
|
|
1815
|
+
Delivery is **at-least-once per connection with no client-driven
|
|
1816
|
+
resume**. The server does **not** read an inbound `Last-Event-ID`
|
|
1817
|
+
header; each connection re-derives state from scratch and replays
|
|
1818
|
+
every underlying stream from the start. Consequently **terminal events
|
|
1819
|
+
(`operation.completed` / `operation.failed`, `job.completed` /
|
|
1820
|
+
`job.failed`, `workflow.completed` / `workflow.failed` /
|
|
1821
|
+
`workflow.partially_failed`) are re-delivered on every (re)connection**.
|
|
1822
|
+
Within a single connection events are not duplicated (the cursor
|
|
1823
|
+
advances as events are sent), so duplicates only arise across
|
|
1824
|
+
reconnects. Clients MUST therefore treat the stream as idempotent and
|
|
1825
|
+
dedupe terminal events themselves (e.g. by `operation_id` + event type,
|
|
1826
|
+
or by workflow/job terminal status) rather than relying on
|
|
1827
|
+
resume-from-cursor. Resume-from-`Last-Event-ID` is **not** implemented;
|
|
1828
|
+
if added later it will be a separate, explicitly-specified feature.
|
|
1829
|
+
|
|
1830
|
+
**`id:` field (SSE event id):** emitted **only on operation frames**
|
|
1831
|
+
(`operation.progress` / `operation.completed` / `operation.failed`),
|
|
1832
|
+
where it carries the underlying stream's event id. **Transition frames**
|
|
1833
|
+
(`job.completed` / `job.failed`, `workflow.*`) carry **no `id:`**.
|
|
1834
|
+
Because there is no `Last-Event-ID` resume, any emitted `id:` is
|
|
1835
|
+
informational only — clients cannot use it to resume a stream.
|
|
1836
|
+
|
|
1837
|
+
**Framing vs payload:** the `Sse*Data` component schemas describe only
|
|
1838
|
+
the `data:` JSON payload of each event. The SSE envelope framing itself
|
|
1839
|
+
(the `id:` and `event:` lines) is transport-level and intentionally
|
|
1840
|
+
**not** schema-described.
|
|
1769
1841
|
operationId: streamWorkflowEvents
|
|
1770
1842
|
tags:
|
|
1771
1843
|
- Workflow
|
|
@@ -3498,6 +3570,62 @@ components:
|
|
|
3498
3570
|
additionalProperties:
|
|
3499
3571
|
$ref: '#/components/schemas/PerValueAvailabilityEntry'
|
|
3500
3572
|
|
|
3573
|
+
PerRoleCardinality:
|
|
3574
|
+
type: object
|
|
3575
|
+
description: |
|
|
3576
|
+
Map of role-name → `PerRoleCardinalityEntry`. Attached to
|
|
3577
|
+
a role-based multi-input operation's `per_role_cardinality`
|
|
3578
|
+
field to declare the required and maximum input count per
|
|
3579
|
+
role. **Cardinality overlay, not availability overlay** —
|
|
3580
|
+
sits alongside `PerValueAvailability` / `PerMimeAvailability`
|
|
3581
|
+
structurally but expresses a different concern.
|
|
3582
|
+
|
|
3583
|
+
Keys MUST be a subset of the `JobInputRole` enum
|
|
3584
|
+
(CI-checked by `scripts/check-per-role-cardinality.py`).
|
|
3585
|
+
The script additionally enforces arithmetic-consistency:
|
|
3586
|
+
`sum(role.min) == OperationSchemaDefinition.min_inputs`
|
|
3587
|
+
and `sum(role.max) == OperationSchemaDefinition.max_inputs`
|
|
3588
|
+
— this is the load-bearing invariant that makes the
|
|
3589
|
+
primitive useful.
|
|
3590
|
+
|
|
3591
|
+
Absence of `per_role_cardinality` on a role-based op keeps
|
|
3592
|
+
the current prose-only semantics (image_watermark /
|
|
3593
|
+
audio_overlay / custom_luma encode their role rules in
|
|
3594
|
+
prose at `JobInputRole`'s description today; migration to
|
|
3595
|
+
predicate form is per-op follow-up work).
|
|
3596
|
+
|
|
3597
|
+
Per ticket [`SlluxMBN`](https://trello.com/c/SlluxMBN) /
|
|
3598
|
+
ADR-0015. Consumed by `OperationInputRoleValidator` in
|
|
3599
|
+
`compression_api` (rule table becomes data-driven) and by
|
|
3600
|
+
SDK generators when emitting typed role-binding helpers.
|
|
3601
|
+
additionalProperties:
|
|
3602
|
+
$ref: '#/components/schemas/PerRoleCardinalityEntry'
|
|
3603
|
+
|
|
3604
|
+
PerRoleCardinalityEntry:
|
|
3605
|
+
type: object
|
|
3606
|
+
description: |
|
|
3607
|
+
Per-role cardinality entry. `min: 0` makes the role optional.
|
|
3608
|
+
`max: 1` is the most common upper bound (one base, one
|
|
3609
|
+
overlay); future role-based ops may declare higher maxima
|
|
3610
|
+
(e.g. multi-overlay video composites). Both fields default to
|
|
3611
|
+
`1` when absent on a role key — but consumers SHOULD treat
|
|
3612
|
+
absence of either field as a contract bug surfaced by
|
|
3613
|
+
`scripts/check-per-role-cardinality.py` rather than silently
|
|
3614
|
+
defaulting.
|
|
3615
|
+
required:
|
|
3616
|
+
- min
|
|
3617
|
+
- max
|
|
3618
|
+
properties:
|
|
3619
|
+
min:
|
|
3620
|
+
type: integer
|
|
3621
|
+
minimum: 0
|
|
3622
|
+
description: Minimum input count for this role (0 = optional).
|
|
3623
|
+
max:
|
|
3624
|
+
type: integer
|
|
3625
|
+
minimum: 1
|
|
3626
|
+
description: |
|
|
3627
|
+
Maximum input count for this role. MUST be >= `min`.
|
|
3628
|
+
|
|
3501
3629
|
# ============================================
|
|
3502
3630
|
# EXTERNAL SOURCES + DESTINATIONS
|
|
3503
3631
|
# ============================================
|
|
@@ -4745,6 +4873,54 @@ components:
|
|
|
4745
4873
|
items:
|
|
4746
4874
|
$ref: '#/components/schemas/FeatureViolation'
|
|
4747
4875
|
|
|
4876
|
+
ProbePendingResponse:
|
|
4877
|
+
description: |
|
|
4878
|
+
422 response on `POST /api/workflows` when the probe-pending
|
|
4879
|
+
gate (API `av1J0rEF`, shipped behind a default-OFF feature flag)
|
|
4880
|
+
is enabled and a job references an upload whose server-side
|
|
4881
|
+
probe has not yet completed at workflow-create time. Rather than
|
|
4882
|
+
silently routing the job as `short_form` (which hard-fails long
|
|
4883
|
+
video clips), the server rejects with this envelope so the
|
|
4884
|
+
client can recover deterministically.
|
|
4885
|
+
|
|
4886
|
+
**Recovery contract.** Poll `POST /api/uploads/{id}/probe` for
|
|
4887
|
+
the pending upload until its `probe_status` is terminal
|
|
4888
|
+
(`ok` → re-`POST /api/workflows` the same request; `corrupt` /
|
|
4889
|
+
`unsupported_codec` → surface the probe error, do not retry).
|
|
4890
|
+
The `Retry-After` response header (when present) carries the
|
|
4891
|
+
suggested delay in seconds before the next poll/retry.
|
|
4892
|
+
|
|
4893
|
+
Delivered alongside `ValidationErrorEnvelope`,
|
|
4894
|
+
`FeatureNotAvailableResponse`, and
|
|
4895
|
+
`ProcessingClassExceedsBandResponse` via the naked `oneOf` on
|
|
4896
|
+
the 422 response — duck-typed on required-field shape: this
|
|
4897
|
+
branch is the only one carrying `error_type: probe_pending`
|
|
4898
|
+
and it has neither `details` (ValidationErrorEnvelope) nor
|
|
4899
|
+
`violations` (the other two typed envelopes), so it matches
|
|
4900
|
+
exactly one branch.
|
|
4901
|
+
allOf:
|
|
4902
|
+
- $ref: '#/components/schemas/ErrorEnvelope'
|
|
4903
|
+
- type: object
|
|
4904
|
+
required:
|
|
4905
|
+
- error_type
|
|
4906
|
+
- job_ref
|
|
4907
|
+
properties:
|
|
4908
|
+
error_type:
|
|
4909
|
+
type: string
|
|
4910
|
+
enum:
|
|
4911
|
+
- probe_pending
|
|
4912
|
+
description: Discriminator for the 422 oneOf. Always `probe_pending`.
|
|
4913
|
+
job_ref:
|
|
4914
|
+
type: string
|
|
4915
|
+
description: |
|
|
4916
|
+
Workflow-local identifier of the job whose upload-probe
|
|
4917
|
+
has not landed — `JobDefinition.id` if the caller
|
|
4918
|
+
supplied one, else the auto-generated `job_N` token.
|
|
4919
|
+
Mirrors `ProcessingClassBandViolation.job_ref`; NOT
|
|
4920
|
+
`format: uuid` because workflow-create rejects fire
|
|
4921
|
+
before server-side UUIDs are assigned.
|
|
4922
|
+
example: "job_0"
|
|
4923
|
+
|
|
4748
4924
|
ProcessingClassRejectReason:
|
|
4749
4925
|
type: string
|
|
4750
4926
|
description: |
|
|
@@ -5154,7 +5330,7 @@ components:
|
|
|
5154
5330
|
- thumbnail_office: Office document (DOCX/XLSX/PPTX/ODT/ODS/ODP)
|
|
5155
5331
|
thumbnail sub-type. Backed by a dedicated LibreOffice Lambda.
|
|
5156
5332
|
Not yet emitted.
|
|
5157
|
-
- image_watermark: Image overlay (file or external_source) onto a base
|
|
5333
|
+
- image_watermark: Image overlay (file or external_source) onto a base IMAGE asset. Multi-input (Path B with role: base + overlay). Stable for static-image bases (jpeg/png/webp); animated GIF is advertised as `planned` via the `image_gif` mime_group — dispatch returns `feature_not_available` (422) until Lambda support ships. Video bases are NOT supported by image_watermark — use the dedicated `video_watermark` operation per ADR-0013. Per ADR-0004 + I4-CONS + I5 (Trello AKZiOXnd).
|
|
5158
5334
|
- text_watermark: Text overlay rendered onto an image (Liberation Sans). Single-input. Per ADR-0004 + I4-CONS.
|
|
5159
5335
|
- merge: Concatenate/combine multiple files into one (images, video, audio). Multi-input. Image inputs merge into animated GIF or slideshow video; image collage/grid and PDF concatenation are not supported by the V1 Lambda.
|
|
5160
5336
|
- archive: Bundle files into ZIP/tar.gz (all types). Multi-input.
|
|
@@ -5162,6 +5338,10 @@ components:
|
|
|
5162
5338
|
- custom_luma: Apply a caller-uploaded luma matte to a base video for a custom luma-matte transition effect. Multi-input (`role: base` + `role: transition_mask`). `availability: planned` + `required_tier: pro`; dispatch returns `feature_not_available` (422) until Lambda ships. Distinct from FFmpeg `xfade=custom` (which is an expression, not an operation). Per ticket I29 (Trello EPUE5Vs1).
|
|
5163
5339
|
- audio_overlay: Mix a secondary audio asset over a primary audio or video base (DJ tags, podcast intros/outros, station IDs, jingles). Multi-input (`role: base` + `role: overlay`). `availability: planned`; dispatch returns `feature_not_available` (422) until Lambda ships. **NOT** the same as `audio_watermark` — that operation is steganographic (imperceptible identifier embedded for ownership tracking), tracked separately by I20. Per ticket I19 (Trello Xr3Z4GBF).
|
|
5164
5340
|
- audio_watermark: Embed a steganographic forensic watermark into an audio asset (or a video's audio track) — Cinavia / Resemble PerTh territory. Single-input. `availability: planned` + `required_tier: enterprise`; dispatch returns `feature_not_available` (422) until Lambda ships. Pairs with `POST /api/audio-watermark/decode` for own-watermarks-only extraction. Per ticket I20 (Trello omiCq7Vn).
|
|
5341
|
+
- audio_to_video: Produce a video from an audio input plus an OPTIONAL still image overlay. Multi-input role-based with the first OPTIONAL role on the contract (`role: base` audio required, `role: overlay` image 0..1 — see `per_role_cardinality`). When overlay is omitted, the video uses a solid background colour. `availability: planned`; dispatch returns `feature_not_available` (422) until Lambda ships. Per ticket [`SlluxMBN`](https://trello.com/c/SlluxMBN) + ADR-0015 (introduces `per_role_cardinality` vocab).
|
|
5342
|
+
- video_watermark: Apply an image overlay onto a base video via FFmpeg's `overlay` filter. Multi-input role-based (`role: base` video + `role: overlay` image, exactly one of each per `per_role_cardinality`). Re-encode required; audio stream-copy passthrough. Distinct from `image_watermark` (pure-Rust/image-only). `availability: planned`; dispatch returns `feature_not_available` (422) until Lambda ships. Per ticket [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) + ADR-0013.
|
|
5343
|
+
- video_text_watermark: Render a text overlay onto a base video via FFmpeg's `drawtext` filter. Single-input — text and styling in options. Same `watermark_mode` (single/tiled), anchor + margin vocab as `text_watermark`. Re-encode required; audio stream-copy passthrough. `availability: planned`; dispatch returns `feature_not_available` (422) until Lambda ships. Per ticket [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) + ADR-0013.
|
|
5344
|
+
- split: Fan one input file into N outputs across GIF / PDF / audio / video MIME families. Single-input per-mime-group catalog (mirrors merge/convert): GIF uses `frame_range` (REQUIRED) + `output_format`; PDF uses `page_range` OR `page_groups` (mutually exclusive); audio + video use a `mode` discriminator (interval/count/cut_points) + numeric-seconds wire format + `precision` flag (fast/exact). 200-output hard cap per ADR-0009 §D5 with per-mode preflight math; output naming `output-001..output-200`. Long-form video routes to a separate `split-video-fargate` worker via `processing_class`. `availability: planned`; dispatch returns `feature_not_available` (422) until Lambda ships. Per ticket [`vKI0CFDu`](https://trello.com/c/vKI0CFDu) + ADR-0014.
|
|
5165
5345
|
|
|
5166
5346
|
Both the legacy `thumbnail` value and the four sub-type values
|
|
5167
5347
|
are valid routing targets today during the thumbnail migration
|
|
@@ -5186,6 +5366,10 @@ components:
|
|
|
5186
5366
|
- custom_luma
|
|
5187
5367
|
- audio_overlay
|
|
5188
5368
|
- audio_watermark
|
|
5369
|
+
- audio_to_video
|
|
5370
|
+
- video_watermark
|
|
5371
|
+
- video_text_watermark
|
|
5372
|
+
- split
|
|
5189
5373
|
|
|
5190
5374
|
OperationInputModel:
|
|
5191
5375
|
type: string
|
|
@@ -5193,8 +5377,9 @@ components:
|
|
|
5193
5377
|
Whether the operation accepts a single file or multiple files:
|
|
5194
5378
|
- single: One input file (compress, thumbnail, thumbnail_image,
|
|
5195
5379
|
thumbnail_video, thumbnail_document, thumbnail_office,
|
|
5196
|
-
text_watermark, convert, audio_watermark
|
|
5197
|
-
|
|
5380
|
+
text_watermark, convert, audio_watermark,
|
|
5381
|
+
video_text_watermark, split)
|
|
5382
|
+
- multi: Multiple input files (merge, archive, image_watermark, custom_luma, audio_overlay, audio_to_video, video_watermark). audio_to_video is the first role-based op with an OPTIONAL role (min_inputs=1, max_inputs=2 — see `per_role_cardinality`); video_watermark mirrors `image_watermark`'s 2-required pattern on video bases.
|
|
5198
5383
|
enum:
|
|
5199
5384
|
- single
|
|
5200
5385
|
- multi
|
|
@@ -6142,10 +6327,21 @@ components:
|
|
|
6142
6327
|
type: array
|
|
6143
6328
|
description: |
|
|
6144
6329
|
Multi-input list for `merge`, `archive`, `image_watermark`,
|
|
6145
|
-
`custom_luma`, and `
|
|
6146
|
-
`JobInputV2` with its own `WorkflowSource`.
|
|
6147
|
-
exclusive with `source
|
|
6148
|
-
|
|
6330
|
+
`custom_luma`, `audio_overlay`, and `audio_to_video`. Each
|
|
6331
|
+
entry is a `JobInputV2` with its own `WorkflowSource`.
|
|
6332
|
+
Mutually exclusive with `source` — the V2 shape boundary
|
|
6333
|
+
stays `source` (single-input) XOR `inputs[]` (multi-input
|
|
6334
|
+
role-based) per ADR-0004 / I12.
|
|
6335
|
+
|
|
6336
|
+
**Minimum input count = sum of role minima** declared in
|
|
6337
|
+
the operation's `per_role_cardinality` (per ticket
|
|
6338
|
+
[`SlluxMBN`](https://trello.com/c/SlluxMBN) ADR-0015).
|
|
6339
|
+
`audio_to_video` requires 1 input (`base` audio; `overlay`
|
|
6340
|
+
optional, 0..1); all other role-based ops require 2+ today.
|
|
6341
|
+
The schema floor here is `minItems: 1` to admit the
|
|
6342
|
+
audio_to_video case; per-operation gates enforce the
|
|
6343
|
+
actual count via `OperationSchemaDefinition.min_inputs`.
|
|
6344
|
+
minItems: 1
|
|
6149
6345
|
items:
|
|
6150
6346
|
$ref: '#/components/schemas/JobInputV2'
|
|
6151
6347
|
operations:
|
|
@@ -6157,8 +6353,8 @@ components:
|
|
|
6157
6353
|
|
|
6158
6354
|
Multi-input jobs (with `inputs[]`) must have exactly one
|
|
6159
6355
|
operation, and it must be a multi-input type (`merge`,
|
|
6160
|
-
`archive`, `image_watermark`, `custom_luma`,
|
|
6161
|
-
`audio_overlay`).
|
|
6356
|
+
`archive`, `image_watermark`, `custom_luma`,
|
|
6357
|
+
`audio_overlay`, or `audio_to_video`).
|
|
6162
6358
|
items:
|
|
6163
6359
|
$ref: '#/components/schemas/OperationDefinition'
|
|
6164
6360
|
deliver:
|
|
@@ -6189,7 +6385,7 @@ components:
|
|
|
6189
6385
|
items:
|
|
6190
6386
|
properties:
|
|
6191
6387
|
type:
|
|
6192
|
-
enum: [merge, archive, image_watermark, custom_luma, audio_overlay]
|
|
6388
|
+
enum: [merge, archive, image_watermark, custom_luma, audio_overlay, audio_to_video, video_watermark]
|
|
6193
6389
|
required: [operations]
|
|
6194
6390
|
description: |
|
|
6195
6391
|
Multi-input jobs must have exactly one operation, and it
|
|
@@ -6236,6 +6432,21 @@ components:
|
|
|
6236
6432
|
`overlay` value already declared for `image_watermark`
|
|
6237
6433
|
— semantics differ by operation type, but the same
|
|
6238
6434
|
role label keeps the enum compact.
|
|
6435
|
+
- `audio_to_video`: REQUIRED `base` (audio source); OPTIONAL
|
|
6436
|
+
`overlay` (still image, 0..1). FIRST role-based op with
|
|
6437
|
+
an OPTIONAL role — see `per_role_cardinality` for the
|
|
6438
|
+
machine-readable cardinality declaration (per ticket
|
|
6439
|
+
[`SlluxMBN`](https://trello.com/c/SlluxMBN) /
|
|
6440
|
+
ADR-0015). Reuses `base` + `overlay` role values
|
|
6441
|
+
already declared for `image_watermark` / `audio_overlay`.
|
|
6442
|
+
- `video_watermark`: REQUIRED; values `base` (the source
|
|
6443
|
+
video) or `overlay` (the watermark image). Exactly one
|
|
6444
|
+
of each per job — `per_role_cardinality { base: 1/1,
|
|
6445
|
+
overlay: 1/1 }`. First non-introductory adoption of the
|
|
6446
|
+
`per_role_cardinality` vocab (per ticket
|
|
6447
|
+
[`4NrRPCgh`](https://trello.com/c/4NrRPCgh) /
|
|
6448
|
+
ADR-0013). `video_text_watermark` is single-input (no
|
|
6449
|
+
`role` field — text comes from options).
|
|
6239
6450
|
- `merge` / `archive`: omit (all inputs share the same role).
|
|
6240
6451
|
|
|
6241
6452
|
`text_watermark` is single-input via `JobDefinition.source`
|
|
@@ -6867,7 +7078,9 @@ components:
|
|
|
6867
7078
|
UploadProbeResponse:
|
|
6868
7079
|
type: object
|
|
6869
7080
|
description: |
|
|
6870
|
-
|
|
7081
|
+
Payload schema carried on the `data` field of
|
|
7082
|
+
`UploadProbeSuccessEnvelope` returned by
|
|
7083
|
+
`POST /api/uploads/{id}/probe`, per ticket
|
|
6871
7084
|
[I28 `KbVAnGCm`](https://trello.com/c/KbVAnGCm). Designed
|
|
6872
7085
|
so SDKs can compile a `client.preflight_clips([file_ids])`
|
|
6873
7086
|
helper into N parallel probes and aggregate by
|
|
@@ -6888,6 +7101,29 @@ components:
|
|
|
6888
7101
|
processing_class_pre_assignment:
|
|
6889
7102
|
$ref: '#/components/schemas/UploadProbeProcessingClass'
|
|
6890
7103
|
|
|
7104
|
+
UploadProbeSuccessEnvelope:
|
|
7105
|
+
type: object
|
|
7106
|
+
description: |
|
|
7107
|
+
Success envelope wrapping `UploadProbeResponse` on
|
|
7108
|
+
`POST /api/uploads/{id}/probe` 200 responses, per ticket
|
|
7109
|
+
[`9XlWEnZU`](https://trello.com/c/9XlWEnZU). Mirrors the
|
|
7110
|
+
spec-wide `*SuccessEnvelope` convention (`{success: true,
|
|
7111
|
+
data: <payload>}`) used by every other 2xx endpoint; the
|
|
7112
|
+
probe endpoint shipped during the v2.3 declared-but-pending
|
|
7113
|
+
phase missing the wrap. The API
|
|
7114
|
+
(`ApiResponseTrait::respondSuccess` in `compression_api`)
|
|
7115
|
+
already emits this shape — the envelope brings the contract
|
|
7116
|
+
in line with the wire.
|
|
7117
|
+
required:
|
|
7118
|
+
- success
|
|
7119
|
+
- data
|
|
7120
|
+
properties:
|
|
7121
|
+
success:
|
|
7122
|
+
type: boolean
|
|
7123
|
+
enum: [true]
|
|
7124
|
+
data:
|
|
7125
|
+
$ref: '#/components/schemas/UploadProbeResponse'
|
|
7126
|
+
|
|
6891
7127
|
# ============================================
|
|
6892
7128
|
# UPLOAD-SIDE GATING (per ticket I15-CONS F8.1)
|
|
6893
7129
|
# ============================================
|
|
@@ -7479,7 +7715,207 @@ components:
|
|
|
7479
7715
|
type: integer
|
|
7480
7716
|
const: 100
|
|
7481
7717
|
result:
|
|
7482
|
-
$ref: '#/components/schemas/
|
|
7718
|
+
$ref: '#/components/schemas/SseOperationCompletionResult'
|
|
7719
|
+
|
|
7720
|
+
SseOperationCompletionResult:
|
|
7721
|
+
description: |
|
|
7722
|
+
Result payload carried on the SSE `operation.completed` event
|
|
7723
|
+
(`SseOperationCompletedData.result`). A 2-branch `oneOf` mirroring the
|
|
7724
|
+
single-output vs multi-output completion split of the AsyncAPI
|
|
7725
|
+
`OperationResult` union (per [ADR-0009](../docs/decisions/0009-multi-output-result-envelope.md)),
|
|
7726
|
+
projected into the client-facing (download-URL) shape rather than the
|
|
7727
|
+
S3-wire shape.
|
|
7728
|
+
|
|
7729
|
+
- **Single-output**: `SseSingleOutputCompletion` (allOf wrap of
|
|
7730
|
+
`OperationResult` + a `result_kind: "single"` discriminator field).
|
|
7731
|
+
`download_url` + `size_bytes`, optional `export_key` / `metrics`. Every
|
|
7732
|
+
operation that produces one canonical output.
|
|
7733
|
+
- **Multi-output**: `SseMultiOutputCompletionWithKind` (allOf wrap of
|
|
7734
|
+
`SseMultiOutputCompletion` + a `result_kind: "multi"` discriminator
|
|
7735
|
+
field). `outputs[]` + `total_output_size_bytes`. Used by convert
|
|
7736
|
+
PDF->image and future fan-out operations.
|
|
7737
|
+
|
|
7738
|
+
Failure is **not** a branch here — it is carried by the separate
|
|
7739
|
+
`operation.failed` event (`SseOperationFailedData`), unlike the AsyncAPI
|
|
7740
|
+
`OperationResult` which folds failure into the same union.
|
|
7741
|
+
|
|
7742
|
+
**Branch dispatch via `result_kind` discriminator.** The branches are
|
|
7743
|
+
disambiguated by an explicit `result_kind` field (`"single"` |
|
|
7744
|
+
`"multi"`) that the API SSE emitter populates. The wrapper allOf shape
|
|
7745
|
+
keeps the underlying `OperationResult` and `SseMultiOutputCompletion`
|
|
7746
|
+
schemas unchanged (they continue to be used elsewhere — REST polling,
|
|
7747
|
+
AsyncAPI Lambda→API — without the discriminator). The discriminator
|
|
7748
|
+
approach replaces the v2.15.1 bare-`$ref` design, which dispatched
|
|
7749
|
+
correctly at validation but generated TS deserialization code that
|
|
7750
|
+
checked camelCase property names against snake_case wire payloads —
|
|
7751
|
+
silent data-loss on every single-output completion. The
|
|
7752
|
+
discriminator-based dispatch reads the snake_case wire key directly
|
|
7753
|
+
(`switch (json['result_kind'])`), avoiding the case-mismatch bug
|
|
7754
|
+
entirely.
|
|
7755
|
+
oneOf:
|
|
7756
|
+
- $ref: '#/components/schemas/SseSingleOutputCompletion'
|
|
7757
|
+
- $ref: '#/components/schemas/SseMultiOutputCompletionWithKind'
|
|
7758
|
+
discriminator:
|
|
7759
|
+
propertyName: result_kind
|
|
7760
|
+
mapping:
|
|
7761
|
+
single: '#/components/schemas/SseSingleOutputCompletion'
|
|
7762
|
+
multi: '#/components/schemas/SseMultiOutputCompletionWithKind'
|
|
7763
|
+
|
|
7764
|
+
SseSingleOutputCompletion:
|
|
7765
|
+
description: |
|
|
7766
|
+
Single-output branch of `SseOperationCompletionResult` — wraps
|
|
7767
|
+
`OperationResult` with a `result_kind: "single"` discriminator field
|
|
7768
|
+
so the openapi-generator dispatch can route by wire-format key
|
|
7769
|
+
(`result_kind`) rather than by structural property presence.
|
|
7770
|
+
See `SseOperationCompletionResult` description for the rationale.
|
|
7771
|
+
allOf:
|
|
7772
|
+
- $ref: '#/components/schemas/OperationResult'
|
|
7773
|
+
- type: object
|
|
7774
|
+
required:
|
|
7775
|
+
- result_kind
|
|
7776
|
+
properties:
|
|
7777
|
+
result_kind:
|
|
7778
|
+
type: string
|
|
7779
|
+
enum: [single]
|
|
7780
|
+
description: |
|
|
7781
|
+
Discriminator. Always the literal `"single"` for this branch.
|
|
7782
|
+
Emitted by the API SSE serializer; consumed by
|
|
7783
|
+
`SseOperationCompletionResult` dispatch.
|
|
7784
|
+
|
|
7785
|
+
SseMultiOutputCompletionWithKind:
|
|
7786
|
+
description: |
|
|
7787
|
+
Multi-output branch of `SseOperationCompletionResult` — wraps
|
|
7788
|
+
`SseMultiOutputCompletion` with a `result_kind: "multi"` discriminator
|
|
7789
|
+
field. See `SseOperationCompletionResult` description for the
|
|
7790
|
+
rationale.
|
|
7791
|
+
allOf:
|
|
7792
|
+
- $ref: '#/components/schemas/SseMultiOutputCompletion'
|
|
7793
|
+
- type: object
|
|
7794
|
+
required:
|
|
7795
|
+
- result_kind
|
|
7796
|
+
properties:
|
|
7797
|
+
result_kind:
|
|
7798
|
+
type: string
|
|
7799
|
+
enum: [multi]
|
|
7800
|
+
description: |
|
|
7801
|
+
Discriminator. Always the literal `"multi"` for this branch.
|
|
7802
|
+
Emitted by the API SSE serializer; consumed by
|
|
7803
|
+
`SseOperationCompletionResult` dispatch.
|
|
7804
|
+
|
|
7805
|
+
SseMultiOutputCompletion:
|
|
7806
|
+
type: object
|
|
7807
|
+
description: |
|
|
7808
|
+
Multi-output completion body for the SSE `operation.completed` event.
|
|
7809
|
+
Per-output details plus an aggregate size, mirroring the AsyncAPI
|
|
7810
|
+
`MultiOutputCompletion` branch of `OperationResult` (per
|
|
7811
|
+
[ADR-0009](../docs/decisions/0009-multi-output-result-envelope.md)) in
|
|
7812
|
+
the client-facing (download-URL) projection.
|
|
7813
|
+
required:
|
|
7814
|
+
- outputs
|
|
7815
|
+
- total_output_size_bytes
|
|
7816
|
+
properties:
|
|
7817
|
+
outputs:
|
|
7818
|
+
type: array
|
|
7819
|
+
minItems: 1
|
|
7820
|
+
maxItems: 200
|
|
7821
|
+
description: |
|
|
7822
|
+
Per-output deliverables for a multi-output operation (e.g. convert
|
|
7823
|
+
PDF->image emits one entry per page). Consumers use `outputs.length`
|
|
7824
|
+
for the count — per ADR-0009 §D4 a denormalised `output_count` was
|
|
7825
|
+
deliberately rejected. `maxItems: 200` mirrors the AsyncAPI
|
|
7826
|
+
`OperationResult.outputs` transport bound.
|
|
7827
|
+
items:
|
|
7828
|
+
$ref: '#/components/schemas/SseMultiOutputResultEntry'
|
|
7829
|
+
total_output_size_bytes:
|
|
7830
|
+
type: integer
|
|
7831
|
+
format: int64
|
|
7832
|
+
minimum: 0
|
|
7833
|
+
description: |
|
|
7834
|
+
Aggregate size of all `outputs[]` in bytes. Equals
|
|
7835
|
+
`sum(outputs[].size_bytes)`. Per ADR-0009 §D4 this is denormalised
|
|
7836
|
+
against the per-entry sum; consumers SHOULD trust the per-entry sum
|
|
7837
|
+
if the two disagree (and log a warning).
|
|
7838
|
+
example: 786432
|
|
7839
|
+
metrics:
|
|
7840
|
+
type: object
|
|
7841
|
+
description: Operation-specific performance metrics (aggregate)
|
|
7842
|
+
properties:
|
|
7843
|
+
compression_ratio:
|
|
7844
|
+
type: number
|
|
7845
|
+
format: double
|
|
7846
|
+
description: Ratio of output size to input size (e.g. 0.45 = 55% reduction)
|
|
7847
|
+
duration_ms:
|
|
7848
|
+
type: integer
|
|
7849
|
+
description: Processing time in milliseconds
|
|
7850
|
+
|
|
7851
|
+
SseMultiOutputResultEntry:
|
|
7852
|
+
type: object
|
|
7853
|
+
description: |
|
|
7854
|
+
A single deliverable output file in an SSE multi-output
|
|
7855
|
+
`operation.completed` result (`SseMultiOutputCompletion.outputs[]`).
|
|
7856
|
+
This is the SSE-local, client-facing twin of the AsyncAPI
|
|
7857
|
+
`OperationResultOutputEntry` (which is S3-wire: `output_key`) and is
|
|
7858
|
+
deliberately **decoupled** from the REST `OperationDownload` schema — it
|
|
7859
|
+
carries `download_url` + `size_bytes` and the same `page_index` /
|
|
7860
|
+
`position` indexing model defined per
|
|
7861
|
+
[ADR-0009](../docs/decisions/0009-multi-output-result-envelope.md) §D2
|
|
7862
|
+
(`page_index` for PDF-page outputs, `position` for generic ordinals,
|
|
7863
|
+
mutually exclusive within an entry).
|
|
7864
|
+
required:
|
|
7865
|
+
- download_url
|
|
7866
|
+
- size_bytes
|
|
7867
|
+
oneOf:
|
|
7868
|
+
- title: PageIndexed
|
|
7869
|
+
description: PDF-page output (convert PDF->image).
|
|
7870
|
+
required: [page_index]
|
|
7871
|
+
not: { required: [position] }
|
|
7872
|
+
- title: PositionIndexed
|
|
7873
|
+
description: Generic ordinal output (frame strip, chapter split).
|
|
7874
|
+
required: [position]
|
|
7875
|
+
not: { required: [page_index] }
|
|
7876
|
+
- title: Unindexed
|
|
7877
|
+
description: |
|
|
7878
|
+
Output without an explicit indexing field. Reserved for future
|
|
7879
|
+
operations that index by something other than page/position.
|
|
7880
|
+
Schema-valid but not currently emitted by any operation.
|
|
7881
|
+
not:
|
|
7882
|
+
anyOf:
|
|
7883
|
+
- required: [page_index]
|
|
7884
|
+
- required: [position]
|
|
7885
|
+
properties:
|
|
7886
|
+
download_url:
|
|
7887
|
+
type: string
|
|
7888
|
+
format: uri
|
|
7889
|
+
description: Pre-signed download URL for this individual output file.
|
|
7890
|
+
size_bytes:
|
|
7891
|
+
type: integer
|
|
7892
|
+
format: int64
|
|
7893
|
+
minimum: 0
|
|
7894
|
+
description: |
|
|
7895
|
+
Size of this individual output file in bytes. `minimum: 0` mirrors
|
|
7896
|
+
the AsyncAPI `OperationResultOutputEntry.output_size_bytes` bound and
|
|
7897
|
+
keeps `total_output_size_bytes` (the sum of these) internally
|
|
7898
|
+
consistent.
|
|
7899
|
+
page_index:
|
|
7900
|
+
type: integer
|
|
7901
|
+
minimum: 1
|
|
7902
|
+
description: |
|
|
7903
|
+
1-based page number for PDF-page fan-out outputs (convert
|
|
7904
|
+
PDF->image). Gapless within an operation (an N-page conversion
|
|
7905
|
+
emits `page_index` 1..N). Mutually exclusive with `position`.
|
|
7906
|
+
Absent on non-indexed outputs. Mirrors
|
|
7907
|
+
`OperationResultOutputEntry.page_index`. Per ADR-0009 §D2.
|
|
7908
|
+
example: 1
|
|
7909
|
+
position:
|
|
7910
|
+
type: integer
|
|
7911
|
+
minimum: 0
|
|
7912
|
+
description: |
|
|
7913
|
+
0-based ordinal for non-PDF multi-output operations (e.g. frame
|
|
7914
|
+
strip, chapter split). Mutually exclusive with `page_index`.
|
|
7915
|
+
Absent on non-indexed outputs. Forward-looking — not emitted by any
|
|
7916
|
+
current operation; declared for parity with
|
|
7917
|
+
`OperationResultOutputEntry.position`. Per ADR-0009 §D2.
|
|
7918
|
+
example: 0
|
|
7483
7919
|
|
|
7484
7920
|
SseOperationFailedData:
|
|
7485
7921
|
type: object
|
|
@@ -7726,11 +8162,26 @@ components:
|
|
|
7726
8162
|
$ref: '#/components/schemas/OperationInputModel'
|
|
7727
8163
|
min_inputs:
|
|
7728
8164
|
type: integer
|
|
7729
|
-
description:
|
|
7730
|
-
|
|
8165
|
+
description: |
|
|
8166
|
+
Minimum number of inputs (multi-input operations only).
|
|
8167
|
+
`audio_to_video` declares `min_inputs: 1` (first
|
|
8168
|
+
role-based op with an optional role); all other
|
|
8169
|
+
role-based ops declare `min_inputs: 2`. Per
|
|
8170
|
+
`per_role_cardinality` semantics (ADR-0015), this value
|
|
8171
|
+
equals the sum of role-level minima.
|
|
8172
|
+
minimum: 1
|
|
7731
8173
|
max_inputs:
|
|
7732
8174
|
type: integer
|
|
7733
8175
|
description: Maximum number of inputs (multi-input operations only)
|
|
8176
|
+
per_role_cardinality:
|
|
8177
|
+
$ref: '#/components/schemas/PerRoleCardinality'
|
|
8178
|
+
description: |
|
|
8179
|
+
Optional per-role input-count overlay for role-based
|
|
8180
|
+
multi-input operations. Per ticket
|
|
8181
|
+
[`SlluxMBN`](https://trello.com/c/SlluxMBN) / ADR-0015.
|
|
8182
|
+
Absent on operations whose role rules are still encoded
|
|
8183
|
+
in prose only (image_watermark, audio_overlay,
|
|
8184
|
+
custom_luma — per-op migration follow-ups).
|
|
7734
8185
|
accepts_mixed_types:
|
|
7735
8186
|
type: boolean
|
|
7736
8187
|
description: Whether mixed MIME types are allowed (archive only)
|