@giveitsmaller/contracts 0.48.0 → 0.50.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/accepted-options/accepted-options.json +29 -53
- package/accepted-options/image-output-routes.json +12 -22
- package/asyncapi/events.yaml +32 -6
- package/availability/availability.json +84 -261
- package/dist/asyncapi/OperationMetrics.d.ts +2 -0
- package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
- package/dist/openapi/models/AccountLimitEntry.js +1 -1
- package/dist/openapi/models/AccountLimits.d.ts +1 -1
- package/dist/openapi/models/AccountLimits.js +1 -1
- package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
- package/dist/openapi/models/AccountLimitsLimits.js +1 -1
- package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
- 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/AuthRejectionEnvelope.d.ts +1 -1
- package/dist/openapi/models/AuthRejectionEnvelope.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/CapabilityCondition.d.ts +1 -1
- package/dist/openapi/models/CapabilityCondition.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
- package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
- package/dist/openapi/models/CapabilityConstraint.js +1 -1
- package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
- package/dist/openapi/models/CapabilityInputSpec.js +1 -1
- package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
- package/dist/openapi/models/CapabilityProduces.js +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
- package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
- package/dist/openapi/models/ChangePasswordRequest.js +1 -1
- package/dist/openapi/models/CodegenSource.d.ts +1 -1
- package/dist/openapi/models/CodegenSource.js +1 -1
- package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceInput.js +1 -1
- package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceJob.js +1 -1
- package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
- package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceOperation.js +1 -1
- package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
- package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
- package/dist/openapi/models/CompositionPlan.d.ts +1 -1
- package/dist/openapi/models/CompositionPlan.js +1 -1
- package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
- package/dist/openapi/models/CompositionPlanJob.js +1 -1
- package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
- package/dist/openapi/models/CompositionPlanOperation.js +1 -1
- package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
- package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
- package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChangeRequest.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/CreateApiKey201Response.d.ts +1 -1
- package/dist/openapi/models/CreateApiKey201Response.js +1 -1
- package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
- package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
- package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
- package/dist/openapi/models/CreateApiKeyRequest.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 +1 -1
- package/dist/openapi/models/CreateWorkflow422Response.js +1 -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/DownloadBundle.d.ts +1 -1
- package/dist/openapi/models/DownloadBundle.js +1 -1
- package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
- package/dist/openapi/models/EndpointProjection.d.ts +1 -1
- package/dist/openapi/models/EndpointProjection.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/ForgotPasswordRequest.d.ts +1 -1
- package/dist/openapi/models/ForgotPasswordRequest.js +1 -1
- package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
- package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
- package/dist/openapi/models/JobDefinition.d.ts +1 -1
- 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 +1 -1
- package/dist/openapi/models/JobInputV2.js +1 -1
- package/dist/openapi/models/JobMediaClass.d.ts +1 -1
- package/dist/openapi/models/JobMediaClass.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/LongFormConcurrencyLimitResponse.d.ts +1 -1
- package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
- package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
- package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.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/MultiInputSource.d.ts +1 -1
- package/dist/openapi/models/MultiInputSource.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/OperationCapability.d.ts +1 -1
- package/dist/openapi/models/OperationCapability.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 +27 -4
- package/dist/openapi/models/OperationDownload.js +5 -1
- package/dist/openapi/models/OperationInputModel.d.ts +1 -1
- package/dist/openapi/models/OperationInputModel.js +1 -1
- 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/OperationResultMetadata.d.ts +1 -1
- package/dist/openapi/models/OperationResultMetadata.js +1 -1
- package/dist/openapi/models/OperationResultMetrics.d.ts +28 -5
- package/dist/openapi/models/OperationResultMetrics.js +5 -1
- package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
- package/dist/openapi/models/OperationSchemaDefinition.js +1 -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 +3 -3
- package/dist/openapi/models/OperationType.js +3 -3
- package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
- package/dist/openapi/models/OptionSchema.d.ts +1 -1
- package/dist/openapi/models/OptionSchema.js +1 -1
- package/dist/openapi/models/OutputProperties.d.ts +1 -1
- package/dist/openapi/models/OutputProperties.js +1 -1
- package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
- package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
- package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
- package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
- 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 +1 -1
- package/dist/openapi/models/ProbePendingResponse.js +1 -1
- 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/ProcessingClassConstraints.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
- package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassEntry.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/ReEncodeDecision.d.ts +1 -1
- package/dist/openapi/models/ReEncodeDecision.js +1 -1
- package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
- package/dist/openapi/models/ReadinessResponse.js +1 -1
- package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
- package/dist/openapi/models/RegisterUser422Response.js +1 -1
- package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
- package/dist/openapi/models/RegisterUserRequest.js +1 -1
- package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
- package/dist/openapi/models/ResetPasswordRequest.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/SseCompletionBase.d.ts +1 -1
- package/dist/openapi/models/SseCompletionBase.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 +1 -1
- package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
- package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
- package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
- package/dist/openapi/models/SseOperationCompletedData.js +1 -1
- package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
- package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
- 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 +1 -1
- package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
- 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/UpdateProfile200Response.d.ts +1 -1
- package/dist/openapi/models/UpdateProfile200Response.js +1 -1
- package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
- package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
- package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
- package/dist/openapi/models/UpdateProfile422Response.js +1 -1
- package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
- package/dist/openapi/models/UpdateProfileRequest.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 +1 -1
- 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 +1 -1
- package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
- 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/VerifyEmailRequest.d.ts +1 -1
- package/dist/openapi/models/VerifyEmailRequest.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/WorkflowCreditSummary.d.ts +1 -1
- package/dist/openapi/models/WorkflowCreditSummary.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/WorkflowListResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowListResponse.js +1 -1
- package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowListSuccessEnvelope.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/WorkflowSummary.d.ts +1 -1
- package/dist/openapi/models/WorkflowSummary.js +1 -1
- package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
- package/dist/openapi/models/WorkflowSummaryJob.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/runtime.d.ts +1 -1
- package/dist/openapi/runtime.js +1 -1
- package/dist/operations/compress.d.ts +27 -12
- package/dist/operations/compress.js +24 -0
- package/dist/operations/compress.metadata.js +10 -42
- package/dist/operations/convert.d.ts +3 -6
- package/dist/operations/convert.js +2 -5
- package/dist/operations/convert.metadata.js +1 -15
- package/dist/operations/image_watermark.metadata.js +0 -2
- package/dist/operations/text_watermark.metadata.js +0 -2
- package/dist/operations/thumbnail.d.ts +6 -24
- package/dist/operations/thumbnail.js +0 -12
- package/dist/operations/thumbnail.metadata.js +0 -33
- package/openapi/api.yaml +50 -10
- package/operation-capabilities/operation-capabilities.json +12 -2
- package/operations/schemas/compress.yaml +142 -139
- package/operations/schemas/convert.yaml +39 -42
- package/operations/schemas/image_watermark.yaml +19 -18
- package/operations/schemas/text_watermark.yaml +17 -17
- package/operations/schemas/thumbnail.yaml +40 -77
- package/package.json +1 -1
|
@@ -104,15 +104,23 @@ operation:
|
|
|
104
104
|
automatically to hit the size budget, so this option is inactive.
|
|
105
105
|
encoding_mode:
|
|
106
106
|
type: enum
|
|
107
|
-
values: [quality, target_size]
|
|
107
|
+
values: [quality, target_size, auto_quality]
|
|
108
108
|
default: quality
|
|
109
|
+
# auto_quality flipped planned->stable 2026-06-30 on the lambdas staging
|
|
110
|
+
# proof (compression-image git-122a329, harness PR #294): the SSIM-target
|
|
111
|
+
# search is calibrated — the `good` preset measures ~0.95 across jpeg/webp/
|
|
112
|
+
# avif and the best/good/fair/low ladder is monotonic. All three
|
|
113
|
+
# encoding_mode values are now live (ticket PQMWCqfR; no ADR).
|
|
109
114
|
honored_on: [same_format]
|
|
110
115
|
description: >-
|
|
111
116
|
Compression mode. `quality` = the `quality` slider drives the encode
|
|
112
117
|
(default). `target_size` = automatically find the highest quality that
|
|
113
118
|
fits a byte budget (set via `target_size_bytes`); if the budget can't be
|
|
114
119
|
met even at the lowest quality, the closest result is returned, and the
|
|
115
|
-
original is kept if re-encoding wouldn't be smaller.
|
|
120
|
+
original is kept if re-encoding wouldn't be smaller. `auto_quality` = hit
|
|
121
|
+
a named perceptual-quality target (set via `quality_preset`) and let the
|
|
122
|
+
worker pick the encoder quality that meets it — the perceptual twin of
|
|
123
|
+
`target_size` (which targets bytes); the result reports the chosen quality.
|
|
116
124
|
target_size_bytes:
|
|
117
125
|
type: integer
|
|
118
126
|
min: 1024
|
|
@@ -124,6 +132,20 @@ operation:
|
|
|
124
132
|
be met even at the lowest quality, the closest result is returned (the
|
|
125
133
|
result reports the chosen quality and whether the target was met). Requires
|
|
126
134
|
`encoding_mode: target_size`.
|
|
135
|
+
quality_preset:
|
|
136
|
+
type: enum
|
|
137
|
+
values: [best, good, fair, low]
|
|
138
|
+
default: good
|
|
139
|
+
depends_on: { encoding_mode: auto_quality }
|
|
140
|
+
honored_on: [same_format]
|
|
141
|
+
description: >-
|
|
142
|
+
Named perceptual-quality target for `encoding_mode: auto_quality`
|
|
143
|
+
(best > good > fair > low; `good` is the default). The worker runs a
|
|
144
|
+
perceptual-target search and picks the encoder quality that meets the
|
|
145
|
+
named tier — the wire carries the NAME only, so the tier→target mapping
|
|
146
|
+
stays worker-internal and calibration-tunable without a contract change.
|
|
147
|
+
Requires `encoding_mode: auto_quality`. The achieved perceptual score is
|
|
148
|
+
reported on the result as `metrics.measured_quality` (+ `metrics.quality_metric`).
|
|
127
149
|
metadata:
|
|
128
150
|
type: enum
|
|
129
151
|
values: [strip, keep, all]
|
|
@@ -136,27 +158,11 @@ operation:
|
|
|
136
158
|
preserve EXIF, colour profile, and XMP. `all` is a DEPRECATED alias of
|
|
137
159
|
`strip` (kept for older callers; emits Deprecation/Sunset headers — migrate
|
|
138
160
|
to `strip`). Any other value is rejected.
|
|
139
|
-
keep_metadata
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
# {number,integer,float,string,object} — `type: enum` is rejected, so the
|
|
145
|
-
# categories are carried as a JSON-Schema `enum` constraint on a string
|
|
146
|
-
# item. Consumers (FE) read the allowed categories structurally from the
|
|
147
|
-
# sidecar; SDK codegen sees a string array (the enum key is value-only) —
|
|
148
|
-
# wire-identical (a JSON array of strings).
|
|
149
|
-
type: string
|
|
150
|
-
enum: [copyright, gps, date]
|
|
151
|
-
uniqueItems: true
|
|
152
|
-
availability: planned
|
|
153
|
-
depends_on: { metadata: strip }
|
|
154
|
-
honored_on: [same_format]
|
|
155
|
-
description: >-
|
|
156
|
-
Selectively keep only certain metadata categories and strip the rest —
|
|
157
|
-
refines `metadata: strip`. Allowed categories: `copyright`, `gps`
|
|
158
|
-
(location), `date` (capture time); combinable. `planned` — selective keep
|
|
159
|
-
is not yet supported (use `metadata: keep` to preserve everything).
|
|
161
|
+
# keep_metadata (selective copyright/gps/date) REMOVED 2026-06-30 (hub honesty
|
|
162
|
+
# decision): the compress worker (libcaesium) does ALL-OR-NOTHING keep/strip
|
|
163
|
+
# only — no per-category control, and selective EXIF/XMP surgery is unscheduled
|
|
164
|
+
# (lambdas, M-L build). Use `metadata: keep` for all-or-nothing preservation.
|
|
165
|
+
# Re-add the selective primitive when that worker support is built + scheduled.
|
|
160
166
|
progressive:
|
|
161
167
|
type: boolean
|
|
162
168
|
default: true
|
|
@@ -262,7 +268,14 @@ operation:
|
|
|
262
268
|
max: 100
|
|
263
269
|
default: 80
|
|
264
270
|
honored_on: [same_format]
|
|
265
|
-
description:
|
|
271
|
+
description: >-
|
|
272
|
+
Compression quality (1-100). For PNG this is the SINGLE lossy/lossless
|
|
273
|
+
control: `quality` < 100 applies lossy palette quantization (imagequant —
|
|
274
|
+
licence-cleared for our server-side SaaS backend, `kkajDFXD`; the value is
|
|
275
|
+
the quantization level), while `quality: 100` keeps the PNG lossless (oxipng
|
|
276
|
+
optimisation only — tune the lossless effort via `optimization_level`).
|
|
277
|
+
1 = smallest file, 100 = best quality / lossless. There is no separate
|
|
278
|
+
lossy/lossless toggle for PNG — it is purely quality-driven.
|
|
266
279
|
metadata:
|
|
267
280
|
type: enum
|
|
268
281
|
values: [strip, keep, all]
|
|
@@ -275,27 +288,11 @@ operation:
|
|
|
275
288
|
preserve EXIF, colour profile, and XMP. `all` is a DEPRECATED alias of
|
|
276
289
|
`strip` (kept for older callers; emits Deprecation/Sunset headers — migrate
|
|
277
290
|
to `strip`). Any other value is rejected.
|
|
278
|
-
keep_metadata
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
# {number,integer,float,string,object} — `type: enum` is rejected, so the
|
|
284
|
-
# categories are carried as a JSON-Schema `enum` constraint on a string
|
|
285
|
-
# item. Consumers (FE) read the allowed categories structurally from the
|
|
286
|
-
# sidecar; SDK codegen sees a string array (the enum key is value-only) —
|
|
287
|
-
# wire-identical (a JSON array of strings).
|
|
288
|
-
type: string
|
|
289
|
-
enum: [copyright, gps, date]
|
|
290
|
-
uniqueItems: true
|
|
291
|
-
availability: planned
|
|
292
|
-
depends_on: { metadata: strip }
|
|
293
|
-
honored_on: [same_format]
|
|
294
|
-
description: >-
|
|
295
|
-
Selectively keep only certain metadata categories and strip the rest —
|
|
296
|
-
refines `metadata: strip`. Allowed categories: `copyright`, `gps`
|
|
297
|
-
(location), `date` (capture time); combinable. `planned` — selective keep
|
|
298
|
-
is not yet supported (use `metadata: keep` to preserve everything).
|
|
291
|
+
# keep_metadata (selective copyright/gps/date) REMOVED 2026-06-30 (hub honesty
|
|
292
|
+
# decision): the compress worker (libcaesium) does ALL-OR-NOTHING keep/strip
|
|
293
|
+
# only — no per-category control, and selective EXIF/XMP surgery is unscheduled
|
|
294
|
+
# (lambdas, M-L build). Use `metadata: keep` for all-or-nothing preservation.
|
|
295
|
+
# Re-add the selective primitive when that worker support is built + scheduled.
|
|
299
296
|
optimization_level:
|
|
300
297
|
type: integer
|
|
301
298
|
min: 0
|
|
@@ -319,14 +316,6 @@ operation:
|
|
|
319
316
|
reporting the chosen format via the result `mime_type`. They are selection
|
|
320
317
|
strategies, not concrete targets, and stay `planned` until supported. See
|
|
321
318
|
FORMAT.md.
|
|
322
|
-
lossy:
|
|
323
|
-
type: boolean
|
|
324
|
-
default: false
|
|
325
|
-
availability: planned
|
|
326
|
-
honored_on: [same_format]
|
|
327
|
-
description: >-
|
|
328
|
-
Lossy PNG palette quantization — a large saving for flat-colour PNGs.
|
|
329
|
-
`planned` — not yet supported.
|
|
330
319
|
width:
|
|
331
320
|
type: integer
|
|
332
321
|
min: 1
|
|
@@ -380,9 +369,12 @@ operation:
|
|
|
380
369
|
which can drop other (non-orientation) metadata even with `metadata: keep`.
|
|
381
370
|
|
|
382
371
|
image_avif:
|
|
383
|
-
|
|
384
|
-
#
|
|
385
|
-
# (
|
|
372
|
+
# avif INPUT compress (libheif decode + ravif re-encode) is now GA-STABLE —
|
|
373
|
+
# flipped beta->stable 2026-06-30 on the lambdas attestation: decode+re-encode
|
|
374
|
+
# proven 1-46MP (quality / target_size / auto_quality all green), AND the
|
|
375
|
+
# large-image crash path is now guarded (#295, compression-image git-74b3161,
|
|
376
|
+
# digest-verified): inputs >~70MP return a clean non-retryable InvalidRequest
|
|
377
|
+
# instead of an OOM process-kill, so GA carries no crash path.
|
|
386
378
|
# image/heic is intentionally NOT a compress input: compress is decode-only
|
|
387
379
|
# and there is no HEIC encoder, so the worker rejects a declared image/heic
|
|
388
380
|
# (FormatMismatch). heic stays on convert+thumbnail.
|
|
@@ -407,16 +399,25 @@ operation:
|
|
|
407
399
|
automatically to hit the size budget, so this option is inactive.
|
|
408
400
|
encoding_mode:
|
|
409
401
|
type: enum
|
|
410
|
-
values: [quality, target_size]
|
|
402
|
+
values: [quality, target_size, auto_quality]
|
|
411
403
|
default: quality
|
|
404
|
+
# auto_quality flipped planned->stable 2026-06-30 on the lambdas staging
|
|
405
|
+
# proof (compression-image git-122a329, harness PR #294): the SSIM-target
|
|
406
|
+
# search is calibrated — the `good` preset measures ~0.95 across jpeg/webp/
|
|
407
|
+
# avif and the best/good/fair/low ladder is monotonic. All three
|
|
408
|
+
# encoding_mode values are now live (ticket PQMWCqfR; no ADR).
|
|
412
409
|
honored_on: [same_format]
|
|
413
410
|
description: >-
|
|
414
411
|
Compression mode. `quality` = the `quality` slider drives the encode
|
|
415
412
|
(default). `target_size` = automatically find the highest quality that
|
|
416
413
|
fits a byte budget (set via `target_size_bytes`); if the budget can't be
|
|
417
414
|
met even at the lowest quality, the closest result is returned, and the
|
|
418
|
-
original is kept if re-encoding wouldn't be smaller.
|
|
419
|
-
|
|
415
|
+
original is kept if re-encoding wouldn't be smaller. `auto_quality` = hit
|
|
416
|
+
a named perceptual-quality target (set via `quality_preset`) and let the
|
|
417
|
+
worker pick the encoder quality that meets it — the perceptual twin of
|
|
418
|
+
`target_size` (which targets bytes); the result reports the chosen quality.
|
|
419
|
+
AVIF encoding is slower, so the search is bounded and may stop slightly
|
|
420
|
+
above the budget.
|
|
420
421
|
target_size_bytes:
|
|
421
422
|
type: integer
|
|
422
423
|
min: 1024
|
|
@@ -428,6 +429,20 @@ operation:
|
|
|
428
429
|
be met even at the lowest quality, the closest result is returned (the
|
|
429
430
|
result reports the chosen quality and whether the target was met). Requires
|
|
430
431
|
`encoding_mode: target_size`.
|
|
432
|
+
quality_preset:
|
|
433
|
+
type: enum
|
|
434
|
+
values: [best, good, fair, low]
|
|
435
|
+
default: good
|
|
436
|
+
depends_on: { encoding_mode: auto_quality }
|
|
437
|
+
honored_on: [same_format]
|
|
438
|
+
description: >-
|
|
439
|
+
Named perceptual-quality target for `encoding_mode: auto_quality`
|
|
440
|
+
(best > good > fair > low; `good` is the default). The worker runs a
|
|
441
|
+
perceptual-target search and picks the encoder quality that meets the
|
|
442
|
+
named tier — the wire carries the NAME only, so the tier→target mapping
|
|
443
|
+
stays worker-internal and calibration-tunable without a contract change.
|
|
444
|
+
Requires `encoding_mode: auto_quality`. The achieved perceptual score is
|
|
445
|
+
reported on the result as `metrics.measured_quality` (+ `metrics.quality_metric`).
|
|
431
446
|
metadata:
|
|
432
447
|
type: enum
|
|
433
448
|
values: [strip, all]
|
|
@@ -495,14 +510,21 @@ operation:
|
|
|
495
510
|
type: enum
|
|
496
511
|
values: [keep, srgb, strip]
|
|
497
512
|
default: keep
|
|
498
|
-
availability: planned
|
|
499
513
|
honored_on: [same_format, format_change]
|
|
500
514
|
description: >-
|
|
501
515
|
Colour-profile handling — a dedicated control, separate from `metadata` so
|
|
502
516
|
that stripping metadata never silently shifts colours. `keep` (default) =
|
|
503
|
-
preserve the
|
|
504
|
-
|
|
505
|
-
|
|
517
|
+
preserve your colours: embed the ICC profile where the output format can
|
|
518
|
+
carry one, otherwise convert to sRGB and bake the colours in so they survive
|
|
519
|
+
(never a silent drop — for AVIF the gamut is baked to sRGB); `srgb` = convert
|
|
520
|
+
to sRGB (transform pixels to sRGB, emit untagged — no embedded ICC, the web
|
|
521
|
+
default; CMYK/grayscale best-effort); `strip` = drop the profile (smallest —
|
|
522
|
+
only when the consumer manages colour itself). All three values are live on
|
|
523
|
+
compress AVIF — `srgb` flipped planned->stable 2026-06-30 on the lambdas
|
|
524
|
+
proof (wide-gamut-p3-icc.avif: srgb bakes untagged, whole-image RMSE 0.041 /
|
|
525
|
+
92% pixels shifted vs strip). Note: on AVIF `keep` and `srgb` both bake the
|
|
526
|
+
gamut to sRGB by design, so keep_px == srgb_px; the proving inequality is
|
|
527
|
+
srgb != strip, which holds.
|
|
506
528
|
auto_orient:
|
|
507
529
|
type: boolean
|
|
508
530
|
default: true
|
|
@@ -536,15 +558,23 @@ operation:
|
|
|
536
558
|
automatically to hit the size budget, so this option is inactive.
|
|
537
559
|
encoding_mode:
|
|
538
560
|
type: enum
|
|
539
|
-
values: [quality, target_size]
|
|
561
|
+
values: [quality, target_size, auto_quality]
|
|
540
562
|
default: quality
|
|
563
|
+
# auto_quality flipped planned->stable 2026-06-30 on the lambdas staging
|
|
564
|
+
# proof (compression-image git-122a329, harness PR #294): the SSIM-target
|
|
565
|
+
# search is calibrated — the `good` preset measures ~0.95 across jpeg/webp/
|
|
566
|
+
# avif and the best/good/fair/low ladder is monotonic. All three
|
|
567
|
+
# encoding_mode values are now live (ticket PQMWCqfR; no ADR).
|
|
541
568
|
honored_on: [same_format]
|
|
542
569
|
description: >-
|
|
543
570
|
Compression mode. `quality` = the `quality` slider drives the encode
|
|
544
571
|
(default). `target_size` = automatically find the highest quality that
|
|
545
572
|
fits a byte budget (set via `target_size_bytes`); if the budget can't be
|
|
546
573
|
met even at the lowest quality, the closest result is returned, and the
|
|
547
|
-
original is kept if re-encoding wouldn't be smaller.
|
|
574
|
+
original is kept if re-encoding wouldn't be smaller. `auto_quality` = hit
|
|
575
|
+
a named perceptual-quality target (set via `quality_preset`) and let the
|
|
576
|
+
worker pick the encoder quality that meets it — the perceptual twin of
|
|
577
|
+
`target_size` (which targets bytes); the result reports the chosen quality.
|
|
548
578
|
target_size_bytes:
|
|
549
579
|
type: integer
|
|
550
580
|
min: 1024
|
|
@@ -556,6 +586,20 @@ operation:
|
|
|
556
586
|
be met even at the lowest quality, the closest result is returned (the
|
|
557
587
|
result reports the chosen quality and whether the target was met). Requires
|
|
558
588
|
`encoding_mode: target_size`.
|
|
589
|
+
quality_preset:
|
|
590
|
+
type: enum
|
|
591
|
+
values: [best, good, fair, low]
|
|
592
|
+
default: good
|
|
593
|
+
depends_on: { encoding_mode: auto_quality }
|
|
594
|
+
honored_on: [same_format]
|
|
595
|
+
description: >-
|
|
596
|
+
Named perceptual-quality target for `encoding_mode: auto_quality`
|
|
597
|
+
(best > good > fair > low; `good` is the default). The worker runs a
|
|
598
|
+
perceptual-target search and picks the encoder quality that meets the
|
|
599
|
+
named tier — the wire carries the NAME only, so the tier→target mapping
|
|
600
|
+
stays worker-internal and calibration-tunable without a contract change.
|
|
601
|
+
Requires `encoding_mode: auto_quality`. The achieved perceptual score is
|
|
602
|
+
reported on the result as `metrics.measured_quality` (+ `metrics.quality_metric`).
|
|
559
603
|
metadata:
|
|
560
604
|
type: enum
|
|
561
605
|
values: [strip, keep, all]
|
|
@@ -568,27 +612,11 @@ operation:
|
|
|
568
612
|
preserve EXIF, colour profile, and XMP. `all` is a DEPRECATED alias of
|
|
569
613
|
`strip` (kept for older callers; emits Deprecation/Sunset headers — migrate
|
|
570
614
|
to `strip`). Any other value is rejected.
|
|
571
|
-
keep_metadata
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
# {number,integer,float,string,object} — `type: enum` is rejected, so the
|
|
577
|
-
# categories are carried as a JSON-Schema `enum` constraint on a string
|
|
578
|
-
# item. Consumers (FE) read the allowed categories structurally from the
|
|
579
|
-
# sidecar; SDK codegen sees a string array (the enum key is value-only) —
|
|
580
|
-
# wire-identical (a JSON array of strings).
|
|
581
|
-
type: string
|
|
582
|
-
enum: [copyright, gps, date]
|
|
583
|
-
uniqueItems: true
|
|
584
|
-
availability: planned
|
|
585
|
-
depends_on: { metadata: strip }
|
|
586
|
-
honored_on: [same_format]
|
|
587
|
-
description: >-
|
|
588
|
-
Selectively keep only certain metadata categories and strip the rest —
|
|
589
|
-
refines `metadata: strip`. Allowed categories: `copyright`, `gps`
|
|
590
|
-
(location), `date` (capture time); combinable. `planned` — selective keep
|
|
591
|
-
is not yet supported (use `metadata: keep` to preserve everything).
|
|
615
|
+
# keep_metadata (selective copyright/gps/date) REMOVED 2026-06-30 (hub honesty
|
|
616
|
+
# decision): the compress worker (libcaesium) does ALL-OR-NOTHING keep/strip
|
|
617
|
+
# only — no per-category control, and selective EXIF/XMP surgery is unscheduled
|
|
618
|
+
# (lambdas, M-L build). Use `metadata: keep` for all-or-nothing preservation.
|
|
619
|
+
# Re-add the selective primitive when that worker support is built + scheduled.
|
|
592
620
|
output_format:
|
|
593
621
|
type: enum
|
|
594
622
|
values: [original, webp, auto, smallest]
|
|
@@ -647,8 +675,6 @@ operation:
|
|
|
647
675
|
type: enum
|
|
648
676
|
values: [keep, srgb, strip]
|
|
649
677
|
default: keep
|
|
650
|
-
per_value_availability:
|
|
651
|
-
srgb: { availability: planned }
|
|
652
678
|
honored_on: [same_format, format_change]
|
|
653
679
|
description: >-
|
|
654
680
|
Colour-profile handling — a dedicated control, separate from `metadata` so
|
|
@@ -657,8 +683,9 @@ operation:
|
|
|
657
683
|
carry one, otherwise convert to sRGB and bake the colours in so they survive
|
|
658
684
|
(never a silent drop); `srgb` = convert to sRGB (transform pixels to sRGB, emit untagged — no embedded ICC, the web default; CMYK/grayscale best-effort);
|
|
659
685
|
`strip` = drop the profile (smallest — only when the consumer manages colour
|
|
660
|
-
itself).
|
|
661
|
-
|
|
686
|
+
itself). All three values are live on the WebP same-format route — the sRGB
|
|
687
|
+
pixel transform is staging-proven (lambdas compression-image git-13b5000:
|
|
688
|
+
srgb output untagged + a real pixel shift vs strip).
|
|
662
689
|
auto_orient:
|
|
663
690
|
type: boolean
|
|
664
691
|
default: true
|
|
@@ -677,13 +704,11 @@ operation:
|
|
|
677
704
|
mimes:
|
|
678
705
|
- image/svg+xml
|
|
679
706
|
options:
|
|
680
|
-
quality
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
honored_on: [same_format]
|
|
686
|
-
description: "Compression quality (1 = smallest file, 100 = best quality)."
|
|
707
|
+
# No `quality`: compress SVG is SVG->SVG via SVGO (lossless vector optimise);
|
|
708
|
+
# `quality` is never passed to the worker, so a quality slider here is a no-op
|
|
709
|
+
# (removed — lambdas worker-code investigation, the SVG-quality ticket). Raster
|
|
710
|
+
# output (the webp facade route) goes through convert, which carries its own
|
|
711
|
+
# quality on convert.image_svg.
|
|
687
712
|
metadata:
|
|
688
713
|
type: enum
|
|
689
714
|
values: [strip, all]
|
|
@@ -740,27 +765,11 @@ operation:
|
|
|
740
765
|
preserve EXIF, colour profile, and XMP. `all` is a DEPRECATED alias of
|
|
741
766
|
`strip` (kept for older callers; emits Deprecation/Sunset headers — migrate
|
|
742
767
|
to `strip`). Any other value is rejected.
|
|
743
|
-
keep_metadata
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
# {number,integer,float,string,object} — `type: enum` is rejected, so the
|
|
749
|
-
# categories are carried as a JSON-Schema `enum` constraint on a string
|
|
750
|
-
# item. Consumers (FE) read the allowed categories structurally from the
|
|
751
|
-
# sidecar; SDK codegen sees a string array (the enum key is value-only) —
|
|
752
|
-
# wire-identical (a JSON array of strings).
|
|
753
|
-
type: string
|
|
754
|
-
enum: [copyright, gps, date]
|
|
755
|
-
uniqueItems: true
|
|
756
|
-
availability: planned
|
|
757
|
-
depends_on: { metadata: strip }
|
|
758
|
-
honored_on: [same_format]
|
|
759
|
-
description: >-
|
|
760
|
-
Selectively keep only certain metadata categories and strip the rest —
|
|
761
|
-
refines `metadata: strip`. Allowed categories: `copyright`, `gps`
|
|
762
|
-
(location), `date` (capture time); combinable. `planned` — selective keep
|
|
763
|
-
is not yet supported (use `metadata: keep` to preserve everything).
|
|
768
|
+
# keep_metadata (selective copyright/gps/date) REMOVED 2026-06-30 (hub honesty
|
|
769
|
+
# decision): the compress worker (libcaesium) does ALL-OR-NOTHING keep/strip
|
|
770
|
+
# only — no per-category control, and selective EXIF/XMP surgery is unscheduled
|
|
771
|
+
# (lambdas, M-L build). Use `metadata: keep` for all-or-nothing preservation.
|
|
772
|
+
# Re-add the selective primitive when that worker support is built + scheduled.
|
|
764
773
|
output_format:
|
|
765
774
|
type: enum
|
|
766
775
|
values: [original, webp, auto, smallest]
|
|
@@ -1185,13 +1194,11 @@ operation:
|
|
|
1185
1194
|
max: 100
|
|
1186
1195
|
default: 50
|
|
1187
1196
|
description: "Compression quality (1 = smallest, 100 = best). The only document compression option supported today."
|
|
1188
|
-
image_quality:
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
availability: planned
|
|
1194
|
-
description: "Recompress embedded images at this quality level (1 = smallest, 100 = best). `planned` — not yet supported (use `quality`)."
|
|
1197
|
+
# image_quality REMOVED 2026-06-30 (hub honesty decision): redundant — the
|
|
1198
|
+
# zip-based document worker ALREADY recompresses embedded jpeg/png/webp/gif
|
|
1199
|
+
# via libcaesium, driven by the general `quality` option (capability is LIVE).
|
|
1200
|
+
# The separate `image_quality` knob was unwired (a planned no-op). Re-add only
|
|
1201
|
+
# if a distinct image-vs-document quality split is genuinely wanted (small wiring).
|
|
1195
1202
|
strip_macros:
|
|
1196
1203
|
type: boolean
|
|
1197
1204
|
default: true
|
|
@@ -1221,13 +1228,11 @@ operation:
|
|
|
1221
1228
|
max: 100
|
|
1222
1229
|
default: 50
|
|
1223
1230
|
description: "Compression quality (1 = smallest, 100 = best). The only document compression option supported today."
|
|
1224
|
-
image_quality:
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
availability: planned
|
|
1230
|
-
description: "Recompress embedded images at this quality level. `planned` — not yet supported (use `quality`)."
|
|
1231
|
+
# image_quality REMOVED 2026-06-30 (hub honesty decision): redundant — the
|
|
1232
|
+
# zip-based document worker ALREADY recompresses embedded jpeg/png/webp/gif
|
|
1233
|
+
# via libcaesium, driven by the general `quality` option (capability is LIVE).
|
|
1234
|
+
# The separate `image_quality` knob was unwired (a planned no-op). Re-add only
|
|
1235
|
+
# if a distinct image-vs-document quality split is genuinely wanted (small wiring).
|
|
1231
1236
|
strip_metadata:
|
|
1232
1237
|
type: boolean
|
|
1233
1238
|
default: true
|
|
@@ -1250,13 +1255,11 @@ operation:
|
|
|
1250
1255
|
max: 100
|
|
1251
1256
|
default: 50
|
|
1252
1257
|
description: "Compression quality (1 = smallest, 100 = best). The only document compression option supported today."
|
|
1253
|
-
image_quality:
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
availability: planned
|
|
1259
|
-
description: "Recompress embedded images at this quality level. `planned` — not yet supported (use `quality`)."
|
|
1258
|
+
# image_quality REMOVED 2026-06-30 (hub honesty decision): redundant — the
|
|
1259
|
+
# zip-based document worker ALREADY recompresses embedded jpeg/png/webp/gif
|
|
1260
|
+
# via libcaesium, driven by the general `quality` option (capability is LIVE).
|
|
1261
|
+
# The separate `image_quality` knob was unwired (a planned no-op). Re-add only
|
|
1262
|
+
# if a distinct image-vs-document quality split is genuinely wanted (small wiring).
|
|
1260
1263
|
font_subsetting:
|
|
1261
1264
|
type: boolean
|
|
1262
1265
|
default: true
|
|
@@ -25,20 +25,16 @@ operation:
|
|
|
25
25
|
- image/avif
|
|
26
26
|
- image/heic
|
|
27
27
|
- image/heif
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
# (avif is also a valid OUTPUT via output_format — ravif encode.)
|
|
39
|
-
image/avif: { availability: beta }
|
|
40
|
-
image/heic: { availability: beta }
|
|
41
|
-
image/heif: { availability: beta }
|
|
28
|
+
# avif/heic/heif input decode in the convert worker via libheif is now
|
|
29
|
+
# GA-STABLE — no per_mime_availability tag = stable (the group default),
|
|
30
|
+
# promoted beta→stable 2026-06-30 on the lambdas GA attestation: libheif
|
|
31
|
+
# decode (w34Taquf #210/#211; heif accept-list alias #265, git-7b13754)
|
|
32
|
+
# has been LIVE on staging since 2026-06-14, e2e decode-smoke green, zero
|
|
33
|
+
# decode failures since. Standard files are GA; exotic variants (10-bit /
|
|
34
|
+
# HDR / multi-image HEIC) decode best-effort. heif is the accept-list ALIAS
|
|
35
|
+
# of the HEIF container (same libheif decode as heic; pure accept-list
|
|
36
|
+
# widening, no verify_mime). (avif is also a valid OUTPUT via output_format
|
|
37
|
+
# — ravif encode.)
|
|
42
38
|
# convert.image is the TRANSCODER leg of the route-aware image "Output"
|
|
43
39
|
# model (FORMAT.md §"Route-aware Output model"): a format_change Output
|
|
44
40
|
# route (output_format != input) runs here. Its options carry
|
|
@@ -183,18 +179,17 @@ operation:
|
|
|
183
179
|
rejected (see convert.image.background).
|
|
184
180
|
|
|
185
181
|
# gif is animated raster: it converts to a STILL image (first frame / rasterise —
|
|
186
|
-
# the existing image targets, stable) AND
|
|
187
|
-
#
|
|
188
|
-
#
|
|
189
|
-
#
|
|
182
|
+
# the existing image targets, stable) AND to VIDEO (mp4/webm): the GIF→video
|
|
183
|
+
# transcode (animated GIF → muted, play-once video; ~85-95% smaller than the
|
|
184
|
+
# GIF; card oEjNe9gT). Split out of convert.image so ONLY gif advertises the
|
|
185
|
+
# mp4/webm video targets (a jpeg/png input must not show them). The output
|
|
190
186
|
# crosses the media boundary image→video; per codex convergence this stays
|
|
191
187
|
# operation_type=convert (the convert worker's video_convert path owns the ffmpeg
|
|
192
188
|
# mp4/webm encode — NOT a new op, NOT the compression-video worker). mp4/webm are
|
|
193
|
-
#
|
|
194
|
-
#
|
|
195
|
-
#
|
|
196
|
-
#
|
|
197
|
-
# API owns that, ticket 0Z4zunCr). Planned-first anti-regression (image-options §2.5).
|
|
189
|
+
# now STABLE (flipped planned→stable in v2.114.0 #258 on lambdas worker-proof);
|
|
190
|
+
# the API applies an output-aware billing override (convert.image_gif→video is
|
|
191
|
+
# video-class encode work, NOT a cheap image transcode — priced as video, not
|
|
192
|
+
# convert.image; API owns that, ticket 0Z4zunCr).
|
|
198
193
|
image_gif:
|
|
199
194
|
mimes:
|
|
200
195
|
- image/gif
|
|
@@ -232,16 +227,12 @@ operation:
|
|
|
232
227
|
Background colour as a 6-digit hex (`#RRGGBB`) for a transparent GIF
|
|
233
228
|
flattened to JPEG (alpha-flatten). HEX ONLY — a non-hex value is
|
|
234
229
|
rejected (see convert.image.background).
|
|
235
|
-
metadata:
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
description: >-
|
|
242
|
-
Metadata handling for the still-image targets. `planned` — metadata is
|
|
243
|
-
not yet preserved across a format change. The video targets carry no
|
|
244
|
-
EXIF/IPTC/XMP.
|
|
230
|
+
# metadata REMOVED 2026-06-30 (hub honesty decision; won't-do): the GIF INPUT
|
|
231
|
+
# carries no standard EXIF/IPTC/XMP/ICC, so "preserve metadata across the
|
|
232
|
+
# format change" has nothing to preserve (colour is already handled by
|
|
233
|
+
# color_profile=keep's sRGB bake). The video targets carry no metadata either.
|
|
234
|
+
# (convert.image — a real raster group — keeps its metadata option; only the
|
|
235
|
+
# GIF-input group's metadata was a phantom.)
|
|
245
236
|
width:
|
|
246
237
|
type: integer
|
|
247
238
|
min: 1
|
|
@@ -330,22 +321,28 @@ operation:
|
|
|
330
321
|
options:
|
|
331
322
|
output_format:
|
|
332
323
|
type: enum
|
|
333
|
-
values: [mp4, webm, ogg, gif]
|
|
324
|
+
values: [mp4, webm, ogg, gif, mov, mkv]
|
|
334
325
|
required: true
|
|
335
326
|
# The video codec is DETERMINED by the target container, NOT a caller
|
|
336
327
|
# choice: the convert-video worker hard-wires it per container
|
|
337
|
-
# (mp4 -> H.264/libx264, webm -> VP9, ogg -> Theora, gif -> palette
|
|
338
|
-
#
|
|
339
|
-
#
|
|
340
|
-
#
|
|
341
|
-
#
|
|
342
|
-
|
|
328
|
+
# (mp4 -> H.264/libx264, webm -> VP9, ogg -> Theora, gif -> palette,
|
|
329
|
+
# mov -> H.264/libx264, mkv -> H.264/libx264; lambdas-confirmed
|
|
330
|
+
# video_convert.rs). mov + mkv added 2026-06-30 on the lambdas staging proof
|
|
331
|
+
# (operation-convert #287, prove-convert-video-formats-staging.sh 2/2 PASS:
|
|
332
|
+
# mp4->mov [Content-Type video/quicktime, vcodec h264] + mp4->mkv
|
|
333
|
+
# [video/x-matroska, vcodec h264], real re-encodes, container-by-extension).
|
|
334
|
+
# Added STABLE — no per_value gating, matching the rest of this enum (the
|
|
335
|
+
# proof is in hand; they are h264 in a different container, same codec as the
|
|
336
|
+
# already-GA mp4). The former `codec` option (enum h264/h265/vp9/av1) was a
|
|
337
|
+
# SILENT NO-OP — the worker never read it — so it was removed (honesty pass,
|
|
338
|
+
# 2026-06-20). To choose a codec, use compress.video (real worker-honored `codec`).
|
|
339
|
+
description: "Target format. The video codec is fixed by the container (mp4->H.264, webm->VP9, ogg->Theora, gif->palette, mov->H.264, mkv->H.264) — not caller-selectable."
|
|
343
340
|
crf:
|
|
344
341
|
type: integer
|
|
345
342
|
min: 0
|
|
346
343
|
max: 51
|
|
347
344
|
default: 23
|
|
348
|
-
depends_on: { output_format: [mp4, webm, ogg] }
|
|
345
|
+
depends_on: { output_format: [mp4, webm, ogg, mov, mkv] }
|
|
349
346
|
# Renamed `quality` -> `crf` (2026-06-20) to match compress.video.crf
|
|
350
347
|
# and stop the misnomer: this is a Constant Rate Factor (0=best/lossless,
|
|
351
348
|
# 51=worst), the INVERSE of convert.image.quality (1-100, higher=better).
|
|
@@ -365,7 +362,7 @@ operation:
|
|
|
365
362
|
Trim from beginning in seconds (absent = from the start). The clip
|
|
366
363
|
is cut before transcoding — the user's "trim a video then make a GIF"
|
|
367
364
|
path. The kept clip is [`trim_start`, input_duration − `trim_end`]. Live
|
|
368
|
-
for all video outputs
|
|
365
|
+
for all video outputs.
|
|
369
366
|
trim_end:
|
|
370
367
|
type: float
|
|
371
368
|
min: 0
|
|
@@ -18,15 +18,14 @@ operation:
|
|
|
18
18
|
dispatch returns `feature_not_available` (422) until backend
|
|
19
19
|
support ships.
|
|
20
20
|
|
|
21
|
-
TIFF (image/tiff) and BMP (image/bmp) bases are
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
re-emit svg from a rasterised composite); those stay out of scope.
|
|
21
|
+
TIFF (image/tiff) and BMP (image/bmp) bases are now `stable` too
|
|
22
|
+
(flipped planned->stable 2026-06-30 on the lambdas staging proof,
|
|
23
|
+
UANjD38A / #296) via the parallel `image_tiff` / `image_bmp`
|
|
24
|
+
mime_groups. Because watermark output mirrors the input format
|
|
25
|
+
(`produces: same_as_input`), advertising a base format is only honest
|
|
26
|
+
when the worker can both decode AND encode it — which holds for
|
|
27
|
+
TIFF/BMP but not for HEIC/AVIF (no encoder) or SVG (cannot re-emit svg
|
|
28
|
+
from a rasterised composite); those stay out of scope.
|
|
30
29
|
|
|
31
30
|
**Video bases are NOT supported by `image_watermark`.** Use the
|
|
32
31
|
dedicated `video_watermark` operation
|
|
@@ -217,12 +216,13 @@ operation:
|
|
|
217
216
|
width. Aspect ratio preserved. Omit to use the original
|
|
218
217
|
overlay size.
|
|
219
218
|
|
|
220
|
-
# TIFF base — separate group
|
|
221
|
-
#
|
|
222
|
-
# `image`-crate TiffEncoder) is pending. Tagged `planned` until the arm
|
|
223
|
-
# ships and is proven, then flips to `stable` (cross-repo UANjD38A).
|
|
219
|
+
# TIFF base — separate group (its backend arm shipped in its own wave).
|
|
220
|
+
# Now STABLE (flipped 2026-06-30 — see the group comment below).
|
|
224
221
|
image_tiff:
|
|
225
|
-
|
|
222
|
+
# planned->stable 2026-06-30 (UANjD38A): lambdas staging-proved the TIFF
|
|
223
|
+
# image-watermark encode (composited output md5 != base, decodable as TIFF,
|
|
224
|
+
# PR #296 c664d80; encoder shipped dark in #274). Manifest lists image/tiff in
|
|
225
|
+
# accepts + outputs.
|
|
226
226
|
mimes:
|
|
227
227
|
- image/tiff
|
|
228
228
|
options:
|
|
@@ -289,11 +289,12 @@ operation:
|
|
|
289
289
|
width. Aspect ratio preserved. Omit to use the original
|
|
290
290
|
overlay size.
|
|
291
291
|
|
|
292
|
-
# BMP base — separate group for the same reason as image_tiff
|
|
293
|
-
#
|
|
294
|
-
# Tagged `planned` until the arm ships and is proven (cross-repo UANjD38A).
|
|
292
|
+
# BMP base — separate group for the same reason as image_tiff. Now
|
|
293
|
+
# STABLE (flipped 2026-06-30 — see the group comment below).
|
|
295
294
|
image_bmp:
|
|
296
|
-
|
|
295
|
+
# planned->stable 2026-06-30 (UANjD38A): lambdas staging-proved the BMP
|
|
296
|
+
# image-watermark encode (composited + decodable as BMP, PR #296 c664d80;
|
|
297
|
+
# encoder shipped dark in #274). Manifest lists image/bmp in accepts + outputs.
|
|
297
298
|
mimes:
|
|
298
299
|
- image/bmp
|
|
299
300
|
options:
|