@giveitsmaller/contracts 0.72.0 → 0.76.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/README.md +2 -2
- package/accepted-options/accepted-options.json +1 -1
- package/accepted-options/image-output-routes.json +1 -1
- package/asyncapi/events.yaml +209 -67
- package/availability/availability.json +93 -73
- package/code-builder/code-builder-metadata.json +155 -71
- package/dist/asyncapi/ErrorCode.d.ts +1 -0
- package/dist/asyncapi/ErrorCode.js +1 -0
- package/dist/asyncapi/Failure.d.ts +2 -0
- package/dist/asyncapi/LongFormJobMessage.d.ts +1 -0
- package/dist/asyncapi/MultiOutputCompletion.d.ts +2 -0
- package/dist/asyncapi/OperationMetrics.d.ts +2 -0
- package/dist/asyncapi/SingleOutputCompletion.d.ts +2 -0
- package/dist/openapi/models/AccountLimitEntry.d.ts +2 -2
- package/dist/openapi/models/AccountLimitEntry.js +2 -2
- package/dist/openapi/models/AccountLimits.d.ts +2 -2
- package/dist/openapi/models/AccountLimits.js +2 -2
- package/dist/openapi/models/AccountLimitsLimits.d.ts +14 -2
- package/dist/openapi/models/AccountLimitsLimits.js +6 -2
- package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +2 -2
- package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +2 -2
- package/dist/openapi/models/AudioWatermarkDecodeRequest.js +2 -2
- package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +2 -2
- package/dist/openapi/models/AudioWatermarkDecodeResponse.js +2 -2
- package/dist/openapi/models/AuthErrorResponse.d.ts +16 -6
- package/dist/openapi/models/AuthErrorResponse.js +2 -2
- package/dist/openapi/models/AuthErrorType.d.ts +2 -2
- package/dist/openapi/models/AuthErrorType.js +2 -2
- package/dist/openapi/models/AuthRejectionEnvelope.d.ts +2 -2
- package/dist/openapi/models/AuthRejectionEnvelope.js +2 -2
- package/dist/openapi/models/AuthenticatedIdentity.d.ts +2 -2
- package/dist/openapi/models/AuthenticatedIdentity.js +2 -2
- package/dist/openapi/models/AvailabilityValue.d.ts +2 -2
- package/dist/openapi/models/AvailabilityValue.js +2 -2
- package/dist/openapi/models/BalanceExhaustedResponse.d.ts +16 -6
- package/dist/openapi/models/BalanceExhaustedResponse.js +2 -2
- package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +2 -2
- package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +2 -2
- package/dist/openapi/models/BillingCheckoutRequest.d.ts +2 -2
- package/dist/openapi/models/BillingCheckoutRequest.js +2 -2
- package/dist/openapi/models/BillingCheckoutSession.d.ts +2 -2
- package/dist/openapi/models/BillingCheckoutSession.js +2 -2
- package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +2 -2
- package/dist/openapi/models/CallbackEventType.d.ts +2 -2
- package/dist/openapi/models/CallbackEventType.js +2 -2
- package/dist/openapi/models/CancelAccountDeletion200Response.d.ts +2 -2
- package/dist/openapi/models/CancelAccountDeletion200Response.js +2 -2
- package/dist/openapi/models/CancelAccountDeletion200ResponseData.d.ts +2 -2
- package/dist/openapi/models/CancelAccountDeletion200ResponseData.js +2 -2
- package/dist/openapi/models/CapabilityCondition.d.ts +2 -2
- package/dist/openapi/models/CapabilityCondition.js +2 -2
- package/dist/openapi/models/CapabilityConditionOneOf.d.ts +2 -2
- package/dist/openapi/models/CapabilityConditionOneOf.js +2 -2
- package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +2 -2
- package/dist/openapi/models/CapabilityConditionOneOf1.js +2 -2
- package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +2 -2
- package/dist/openapi/models/CapabilityConditionOneOf2.js +2 -2
- package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +2 -2
- package/dist/openapi/models/CapabilityConditionOneOf3.js +2 -2
- package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +2 -2
- package/dist/openapi/models/CapabilityConditionOneOf4.js +2 -2
- package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +2 -2
- package/dist/openapi/models/CapabilityConditionOneOf5.js +2 -2
- package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +2 -2
- package/dist/openapi/models/CapabilityConditionOneOf6.js +2 -2
- package/dist/openapi/models/CapabilityConstraint.d.ts +2 -2
- package/dist/openapi/models/CapabilityConstraint.js +2 -2
- package/dist/openapi/models/CapabilityInputSpec.d.ts +2 -2
- package/dist/openapi/models/CapabilityInputSpec.js +2 -2
- package/dist/openapi/models/CapabilityProduces.d.ts +2 -2
- package/dist/openapi/models/CapabilityProduces.js +2 -2
- package/dist/openapi/models/CapabilityProducesOneOf.d.ts +2 -2
- package/dist/openapi/models/CapabilityProducesOneOf.js +2 -2
- package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +2 -2
- package/dist/openapi/models/CapabilityProducesOneOf1.js +2 -2
- package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +2 -2
- package/dist/openapi/models/CapabilityProducesOneOf2.js +2 -2
- package/dist/openapi/models/ChangePasswordRequest.d.ts +2 -2
- package/dist/openapi/models/ChangePasswordRequest.js +2 -2
- package/dist/openapi/models/CheckoutSessionStatusResponse.d.ts +46 -0
- package/dist/openapi/models/CheckoutSessionStatusResponse.js +54 -0
- package/dist/openapi/models/CheckoutSessionStatusResponseData.d.ts +50 -0
- package/dist/openapi/models/CheckoutSessionStatusResponseData.js +55 -0
- package/dist/openapi/models/CodegenSource.d.ts +5 -4
- package/dist/openapi/models/CodegenSource.js +2 -2
- package/dist/openapi/models/CodegenSourceInput.d.ts +2 -2
- package/dist/openapi/models/CodegenSourceInput.js +2 -2
- package/dist/openapi/models/CodegenSourceJob.d.ts +2 -2
- package/dist/openapi/models/CodegenSourceJob.js +2 -2
- package/dist/openapi/models/CodegenSourceJobSource.d.ts +2 -2
- package/dist/openapi/models/CodegenSourceJobSource.js +2 -2
- package/dist/openapi/models/CodegenSourceOperation.d.ts +2 -2
- package/dist/openapi/models/CodegenSourceOperation.js +2 -2
- package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +2 -2
- package/dist/openapi/models/CodegenUploadPlaceholder.js +2 -2
- package/dist/openapi/models/CompositionPlan.d.ts +2 -2
- package/dist/openapi/models/CompositionPlan.js +2 -2
- package/dist/openapi/models/CompositionPlanJob.d.ts +2 -2
- package/dist/openapi/models/CompositionPlanJob.js +2 -2
- package/dist/openapi/models/CompositionPlanOperation.d.ts +2 -2
- package/dist/openapi/models/CompositionPlanOperation.js +2 -2
- package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +2 -2
- package/dist/openapi/models/ConfirmEmailChange200Response.js +2 -2
- package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +2 -2
- package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +2 -2
- package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +2 -2
- package/dist/openapi/models/ConfirmEmailChangeRequest.js +2 -2
- package/dist/openapi/models/ConnectionSource.d.ts +2 -2
- package/dist/openapi/models/ConnectionSource.js +2 -2
- package/dist/openapi/models/ContactRequest.d.ts +2 -2
- package/dist/openapi/models/ContactRequest.js +2 -2
- package/dist/openapi/models/ContactSubject.d.ts +2 -2
- package/dist/openapi/models/ContactSubject.js +2 -2
- package/dist/openapi/models/ContactValidationErrorResponse.d.ts +2 -2
- package/dist/openapi/models/ContactValidationErrorResponse.js +2 -2
- package/dist/openapi/models/CreateApiKey201Response.d.ts +2 -2
- package/dist/openapi/models/CreateApiKey201Response.js +2 -2
- package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +2 -2
- package/dist/openapi/models/CreateApiKey201ResponseData.js +2 -2
- package/dist/openapi/models/CreateApiKeyRequest.d.ts +2 -2
- package/dist/openapi/models/CreateApiKeyRequest.js +2 -2
- package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +2 -2
- package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +2 -2
- package/dist/openapi/models/CreateExternalImport403Response.d.ts +2 -2
- package/dist/openapi/models/CreateExternalImport403Response.js +2 -2
- package/dist/openapi/models/CreateExternalImport422Response.d.ts +2 -2
- package/dist/openapi/models/CreateExternalImport422Response.js +2 -2
- package/dist/openapi/models/CreateWorkflow401Response.d.ts +16 -6
- package/dist/openapi/models/CreateWorkflow401Response.js +2 -2
- package/dist/openapi/models/CreateWorkflow422Response.d.ts +2 -2
- package/dist/openapi/models/CreateWorkflow422Response.js +2 -2
- package/dist/openapi/models/CreditTransaction.d.ts +22 -12
- package/dist/openapi/models/CreditTransaction.js +2 -2
- package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +2 -2
- package/dist/openapi/models/CreditTransactionSourceBucket.js +2 -2
- package/dist/openapi/models/CreditsBalanceResponse.d.ts +2 -2
- package/dist/openapi/models/CreditsBalanceResponse.js +2 -2
- package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +2 -2
- package/dist/openapi/models/CreditsUsageResponse.d.ts +2 -2
- package/dist/openapi/models/CreditsUsageResponse.js +2 -2
- package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +2 -2
- package/dist/openapi/models/Delivery.d.ts +2 -2
- package/dist/openapi/models/Delivery.js +2 -2
- package/dist/openapi/models/DeliveryOutputRef.d.ts +2 -2
- package/dist/openapi/models/DeliveryOutputRef.js +2 -2
- package/dist/openapi/models/DeliveryPlan.d.ts +2 -2
- package/dist/openapi/models/DeliveryPlan.js +2 -2
- package/dist/openapi/models/DeliveryPlanOutput.d.ts +2 -2
- package/dist/openapi/models/DeliveryPlanOutput.js +2 -2
- package/dist/openapi/models/DeliveryPlanReason.d.ts +2 -2
- package/dist/openapi/models/DeliveryPlanReason.js +2 -2
- package/dist/openapi/models/DeliverySelection.d.ts +2 -2
- package/dist/openapi/models/DeliverySelection.js +2 -2
- package/dist/openapi/models/DownloadBundle.d.ts +2 -2
- package/dist/openapi/models/DownloadBundle.js +2 -2
- package/dist/openapi/models/DroppedOption.d.ts +2 -2
- package/dist/openapi/models/DroppedOption.js +2 -2
- package/dist/openapi/models/EmailNotify.d.ts +2 -2
- package/dist/openapi/models/EmailNotify.js +2 -2
- package/dist/openapi/models/EmptySuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/EmptySuccessEnvelope.js +2 -2
- package/dist/openapi/models/EndpointProjection.d.ts +2 -2
- package/dist/openapi/models/EndpointProjection.js +2 -2
- package/dist/openapi/models/EndpointProjectionServersInner.d.ts +2 -2
- package/dist/openapi/models/EndpointProjectionServersInner.js +2 -2
- package/dist/openapi/models/ErrorEnvelope.d.ts +16 -6
- package/dist/openapi/models/ErrorEnvelope.js +2 -2
- package/dist/openapi/models/EstimateQuality.d.ts +2 -2
- package/dist/openapi/models/EstimateQuality.js +2 -2
- package/dist/openapi/models/EstimateRange.d.ts +2 -2
- package/dist/openapi/models/EstimateRange.js +2 -2
- package/dist/openapi/models/ExportAccountData200Response.d.ts +2 -2
- package/dist/openapi/models/ExportAccountData200Response.js +2 -2
- package/dist/openapi/models/ExportAccountData200ResponseData.d.ts +2 -2
- package/dist/openapi/models/ExportAccountData200ResponseData.js +2 -2
- package/dist/openapi/models/ExternalDestination.d.ts +2 -2
- package/dist/openapi/models/ExternalDestination.js +2 -2
- package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +2 -2
- package/dist/openapi/models/ExternalImportCreatedResponse.js +2 -2
- package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +2 -2
- package/dist/openapi/models/ExternalImportRequest.d.ts +2 -2
- package/dist/openapi/models/ExternalImportRequest.js +2 -2
- package/dist/openapi/models/ExternalImportToken.d.ts +2 -2
- package/dist/openapi/models/ExternalImportToken.js +2 -2
- package/dist/openapi/models/ExternalSource.d.ts +2 -2
- package/dist/openapi/models/ExternalSource.js +2 -2
- package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +16 -6
- package/dist/openapi/models/FeatureNotAvailableResponse.js +2 -2
- package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +16 -6
- package/dist/openapi/models/FeatureTierRestrictedResponse.js +2 -2
- package/dist/openapi/models/FeatureViolation.d.ts +2 -2
- package/dist/openapi/models/FeatureViolation.js +2 -2
- package/dist/openapi/models/GetProfile200Response.d.ts +2 -2
- package/dist/openapi/models/GetProfile200Response.js +2 -2
- package/dist/openapi/models/GetProfile200ResponseData.d.ts +2 -2
- package/dist/openapi/models/GetProfile200ResponseData.js +2 -2
- package/dist/openapi/models/ImageEncodeCapabilities.d.ts +2 -2
- package/dist/openapi/models/ImageEncodeCapabilities.js +2 -2
- package/dist/openapi/models/JobDefinition.d.ts +2 -2
- package/dist/openapi/models/JobDefinition.js +2 -2
- package/dist/openapi/models/JobDownload.d.ts +2 -2
- package/dist/openapi/models/JobDownload.js +2 -2
- package/dist/openapi/models/JobInputV2.d.ts +2 -2
- package/dist/openapi/models/JobInputV2.js +2 -2
- package/dist/openapi/models/JobMediaClass.d.ts +2 -2
- package/dist/openapi/models/JobMediaClass.js +2 -2
- package/dist/openapi/models/JobOutputSource.d.ts +2 -2
- package/dist/openapi/models/JobOutputSource.js +2 -2
- package/dist/openapi/models/JobResponse.d.ts +2 -2
- package/dist/openapi/models/JobResponse.js +2 -2
- package/dist/openapi/models/JobStatus.d.ts +2 -2
- package/dist/openapi/models/JobStatus.js +2 -2
- package/dist/openapi/models/JobType.d.ts +2 -2
- package/dist/openapi/models/JobType.js +2 -2
- package/dist/openapi/models/LivenessResponse.d.ts +2 -2
- package/dist/openapi/models/LivenessResponse.js +2 -2
- package/dist/openapi/models/LoginUser200Response.d.ts +2 -2
- package/dist/openapi/models/LoginUser200Response.js +2 -2
- package/dist/openapi/models/LoginUser200ResponseData.d.ts +2 -2
- package/dist/openapi/models/LoginUser200ResponseData.js +2 -2
- package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +2 -2
- package/dist/openapi/models/LoginUser200ResponseDataUser.js +2 -2
- package/dist/openapi/models/LoginUser401Response.d.ts +16 -6
- package/dist/openapi/models/LoginUser401Response.js +2 -2
- package/dist/openapi/models/LoginUserRequest.d.ts +2 -2
- package/dist/openapi/models/LoginUserRequest.js +2 -2
- package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +21 -8
- package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +2 -2
- package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +2 -2
- package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +2 -2
- package/dist/openapi/models/MetadataResponse.d.ts +2 -2
- package/dist/openapi/models/MetadataResponse.js +2 -2
- package/dist/openapi/models/MetadataResponseDimensions.d.ts +2 -2
- package/dist/openapi/models/MetadataResponseDimensions.js +2 -2
- package/dist/openapi/models/MetadataResponseExif.d.ts +2 -2
- package/dist/openapi/models/MetadataResponseExif.js +2 -2
- package/dist/openapi/models/MetadataResponseExifGps.d.ts +2 -2
- package/dist/openapi/models/MetadataResponseExifGps.js +2 -2
- package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/MetadataSuccessEnvelope.js +2 -2
- package/dist/openapi/models/MimeGroupSchema.d.ts +64 -15
- package/dist/openapi/models/MimeGroupSchema.js +12 -2
- package/dist/openapi/models/MultiInputSource.d.ts +2 -2
- package/dist/openapi/models/MultiInputSource.js +2 -2
- package/dist/openapi/models/MultipartCompleteRequest.d.ts +2 -2
- package/dist/openapi/models/MultipartCompleteRequest.js +2 -2
- package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +2 -2
- package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +2 -2
- package/dist/openapi/models/MultipartCompleteResponse.d.ts +2 -2
- package/dist/openapi/models/MultipartCompleteResponse.js +2 -2
- package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +2 -2
- package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +2 -2
- package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +2 -2
- package/dist/openapi/models/MultipartInitiateResponse.d.ts +2 -2
- package/dist/openapi/models/MultipartInitiateResponse.js +2 -2
- package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +2 -2
- package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +2 -2
- package/dist/openapi/models/MultipartKeepaliveResponse.js +2 -2
- package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +2 -2
- package/dist/openapi/models/MultipartPartListing.d.ts +2 -2
- package/dist/openapi/models/MultipartPartListing.js +2 -2
- package/dist/openapi/models/MultipartPresignRequest.d.ts +2 -2
- package/dist/openapi/models/MultipartPresignRequest.js +2 -2
- package/dist/openapi/models/MultipartPresignResponse.d.ts +2 -2
- package/dist/openapi/models/MultipartPresignResponse.js +2 -2
- package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +2 -2
- package/dist/openapi/models/MultipartStatusResponse.d.ts +2 -2
- package/dist/openapi/models/MultipartStatusResponse.js +2 -2
- package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +2 -2
- package/dist/openapi/models/NotifyConfig.d.ts +9 -5
- package/dist/openapi/models/NotifyConfig.js +2 -2
- package/dist/openapi/models/OperationCapability.d.ts +2 -2
- package/dist/openapi/models/OperationCapability.js +2 -2
- package/dist/openapi/models/OperationDefinition.d.ts +2 -2
- package/dist/openapi/models/OperationDefinition.js +2 -2
- package/dist/openapi/models/OperationDownload.d.ts +2 -2
- package/dist/openapi/models/OperationDownload.js +2 -2
- package/dist/openapi/models/OperationInputModel.d.ts +2 -2
- package/dist/openapi/models/OperationInputModel.js +2 -2
- package/dist/openapi/models/OperationMessageParamsValue.d.ts +25 -0
- package/dist/openapi/models/OperationMessageParamsValue.js +31 -0
- package/dist/openapi/models/OperationResponse.d.ts +36 -2
- package/dist/openapi/models/OperationResponse.js +8 -2
- package/dist/openapi/models/OperationResult.d.ts +2 -2
- package/dist/openapi/models/OperationResult.js +2 -2
- package/dist/openapi/models/OperationResultMetadata.d.ts +29 -3
- package/dist/openapi/models/OperationResultMetadata.js +6 -2
- package/dist/openapi/models/OperationResultMetrics.d.ts +2 -2
- package/dist/openapi/models/OperationResultMetrics.js +2 -2
- package/dist/openapi/models/OperationSchemaDefinition.d.ts +8 -8
- package/dist/openapi/models/OperationSchemaDefinition.js +2 -2
- package/dist/openapi/models/OperationStatus.d.ts +2 -2
- package/dist/openapi/models/OperationStatus.js +2 -2
- package/dist/openapi/models/OperationType.d.ts +11 -5
- package/dist/openapi/models/OperationType.js +11 -5
- package/dist/openapi/models/OperationsSchemaResponse.d.ts +2 -2
- package/dist/openapi/models/OperationsSchemaResponse.js +2 -2
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +2 -2
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +2 -2
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +2 -2
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +2 -2
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +2 -2
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +2 -2
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +2 -2
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +2 -2
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +2 -2
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +2 -2
- package/dist/openapi/models/OptionSchema.d.ts +36 -2
- package/dist/openapi/models/OptionSchema.js +10 -2
- package/dist/openapi/models/OutputProperties.d.ts +2 -2
- package/dist/openapi/models/OutputProperties.js +2 -2
- package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +2 -2
- package/dist/openapi/models/OutputPropertiesIsAnimated.js +2 -2
- package/dist/openapi/models/PerClassAvailabilityEntry.d.ts +2 -2
- package/dist/openapi/models/PerClassAvailabilityEntry.js +2 -2
- package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +2 -2
- package/dist/openapi/models/PerRoleCardinalityEntry.js +2 -2
- package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +2 -2
- package/dist/openapi/models/PerValueAvailabilityEntry.js +2 -2
- package/dist/openapi/models/PresignedUrlPart.d.ts +2 -2
- package/dist/openapi/models/PresignedUrlPart.js +2 -2
- package/dist/openapi/models/ProbePendingResponse.d.ts +16 -6
- package/dist/openapi/models/ProbePendingResponse.js +2 -2
- package/dist/openapi/models/ProcessingClass.d.ts +2 -2
- package/dist/openapi/models/ProcessingClass.js +2 -2
- package/dist/openapi/models/ProcessingClassBandViolation.d.ts +2 -2
- package/dist/openapi/models/ProcessingClassBandViolation.js +2 -2
- package/dist/openapi/models/ProcessingClassConstraints.d.ts +2 -2
- package/dist/openapi/models/ProcessingClassConstraints.js +2 -2
- package/dist/openapi/models/ProcessingClassEntry.d.ts +2 -2
- package/dist/openapi/models/ProcessingClassEntry.js +2 -2
- package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +16 -6
- package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +2 -2
- package/dist/openapi/models/ProcessingClassHint.d.ts +2 -2
- package/dist/openapi/models/ProcessingClassHint.js +2 -2
- package/dist/openapi/models/ProcessingClassReason.d.ts +2 -2
- package/dist/openapi/models/ProcessingClassReason.js +2 -2
- package/dist/openapi/models/ProcessingClassRejectReason.d.ts +2 -2
- package/dist/openapi/models/ProcessingClassRejectReason.js +2 -2
- package/dist/openapi/models/ProcessingPlan.d.ts +2 -2
- package/dist/openapi/models/ProcessingPlan.js +2 -2
- package/dist/openapi/models/ProcessingPlanJob.d.ts +2 -2
- package/dist/openapi/models/ProcessingPlanJob.js +2 -2
- package/dist/openapi/models/ReEncodeDecision.d.ts +2 -2
- package/dist/openapi/models/ReEncodeDecision.js +2 -2
- package/dist/openapi/models/ReadinessResponse.d.ts +2 -2
- package/dist/openapi/models/ReadinessResponse.js +2 -2
- package/dist/openapi/models/RegisterUser422Response.d.ts +2 -2
- package/dist/openapi/models/RegisterUser422Response.js +2 -2
- package/dist/openapi/models/RegisterUserRequest.d.ts +2 -2
- package/dist/openapi/models/RegisterUserRequest.js +2 -2
- package/dist/openapi/models/RequestAccountDeletion200Response.d.ts +2 -2
- package/dist/openapi/models/RequestAccountDeletion200Response.js +2 -2
- package/dist/openapi/models/RequestAccountDeletion200ResponseData.d.ts +2 -2
- package/dist/openapi/models/RequestAccountDeletion200ResponseData.js +2 -2
- package/dist/openapi/models/RequestAccountDeletionRequest.d.ts +2 -2
- package/dist/openapi/models/RequestAccountDeletionRequest.js +2 -2
- package/dist/openapi/models/ResendVerificationEmailRequest.d.ts +2 -2
- package/dist/openapi/models/ResendVerificationEmailRequest.js +2 -2
- package/dist/openapi/models/ResetPasswordRequest.d.ts +2 -2
- package/dist/openapi/models/ResetPasswordRequest.js +2 -2
- package/dist/openapi/models/ResponseEnvelope.d.ts +2 -2
- package/dist/openapi/models/ResponseEnvelope.js +2 -2
- package/dist/openapi/models/RetryResponse.d.ts +2 -2
- package/dist/openapi/models/RetryResponse.js +2 -2
- package/dist/openapi/models/RetrySuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/RetrySuccessEnvelope.js +2 -2
- package/dist/openapi/models/SseCompletionBase.d.ts +2 -2
- package/dist/openapi/models/SseCompletionBase.js +2 -2
- package/dist/openapi/models/SseConnectionLimitResponse.d.ts +183 -0
- package/dist/openapi/models/SseConnectionLimitResponse.js +65 -0
- package/dist/openapi/models/SseEventType.d.ts +2 -2
- package/dist/openapi/models/SseEventType.js +2 -2
- package/dist/openapi/models/SseJobCompletedData.d.ts +2 -2
- package/dist/openapi/models/SseJobCompletedData.js +2 -2
- package/dist/openapi/models/SseJobFailedData.d.ts +2 -2
- package/dist/openapi/models/SseJobFailedData.js +2 -2
- package/dist/openapi/models/SseMultiOutputCompletion.d.ts +2 -2
- package/dist/openapi/models/SseMultiOutputCompletion.js +2 -2
- package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +2 -2
- package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +2 -2
- package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +2 -2
- package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +2 -2
- package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +2 -2
- package/dist/openapi/models/SseMultiOutputResultEntry.js +2 -2
- package/dist/openapi/models/SseOperationCompletedData.d.ts +2 -2
- package/dist/openapi/models/SseOperationCompletedData.js +2 -2
- package/dist/openapi/models/SseOperationCompletionResult.d.ts +2 -2
- package/dist/openapi/models/SseOperationCompletionResult.js +2 -2
- package/dist/openapi/models/SseOperationFailedData.d.ts +33 -2
- package/dist/openapi/models/SseOperationFailedData.js +8 -2
- package/dist/openapi/models/SseOperationProgressData.d.ts +2 -2
- package/dist/openapi/models/SseOperationProgressData.js +2 -2
- package/dist/openapi/models/SseSingleOutputCompletion.d.ts +2 -2
- package/dist/openapi/models/SseSingleOutputCompletion.js +2 -2
- package/dist/openapi/models/SseWorkflowTerminalData.d.ts +2 -2
- package/dist/openapi/models/SseWorkflowTerminalData.js +2 -2
- package/dist/openapi/models/TierRestrictionKind.d.ts +2 -2
- package/dist/openapi/models/TierRestrictionKind.js +2 -2
- package/dist/openapi/models/TierRestrictionResponse.d.ts +16 -6
- package/dist/openapi/models/TierRestrictionResponse.js +2 -2
- package/dist/openapi/models/UpdateProfile200Response.d.ts +2 -2
- package/dist/openapi/models/UpdateProfile200Response.js +2 -2
- package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +2 -2
- package/dist/openapi/models/UpdateProfile200ResponseData.js +2 -2
- package/dist/openapi/models/UpdateProfile422Response.d.ts +2 -2
- package/dist/openapi/models/UpdateProfile422Response.js +2 -2
- package/dist/openapi/models/UpdateProfileRequest.d.ts +2 -2
- package/dist/openapi/models/UpdateProfileRequest.js +2 -2
- package/dist/openapi/models/UploadConstraintsApplied.d.ts +2 -2
- package/dist/openapi/models/UploadConstraintsApplied.js +2 -2
- package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +16 -6
- package/dist/openapi/models/UploadDurationExceedsTierResponse.js +2 -2
- package/dist/openapi/models/UploadFile403Response.d.ts +2 -2
- package/dist/openapi/models/UploadFile403Response.js +2 -2
- package/dist/openapi/models/UploadFile422Response.d.ts +2 -2
- package/dist/openapi/models/UploadFile422Response.js +2 -2
- package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +2 -2
- package/dist/openapi/models/UploadProbeMediaMetadata.js +2 -2
- package/dist/openapi/models/UploadProbeProcessingClass.d.ts +6 -5
- package/dist/openapi/models/UploadProbeProcessingClass.js +6 -5
- package/dist/openapi/models/UploadProbeResponse.d.ts +2 -2
- package/dist/openapi/models/UploadProbeResponse.js +2 -2
- package/dist/openapi/models/UploadProbeStatus.d.ts +2 -2
- package/dist/openapi/models/UploadProbeStatus.js +2 -2
- package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/UploadProbeSuccessEnvelope.js +2 -2
- package/dist/openapi/models/UploadResponse.d.ts +2 -2
- package/dist/openapi/models/UploadResponse.js +2 -2
- package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +16 -6
- package/dist/openapi/models/UploadSizeExceedsTierResponse.js +2 -2
- package/dist/openapi/models/UploadSource.d.ts +2 -2
- package/dist/openapi/models/UploadSource.js +2 -2
- package/dist/openapi/models/UploadSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/UploadSuccessEnvelope.js +2 -2
- package/dist/openapi/models/UploadThresholds.d.ts +2 -2
- package/dist/openapi/models/UploadThresholds.js +2 -2
- package/dist/openapi/models/UserTier.d.ts +2 -2
- package/dist/openapi/models/UserTier.js +2 -2
- package/dist/openapi/models/ValidationErrorEnvelope.d.ts +19 -8
- package/dist/openapi/models/ValidationErrorEnvelope.js +2 -2
- package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +2 -2
- package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +2 -2
- package/dist/openapi/models/VerifyEmailRequest.d.ts +2 -2
- package/dist/openapi/models/VerifyEmailRequest.js +2 -2
- package/dist/openapi/models/WarningType.d.ts +2 -2
- package/dist/openapi/models/WarningType.js +2 -2
- package/dist/openapi/models/WebhookOperationContext.d.ts +2 -2
- package/dist/openapi/models/WebhookOperationContext.js +2 -2
- package/dist/openapi/models/WebhookPayload.d.ts +2 -2
- package/dist/openapi/models/WebhookPayload.js +2 -2
- package/dist/openapi/models/WorkflowArchiveResponse.d.ts +2 -2
- package/dist/openapi/models/WorkflowArchiveResponse.js +2 -2
- package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.js +2 -2
- package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +7 -6
- package/dist/openapi/models/WorkflowCancelBillingEffect.js +7 -6
- package/dist/openapi/models/WorkflowCancelResponse.d.ts +2 -2
- package/dist/openapi/models/WorkflowCancelResponse.js +2 -2
- package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +2 -2
- package/dist/openapi/models/WorkflowCreateRequest.d.ts +11 -14
- package/dist/openapi/models/WorkflowCreateRequest.js +2 -2
- package/dist/openapi/models/WorkflowCreateResponse.d.ts +2 -2
- package/dist/openapi/models/WorkflowCreateResponse.js +2 -2
- package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +2 -2
- package/dist/openapi/models/WorkflowCreditSummary.d.ts +2 -2
- package/dist/openapi/models/WorkflowCreditSummary.js +2 -2
- package/dist/openapi/models/WorkflowDownloadResponse.d.ts +2 -2
- package/dist/openapi/models/WorkflowDownloadResponse.js +2 -2
- package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +2 -2
- package/dist/openapi/models/WorkflowEdge.d.ts +2 -2
- package/dist/openapi/models/WorkflowEdge.js +2 -2
- package/dist/openapi/models/WorkflowExpiredResponse.d.ts +16 -6
- package/dist/openapi/models/WorkflowExpiredResponse.js +2 -2
- package/dist/openapi/models/WorkflowListResponse.d.ts +2 -2
- package/dist/openapi/models/WorkflowListResponse.js +2 -2
- package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/WorkflowListSuccessEnvelope.js +2 -2
- package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +2 -2
- package/dist/openapi/models/WorkflowPauseRequiredAction.js +2 -2
- package/dist/openapi/models/WorkflowPausedDetail.d.ts +2 -2
- package/dist/openapi/models/WorkflowPausedDetail.js +2 -2
- package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +2 -2
- package/dist/openapi/models/WorkflowPausedDetailLinks.js +2 -2
- package/dist/openapi/models/WorkflowProcessing.d.ts +2 -2
- package/dist/openapi/models/WorkflowProcessing.js +2 -2
- package/dist/openapi/models/WorkflowRestoreResponse.d.ts +2 -2
- package/dist/openapi/models/WorkflowRestoreResponse.js +2 -2
- package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.js +2 -2
- package/dist/openapi/models/WorkflowResumeResponse.d.ts +2 -2
- package/dist/openapi/models/WorkflowResumeResponse.js +2 -2
- package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +2 -2
- package/dist/openapi/models/WorkflowSource.d.ts +2 -2
- package/dist/openapi/models/WorkflowSource.js +2 -2
- package/dist/openapi/models/WorkflowStatus.d.ts +2 -2
- package/dist/openapi/models/WorkflowStatus.js +2 -2
- package/dist/openapi/models/WorkflowStatusResponse.d.ts +5 -3
- package/dist/openapi/models/WorkflowStatusResponse.js +2 -2
- package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +2 -2
- package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +2 -2
- package/dist/openapi/models/WorkflowSummary.d.ts +2 -2
- package/dist/openapi/models/WorkflowSummary.js +2 -2
- package/dist/openapi/models/WorkflowSummaryJob.d.ts +2 -2
- package/dist/openapi/models/WorkflowSummaryJob.js +2 -2
- package/dist/openapi/models/WorkflowWarning.d.ts +2 -2
- package/dist/openapi/models/WorkflowWarning.js +2 -2
- package/dist/openapi/models/WorkflowWarningSeverity.d.ts +2 -2
- package/dist/openapi/models/WorkflowWarningSeverity.js +2 -2
- package/dist/openapi/models/index.d.ts +4 -0
- package/dist/openapi/models/index.js +4 -0
- package/dist/openapi/runtime.d.ts +2 -2
- package/dist/openapi/runtime.js +2 -2
- package/dist/operations/archive.metadata.js +1 -0
- package/dist/operations/audio_overlay.metadata.js +1 -2
- package/dist/operations/audio_to_video.metadata.js +1 -0
- package/dist/operations/audio_watermark.metadata.js +4 -9
- package/dist/operations/compress.metadata.js +0 -1
- package/dist/operations/convert.metadata.js +0 -1
- package/dist/operations/custom_luma.metadata.js +1 -3
- package/dist/operations/image_watermark.metadata.js +1 -0
- package/dist/operations/merge.metadata.js +1 -1
- package/dist/operations/metadata-types.d.ts +2 -0
- package/dist/operations/split.metadata.js +12 -4
- package/dist/operations/text_watermark.metadata.js +1 -0
- package/dist/operations/thumbnail.metadata.js +0 -1
- package/dist/operations/transform.metadata.js +0 -1
- package/dist/operations/video_text_watermark.metadata.js +2 -1
- package/dist/operations/video_watermark.metadata.js +1 -1
- package/openapi/README.md +1 -1
- package/openapi/api.yaml +743 -189
- package/operation-capabilities/operation-capabilities.json +1 -1
- package/operations/schemas/audio_overlay.yaml +2 -4
- package/operations/schemas/audio_watermark.yaml +34 -33
- package/operations/schemas/compress.yaml +265 -165
- package/operations/schemas/convert.yaml +12 -2
- package/operations/schemas/custom_luma.yaml +5 -7
- package/operations/schemas/merge.yaml +8 -3
- package/operations/schemas/split.yaml +223 -21
- package/operations/schemas/thumbnail.yaml +35 -28
- package/operations/schemas/transform.yaml +1 -2
- package/operations/schemas/video_text_watermark.yaml +75 -18
- package/operations/schemas/video_watermark.yaml +50 -15
- package/package.json +3 -3
|
@@ -3,12 +3,12 @@ schema_version: "2.0.0"
|
|
|
3
3
|
operation:
|
|
4
4
|
type: custom_luma
|
|
5
5
|
availability: planned
|
|
6
|
-
required_tier: pro
|
|
7
6
|
description: |
|
|
8
7
|
Apply a caller-uploaded luma matte (transition-mask) over a base
|
|
9
8
|
video to produce a custom luma-matte transition effect. Inspired
|
|
10
9
|
by Cloudinary's deprecated luma-matte custom transitions and
|
|
11
|
-
intended as a
|
|
10
|
+
intended as a creative feature, metered by credits like every
|
|
11
|
+
other operation (no tier gate — decision 26, 2026-09-23).
|
|
12
12
|
|
|
13
13
|
**NOT** related to the `xfade=custom` expression-mode transition
|
|
14
14
|
parameter. The `merge.transition.custom` value is tagged `planned`
|
|
@@ -52,13 +52,12 @@ operation:
|
|
|
52
52
|
- video/webm
|
|
53
53
|
processing_class:
|
|
54
54
|
# F8 long-form video tier (per ticket I15-CONS). custom_luma
|
|
55
|
-
# is itself `availability: planned`
|
|
56
|
-
#
|
|
55
|
+
# is itself `availability: planned` at the operation level
|
|
56
|
+
# (no tier gate — decision 26, owner ruling 2026-09-23); the per-class shape lands now to
|
|
57
57
|
# keep SDK/sidecar shape forward-compatible when the operation
|
|
58
58
|
# ships.
|
|
59
59
|
short_form:
|
|
60
60
|
availability: planned
|
|
61
|
-
required_tier: pro
|
|
62
61
|
constraints:
|
|
63
62
|
max_input_duration: "PT5M"
|
|
64
63
|
max_input_size_bytes: 524288000
|
|
@@ -68,8 +67,7 @@ operation:
|
|
|
68
67
|
# merge.video.long_form_re_encode). Per-tier caps per ADR-0011 —
|
|
69
68
|
# advertised shape; availability gates execution off (422).
|
|
70
69
|
availability: planned
|
|
71
|
-
|
|
72
|
-
constraints: # baseline = Pro
|
|
70
|
+
constraints: # baseline = every tier without a per_tier_constraints override
|
|
73
71
|
max_input_duration: "PT12H"
|
|
74
72
|
max_input_size_bytes: 5000000000 # 5 GB (Pro)
|
|
75
73
|
max_output_size_bytes: 5000000000
|
|
@@ -41,7 +41,13 @@ operation:
|
|
|
41
41
|
max: 5000
|
|
42
42
|
default: 500
|
|
43
43
|
depends_on: { output_type: gif }
|
|
44
|
-
|
|
44
|
+
# GIF stores frame delays in centiseconds (DkucstQG, lambdas MSG
|
|
45
|
+
# 482596c7): 15 ms alternates 20/10 per frame on prod ffmpeg 7.1.1 today;
|
|
46
|
+
# lambdas KbmfS94r rounds uniformly to the nearest 10 ms. Deliberately NOT
|
|
47
|
+
# `multipleOf: 10` — that would 422 values accepted today.
|
|
48
|
+
description: >-
|
|
49
|
+
Milliseconds between frames. GIF timing has a 10 ms resolution, so use
|
|
50
|
+
a multiple of 10 — other values cannot be shown exactly.
|
|
45
51
|
loop_count:
|
|
46
52
|
type: integer
|
|
47
53
|
min: 0
|
|
@@ -190,8 +196,7 @@ operation:
|
|
|
190
196
|
# max_total_duration (24h single-pass budget, SPIKE-0); size is the
|
|
191
197
|
# per-tier secondary cap.
|
|
192
198
|
availability: stable
|
|
193
|
-
|
|
194
|
-
constraints: # baseline = Pro (lowest permitted)
|
|
199
|
+
constraints: # baseline = every tier without a per_tier_constraints override
|
|
195
200
|
max_total_duration: "PT24H" # 24h (was PT12H) — binding Enterprise ceiling
|
|
196
201
|
max_total_input_size_bytes: 5000000000 # 5 GB combined (Pro)
|
|
197
202
|
per_tier_constraints:
|
|
@@ -66,7 +66,8 @@ operation:
|
|
|
66
66
|
|
|
67
67
|
**`precision` flag** (audio + video only): `fast` (default) =
|
|
68
68
|
packet-boundary approximate cuts; `exact` = re-encode-aligned
|
|
69
|
-
precise cuts
|
|
69
|
+
precise cuts (`planned` — the API refuses it at create until the
|
|
70
|
+
re-encode path is priced). Mime_group scoping is the gate — precision does
|
|
70
71
|
NOT apply to GIF or PDF (frame extraction is exact and PDF page
|
|
71
72
|
selection is exact by definition).
|
|
72
73
|
|
|
@@ -92,8 +93,9 @@ operation:
|
|
|
92
93
|
description: |
|
|
93
94
|
Silence-detect cut mode for audio (`mode: silence` —
|
|
94
95
|
server-side silence detection). `beta`: shape-stable + opt-in.
|
|
95
|
-
|
|
96
|
-
|
|
96
|
+
Accepted at workflow-create by any API build that vendors this
|
|
97
|
+
value, since the validator reads the enum from the vendored
|
|
98
|
+
schema. The `silence` enum value carries a
|
|
97
99
|
matching `per_value_availability: beta` on `audio.mode`.
|
|
98
100
|
|
|
99
101
|
mime_groups:
|
|
@@ -149,12 +151,17 @@ operation:
|
|
|
149
151
|
pattern: '^\d+(-\d+)?(,\d+(-\d+)?)*$'
|
|
150
152
|
required: true
|
|
151
153
|
depends_on: { mode: page_range }
|
|
152
|
-
description
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
154
|
+
# AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
|
|
155
|
+
# 2026-09-23 — frontend shows option descriptions to users). Preserved verbatim:
|
|
156
|
+
# Page-range expression (e.g. "1-5", "1,3,5-7", "10-20").
|
|
157
|
+
# 1-based inclusive. Required when `mode: page_range`.
|
|
158
|
+
# Resolved page count MUST be <= 200 (`invalid_options`
|
|
159
|
+
# 422 if exceeded — cross-ref
|
|
160
|
+
# [`WgCqnMRa`](https://trello.com/c/WgCqnMRa)).
|
|
161
|
+
description: >-
|
|
162
|
+
Pages to extract, e.g. "1-5", "1,3,5-7" or "10-20" — 1-based and
|
|
163
|
+
inclusive. Required when `mode: page_range`. At most 200 pages;
|
|
164
|
+
more is refused with `invalid_options`.
|
|
158
165
|
|
|
159
166
|
page_groups:
|
|
160
167
|
type: integer
|
|
@@ -172,6 +179,104 @@ operation:
|
|
|
172
179
|
# Audio base — three modes + precision flag.
|
|
173
180
|
audio:
|
|
174
181
|
availability: beta
|
|
182
|
+
|
|
183
|
+
# 🔴 THE WORKER IMPOSES NO BYTE CEILING ON AUDIO. Declared OUT LOUD rather
|
|
184
|
+
# than left silent, because silence and "no limit" look identical to a
|
|
185
|
+
# consumer and this contract has already been bitten by that: on
|
|
186
|
+
# 2026-08-26 a 128,232,024-byte EPUB was ACCEPTED, BILLED, and then
|
|
187
|
+
# refused by a 104,857,600 worker ceiling that appeared in no schema.
|
|
188
|
+
# Accepted, billed, refused — see FORMAT.md §`input_size_bound`.
|
|
189
|
+
#
|
|
190
|
+
# Confirmed in `compression_lambdas` `crates/split` at 22aec09, by reading
|
|
191
|
+
# rather than inferring: `process_audio` receives `actual_size` and uses it
|
|
192
|
+
# for exactly ONE thing — reporting it back as `original_size_bytes`. It is
|
|
193
|
+
# never compared against anything. The 524,288,000 guard in that crate is
|
|
194
|
+
# on the VIDEO path only (its error text says "split video: input size …
|
|
195
|
+
# exceeds the short-form ceiling"); audio never reaches it.
|
|
196
|
+
#
|
|
197
|
+
# ⚠️ THIS IS A STATEMENT ABOUT THE BOUND'S KIND, NOT A PROMISE OF UNLIMITED
|
|
198
|
+
# INPUT. A large audio file still fails — it fails on a CLOCK, which a
|
|
199
|
+
# consumer cannot pre-validate against and must not be told it can.
|
|
200
|
+
input_size_bound: processing_time
|
|
201
|
+
|
|
202
|
+
# ⛔ NO `max_input_duration` HERE, AND THE ABSENCE IS A DECISION THIS TIME.
|
|
203
|
+
# The two `precision` values have genuinely different duration behaviour
|
|
204
|
+
# and the contract has no primitive that can say so:
|
|
205
|
+
#
|
|
206
|
+
# 🔴 TODAY THE API REFUSES `exact` AT CREATE for every split (audio and
|
|
207
|
+
# video) — the deliberate "re-encode path not yet priced" gate
|
|
208
|
+
# (`compression_api` SplitOptionsValidator, reported 2026-09-23, Q8QsYYNn).
|
|
209
|
+
# So `exact` never reaches a worker, and `per_value_availability` tags it
|
|
210
|
+
# `planned`. The worker behaviour below is what `exact` WILL do once the
|
|
211
|
+
# API admits it:
|
|
212
|
+
#
|
|
213
|
+
# `exact` computes a time budget from the probed duration and refuses
|
|
214
|
+
# when it does not fit — WORKER-SIDE, after download and probe
|
|
215
|
+
# (`processor.rs` reads `probe.duration_secs`), returning a
|
|
216
|
+
# terminal result with `error_code: invalid_options`.
|
|
217
|
+
# `fast` has no check at all. Past the point where its deadline
|
|
218
|
+
# saturates, the budget stops growing while the work keeps
|
|
219
|
+
# growing: it degrades into a TIMEOUT rather than a named
|
|
220
|
+
# refusal.
|
|
221
|
+
#
|
|
222
|
+
# 🔴 **TWO LIMITS EXIST AND THE SMALLER ONE BINDS. THE CRATE NAMES THE
|
|
223
|
+
# LARGER.** The worker carries an internal time budget; the Lambda function
|
|
224
|
+
# carries a platform timeout. **The effective boundary is the LOWER of the
|
|
225
|
+
# two**, and the internal budget sits ABOVE the platform timeout.
|
|
226
|
+
#
|
|
227
|
+
# ⇒ **`exact`'s refusal threshold is calibrated to a limit that is not the
|
|
228
|
+
# one that ends the job.** There is a band of inputs that PASS the budget
|
|
229
|
+
# check — the worker judges them fine — and are then hard-killed by the
|
|
230
|
+
# platform mid-encode, with no named cause. The check does not protect the
|
|
231
|
+
# caller at the top of its own range; it just does not refuse them.
|
|
232
|
+
#
|
|
233
|
+
# ⚠️ **IT DOES NOT MAKE THE REFUSAL UNREACHABLE, AND AN EARLIER DRAFT OF
|
|
234
|
+
# THIS COMMENT SAID IT DID.** `exact_budget_fits` runs immediately after
|
|
235
|
+
# download and probe and BEFORE any re-encode (`processor.rs`, whose own
|
|
236
|
+
# comment says it rejects "upfront rather than timing out mid-run"), so a
|
|
237
|
+
# long-but-small input reaches it in seconds and does return
|
|
238
|
+
# `invalid_options`. **The draft conflated two different quantities:** the
|
|
239
|
+
# PROBED INPUT DURATION the check reads, and the ELAPSED WALL CLOCK the
|
|
240
|
+
# platform timeout measures. Those are different axes — which is the exact
|
|
241
|
+
# error this whole correction exists to fix, committed inside the fix.
|
|
242
|
+
#
|
|
243
|
+
# ⛔ **NO FIGURE IS PUBLISHED HERE, DELIBERATELY** (hub decision 509).
|
|
244
|
+
# v2.205.0 published numbers keyed to the crate constant — the LARGER limit,
|
|
245
|
+
# the one that does not bind — which is the same mistake its own entry warns
|
|
246
|
+
# about: *taking the number the code names without asking what the platform
|
|
247
|
+
# does first*. The figure lands only when lambdas' internal-budget derivation
|
|
248
|
+
# settles AND a job is measured near it. **A number that is wrong is worse
|
|
249
|
+
# than an absent number the shape explains**, because a consumer will
|
|
250
|
+
# pre-validate against it.
|
|
251
|
+
#
|
|
252
|
+
# ⚠️ **THIS IS AN AUDIO-ONLY EXPOSURE, AND THE REASON IS THIS VERY ABSENCE.**
|
|
253
|
+
# The `video` group's `short_form` class declares `max_input_duration`, which
|
|
254
|
+
# the API ENFORCES AT CREATE well below any of these boundaries, so a video
|
|
255
|
+
# job never reaches the inversion; long-form video is a different worker
|
|
256
|
+
# entirely. Audio declares no duration cap — that is what leaves the clock
|
|
257
|
+
# bound reachable here and nowhere else.
|
|
258
|
+
#
|
|
259
|
+
# ⇒ A single group-level number would be wrong in one direction or the
|
|
260
|
+
# other. Declaring one WOULD make the API refuse at CREATE — a declared
|
|
261
|
+
# ceiling is enforced there — withdrawing `fast` jobs that complete today,
|
|
262
|
+
# which is the direction the SVG incident ran in. A higher number would
|
|
263
|
+
# under-state what `exact` refuses.
|
|
264
|
+
# ⚠️ AND NEITHER DURATION BOUND IS ENFORCED AT CREATE TODAY (`exact` is
|
|
265
|
+
# refused at create outright, which is not a duration bound): both are worker-side,
|
|
266
|
+
# after the job is accepted, billed and downloaded. Declaring one would MOVE
|
|
267
|
+
# the refusal earlier, which is a real improvement for the value it fits and
|
|
268
|
+
# a real withdrawal for the value it does not.
|
|
269
|
+
# There is no `per_value_constraints` primitive (only `per_tier_`), so the
|
|
270
|
+
# per-value rule lives on the `precision` option where the caller choosing
|
|
271
|
+
# it reads it — the same placement as every other cross-field rule in this
|
|
272
|
+
# contract. Tracked: the missing `per_value_constraints` vocabulary and the
|
|
273
|
+
# asymmetry that `fast` refuses nothing, both on
|
|
274
|
+
# https://trello.com/c/YsaOzPU1 . The figure itself: 02FfdivD.
|
|
275
|
+
#
|
|
276
|
+
# ⚠️ NOT MEASURED, AND THAT IS THE SECOND REASON FOR NO FIGURE. Every
|
|
277
|
+
# boundary here is READ FROM SOURCE, not observed: lambdas' audio fixtures
|
|
278
|
+
# top out at 145 s, a small fraction of any candidate cap. They say what the
|
|
279
|
+
# code WILL do, not what it DOES near the boundary on a real file.
|
|
175
280
|
mimes:
|
|
176
281
|
- audio/mpeg
|
|
177
282
|
- audio/aac
|
|
@@ -278,15 +383,106 @@ operation:
|
|
|
278
383
|
type: enum
|
|
279
384
|
values: [fast, exact]
|
|
280
385
|
default: fast
|
|
386
|
+
per_value_availability:
|
|
387
|
+
# The API refuses `exact` at create for every split — the deliberate
|
|
388
|
+
# unpriced re-encode gate (Q8QsYYNn). Advertising it as callable
|
|
389
|
+
# was a silent rejection of a spec-valid value.
|
|
390
|
+
exact: { availability: planned }
|
|
281
391
|
# Don't use "keyframe" language here — that's video-only;
|
|
282
392
|
# audio drift is packet-boundary.
|
|
283
|
-
description
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
393
|
+
# AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
|
|
394
|
+
# 2026-09-23 — frontend shows option descriptions to users). Preserved verbatim:
|
|
395
|
+
# Cut precision. Under `fast`, audio cuts are
|
|
396
|
+
# packet-boundary approximate (drift bounded by codec
|
|
397
|
+
# packet size — typically <= 23ms for AAC, <= 26ms for
|
|
398
|
+
# MP3). Under `exact`, the server re-encodes to align cuts
|
|
399
|
+
# precisely at the requested timestamps (slower, larger
|
|
400
|
+
# output, but sample-accurate).
|
|
401
|
+
#
|
|
402
|
+
# 🔴 **THE TWO VALUES HAVE DIFFERENT DURATION LIMITS, AND ONLY
|
|
403
|
+
# ONE OF THEM REFUSES.** This is stated here, on the option a
|
|
404
|
+
# caller chooses, because the group declares
|
|
405
|
+
# `input_size_bound: processing_time` and no
|
|
406
|
+
# `max_input_duration` — there is no per-value constraint
|
|
407
|
+
# primitive to carry it.
|
|
408
|
+
#
|
|
409
|
+
# 🔴 **TODAY `exact` IS REFUSED AT CREATE** — the API does not
|
|
410
|
+
# yet admit it for any split (the re-encode path is not yet
|
|
411
|
+
# priced), so it is tagged `planned` and a request carrying it
|
|
412
|
+
# is rejected before anything is uploaded, accepted or billed.
|
|
413
|
+
# **Everything below about `exact` describes the worker, i.e.
|
|
414
|
+
# what it will do once the API admits it.**
|
|
415
|
+
#
|
|
416
|
+
# `exact` is refused at create with `feature_not_available` (422),
|
|
417
|
+
# the contract's answer for a `planned` value (api
|
|
418
|
+
# SplitOptionsValidator leaves it to the generic planned-option
|
|
419
|
+
# gate; SplitAudioActivationCreateTest asserts the error_type).
|
|
420
|
+
# A consumer should not send it, as the `planned` tag says.
|
|
421
|
+
#
|
|
422
|
+
# ⛔ **`fast` GIVES NO PRE-FLIGHT SIGNAL, and neither will
|
|
423
|
+
# `exact` once admitted: both fail AFTER THE JOB IS ACCEPTED
|
|
424
|
+
# AND BILLED.** No duration ceiling is declared on this group,
|
|
425
|
+
# so the API cannot enforce one at create; the worker's own
|
|
426
|
+
# check reads a probe result, which means the input has already
|
|
427
|
+
# been uploaded, accepted and downloaded.
|
|
428
|
+
#
|
|
429
|
+
# - **`exact` (once admitted): refused when its computed time
|
|
430
|
+
# budget does not fit** — but WORKER-SIDE, after download and
|
|
431
|
+
# probe. The job
|
|
432
|
+
# returns a terminal `OperationResult` with `error_code:
|
|
433
|
+
# invalid_options`. ⚠️ It is NOT an HTTP 422 and it is not a
|
|
434
|
+
# create-time rejection: a worker cannot emit a status code.
|
|
435
|
+
# The boundary does not move with `count` — once the cap
|
|
436
|
+
# binds, the per-output term stops mattering.
|
|
437
|
+
# - **`fast` (the default): no boundary and no refusal at
|
|
438
|
+
# all.** Past the point where its deadline saturates, the time
|
|
439
|
+
# budget stops growing while the work does, so the job fails
|
|
440
|
+
# as a **TIMEOUT** rather than with any reason a caller can
|
|
441
|
+
# act on.
|
|
442
|
+
#
|
|
443
|
+
# 🔴 **TWO LIMITS EXIST AND THE SMALLER ONE BINDS.** The worker
|
|
444
|
+
# carries an internal time budget and the Lambda function
|
|
445
|
+
# carries a platform timeout; **the effective boundary is the
|
|
446
|
+
# LOWER of the two**, and the internal budget sits ABOVE the
|
|
447
|
+
# platform timeout.
|
|
448
|
+
#
|
|
449
|
+
# ⇒ **`exact`'s refusal threshold is calibrated to a limit that
|
|
450
|
+
# is not the one that ends the job.** Its check does fire, and
|
|
451
|
+
# fires early — it reads the probe result before any re-encode
|
|
452
|
+
# starts, so a long-but-small input is refused within seconds.
|
|
453
|
+
# But there is a band of inputs it judges FINE which the
|
|
454
|
+
# platform then hard-kills mid-encode, with no named cause. **So
|
|
455
|
+
# `exact` refusing is a reliable signal; `exact` NOT refusing is
|
|
456
|
+
# not a promise the job will finish.**
|
|
457
|
+
#
|
|
458
|
+
# ⛔ **NO SECONDS FIGURE IS GIVEN HERE, DELIBERATELY.** v2.205.0
|
|
459
|
+
# published figures keyed to the crate constant — the larger
|
|
460
|
+
# limit, the one that does not bind. The effective number lands
|
|
461
|
+
# only when that derivation settles AND a job is measured near
|
|
462
|
+
# it. **A published number a caller pre-validates against is
|
|
463
|
+
# worse wrong than absent**; the shape above is what a caller can
|
|
464
|
+
# actually act on today, which is: do not rely on either value
|
|
465
|
+
# failing gracefully.
|
|
466
|
+
#
|
|
467
|
+
# ⇒ `exact` (once admitted) at least names a cause when it is
|
|
468
|
+
# reached; `fast` never does. **On today's customer path only
|
|
469
|
+
# `fast` is the accept-then-bill-then-fail shape**,
|
|
470
|
+
# which is the very thing this group's `input_size_bound`
|
|
471
|
+
# declaration exists to stop happening silently on the BYTE
|
|
472
|
+
# axis. On the DURATION axis it is stated here and not yet
|
|
473
|
+
# fixed.
|
|
474
|
+
#
|
|
475
|
+
# ⚠️ Read from `compression_lambdas` `crates/split`. **NOT
|
|
476
|
+
# measured** — their audio fixtures reach 145 s, a small
|
|
477
|
+
# fraction of any candidate cap, so this describes what the code
|
|
478
|
+
# will do rather than observed behaviour at the boundary.
|
|
479
|
+
description: >-
|
|
480
|
+
Cut precision. `fast` (default) cuts at packet boundaries, so each cut
|
|
481
|
+
can drift by a few milliseconds (typically up to about 23 ms for AAC and
|
|
482
|
+
26 ms for MP3). `exact` re-encodes to cut precisely at the requested
|
|
483
|
+
timestamps; it is not yet available and is refused when the workflow is
|
|
484
|
+
created. Very long audio can run out of processing time and fail rather
|
|
485
|
+
than be refused up front.
|
|
290
486
|
|
|
291
487
|
# Video base — same three modes + precision + processing_class.
|
|
292
488
|
# Long-form routes to `split-video-fargate` (same OperationType,
|
|
@@ -305,14 +501,16 @@ operation:
|
|
|
305
501
|
max_input_size_bytes: 524288000
|
|
306
502
|
max_output_size_bytes: 524288000
|
|
307
503
|
long_form:
|
|
308
|
-
# planned -> beta (rcwvUKhI)
|
|
309
|
-
#
|
|
310
|
-
#
|
|
504
|
+
# planned -> beta (rcwvUKhI). Stays beta until a PRODUCTION
|
|
505
|
+
# `customer_path` run is recorded in availability/prod-verification-
|
|
506
|
+
# log.yaml; worker-direct staging runs up to 3.99 GiB are in the
|
|
507
|
+
# staging log as partial evidence only (no environment axis). Fan-out admission is
|
|
508
|
+
# the API's LONGFORM_FANOUT_ADMISSION_ENABLED, set per environment in
|
|
509
|
+
# compression_terraform; not restated here.
|
|
311
510
|
# Routes per ADR-0014 §D10 — same split OperationType, dedicated
|
|
312
511
|
# stream-copy segmenter binary (NOT the long-form compress worker).
|
|
313
512
|
availability: beta
|
|
314
|
-
|
|
315
|
-
constraints: # baseline = Pro
|
|
513
|
+
constraints: # baseline = every tier without a per_tier_constraints override
|
|
316
514
|
max_input_duration: "PT12H"
|
|
317
515
|
max_input_size_bytes: 5000000000 # 5 GB (Pro)
|
|
318
516
|
max_output_size_bytes: 5000000000
|
|
@@ -379,6 +577,10 @@ operation:
|
|
|
379
577
|
type: enum
|
|
380
578
|
values: [fast, exact]
|
|
381
579
|
default: fast
|
|
580
|
+
per_value_availability:
|
|
581
|
+
# Refused at create by the API for every split (Q8QsYYNn) as
|
|
582
|
+
# `feature_not_available`; see the note on `audio.options.precision`.
|
|
583
|
+
exact: { availability: planned }
|
|
382
584
|
description: |
|
|
383
585
|
Cut precision. Under `fast`, video cuts are keyframe-
|
|
384
586
|
aligned (drift bounded by GOP size — typically up to 1-2
|
|
@@ -66,14 +66,19 @@ operation:
|
|
|
66
66
|
max: 100
|
|
67
67
|
default: 85
|
|
68
68
|
depends_on: { format: [jpg, webp, png] }
|
|
69
|
+
# AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
|
|
70
|
+
# 2026-09-23 — frontend shows option descriptions to users). Preserved verbatim:
|
|
71
|
+
# Output quality for lossy thumbnail formats (jpg / webp / png): higher = better
|
|
72
|
+
# quality, larger file. For PNG, `quality` < 100 applies lossy palette quantization
|
|
73
|
+
# (transparency preserved); `quality: 100` keeps the PNG lossless. Per-format effective
|
|
74
|
+
# default (server-resolved when `quality` is unset, per ADR-0020 D1): PNG → 70 (more
|
|
75
|
+
# aggressive — thumbnails target small files), jpg/webp → 85. The schema `default` is
|
|
76
|
+
# the nominal jpg/webp value (85); the FE shows 70 as the initial PNG slider value.
|
|
69
77
|
description: >-
|
|
70
|
-
Output quality for
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
is unset, per ADR-0020 D1): PNG → 70 (more aggressive — thumbnails target
|
|
75
|
-
small files), jpg/webp → 85. The schema `default` is the nominal jpg/webp
|
|
76
|
-
value (85); the FE shows 70 as the initial PNG slider value.
|
|
78
|
+
Output quality for jpg, webp and png thumbnails: higher = better quality,
|
|
79
|
+
larger file. For PNG, a value below 100 reduces the colour palette
|
|
80
|
+
(transparency is kept) and 100 keeps it lossless. When unset, PNG
|
|
81
|
+
thumbnails use 70 and jpg/webp use 85.
|
|
77
82
|
background:
|
|
78
83
|
type: string
|
|
79
84
|
pattern: "^#[0-9a-fA-F]{6}$"
|
|
@@ -107,8 +112,7 @@ operation:
|
|
|
107
112
|
# advertised shape; availability gates execution off (422).
|
|
108
113
|
# No max_output_size_bytes: thumbnail output is a single bounded image.
|
|
109
114
|
availability: planned
|
|
110
|
-
|
|
111
|
-
constraints: # baseline = Pro
|
|
115
|
+
constraints: # baseline = every tier without a per_tier_constraints override
|
|
112
116
|
max_input_duration: "PT12H"
|
|
113
117
|
max_input_size_bytes: 5000000000 # 5 GB (Pro)
|
|
114
118
|
per_tier_constraints:
|
|
@@ -458,26 +462,29 @@ operation:
|
|
|
458
462
|
# Cargo.lock via usvg; `quick-xml` is absent.
|
|
459
463
|
# The build's real shape lives in the ticket and in lambdas' crate. This
|
|
460
464
|
# file states the CONTRACT: what is advertised, and what the API gates.
|
|
465
|
+
# AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
|
|
466
|
+
# 2026-09-23 — frontend shows option descriptions to users). Preserved verbatim:
|
|
467
|
+
# `cover` (the only supported value) = extract the EPUB's declared cover image — the
|
|
468
|
+
# cheap path, no rendering. Cover lookup supports both mechanisms: the EPUB 3
|
|
469
|
+
# `cover-image` property on an OPF manifest item, AND the legacy EPUB 2 `<meta
|
|
470
|
+
# name="cover" content="..."/>` pointing at a manifest item — supporting only the former
|
|
471
|
+
# would miss a large slice of real-world files. Both are staging-proven (pL16ZfOw Wave
|
|
472
|
+
# 3). A cover image is OPTIONAL per W3C EPUB 3.3, so a cover-less EPUB is a REAL and
|
|
473
|
+
# expected case: it fails with `error_code: processing_failed` and `is_retryable:
|
|
474
|
+
# false`. That is the live behaviour, not an aspiration — the worker classifies it as
|
|
475
|
+
# `CoverError::NoCoverDeclared` and maps it there (`epub/error.rs`), and
|
|
476
|
+
# non-retryability is DERIVED from the code rather than set per-call, so it cannot
|
|
477
|
+
# drift. A cover-less EPUB will not grow a cover, so retrying is always futile. A more
|
|
478
|
+
# specific code would be better, and is NOT promised here: `ErrorCode` (asyncapi) is a
|
|
479
|
+
# CLOSED enum with no "no cover" member, so adding one is a real cross-repo co-land
|
|
480
|
+
# (enum edit -> SDK regen -> lockstep). Until then this description states what actually
|
|
481
|
+
# happens — an undecided-reject note on a STABLE route would leave consumers unable to
|
|
482
|
+
# handle a case they will certainly meet.
|
|
461
483
|
description: >-
|
|
462
|
-
`cover` (the only supported value)
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
manifest item — supporting only the former would miss a large slice of
|
|
467
|
-
real-world files. Both are staging-proven (pL16ZfOw Wave 3).
|
|
468
|
-
A cover image is OPTIONAL per W3C EPUB 3.3, so a cover-less EPUB is a
|
|
469
|
-
REAL and expected case: it fails with `error_code: processing_failed`
|
|
470
|
-
and `is_retryable: false`. That is the live behaviour, not an aspiration
|
|
471
|
-
— the worker classifies it as `CoverError::NoCoverDeclared` and maps it
|
|
472
|
-
there (`epub/error.rs`), and non-retryability is DERIVED from the code
|
|
473
|
-
rather than set per-call, so it cannot drift. A cover-less EPUB will not
|
|
474
|
-
grow a cover, so retrying is always futile.
|
|
475
|
-
A more specific code would be better, and is NOT promised here:
|
|
476
|
-
`ErrorCode` (asyncapi) is a CLOSED enum with no "no cover" member, so
|
|
477
|
-
adding one is a real cross-repo co-land (enum edit -> SDK regen ->
|
|
478
|
-
lockstep). Until then this description states what actually happens —
|
|
479
|
-
an undecided-reject note on a STABLE route would leave consumers unable
|
|
480
|
-
to handle a case they will certainly meet.
|
|
484
|
+
`cover` (the only supported value) uses the EPUB's declared cover image;
|
|
485
|
+
no pages are rendered. Both EPUB 3 and legacy EPUB 2 cover declarations
|
|
486
|
+
are recognised. An EPUB without a cover cannot produce a thumbnail: the
|
|
487
|
+
job fails with `processing_failed` and retrying will not help.
|
|
481
488
|
width:
|
|
482
489
|
type: integer
|
|
483
490
|
min: 1
|
|
@@ -146,8 +146,7 @@ operation:
|
|
|
146
146
|
max_output_size_bytes: 524288000
|
|
147
147
|
long_form:
|
|
148
148
|
availability: planned
|
|
149
|
-
|
|
150
|
-
constraints: # baseline = Pro
|
|
149
|
+
constraints: # baseline = every tier without a per_tier_constraints override
|
|
151
150
|
max_input_duration: "PT12H"
|
|
152
151
|
max_input_size_bytes: 5000000000 # 5 GB (Pro)
|
|
153
152
|
max_output_size_bytes: 5000000000
|
|
@@ -55,8 +55,7 @@ operation:
|
|
|
55
55
|
max_output_size_bytes: 524288000
|
|
56
56
|
long_form:
|
|
57
57
|
availability: planned
|
|
58
|
-
|
|
59
|
-
constraints: # baseline = Pro
|
|
58
|
+
constraints: # baseline = every tier without a per_tier_constraints override
|
|
60
59
|
max_input_duration: "PT12H"
|
|
61
60
|
max_input_size_bytes: 5000000000 # 5 GB (Pro)
|
|
62
61
|
max_output_size_bytes: 5000000000
|
|
@@ -102,13 +101,17 @@ operation:
|
|
|
102
101
|
ticket).
|
|
103
102
|
|
|
104
103
|
rotation:
|
|
104
|
+
# AUTHOR NOTES: planned, and its -45.0 default REMOVED (clGOsvp2).
|
|
105
|
+
# lambdas' armed-defaults adjudication (D0DwvmjV, 2026-09-24, row 125)
|
|
106
|
+
# found the worker never reads it — drawtext is emitted unrotated — so
|
|
107
|
+
# the default was an armed promise nobody keeps. Marking alone does not
|
|
108
|
+
# disarm a default; it has to go. Restore both when the worker rotates.
|
|
105
109
|
type: float
|
|
106
110
|
min: -360.0
|
|
107
111
|
max: 360.0
|
|
108
|
-
|
|
112
|
+
availability: planned
|
|
109
113
|
description: |
|
|
110
|
-
Rotation angle in degrees.
|
|
111
|
-
(angled diagonal pattern). Clamped to range.
|
|
114
|
+
Rotation angle of the watermark text, in degrees. Not available yet.
|
|
112
115
|
|
|
113
116
|
watermark_mode:
|
|
114
117
|
type: enum
|
|
@@ -144,36 +147,90 @@ operation:
|
|
|
144
147
|
- bottom_center
|
|
145
148
|
- bottom_right
|
|
146
149
|
default: bottom_right
|
|
147
|
-
description
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
# AUTHOR NOTES (moved out of the user-facing description, ewOlw35Z,
|
|
151
|
+
# 2026-09-23 — frontend shows option descriptions to users). Preserved verbatim:
|
|
152
|
+
# 9-grid anchor position. For `watermark_mode: single`, the
|
|
153
|
+
# text label is placed at this anchor + margin_x/margin_y
|
|
154
|
+
# offset on each frame. For `watermark_mode: tiled`, anchor
|
|
155
|
+
# is ignored (tiles fill the frame).
|
|
156
|
+
#
|
|
157
|
+
# 🔴 **`center` IGNORES `margin_x` / `margin_y` rather than
|
|
158
|
+
# rejecting them. THE REJECTION AS WRITTEN CANNOT SURVIVE A
|
|
159
|
+
# NON-ZERO DEFAULT; IGNORING IS THE REPLACEMENT THAT WAS CHOSEN.**
|
|
160
|
+
# The sibling operations still reject a non-zero
|
|
161
|
+
# margin at `anchor: center` as `invalid_options` (422), and
|
|
162
|
+
# that rule is sound THERE because their margin default is
|
|
163
|
+
# `0px`: a client that materialises the default sends `0px`,
|
|
164
|
+
# which is not non-zero, so only a caller who actually asked
|
|
165
|
+
# for an offset is ever refused.
|
|
166
|
+
#
|
|
167
|
+
# ⛔ **Here the default is `2%`, and that makes the rejection
|
|
168
|
+
# rule unusable as written.** Schema-driven clients fill contract
|
|
169
|
+
# defaults BEFORE sending, so a request with `anchor: center`
|
|
170
|
+
# arrives carrying `margin_x: "2%"` whether the caller chose it
|
|
171
|
+
# or never mentioned margins at all. **After default
|
|
172
|
+
# materialisation an explicit value and a defaulted one are
|
|
173
|
+
# INDISTINGUISHABLE on the wire**, so a rejection cannot
|
|
174
|
+
# separate the mistake it exists to catch from the overwhelming
|
|
175
|
+
# majority of requests that simply accepted the default. It
|
|
176
|
+
# would 422 almost every centred watermark.
|
|
177
|
+
#
|
|
178
|
+
# ⚠️ **Rejection is not the only alternative, and this text does
|
|
179
|
+
# not claim it was forced.** A reject-if-it-differs-from-the-
|
|
180
|
+
# default rule would survive materialisation exactly as the zero
|
|
181
|
+
# rule does for the siblings. **Ignoring is the behaviour CHOSEN**
|
|
182
|
+
# under hub decision 465, because margins are meaningless when the
|
|
183
|
+
# label is centred and a no-op is kinder than a 422 on a request
|
|
184
|
+
# that renders correctly. The cost is stated: a caller who
|
|
185
|
+
# deliberately passes a margin with `anchor: center` gets silence
|
|
186
|
+
# rather than a correction.
|
|
187
|
+
#
|
|
188
|
+
# ⚠️ **DO NOT "align" `text_watermark` or `image_watermark` to
|
|
189
|
+
# this on the strength of the operation NAME.** Their rejection
|
|
190
|
+
# still works because their default is still `0px`. Changing one
|
|
191
|
+
# of THOSE defaults to non-zero is what would force the same move
|
|
192
|
+
# there — the trigger is a non-zero default, never the operation
|
|
193
|
+
# name. (`video_watermark` moved with this operation because its
|
|
194
|
+
# default moved too, under the same decision.)
|
|
195
|
+
description: >-
|
|
196
|
+
Where the text is placed on each frame, on a 3x3 grid. For
|
|
197
|
+
`watermark_mode: single` the text sits at this anchor, offset by
|
|
198
|
+
`margin_x` / `margin_y`. For `watermark_mode: tiled` the anchor is
|
|
199
|
+
ignored. With `center`, the margins are ignored.
|
|
152
200
|
|
|
153
201
|
margin_x:
|
|
154
202
|
type: string
|
|
155
203
|
pattern: '^\d+(\.\d+)?(px|%)$'
|
|
156
|
-
default: "
|
|
204
|
+
default: "2%"
|
|
157
205
|
description: |
|
|
158
206
|
Horizontal offset from the anchor as pixels (e.g. "40px")
|
|
159
207
|
or percentage of video frame width (e.g. "5%").
|
|
160
208
|
Anchor-relative. Ignored when `watermark_mode: tiled`.
|
|
161
209
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
210
|
+
**Defaults to `2%`, i.e. INSET from the frame edge**, because
|
|
211
|
+
a watermark flush against the edge is the wrong default for
|
|
212
|
+
video: player chrome, safe-area cropping and letterboxing all
|
|
213
|
+
eat the outermost pixels. **A true flush remains available by
|
|
214
|
+
passing `"0px"` explicitly** — the default is a default, not a
|
|
215
|
+
floor.
|
|
216
|
+
|
|
217
|
+
**`anchor: center`: margins are IGNORED** (watermark_mode:
|
|
218
|
+
single only). They are meaningless when the label is centred,
|
|
219
|
+
and this is deliberately a silent no-op rather than a
|
|
220
|
+
rejection. See the `anchor` description for why rejection is
|
|
221
|
+
not available here.
|
|
166
222
|
|
|
167
223
|
margin_y:
|
|
168
224
|
type: string
|
|
169
225
|
pattern: '^\d+(\.\d+)?(px|%)$'
|
|
170
|
-
default: "
|
|
226
|
+
default: "2%"
|
|
171
227
|
description: |
|
|
172
228
|
Vertical offset from the anchor as pixels or percentage of
|
|
173
229
|
video frame height. Ignored when `watermark_mode: tiled`.
|
|
174
230
|
|
|
175
|
-
|
|
176
|
-
|
|
231
|
+
**Defaults to `2%` (inset), for the reasons on `margin_x`**;
|
|
232
|
+
`"0px"` still gives a true flush. **`anchor: center`: ignored**,
|
|
233
|
+
same as `margin_x`.
|
|
177
234
|
|
|
178
235
|
opacity:
|
|
179
236
|
type: float
|