@giveitsmaller/contracts 0.35.0 → 0.37.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 +263 -1
- package/accepted-options/image-output-routes.json +69 -17
- package/asyncapi/events.yaml +8 -4
- package/availability/availability.json +507 -51
- 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/ChangePasswordRequest.d.ts +1 -1
- package/dist/openapi/models/ChangePasswordRequest.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/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/OperationDefinition.d.ts +1 -1
- package/dist/openapi/models/OperationDefinition.js +1 -1
- package/dist/openapi/models/OperationDownload.d.ts +1 -1
- package/dist/openapi/models/OperationDownload.js +1 -1
- package/dist/openapi/models/OperationInputModel.d.ts +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 +24 -1
- package/dist/openapi/models/OperationResult.js +3 -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 +1 -1
- package/dist/openapi/models/OperationResultMetrics.js +1 -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 +1 -1
- package/dist/openapi/models/OperationType.js +1 -1
- 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/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 +24 -1
- package/dist/openapi/models/SseSingleOutputCompletion.js +3 -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/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 +60 -14
- package/dist/operations/compress.js +43 -4
- package/dist/operations/compress.metadata.js +111 -8
- package/dist/operations/convert.d.ts +54 -0
- package/dist/operations/convert.js +42 -0
- package/dist/operations/convert.metadata.js +65 -0
- package/openapi/api.yaml +23 -1
- package/operation-capabilities/operation-capabilities.json +19 -2
- package/operations/schemas/compress.yaml +384 -93
- package/operations/schemas/convert.yaml +190 -2
- package/package.json +1 -1
|
@@ -25,14 +25,27 @@ operation:
|
|
|
25
25
|
# 2026-06-20, lossless parked). width/height/fit/auto_orient stay removed
|
|
26
26
|
# (EsD1hs5u — worker recompresses only; resize -> thumbnail, format -> convert).
|
|
27
27
|
#
|
|
28
|
-
# output_format (replicated identically per group):
|
|
29
|
-
# are
|
|
28
|
+
# output_format (replicated identically per group): the LIVE concrete
|
|
29
|
+
# targets are `original` (no-op, default) and `webp` (the one proven
|
|
30
30
|
# compress+format pass: a single API-canonicalized convert-with-size-cap;
|
|
31
|
-
# the compress worker itself never reads output_format). The
|
|
32
|
-
# facade targets
|
|
33
|
-
#
|
|
34
|
-
# change is the convert operation's job (all
|
|
35
|
-
# only when its compress+format
|
|
31
|
+
# the compress worker itself never reads output_format). The concrete
|
|
32
|
+
# facade targets jpeg/png/avif stay PRUNED (pruned 2026-06-21) — a dangling
|
|
33
|
+
# coming-soon DUPLICATE of a concrete format is dishonest at source when
|
|
34
|
+
# every such format change is already the convert operation's job (all
|
|
35
|
+
# stable). Re-add a concrete target here only when its compress+format
|
|
36
|
+
# canonicalization actually ships.
|
|
37
|
+
#
|
|
38
|
+
# `auto` / `smallest` are the EXCEPTION (re-added 2026-06-23, planned, the
|
|
39
|
+
# auto-format differentiator): they are SELECTION STRATEGIES, not concrete
|
|
40
|
+
# formats — the server encodes to several candidate formats and returns the
|
|
41
|
+
# best (`auto` = the most suitable; `smallest` = the absolute fewest bytes),
|
|
42
|
+
# reporting the chosen format via the result `mime_type`. `convert` cannot
|
|
43
|
+
# express "pick the smallest" (it needs an explicit target), so these
|
|
44
|
+
# genuinely belong on this compress Output facade, not on convert — that is
|
|
45
|
+
# why they are NOT dangling duplicates. Both stay `per_value_availability:
|
|
46
|
+
# planned` until the API try-all-return-smallest logic + worker proof land
|
|
47
|
+
# (coordinated with api + frontend). They are EXCLUDED from the projection's
|
|
48
|
+
# facade_managed_outputs (not single-target canonicalizations).
|
|
36
49
|
#
|
|
37
50
|
# ---- ROUTE-AWARE "OUTPUT" model (image-options Phase 0, tewB37Jg) ----
|
|
38
51
|
# The user-facing "Output" operation IS this compress op + output_format:
|
|
@@ -44,13 +57,16 @@ operation:
|
|
|
44
57
|
# see FORMAT.md §"Route-aware Output model"). The derived per-(media, route,
|
|
45
58
|
# output_format) projection is accepted-options/image-output-routes.json.
|
|
46
59
|
#
|
|
47
|
-
# RESIZE-INSIDE-OUTPUT ships STABLE (hub-directed fast-path, 2026-06-22
|
|
48
|
-
#
|
|
49
|
-
#
|
|
50
|
-
#
|
|
51
|
-
#
|
|
52
|
-
#
|
|
53
|
-
#
|
|
60
|
+
# RESIZE-INSIDE-OUTPUT ships STABLE (hub-directed fast-path, 2026-06-22;
|
|
61
|
+
# engine corrected per API worker-verification n4CmaDE8, 2026-06-23):
|
|
62
|
+
# width / height / fit + max_output_pixels. The CONVERT worker is the image
|
|
63
|
+
# resize engine for the WHOLE Output op (image_convert.rs, Lanczos, 1-16384,
|
|
64
|
+
# 16MP cap, svg-reject; live #257) — the compress optimiser has NO resize.
|
|
65
|
+
# The API routes BOTH arms through convert (same_format = convert to the same
|
|
66
|
+
# token; format_change = convert to the target), so these keys are declared
|
|
67
|
+
# HERE (the facade entry) AND on convert.image (where the worker reads them +
|
|
68
|
+
# the API re-validates the rewritten op). REPLACE transform, ONE output —
|
|
69
|
+
# NOT thumbnail's derivative/preview semantics; thumbnail.yaml untouched.
|
|
54
70
|
#
|
|
55
71
|
# STABLE on the optimiser (same_format) route (all worker-proven 2026-06-23):
|
|
56
72
|
# lossless (jpeg/webp) — worker honours the `lossless` bool, API emits it.
|
|
@@ -67,7 +83,7 @@ operation:
|
|
|
67
83
|
image_jpeg:
|
|
68
84
|
mimes:
|
|
69
85
|
- image/jpeg
|
|
70
|
-
# Resize-inside-Output
|
|
86
|
+
# Resize-inside-Output shares the convert resize engine's 16MP output-area
|
|
71
87
|
# wall — the per-axis 16384 cap can't express it (FORMAT.md §max_output_pixels).
|
|
72
88
|
max_output_pixels: 16000000
|
|
73
89
|
options:
|
|
@@ -76,42 +92,120 @@ operation:
|
|
|
76
92
|
min: 1
|
|
77
93
|
max: 100
|
|
78
94
|
default: 80
|
|
95
|
+
depends_on: { encoding_mode: quality }
|
|
79
96
|
honored_on: [same_format]
|
|
80
|
-
description:
|
|
97
|
+
description: >-
|
|
98
|
+
Compression quality (1 = smallest file, 100 = best quality). Active in
|
|
99
|
+
`quality` mode (default); in `target_size` mode the encode-measure loop
|
|
100
|
+
owns quality, so this option is inactive.
|
|
101
|
+
encoding_mode:
|
|
102
|
+
type: enum
|
|
103
|
+
values: [quality, target_size]
|
|
104
|
+
default: quality
|
|
105
|
+
honored_on: [same_format]
|
|
106
|
+
description: >-
|
|
107
|
+
Compression mode (mirrors compress.video). `quality` = the `quality`
|
|
108
|
+
slider drives the encode (default). `target_size` = hit a byte budget via
|
|
109
|
+
the worker's encode-measure-binary-search loop — STABLE (worker-proven on
|
|
110
|
+
staging, lambdas git-870a7c2: re-encode under target + best-effort below
|
|
111
|
+
floor + original-wins, all proven). Optimiser (same_format) route.
|
|
112
|
+
target_size_bytes:
|
|
113
|
+
type: integer
|
|
114
|
+
min: 1024
|
|
115
|
+
depends_on: { encoding_mode: target_size }
|
|
116
|
+
honored_on: [same_format]
|
|
117
|
+
description: >-
|
|
118
|
+
Target output size in bytes (min 1024 = 1 KiB). The image encode-measure
|
|
119
|
+
loop binary-searches quality to land at or under the target; best-effort
|
|
120
|
+
if the target is unreachable at min quality (the result reports the chosen
|
|
121
|
+
quality + whether the target was met). STABLE (worker-proven, lambdas
|
|
122
|
+
git-870a7c2). Optimiser (same_format) route.
|
|
81
123
|
metadata:
|
|
82
124
|
type: enum
|
|
83
|
-
values: [
|
|
84
|
-
default:
|
|
125
|
+
values: [strip, keep, all]
|
|
126
|
+
default: strip
|
|
127
|
+
per_value_availability:
|
|
128
|
+
all: { availability: deprecated }
|
|
85
129
|
honored_on: [same_format]
|
|
86
130
|
description: >-
|
|
87
|
-
Metadata handling (optimiser/same_format route). `
|
|
131
|
+
Metadata handling (optimiser/same_format route). `strip` = remove all
|
|
88
132
|
EXIF/IPTC/XMP (default). `keep` = preserve EXIF/ICC/XMP — STABLE
|
|
89
|
-
(worker-proven, libcaesium; lambdas PR #260, staging round-trip +
|
|
90
|
-
|
|
133
|
+
(worker-proven, libcaesium; lambdas PR #260, staging round-trip + unit
|
|
134
|
+
test). `all` is a DEPRECATED alias of `strip` (the pre-2026-06-23 token;
|
|
135
|
+
`all` reading as "strip all" was counterintuitive) — still accepted,
|
|
136
|
+
emits Deprecation/Sunset, migrate to `strip`. The API lowers `strip`→`all`
|
|
137
|
+
at the worker boundary. Any other value is rejected as invalid_options.
|
|
138
|
+
keep_metadata:
|
|
139
|
+
type: array
|
|
140
|
+
items:
|
|
141
|
+
# items.type is `string` (not `enum`) deliberately: the valid categories
|
|
142
|
+
# are listed below + enforced by the API at the stable-flip. SDK operation-
|
|
143
|
+
# schema codegen does not yet support typed array-of-enum (restore `enum` +
|
|
144
|
+
# values:[copyright,gps,date] when that lands — likely at this option's
|
|
145
|
+
# stable-flip). Wire-identical either way (a JSON array of strings).
|
|
146
|
+
type: string
|
|
147
|
+
uniqueItems: true
|
|
148
|
+
availability: planned
|
|
149
|
+
depends_on: { metadata: strip }
|
|
150
|
+
honored_on: [same_format]
|
|
151
|
+
description: >-
|
|
152
|
+
Selective per-category metadata keep (optimiser/same_format route):
|
|
153
|
+
preserve ONLY these categories and strip the rest — refines the strip
|
|
154
|
+
path (`metadata: strip`). Valid categories: `copyright`, `gps` (location),
|
|
155
|
+
`date` (capture time); combinable. `planned` — the worker does not yet
|
|
156
|
+
do selective keep (use `metadata: keep` to preserve everything), so the
|
|
157
|
+
API returns feature_not_available until lambdas proves it.
|
|
91
158
|
progressive:
|
|
92
159
|
type: boolean
|
|
93
160
|
default: true
|
|
94
161
|
honored_on: [same_format]
|
|
95
162
|
description: "Enable progressive JPEG rendering (a low-quality preview renders first, then refines). JPEG only — the optimiser (same_format) route."
|
|
163
|
+
chroma_subsampling:
|
|
164
|
+
type: enum
|
|
165
|
+
values: ["420", "422", "444"]
|
|
166
|
+
honored_on: [same_format]
|
|
167
|
+
description: >-
|
|
168
|
+
JPEG chroma subsampling — the colour-resolution/size trade-off.
|
|
169
|
+
`420` (4:2:0) = smallest, chroma at quarter resolution (default-ish for
|
|
170
|
+
web photos); `422` (4:2:2) = half-horizontal; `444` (4:4:4) = full chroma
|
|
171
|
+
(largest, best for sharp colour edges / text). JPEG ONLY (declared on
|
|
172
|
+
image_jpeg only — ravif hardcodes 4:4:4, libwebp lossy locks 4:2:0).
|
|
173
|
+
String values (the worker strict-matches strings). STABLE — worker-proven
|
|
174
|
+
on staging (lambdas PR #264, deployed git-f2bef85: output JPEG SOF luma
|
|
175
|
+
sampling bytes verified 0x22/0x21/0x11 for 420/422/444). INCOMPATIBLE with
|
|
176
|
+
`lossless` (any chroma value): lossless JPEG is a DCT-coefficient copy and
|
|
177
|
+
cannot resample chroma — see the chroma_subsampling.lossless_conflict
|
|
178
|
+
constraint.
|
|
96
179
|
output_format:
|
|
97
180
|
type: enum
|
|
98
|
-
values: [original, webp]
|
|
181
|
+
values: [original, webp, auto, smallest]
|
|
99
182
|
default: original
|
|
183
|
+
per_value_availability:
|
|
184
|
+
auto: { availability: planned }
|
|
185
|
+
smallest: { availability: planned }
|
|
100
186
|
description: >-
|
|
101
187
|
Output format. original = keep input format (default); webp = recompress to
|
|
102
|
-
WebP — the one live compress+format target (proven on staging).
|
|
188
|
+
WebP — the one live compress+format target (proven on staging). Concrete format
|
|
103
189
|
changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
|
|
104
|
-
|
|
190
|
+
`auto` / `smallest` are PLANNED auto-format directives — the server encodes to
|
|
191
|
+
several candidate formats and returns the best (`auto` = the most suitable;
|
|
192
|
+
`smallest` = the absolute fewest bytes), reporting the chosen format via the
|
|
193
|
+
result `mime_type`. They are SELECTION STRATEGIES, not concrete targets (convert
|
|
194
|
+
cannot express "pick the smallest"), so they live here and stay `planned` until
|
|
195
|
+
the API try-all-return-smallest logic + worker proof land. See FORMAT.md.
|
|
105
196
|
lossless:
|
|
106
197
|
type: boolean
|
|
107
198
|
default: false
|
|
199
|
+
depends_on: { encoding_mode: quality }
|
|
108
200
|
honored_on: [same_format]
|
|
109
201
|
description: >-
|
|
110
202
|
Lossless JPEG re-optimisation (optimiser path): optimises the Huffman
|
|
111
203
|
tables WITHOUT re-encoding pixels — bit-preserving on the pixel data,
|
|
112
204
|
no quality loss (it cannot recover detail a lossy JPEG already lost).
|
|
113
205
|
STABLE — the compress-image worker honours the `lossless` bool
|
|
114
|
-
(un-parked 2026-06-23).
|
|
206
|
+
(un-parked 2026-06-23). Only in `quality` mode — incompatible with
|
|
207
|
+
`target_size` (the byte-budget loop is inherently lossy). Optimiser
|
|
208
|
+
(same_format) route only.
|
|
115
209
|
width:
|
|
116
210
|
type: integer
|
|
117
211
|
min: 1
|
|
@@ -120,8 +214,9 @@ operation:
|
|
|
120
214
|
description: >-
|
|
121
215
|
Resize-inside-Output: target width in pixels (1-16384; width*height <=
|
|
122
216
|
max_output_pixels). Resize the image as part of Output (replace semantics,
|
|
123
|
-
ONE transformed output) using the proven
|
|
124
|
-
|
|
217
|
+
ONE transformed output) using the proven convert resize engine (Lanczos;
|
|
218
|
+
the API routes Output resize through the convert worker, BOTH routes —
|
|
219
|
+
the compress optimiser has no resize) — it is NOT the derivative `thumbnail` op.
|
|
125
220
|
Optional; omit to keep the source dimensions.
|
|
126
221
|
height:
|
|
127
222
|
type: integer
|
|
@@ -136,9 +231,12 @@ operation:
|
|
|
136
231
|
depends_on: { width: set, height: set, logic: or }
|
|
137
232
|
honored_on: [same_format, format_change]
|
|
138
233
|
description: >-
|
|
139
|
-
Resize mode. max = fit within bounds
|
|
140
|
-
|
|
141
|
-
|
|
234
|
+
Resize mode. `max` (default) = fit within bounds, preserving aspect ratio
|
|
235
|
+
and NEVER upscaling — it caps at the source dimensions. This IS the
|
|
236
|
+
"no-enlarge" behaviour (there is no separate `no_enlarge` flag — the
|
|
237
|
+
worker has no such key). `crop`/`scale` = exact dimensions (`scale`
|
|
238
|
+
deliberately enlarges past source). Applies only when width or height is
|
|
239
|
+
set, on whichever Output route runs.
|
|
142
240
|
|
|
143
241
|
image_png:
|
|
144
242
|
mimes:
|
|
@@ -154,14 +252,39 @@ operation:
|
|
|
154
252
|
description: "Compression quality (1 = smallest file, 100 = best quality)."
|
|
155
253
|
metadata:
|
|
156
254
|
type: enum
|
|
157
|
-
values: [
|
|
158
|
-
default:
|
|
255
|
+
values: [strip, keep, all]
|
|
256
|
+
default: strip
|
|
257
|
+
per_value_availability:
|
|
258
|
+
all: { availability: deprecated }
|
|
159
259
|
honored_on: [same_format]
|
|
160
260
|
description: >-
|
|
161
|
-
Metadata handling (optimiser/same_format route). `
|
|
261
|
+
Metadata handling (optimiser/same_format route). `strip` = remove all
|
|
162
262
|
EXIF/IPTC/XMP (default). `keep` = preserve EXIF/ICC/XMP — STABLE
|
|
163
|
-
(worker-proven, libcaesium; lambdas PR #260, staging round-trip +
|
|
164
|
-
|
|
263
|
+
(worker-proven, libcaesium; lambdas PR #260, staging round-trip + unit
|
|
264
|
+
test). `all` is a DEPRECATED alias of `strip` (the pre-2026-06-23 token;
|
|
265
|
+
`all` reading as "strip all" was counterintuitive) — still accepted,
|
|
266
|
+
emits Deprecation/Sunset, migrate to `strip`. The API lowers `strip`→`all`
|
|
267
|
+
at the worker boundary. Any other value is rejected as invalid_options.
|
|
268
|
+
keep_metadata:
|
|
269
|
+
type: array
|
|
270
|
+
items:
|
|
271
|
+
# items.type is `string` (not `enum`) deliberately: the valid categories
|
|
272
|
+
# are listed below + enforced by the API at the stable-flip. SDK operation-
|
|
273
|
+
# schema codegen does not yet support typed array-of-enum (restore `enum` +
|
|
274
|
+
# values:[copyright,gps,date] when that lands — likely at this option's
|
|
275
|
+
# stable-flip). Wire-identical either way (a JSON array of strings).
|
|
276
|
+
type: string
|
|
277
|
+
uniqueItems: true
|
|
278
|
+
availability: planned
|
|
279
|
+
depends_on: { metadata: strip }
|
|
280
|
+
honored_on: [same_format]
|
|
281
|
+
description: >-
|
|
282
|
+
Selective per-category metadata keep (optimiser/same_format route):
|
|
283
|
+
preserve ONLY these categories and strip the rest — refines the strip
|
|
284
|
+
path (`metadata: strip`). Valid categories: `copyright`, `gps` (location),
|
|
285
|
+
`date` (capture time); combinable. `planned` — the worker does not yet
|
|
286
|
+
do selective keep (use `metadata: keep` to preserve everything), so the
|
|
287
|
+
API returns feature_not_available until lambdas proves it.
|
|
165
288
|
optimization_level:
|
|
166
289
|
type: integer
|
|
167
290
|
min: 0
|
|
@@ -171,13 +294,21 @@ operation:
|
|
|
171
294
|
description: "PNG optimization effort (0-6, oxipng). Higher = smaller file, slower encode. Default 3. Optimiser (same_format) route."
|
|
172
295
|
output_format:
|
|
173
296
|
type: enum
|
|
174
|
-
values: [original, webp]
|
|
297
|
+
values: [original, webp, auto, smallest]
|
|
175
298
|
default: original
|
|
299
|
+
per_value_availability:
|
|
300
|
+
auto: { availability: planned }
|
|
301
|
+
smallest: { availability: planned }
|
|
176
302
|
description: >-
|
|
177
303
|
Output format. original = keep input format (default); webp = recompress to
|
|
178
|
-
WebP — the one live compress+format target (proven on staging).
|
|
304
|
+
WebP — the one live compress+format target (proven on staging). Concrete format
|
|
179
305
|
changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
|
|
180
|
-
|
|
306
|
+
`auto` / `smallest` are PLANNED auto-format directives — the server encodes to
|
|
307
|
+
several candidate formats and returns the best (`auto` = the most suitable;
|
|
308
|
+
`smallest` = the absolute fewest bytes), reporting the chosen format via the
|
|
309
|
+
result `mime_type`. They are SELECTION STRATEGIES, not concrete targets (convert
|
|
310
|
+
cannot express "pick the smallest"), so they live here and stay `planned` until
|
|
311
|
+
the API try-all-return-smallest logic + worker proof land. See FORMAT.md.
|
|
181
312
|
lossy:
|
|
182
313
|
type: boolean
|
|
183
314
|
default: false
|
|
@@ -197,8 +328,9 @@ operation:
|
|
|
197
328
|
description: >-
|
|
198
329
|
Resize-inside-Output: target width in pixels (1-16384; width*height <=
|
|
199
330
|
max_output_pixels). Resize the image as part of Output (replace semantics,
|
|
200
|
-
ONE transformed output) using the proven
|
|
201
|
-
|
|
331
|
+
ONE transformed output) using the proven convert resize engine (Lanczos;
|
|
332
|
+
the API routes Output resize through the convert worker, BOTH routes —
|
|
333
|
+
the compress optimiser has no resize) — it is NOT the derivative `thumbnail` op.
|
|
202
334
|
Optional; omit to keep the source dimensions.
|
|
203
335
|
height:
|
|
204
336
|
type: integer
|
|
@@ -213,9 +345,12 @@ operation:
|
|
|
213
345
|
depends_on: { width: set, height: set, logic: or }
|
|
214
346
|
honored_on: [same_format, format_change]
|
|
215
347
|
description: >-
|
|
216
|
-
Resize mode. max = fit within bounds
|
|
217
|
-
|
|
218
|
-
|
|
348
|
+
Resize mode. `max` (default) = fit within bounds, preserving aspect ratio
|
|
349
|
+
and NEVER upscaling — it caps at the source dimensions. This IS the
|
|
350
|
+
"no-enlarge" behaviour (there is no separate `no_enlarge` flag — the
|
|
351
|
+
worker has no such key). `crop`/`scale` = exact dimensions (`scale`
|
|
352
|
+
deliberately enlarges past source). Applies only when width or height is
|
|
353
|
+
set, on whichever Output route runs.
|
|
219
354
|
|
|
220
355
|
image_avif:
|
|
221
356
|
availability: beta
|
|
@@ -237,18 +372,48 @@ operation:
|
|
|
237
372
|
min: 1
|
|
238
373
|
max: 100
|
|
239
374
|
default: 80
|
|
375
|
+
depends_on: { encoding_mode: quality }
|
|
240
376
|
honored_on: [same_format]
|
|
241
|
-
description:
|
|
377
|
+
description: >-
|
|
378
|
+
Compression quality (1 = smallest file, 100 = best quality). Active in
|
|
379
|
+
`quality` mode (default); in `target_size` mode the encode-measure loop
|
|
380
|
+
owns quality, so this option is inactive.
|
|
381
|
+
encoding_mode:
|
|
382
|
+
type: enum
|
|
383
|
+
values: [quality, target_size]
|
|
384
|
+
default: quality
|
|
385
|
+
honored_on: [same_format]
|
|
386
|
+
description: >-
|
|
387
|
+
Compression mode (mirrors compress.video). `quality` = the `quality`
|
|
388
|
+
slider drives the encode (default). `target_size` = hit a byte budget via
|
|
389
|
+
the worker's encode-measure-binary-search loop — STABLE (worker-proven on
|
|
390
|
+
staging, lambdas git-870a7c2: re-encode under target + best-effort +
|
|
391
|
+
original-wins). AVIF encodes are slow, so the loop caps iterations (a
|
|
392
|
+
6-iteration cap, ~18s worst case). Optimiser (same_format) route.
|
|
393
|
+
target_size_bytes:
|
|
394
|
+
type: integer
|
|
395
|
+
min: 1024
|
|
396
|
+
depends_on: { encoding_mode: target_size }
|
|
397
|
+
honored_on: [same_format]
|
|
398
|
+
description: >-
|
|
399
|
+
Target output size in bytes (min 1024 = 1 KiB). The image encode-measure
|
|
400
|
+
loop binary-searches quality to land at or under the target; best-effort
|
|
401
|
+
if the target is unreachable at min quality (the result reports the chosen
|
|
402
|
+
quality + whether the target was met). STABLE (worker-proven, lambdas
|
|
403
|
+
git-870a7c2). Optimiser (same_format) route.
|
|
242
404
|
metadata:
|
|
243
405
|
type: enum
|
|
244
|
-
values: [all]
|
|
245
|
-
default:
|
|
406
|
+
values: [strip, all]
|
|
407
|
+
default: strip
|
|
408
|
+
per_value_availability:
|
|
409
|
+
all: { availability: deprecated }
|
|
246
410
|
honored_on: [same_format]
|
|
247
411
|
description: >-
|
|
248
|
-
Metadata handling. `
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
412
|
+
Metadata handling. `strip` = remove all EXIF/IPTC/XMP (default, the only
|
|
413
|
+
supported behaviour). `all` is a DEPRECATED alias of `strip` (migrate to
|
|
414
|
+
`strip`; the API lowers it at the worker boundary). `keep` is NOT offered
|
|
415
|
+
for AVIF — ravif re-encodes from pixels and cannot preserve metadata (the
|
|
416
|
+
worker rejects `keep` as invalid_options).
|
|
252
417
|
avif_speed:
|
|
253
418
|
type: integer
|
|
254
419
|
min: 1
|
|
@@ -258,13 +423,21 @@ operation:
|
|
|
258
423
|
description: "AVIF encode speed (1-10, ravif). Lower = smaller file, slower encode; higher = faster, larger. Default 4. Optimiser (same_format) route."
|
|
259
424
|
output_format:
|
|
260
425
|
type: enum
|
|
261
|
-
values: [original, webp]
|
|
426
|
+
values: [original, webp, auto, smallest]
|
|
262
427
|
default: original
|
|
428
|
+
per_value_availability:
|
|
429
|
+
auto: { availability: planned }
|
|
430
|
+
smallest: { availability: planned }
|
|
263
431
|
description: >-
|
|
264
432
|
Output format. original = keep input format (default); webp = recompress to
|
|
265
|
-
WebP — the one live compress+format target (proven on staging).
|
|
433
|
+
WebP — the one live compress+format target (proven on staging). Concrete format
|
|
266
434
|
changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
|
|
267
|
-
|
|
435
|
+
`auto` / `smallest` are PLANNED auto-format directives — the server encodes to
|
|
436
|
+
several candidate formats and returns the best (`auto` = the most suitable;
|
|
437
|
+
`smallest` = the absolute fewest bytes), reporting the chosen format via the
|
|
438
|
+
result `mime_type`. They are SELECTION STRATEGIES, not concrete targets (convert
|
|
439
|
+
cannot express "pick the smallest"), so they live here and stay `planned` until
|
|
440
|
+
the API try-all-return-smallest logic + worker proof land. See FORMAT.md.
|
|
268
441
|
width:
|
|
269
442
|
type: integer
|
|
270
443
|
min: 1
|
|
@@ -273,8 +446,9 @@ operation:
|
|
|
273
446
|
description: >-
|
|
274
447
|
Resize-inside-Output: target width in pixels (1-16384; width*height <=
|
|
275
448
|
max_output_pixels). Resize the image as part of Output (replace semantics,
|
|
276
|
-
ONE transformed output) using the proven
|
|
277
|
-
|
|
449
|
+
ONE transformed output) using the proven convert resize engine (Lanczos;
|
|
450
|
+
the API routes Output resize through the convert worker, BOTH routes —
|
|
451
|
+
the compress optimiser has no resize) — it is NOT the derivative `thumbnail` op.
|
|
278
452
|
Optional; omit to keep the source dimensions.
|
|
279
453
|
height:
|
|
280
454
|
type: integer
|
|
@@ -289,9 +463,12 @@ operation:
|
|
|
289
463
|
depends_on: { width: set, height: set, logic: or }
|
|
290
464
|
honored_on: [same_format, format_change]
|
|
291
465
|
description: >-
|
|
292
|
-
Resize mode. max = fit within bounds
|
|
293
|
-
|
|
294
|
-
|
|
466
|
+
Resize mode. `max` (default) = fit within bounds, preserving aspect ratio
|
|
467
|
+
and NEVER upscaling — it caps at the source dimensions. This IS the
|
|
468
|
+
"no-enlarge" behaviour (there is no separate `no_enlarge` flag — the
|
|
469
|
+
worker has no such key). `crop`/`scale` = exact dimensions (`scale`
|
|
470
|
+
deliberately enlarges past source). Applies only when width or height is
|
|
471
|
+
set, on whichever Output route runs.
|
|
295
472
|
|
|
296
473
|
# webp split out of the former bundled image group: it is the one input that
|
|
297
474
|
# carries BOTH Resize (raster, proven in thumbnail-images) AND the optimiser
|
|
@@ -307,36 +484,98 @@ operation:
|
|
|
307
484
|
min: 1
|
|
308
485
|
max: 100
|
|
309
486
|
default: 80
|
|
487
|
+
depends_on: { encoding_mode: quality }
|
|
310
488
|
honored_on: [same_format]
|
|
311
|
-
description:
|
|
489
|
+
description: >-
|
|
490
|
+
Compression quality (1 = smallest file, 100 = best quality). Active in
|
|
491
|
+
`quality` mode (default); in `target_size` mode the encode-measure loop
|
|
492
|
+
owns quality, so this option is inactive.
|
|
493
|
+
encoding_mode:
|
|
494
|
+
type: enum
|
|
495
|
+
values: [quality, target_size]
|
|
496
|
+
default: quality
|
|
497
|
+
honored_on: [same_format]
|
|
498
|
+
description: >-
|
|
499
|
+
Compression mode (mirrors compress.video). `quality` = the `quality`
|
|
500
|
+
slider drives the encode (default). `target_size` = hit a byte budget via
|
|
501
|
+
the worker's encode-measure-binary-search loop — STABLE (worker-proven on
|
|
502
|
+
staging, lambdas git-870a7c2: re-encode under target + best-effort below
|
|
503
|
+
floor + original-wins, all proven). Optimiser (same_format) route.
|
|
504
|
+
target_size_bytes:
|
|
505
|
+
type: integer
|
|
506
|
+
min: 1024
|
|
507
|
+
depends_on: { encoding_mode: target_size }
|
|
508
|
+
honored_on: [same_format]
|
|
509
|
+
description: >-
|
|
510
|
+
Target output size in bytes (min 1024 = 1 KiB). The image encode-measure
|
|
511
|
+
loop binary-searches quality to land at or under the target; best-effort
|
|
512
|
+
if the target is unreachable at min quality (the result reports the chosen
|
|
513
|
+
quality + whether the target was met). STABLE (worker-proven, lambdas
|
|
514
|
+
git-870a7c2). Optimiser (same_format) route.
|
|
312
515
|
metadata:
|
|
313
516
|
type: enum
|
|
314
|
-
values: [
|
|
315
|
-
default:
|
|
517
|
+
values: [strip, keep, all]
|
|
518
|
+
default: strip
|
|
519
|
+
per_value_availability:
|
|
520
|
+
all: { availability: deprecated }
|
|
316
521
|
honored_on: [same_format]
|
|
317
522
|
description: >-
|
|
318
|
-
Metadata handling (optimiser/same_format route). `
|
|
523
|
+
Metadata handling (optimiser/same_format route). `strip` = remove all
|
|
319
524
|
EXIF/IPTC/XMP (default). `keep` = preserve EXIF/ICC/XMP — STABLE
|
|
320
|
-
(worker-proven, libcaesium; lambdas PR #260, staging round-trip +
|
|
321
|
-
|
|
525
|
+
(worker-proven, libcaesium; lambdas PR #260, staging round-trip + unit
|
|
526
|
+
test). `all` is a DEPRECATED alias of `strip` (the pre-2026-06-23 token;
|
|
527
|
+
`all` reading as "strip all" was counterintuitive) — still accepted,
|
|
528
|
+
emits Deprecation/Sunset, migrate to `strip`. The API lowers `strip`→`all`
|
|
529
|
+
at the worker boundary. Any other value is rejected as invalid_options.
|
|
530
|
+
keep_metadata:
|
|
531
|
+
type: array
|
|
532
|
+
items:
|
|
533
|
+
# items.type is `string` (not `enum`) deliberately: the valid categories
|
|
534
|
+
# are listed below + enforced by the API at the stable-flip. SDK operation-
|
|
535
|
+
# schema codegen does not yet support typed array-of-enum (restore `enum` +
|
|
536
|
+
# values:[copyright,gps,date] when that lands — likely at this option's
|
|
537
|
+
# stable-flip). Wire-identical either way (a JSON array of strings).
|
|
538
|
+
type: string
|
|
539
|
+
uniqueItems: true
|
|
540
|
+
availability: planned
|
|
541
|
+
depends_on: { metadata: strip }
|
|
542
|
+
honored_on: [same_format]
|
|
543
|
+
description: >-
|
|
544
|
+
Selective per-category metadata keep (optimiser/same_format route):
|
|
545
|
+
preserve ONLY these categories and strip the rest — refines the strip
|
|
546
|
+
path (`metadata: strip`). Valid categories: `copyright`, `gps` (location),
|
|
547
|
+
`date` (capture time); combinable. `planned` — the worker does not yet
|
|
548
|
+
do selective keep (use `metadata: keep` to preserve everything), so the
|
|
549
|
+
API returns feature_not_available until lambdas proves it.
|
|
322
550
|
output_format:
|
|
323
551
|
type: enum
|
|
324
|
-
values: [original, webp]
|
|
552
|
+
values: [original, webp, auto, smallest]
|
|
325
553
|
default: original
|
|
554
|
+
per_value_availability:
|
|
555
|
+
auto: { availability: planned }
|
|
556
|
+
smallest: { availability: planned }
|
|
326
557
|
description: >-
|
|
327
558
|
Output format. original = keep input format (default); webp = recompress to
|
|
328
|
-
WebP — the one live compress+format target (proven on staging).
|
|
559
|
+
WebP — the one live compress+format target (proven on staging). Concrete format
|
|
329
560
|
changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
|
|
330
|
-
|
|
561
|
+
`auto` / `smallest` are PLANNED auto-format directives — the server encodes to
|
|
562
|
+
several candidate formats and returns the best (`auto` = the most suitable;
|
|
563
|
+
`smallest` = the absolute fewest bytes), reporting the chosen format via the
|
|
564
|
+
result `mime_type`. They are SELECTION STRATEGIES, not concrete targets (convert
|
|
565
|
+
cannot express "pick the smallest"), so they live here and stay `planned` until
|
|
566
|
+
the API try-all-return-smallest logic + worker proof land. See FORMAT.md.
|
|
331
567
|
lossless:
|
|
332
568
|
type: boolean
|
|
333
569
|
default: false
|
|
570
|
+
depends_on: { encoding_mode: quality }
|
|
334
571
|
honored_on: [same_format]
|
|
335
572
|
description: >-
|
|
336
573
|
Encode WebP losslessly (optimiser path): a genuine lossless WebP encode.
|
|
337
574
|
STABLE — the compress-image worker honours the `lossless` bool (un-parked
|
|
338
575
|
2026-06-23). Note a lossless encode can be LARGER than a lossy one at the
|
|
339
|
-
same visual quality.
|
|
576
|
+
same visual quality. Only in `quality` mode — incompatible with
|
|
577
|
+
`target_size` (the byte-budget loop is inherently lossy). Optimiser
|
|
578
|
+
(same_format) route only.
|
|
340
579
|
width:
|
|
341
580
|
type: integer
|
|
342
581
|
min: 1
|
|
@@ -345,8 +584,9 @@ operation:
|
|
|
345
584
|
description: >-
|
|
346
585
|
Resize-inside-Output: target width in pixels (1-16384; width*height <=
|
|
347
586
|
max_output_pixels). Resize the image as part of Output (replace semantics,
|
|
348
|
-
ONE transformed output) using the proven
|
|
349
|
-
|
|
587
|
+
ONE transformed output) using the proven convert resize engine (Lanczos;
|
|
588
|
+
the API routes Output resize through the convert worker, BOTH routes —
|
|
589
|
+
the compress optimiser has no resize) — it is NOT the derivative `thumbnail` op.
|
|
350
590
|
Optional; omit to keep the source dimensions.
|
|
351
591
|
height:
|
|
352
592
|
type: integer
|
|
@@ -361,9 +601,12 @@ operation:
|
|
|
361
601
|
depends_on: { width: set, height: set, logic: or }
|
|
362
602
|
honored_on: [same_format, format_change]
|
|
363
603
|
description: >-
|
|
364
|
-
Resize mode. max = fit within bounds
|
|
365
|
-
|
|
366
|
-
|
|
604
|
+
Resize mode. `max` (default) = fit within bounds, preserving aspect ratio
|
|
605
|
+
and NEVER upscaling — it caps at the source dimensions. This IS the
|
|
606
|
+
"no-enlarge" behaviour (there is no separate `no_enlarge` flag — the
|
|
607
|
+
worker has no such key). `crop`/`scale` = exact dimensions (`scale`
|
|
608
|
+
deliberately enlarges past source). Applies only when width or height is
|
|
609
|
+
set, on whichever Output route runs.
|
|
367
610
|
|
|
368
611
|
# svg is VECTOR: no raster resize (thumbnail-images does not list svg), and the
|
|
369
612
|
# optimiser `lossless` knob does not apply. SVG compression is SVGO; only
|
|
@@ -381,20 +624,31 @@ operation:
|
|
|
381
624
|
description: "Compression quality (1 = smallest file, 100 = best quality)."
|
|
382
625
|
metadata:
|
|
383
626
|
type: enum
|
|
384
|
-
values: [all]
|
|
385
|
-
default:
|
|
627
|
+
values: [strip, all]
|
|
628
|
+
default: strip
|
|
629
|
+
per_value_availability:
|
|
630
|
+
all: { availability: deprecated }
|
|
386
631
|
honored_on: [same_format]
|
|
387
632
|
description: >-
|
|
388
|
-
Metadata handling. `
|
|
389
|
-
`
|
|
390
|
-
|
|
633
|
+
Metadata handling. `strip` = remove all metadata (default, the only
|
|
634
|
+
supported behaviour). `all` is a DEPRECATED alias of `strip` (migrate to
|
|
635
|
+
`strip`; the API lowers it at the worker boundary). `keep` is NOT offered
|
|
636
|
+
for SVG — SVGO optimises the markup and cannot preserve a metadata block
|
|
637
|
+
(the worker rejects `keep` as invalid_options).
|
|
391
638
|
output_format:
|
|
392
639
|
type: enum
|
|
393
|
-
values: [original, webp]
|
|
640
|
+
values: [original, webp, auto, smallest]
|
|
394
641
|
default: original
|
|
642
|
+
per_value_availability:
|
|
643
|
+
auto: { availability: planned }
|
|
644
|
+
smallest: { availability: planned }
|
|
395
645
|
description: >-
|
|
396
646
|
Output format. original = keep input format (default); webp = recompress to
|
|
397
|
-
WebP.
|
|
647
|
+
WebP. Concrete format changes are the convert operation's job. `auto` /
|
|
648
|
+
`smallest` are PLANNED auto-format directives (server picks the best/smallest
|
|
649
|
+
candidate format, reported via the result `mime_type`) — selection strategies,
|
|
650
|
+
not concrete targets, planned until the API logic + worker proof land. See
|
|
651
|
+
FORMAT.md.
|
|
398
652
|
|
|
399
653
|
# gif/tiff: raster Resize is engine-proven (both are in thumbnail-images), but
|
|
400
654
|
# the optimiser `lossless` knob is WebP-only — not advertised here.
|
|
@@ -415,23 +669,56 @@ operation:
|
|
|
415
669
|
GIF the worker honours this but real-world size reduction is typically small.
|
|
416
670
|
metadata:
|
|
417
671
|
type: enum
|
|
418
|
-
values: [
|
|
419
|
-
default:
|
|
672
|
+
values: [strip, keep, all]
|
|
673
|
+
default: strip
|
|
674
|
+
per_value_availability:
|
|
675
|
+
all: { availability: deprecated }
|
|
420
676
|
honored_on: [same_format]
|
|
421
677
|
description: >-
|
|
422
|
-
Metadata handling (optimiser/same_format route). `
|
|
678
|
+
Metadata handling (optimiser/same_format route). `strip` = remove all
|
|
423
679
|
EXIF/IPTC/XMP (default). `keep` = preserve EXIF/ICC/XMP — STABLE
|
|
424
|
-
(worker-proven, libcaesium; lambdas PR #260, staging round-trip +
|
|
425
|
-
|
|
680
|
+
(worker-proven, libcaesium; lambdas PR #260, staging round-trip + unit
|
|
681
|
+
test). `all` is a DEPRECATED alias of `strip` (the pre-2026-06-23 token;
|
|
682
|
+
`all` reading as "strip all" was counterintuitive) — still accepted,
|
|
683
|
+
emits Deprecation/Sunset, migrate to `strip`. The API lowers `strip`→`all`
|
|
684
|
+
at the worker boundary. Any other value is rejected as invalid_options.
|
|
685
|
+
keep_metadata:
|
|
686
|
+
type: array
|
|
687
|
+
items:
|
|
688
|
+
# items.type is `string` (not `enum`) deliberately: the valid categories
|
|
689
|
+
# are listed below + enforced by the API at the stable-flip. SDK operation-
|
|
690
|
+
# schema codegen does not yet support typed array-of-enum (restore `enum` +
|
|
691
|
+
# values:[copyright,gps,date] when that lands — likely at this option's
|
|
692
|
+
# stable-flip). Wire-identical either way (a JSON array of strings).
|
|
693
|
+
type: string
|
|
694
|
+
uniqueItems: true
|
|
695
|
+
availability: planned
|
|
696
|
+
depends_on: { metadata: strip }
|
|
697
|
+
honored_on: [same_format]
|
|
698
|
+
description: >-
|
|
699
|
+
Selective per-category metadata keep (optimiser/same_format route):
|
|
700
|
+
preserve ONLY these categories and strip the rest — refines the strip
|
|
701
|
+
path (`metadata: strip`). Valid categories: `copyright`, `gps` (location),
|
|
702
|
+
`date` (capture time); combinable. `planned` — the worker does not yet
|
|
703
|
+
do selective keep (use `metadata: keep` to preserve everything), so the
|
|
704
|
+
API returns feature_not_available until lambdas proves it.
|
|
426
705
|
output_format:
|
|
427
706
|
type: enum
|
|
428
|
-
values: [original, webp]
|
|
707
|
+
values: [original, webp, auto, smallest]
|
|
429
708
|
default: original
|
|
709
|
+
per_value_availability:
|
|
710
|
+
auto: { availability: planned }
|
|
711
|
+
smallest: { availability: planned }
|
|
430
712
|
description: >-
|
|
431
713
|
Output format. original = keep input format (default); webp = recompress to
|
|
432
|
-
WebP — the one live compress+format target (proven on staging).
|
|
714
|
+
WebP — the one live compress+format target (proven on staging). Concrete format
|
|
433
715
|
changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
|
|
434
|
-
|
|
716
|
+
`auto` / `smallest` are PLANNED auto-format directives — the server encodes to
|
|
717
|
+
several candidate formats and returns the best (`auto` = the most suitable;
|
|
718
|
+
`smallest` = the absolute fewest bytes), reporting the chosen format via the
|
|
719
|
+
result `mime_type`. They are SELECTION STRATEGIES, not concrete targets (convert
|
|
720
|
+
cannot express "pick the smallest"), so they live here and stay `planned` until
|
|
721
|
+
the API try-all-return-smallest logic + worker proof land. See FORMAT.md.
|
|
435
722
|
width:
|
|
436
723
|
type: integer
|
|
437
724
|
min: 1
|
|
@@ -440,8 +727,9 @@ operation:
|
|
|
440
727
|
description: >-
|
|
441
728
|
Resize-inside-Output: target width in pixels (1-16384; width*height <=
|
|
442
729
|
max_output_pixels). Resize the image as part of Output (replace semantics,
|
|
443
|
-
ONE transformed output) using the proven
|
|
444
|
-
|
|
730
|
+
ONE transformed output) using the proven convert resize engine (Lanczos;
|
|
731
|
+
the API routes Output resize through the convert worker, BOTH routes —
|
|
732
|
+
the compress optimiser has no resize) — it is NOT the derivative `thumbnail` op.
|
|
445
733
|
Optional; omit to keep the source dimensions.
|
|
446
734
|
height:
|
|
447
735
|
type: integer
|
|
@@ -456,9 +744,12 @@ operation:
|
|
|
456
744
|
depends_on: { width: set, height: set, logic: or }
|
|
457
745
|
honored_on: [same_format, format_change]
|
|
458
746
|
description: >-
|
|
459
|
-
Resize mode. max = fit within bounds
|
|
460
|
-
|
|
461
|
-
|
|
747
|
+
Resize mode. `max` (default) = fit within bounds, preserving aspect ratio
|
|
748
|
+
and NEVER upscaling — it caps at the source dimensions. This IS the
|
|
749
|
+
"no-enlarge" behaviour (there is no separate `no_enlarge` flag — the
|
|
750
|
+
worker has no such key). `crop`/`scale` = exact dimensions (`scale`
|
|
751
|
+
deliberately enlarges past source). Applies only when width or height is
|
|
752
|
+
set, on whichever Output route runs.
|
|
462
753
|
|
|
463
754
|
audio:
|
|
464
755
|
mimes:
|