@giveitsmaller/contracts 0.36.0 → 0.38.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 +274 -1
- package/accepted-options/image-output-routes.json +56 -12
- package/asyncapi/events.yaml +8 -4
- package/availability/availability.json +500 -59
- 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 +77 -14
- package/dist/operations/compress.js +58 -4
- package/dist/operations/compress.metadata.js +135 -25
- package/dist/operations/convert.d.ts +47 -0
- package/dist/operations/convert.js +39 -0
- package/dist/operations/convert.metadata.js +56 -0
- package/openapi/api.yaml +23 -1
- package/operation-capabilities/operation-capabilities.json +19 -2
- package/operations/schemas/compress.yaml +412 -96
- package/operations/schemas/convert.yaml +158 -6
- package/package.json +1 -1
|
@@ -17,22 +17,39 @@ operation:
|
|
|
17
17
|
# image_png -> + optimization_level (PNG-only)
|
|
18
18
|
# image_avif -> + avif_speed (AVIF-only)
|
|
19
19
|
# image -> webp/gif/svg/tiff (quality + output_format only)
|
|
20
|
-
# The worker reads quality/progressive/optimization_level/avif_speed
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
#
|
|
20
|
+
# The worker reads quality/progressive/optimization_level/avif_speed/lossless
|
|
21
|
+
# (the API now emits lossless) + metadata (strip/keep). The old `mode`
|
|
22
|
+
# (lossy/lossless/auto) was REMOVED (the worker never read it). HISTORY: this
|
|
23
|
+
# header once said width/height/fit/auto_orient "stay removed" and metadata is a
|
|
24
|
+
# fixed `all` — BOTH now superseded by the image-options work: RESIZE
|
|
25
|
+
# (width/height/fit) is back STABLE (v2.97.0, the route-aware Output model);
|
|
26
|
+
# `metadata` is strip/keep (canonical `strip`, deprecated `all`); `auto_orient`
|
|
27
|
+
# is re-added PLANNED (wave-2, below); and the old `icc_profile` is superseded by
|
|
28
|
+
# the decoupled `color_profile` control (wave-2, planned — ICC handling is its
|
|
29
|
+
# own axis, NOT folded into metadata-strip; that fold-in was the silent-colour-
|
|
30
|
+
# shift bug). See the per-option blocks for the live shape.
|
|
27
31
|
#
|
|
28
|
-
# output_format (replicated identically per group):
|
|
29
|
-
# are
|
|
32
|
+
# output_format (replicated identically per group): the LIVE concrete
|
|
33
|
+
# targets are `original` (no-op, default) and `webp` (the one proven
|
|
30
34
|
# 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
|
|
35
|
+
# the compress worker itself never reads output_format). The concrete
|
|
36
|
+
# facade targets jpeg/png/avif stay PRUNED (pruned 2026-06-21) — a dangling
|
|
37
|
+
# coming-soon DUPLICATE of a concrete format is dishonest at source when
|
|
38
|
+
# every such format change is already the convert operation's job (all
|
|
39
|
+
# stable). Re-add a concrete target here only when its compress+format
|
|
40
|
+
# canonicalization actually ships.
|
|
41
|
+
#
|
|
42
|
+
# `auto` / `smallest` are the EXCEPTION (re-added 2026-06-23, planned, the
|
|
43
|
+
# auto-format differentiator): they are SELECTION STRATEGIES, not concrete
|
|
44
|
+
# formats — the server encodes to several candidate formats and returns the
|
|
45
|
+
# best (`auto` = the most suitable; `smallest` = the absolute fewest bytes),
|
|
46
|
+
# reporting the chosen format via the result `mime_type`. `convert` cannot
|
|
47
|
+
# express "pick the smallest" (it needs an explicit target), so these
|
|
48
|
+
# genuinely belong on this compress Output facade, not on convert — that is
|
|
49
|
+
# why they are NOT dangling duplicates. Both stay `per_value_availability:
|
|
50
|
+
# planned` until the API try-all-return-smallest logic + worker proof land
|
|
51
|
+
# (coordinated with api + frontend). They are EXCLUDED from the projection's
|
|
52
|
+
# facade_managed_outputs (not single-target canonicalizations).
|
|
36
53
|
#
|
|
37
54
|
# ---- ROUTE-AWARE "OUTPUT" model (image-options Phase 0, tewB37Jg) ----
|
|
38
55
|
# The user-facing "Output" operation IS this compress op + output_format:
|
|
@@ -89,50 +106,97 @@ operation:
|
|
|
89
106
|
type: enum
|
|
90
107
|
values: [quality, target_size]
|
|
91
108
|
default: quality
|
|
92
|
-
per_value_availability:
|
|
93
|
-
target_size: { availability: planned }
|
|
94
109
|
honored_on: [same_format]
|
|
95
110
|
description: >-
|
|
96
111
|
Compression mode (mirrors compress.video). `quality` = the `quality`
|
|
97
|
-
slider drives the encode (default
|
|
98
|
-
|
|
99
|
-
|
|
112
|
+
slider drives the encode (default). `target_size` = hit a byte budget via
|
|
113
|
+
the worker's encode-measure-binary-search loop — STABLE (worker-proven on
|
|
114
|
+
staging, lambdas git-870a7c2: re-encode under target + best-effort below
|
|
115
|
+
floor + original-wins, all proven). Optimiser (same_format) route.
|
|
100
116
|
target_size_bytes:
|
|
101
117
|
type: integer
|
|
102
118
|
min: 1024
|
|
103
|
-
availability: planned
|
|
104
119
|
depends_on: { encoding_mode: target_size }
|
|
105
120
|
honored_on: [same_format]
|
|
106
121
|
description: >-
|
|
107
|
-
Target output size in bytes (min 1024 = 1 KiB).
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
Optimiser (same_format) route.
|
|
122
|
+
Target output size in bytes (min 1024 = 1 KiB). The image encode-measure
|
|
123
|
+
loop binary-searches quality to land at or under the target; best-effort
|
|
124
|
+
if the target is unreachable at min quality (the result reports the chosen
|
|
125
|
+
quality + whether the target was met). STABLE (worker-proven, lambdas
|
|
126
|
+
git-870a7c2). Optimiser (same_format) route.
|
|
112
127
|
metadata:
|
|
113
128
|
type: enum
|
|
114
|
-
values: [
|
|
115
|
-
default:
|
|
129
|
+
values: [strip, keep, all]
|
|
130
|
+
default: strip
|
|
131
|
+
per_value_availability:
|
|
132
|
+
all: { availability: deprecated }
|
|
116
133
|
honored_on: [same_format]
|
|
117
134
|
description: >-
|
|
118
|
-
Metadata handling (optimiser/same_format route). `
|
|
135
|
+
Metadata handling (optimiser/same_format route). `strip` = remove all
|
|
119
136
|
EXIF/IPTC/XMP (default). `keep` = preserve EXIF/ICC/XMP — STABLE
|
|
120
|
-
(worker-proven, libcaesium; lambdas PR #260, staging round-trip +
|
|
121
|
-
|
|
137
|
+
(worker-proven, libcaesium; lambdas PR #260, staging round-trip + unit
|
|
138
|
+
test). `all` is a DEPRECATED alias of `strip` (the pre-2026-06-23 token;
|
|
139
|
+
`all` reading as "strip all" was counterintuitive) — still accepted,
|
|
140
|
+
emits Deprecation/Sunset, migrate to `strip`. The API lowers `strip`→`all`
|
|
141
|
+
at the worker boundary. Any other value is rejected as invalid_options.
|
|
142
|
+
keep_metadata:
|
|
143
|
+
type: array
|
|
144
|
+
items:
|
|
145
|
+
# items.type is `string` (not `enum`) deliberately: the valid categories
|
|
146
|
+
# are listed below + enforced by the API at the stable-flip. SDK operation-
|
|
147
|
+
# schema codegen does not yet support typed array-of-enum (restore `enum` +
|
|
148
|
+
# values:[copyright,gps,date] when that lands — likely at this option's
|
|
149
|
+
# stable-flip). Wire-identical either way (a JSON array of strings).
|
|
150
|
+
type: string
|
|
151
|
+
uniqueItems: true
|
|
152
|
+
availability: planned
|
|
153
|
+
depends_on: { metadata: strip }
|
|
154
|
+
honored_on: [same_format]
|
|
155
|
+
description: >-
|
|
156
|
+
Selective per-category metadata keep (optimiser/same_format route):
|
|
157
|
+
preserve ONLY these categories and strip the rest — refines the strip
|
|
158
|
+
path (`metadata: strip`). Valid categories: `copyright`, `gps` (location),
|
|
159
|
+
`date` (capture time); combinable. `planned` — the worker does not yet
|
|
160
|
+
do selective keep (use `metadata: keep` to preserve everything), so the
|
|
161
|
+
API returns feature_not_available until lambdas proves it.
|
|
122
162
|
progressive:
|
|
123
163
|
type: boolean
|
|
124
164
|
default: true
|
|
125
165
|
honored_on: [same_format]
|
|
126
166
|
description: "Enable progressive JPEG rendering (a low-quality preview renders first, then refines). JPEG only — the optimiser (same_format) route."
|
|
167
|
+
chroma_subsampling:
|
|
168
|
+
type: enum
|
|
169
|
+
values: ["420", "422", "444"]
|
|
170
|
+
honored_on: [same_format]
|
|
171
|
+
description: >-
|
|
172
|
+
JPEG chroma subsampling — the colour-resolution/size trade-off.
|
|
173
|
+
`420` (4:2:0) = smallest, chroma at quarter resolution (default-ish for
|
|
174
|
+
web photos); `422` (4:2:2) = half-horizontal; `444` (4:4:4) = full chroma
|
|
175
|
+
(largest, best for sharp colour edges / text). JPEG ONLY (declared on
|
|
176
|
+
image_jpeg only — ravif hardcodes 4:4:4, libwebp lossy locks 4:2:0).
|
|
177
|
+
String values (the worker strict-matches strings). STABLE — worker-proven
|
|
178
|
+
on staging (lambdas PR #264, deployed git-f2bef85: output JPEG SOF luma
|
|
179
|
+
sampling bytes verified 0x22/0x21/0x11 for 420/422/444). INCOMPATIBLE with
|
|
180
|
+
`lossless` (any chroma value): lossless JPEG is a DCT-coefficient copy and
|
|
181
|
+
cannot resample chroma — see the chroma_subsampling.lossless_conflict
|
|
182
|
+
constraint.
|
|
127
183
|
output_format:
|
|
128
184
|
type: enum
|
|
129
|
-
values: [original, webp]
|
|
185
|
+
values: [original, webp, auto, smallest]
|
|
130
186
|
default: original
|
|
187
|
+
per_value_availability:
|
|
188
|
+
auto: { availability: planned }
|
|
189
|
+
smallest: { availability: planned }
|
|
131
190
|
description: >-
|
|
132
191
|
Output format. original = keep input format (default); webp = recompress to
|
|
133
|
-
WebP — the one live compress+format target (proven on staging).
|
|
192
|
+
WebP — the one live compress+format target (proven on staging). Concrete format
|
|
134
193
|
changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
|
|
135
|
-
|
|
194
|
+
`auto` / `smallest` are PLANNED auto-format directives — the server encodes to
|
|
195
|
+
several candidate formats and returns the best (`auto` = the most suitable;
|
|
196
|
+
`smallest` = the absolute fewest bytes), reporting the chosen format via the
|
|
197
|
+
result `mime_type`. They are SELECTION STRATEGIES, not concrete targets (convert
|
|
198
|
+
cannot express "pick the smallest"), so they live here and stay `planned` until
|
|
199
|
+
the API try-all-return-smallest logic + worker proof land. See FORMAT.md.
|
|
136
200
|
lossless:
|
|
137
201
|
type: boolean
|
|
138
202
|
default: false
|
|
@@ -177,6 +241,33 @@ operation:
|
|
|
177
241
|
worker has no such key). `crop`/`scale` = exact dimensions (`scale`
|
|
178
242
|
deliberately enlarges past source). Applies only when width or height is
|
|
179
243
|
set, on whichever Output route runs.
|
|
244
|
+
color_profile:
|
|
245
|
+
type: enum
|
|
246
|
+
values: [keep, srgb, strip]
|
|
247
|
+
default: keep
|
|
248
|
+
availability: planned
|
|
249
|
+
honored_on: [same_format, format_change]
|
|
250
|
+
description: >-
|
|
251
|
+
ICC colour-profile handling — its OWN control, DECOUPLED from `metadata`
|
|
252
|
+
(stripping metadata must NOT silently shift colours; that coupling is the
|
|
253
|
+
correctness bug this fixes). `keep` (default) = preserve the embedded
|
|
254
|
+
profile; `srgb` = convert to sRGB (also handles CMYK→sRGB); `strip` = drop
|
|
255
|
+
the profile (smallest — only when the consumer manages colour itself).
|
|
256
|
+
`planned` — the worker does not yet honour it (today the default strips ICC
|
|
257
|
+
during metadata-strip; the fix preserves it). Applies on BOTH Output routes
|
|
258
|
+
(optimiser preserves; transcoder preserves/converts). Worker-proven flip.
|
|
259
|
+
auto_orient:
|
|
260
|
+
type: boolean
|
|
261
|
+
default: true
|
|
262
|
+
availability: planned
|
|
263
|
+
honored_on: [same_format, format_change]
|
|
264
|
+
description: >-
|
|
265
|
+
Bake EXIF orientation into the pixels (honour the camera/device rotation
|
|
266
|
+
tag) so the output displays upright everywhere, then drop the now-redundant
|
|
267
|
+
orientation tag. `planned` — a restored control (was removed): the worker
|
|
268
|
+
must apply the EXIF-orientation transform before encode on both Output
|
|
269
|
+
routes. Default `true` (a behaviour change, proven planned-first). No-op for
|
|
270
|
+
inputs without an orientation tag.
|
|
180
271
|
|
|
181
272
|
image_png:
|
|
182
273
|
mimes:
|
|
@@ -192,14 +283,39 @@ operation:
|
|
|
192
283
|
description: "Compression quality (1 = smallest file, 100 = best quality)."
|
|
193
284
|
metadata:
|
|
194
285
|
type: enum
|
|
195
|
-
values: [
|
|
196
|
-
default:
|
|
286
|
+
values: [strip, keep, all]
|
|
287
|
+
default: strip
|
|
288
|
+
per_value_availability:
|
|
289
|
+
all: { availability: deprecated }
|
|
197
290
|
honored_on: [same_format]
|
|
198
291
|
description: >-
|
|
199
|
-
Metadata handling (optimiser/same_format route). `
|
|
292
|
+
Metadata handling (optimiser/same_format route). `strip` = remove all
|
|
200
293
|
EXIF/IPTC/XMP (default). `keep` = preserve EXIF/ICC/XMP — STABLE
|
|
201
|
-
(worker-proven, libcaesium; lambdas PR #260, staging round-trip +
|
|
202
|
-
|
|
294
|
+
(worker-proven, libcaesium; lambdas PR #260, staging round-trip + unit
|
|
295
|
+
test). `all` is a DEPRECATED alias of `strip` (the pre-2026-06-23 token;
|
|
296
|
+
`all` reading as "strip all" was counterintuitive) — still accepted,
|
|
297
|
+
emits Deprecation/Sunset, migrate to `strip`. The API lowers `strip`→`all`
|
|
298
|
+
at the worker boundary. Any other value is rejected as invalid_options.
|
|
299
|
+
keep_metadata:
|
|
300
|
+
type: array
|
|
301
|
+
items:
|
|
302
|
+
# items.type is `string` (not `enum`) deliberately: the valid categories
|
|
303
|
+
# are listed below + enforced by the API at the stable-flip. SDK operation-
|
|
304
|
+
# schema codegen does not yet support typed array-of-enum (restore `enum` +
|
|
305
|
+
# values:[copyright,gps,date] when that lands — likely at this option's
|
|
306
|
+
# stable-flip). Wire-identical either way (a JSON array of strings).
|
|
307
|
+
type: string
|
|
308
|
+
uniqueItems: true
|
|
309
|
+
availability: planned
|
|
310
|
+
depends_on: { metadata: strip }
|
|
311
|
+
honored_on: [same_format]
|
|
312
|
+
description: >-
|
|
313
|
+
Selective per-category metadata keep (optimiser/same_format route):
|
|
314
|
+
preserve ONLY these categories and strip the rest — refines the strip
|
|
315
|
+
path (`metadata: strip`). Valid categories: `copyright`, `gps` (location),
|
|
316
|
+
`date` (capture time); combinable. `planned` — the worker does not yet
|
|
317
|
+
do selective keep (use `metadata: keep` to preserve everything), so the
|
|
318
|
+
API returns feature_not_available until lambdas proves it.
|
|
203
319
|
optimization_level:
|
|
204
320
|
type: integer
|
|
205
321
|
min: 0
|
|
@@ -209,13 +325,21 @@ operation:
|
|
|
209
325
|
description: "PNG optimization effort (0-6, oxipng). Higher = smaller file, slower encode. Default 3. Optimiser (same_format) route."
|
|
210
326
|
output_format:
|
|
211
327
|
type: enum
|
|
212
|
-
values: [original, webp]
|
|
328
|
+
values: [original, webp, auto, smallest]
|
|
213
329
|
default: original
|
|
330
|
+
per_value_availability:
|
|
331
|
+
auto: { availability: planned }
|
|
332
|
+
smallest: { availability: planned }
|
|
214
333
|
description: >-
|
|
215
334
|
Output format. original = keep input format (default); webp = recompress to
|
|
216
|
-
WebP — the one live compress+format target (proven on staging).
|
|
335
|
+
WebP — the one live compress+format target (proven on staging). Concrete format
|
|
217
336
|
changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
|
|
218
|
-
|
|
337
|
+
`auto` / `smallest` are PLANNED auto-format directives — the server encodes to
|
|
338
|
+
several candidate formats and returns the best (`auto` = the most suitable;
|
|
339
|
+
`smallest` = the absolute fewest bytes), reporting the chosen format via the
|
|
340
|
+
result `mime_type`. They are SELECTION STRATEGIES, not concrete targets (convert
|
|
341
|
+
cannot express "pick the smallest"), so they live here and stay `planned` until
|
|
342
|
+
the API try-all-return-smallest logic + worker proof land. See FORMAT.md.
|
|
219
343
|
lossy:
|
|
220
344
|
type: boolean
|
|
221
345
|
default: false
|
|
@@ -258,6 +382,33 @@ operation:
|
|
|
258
382
|
worker has no such key). `crop`/`scale` = exact dimensions (`scale`
|
|
259
383
|
deliberately enlarges past source). Applies only when width or height is
|
|
260
384
|
set, on whichever Output route runs.
|
|
385
|
+
color_profile:
|
|
386
|
+
type: enum
|
|
387
|
+
values: [keep, srgb, strip]
|
|
388
|
+
default: keep
|
|
389
|
+
availability: planned
|
|
390
|
+
honored_on: [same_format, format_change]
|
|
391
|
+
description: >-
|
|
392
|
+
ICC colour-profile handling — its OWN control, DECOUPLED from `metadata`
|
|
393
|
+
(stripping metadata must NOT silently shift colours; that coupling is the
|
|
394
|
+
correctness bug this fixes). `keep` (default) = preserve the embedded
|
|
395
|
+
profile; `srgb` = convert to sRGB (also handles CMYK→sRGB); `strip` = drop
|
|
396
|
+
the profile (smallest — only when the consumer manages colour itself).
|
|
397
|
+
`planned` — the worker does not yet honour it (today the default strips ICC
|
|
398
|
+
during metadata-strip; the fix preserves it). Applies on BOTH Output routes
|
|
399
|
+
(optimiser preserves; transcoder preserves/converts). Worker-proven flip.
|
|
400
|
+
auto_orient:
|
|
401
|
+
type: boolean
|
|
402
|
+
default: true
|
|
403
|
+
availability: planned
|
|
404
|
+
honored_on: [same_format, format_change]
|
|
405
|
+
description: >-
|
|
406
|
+
Bake EXIF orientation into the pixels (honour the camera/device rotation
|
|
407
|
+
tag) so the output displays upright everywhere, then drop the now-redundant
|
|
408
|
+
orientation tag. `planned` — a restored control (was removed): the worker
|
|
409
|
+
must apply the EXIF-orientation transform before encode on both Output
|
|
410
|
+
routes. Default `true` (a behaviour change, proven planned-first). No-op for
|
|
411
|
+
inputs without an orientation tag.
|
|
261
412
|
|
|
262
413
|
image_avif:
|
|
263
414
|
availability: beta
|
|
@@ -289,37 +440,38 @@ operation:
|
|
|
289
440
|
type: enum
|
|
290
441
|
values: [quality, target_size]
|
|
291
442
|
default: quality
|
|
292
|
-
per_value_availability:
|
|
293
|
-
target_size: { availability: planned }
|
|
294
443
|
honored_on: [same_format]
|
|
295
444
|
description: >-
|
|
296
445
|
Compression mode (mirrors compress.video). `quality` = the `quality`
|
|
297
|
-
slider drives the encode (default
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
loop caps iterations
|
|
446
|
+
slider drives the encode (default). `target_size` = hit a byte budget via
|
|
447
|
+
the worker's encode-measure-binary-search loop — STABLE (worker-proven on
|
|
448
|
+
staging, lambdas git-870a7c2: re-encode under target + best-effort +
|
|
449
|
+
original-wins). AVIF encodes are slow, so the loop caps iterations (a
|
|
450
|
+
6-iteration cap, ~18s worst case). Optimiser (same_format) route.
|
|
301
451
|
target_size_bytes:
|
|
302
452
|
type: integer
|
|
303
453
|
min: 1024
|
|
304
|
-
availability: planned
|
|
305
454
|
depends_on: { encoding_mode: target_size }
|
|
306
455
|
honored_on: [same_format]
|
|
307
456
|
description: >-
|
|
308
|
-
Target output size in bytes (min 1024 = 1 KiB).
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
Optimiser (same_format) route.
|
|
457
|
+
Target output size in bytes (min 1024 = 1 KiB). The image encode-measure
|
|
458
|
+
loop binary-searches quality to land at or under the target; best-effort
|
|
459
|
+
if the target is unreachable at min quality (the result reports the chosen
|
|
460
|
+
quality + whether the target was met). STABLE (worker-proven, lambdas
|
|
461
|
+
git-870a7c2). Optimiser (same_format) route.
|
|
313
462
|
metadata:
|
|
314
463
|
type: enum
|
|
315
|
-
values: [all]
|
|
316
|
-
default:
|
|
464
|
+
values: [strip, all]
|
|
465
|
+
default: strip
|
|
466
|
+
per_value_availability:
|
|
467
|
+
all: { availability: deprecated }
|
|
317
468
|
honored_on: [same_format]
|
|
318
469
|
description: >-
|
|
319
|
-
Metadata handling. `
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
470
|
+
Metadata handling. `strip` = remove all EXIF/IPTC/XMP (default, the only
|
|
471
|
+
supported behaviour). `all` is a DEPRECATED alias of `strip` (migrate to
|
|
472
|
+
`strip`; the API lowers it at the worker boundary). `keep` is NOT offered
|
|
473
|
+
for AVIF — ravif re-encodes from pixels and cannot preserve metadata (the
|
|
474
|
+
worker rejects `keep` as invalid_options).
|
|
323
475
|
avif_speed:
|
|
324
476
|
type: integer
|
|
325
477
|
min: 1
|
|
@@ -329,13 +481,21 @@ operation:
|
|
|
329
481
|
description: "AVIF encode speed (1-10, ravif). Lower = smaller file, slower encode; higher = faster, larger. Default 4. Optimiser (same_format) route."
|
|
330
482
|
output_format:
|
|
331
483
|
type: enum
|
|
332
|
-
values: [original, webp]
|
|
484
|
+
values: [original, webp, auto, smallest]
|
|
333
485
|
default: original
|
|
486
|
+
per_value_availability:
|
|
487
|
+
auto: { availability: planned }
|
|
488
|
+
smallest: { availability: planned }
|
|
334
489
|
description: >-
|
|
335
490
|
Output format. original = keep input format (default); webp = recompress to
|
|
336
|
-
WebP — the one live compress+format target (proven on staging).
|
|
491
|
+
WebP — the one live compress+format target (proven on staging). Concrete format
|
|
337
492
|
changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
|
|
338
|
-
|
|
493
|
+
`auto` / `smallest` are PLANNED auto-format directives — the server encodes to
|
|
494
|
+
several candidate formats and returns the best (`auto` = the most suitable;
|
|
495
|
+
`smallest` = the absolute fewest bytes), reporting the chosen format via the
|
|
496
|
+
result `mime_type`. They are SELECTION STRATEGIES, not concrete targets (convert
|
|
497
|
+
cannot express "pick the smallest"), so they live here and stay `planned` until
|
|
498
|
+
the API try-all-return-smallest logic + worker proof land. See FORMAT.md.
|
|
339
499
|
width:
|
|
340
500
|
type: integer
|
|
341
501
|
min: 1
|
|
@@ -367,6 +527,33 @@ operation:
|
|
|
367
527
|
worker has no such key). `crop`/`scale` = exact dimensions (`scale`
|
|
368
528
|
deliberately enlarges past source). Applies only when width or height is
|
|
369
529
|
set, on whichever Output route runs.
|
|
530
|
+
color_profile:
|
|
531
|
+
type: enum
|
|
532
|
+
values: [keep, srgb, strip]
|
|
533
|
+
default: keep
|
|
534
|
+
availability: planned
|
|
535
|
+
honored_on: [same_format, format_change]
|
|
536
|
+
description: >-
|
|
537
|
+
ICC colour-profile handling — its OWN control, DECOUPLED from `metadata`
|
|
538
|
+
(stripping metadata must NOT silently shift colours; that coupling is the
|
|
539
|
+
correctness bug this fixes). `keep` (default) = preserve the embedded
|
|
540
|
+
profile; `srgb` = convert to sRGB (also handles CMYK→sRGB); `strip` = drop
|
|
541
|
+
the profile (smallest — only when the consumer manages colour itself).
|
|
542
|
+
`planned` — the worker does not yet honour it (today the default strips ICC
|
|
543
|
+
during metadata-strip; the fix preserves it). Applies on BOTH Output routes
|
|
544
|
+
(optimiser preserves; transcoder preserves/converts). Worker-proven flip.
|
|
545
|
+
auto_orient:
|
|
546
|
+
type: boolean
|
|
547
|
+
default: true
|
|
548
|
+
availability: planned
|
|
549
|
+
honored_on: [same_format, format_change]
|
|
550
|
+
description: >-
|
|
551
|
+
Bake EXIF orientation into the pixels (honour the camera/device rotation
|
|
552
|
+
tag) so the output displays upright everywhere, then drop the now-redundant
|
|
553
|
+
orientation tag. `planned` — a restored control (was removed): the worker
|
|
554
|
+
must apply the EXIF-orientation transform before encode on both Output
|
|
555
|
+
routes. Default `true` (a behaviour change, proven planned-first). No-op for
|
|
556
|
+
inputs without an orientation tag.
|
|
370
557
|
|
|
371
558
|
# webp split out of the former bundled image group: it is the one input that
|
|
372
559
|
# carries BOTH Resize (raster, proven in thumbnail-images) AND the optimiser
|
|
@@ -392,45 +579,76 @@ operation:
|
|
|
392
579
|
type: enum
|
|
393
580
|
values: [quality, target_size]
|
|
394
581
|
default: quality
|
|
395
|
-
per_value_availability:
|
|
396
|
-
target_size: { availability: planned }
|
|
397
582
|
honored_on: [same_format]
|
|
398
583
|
description: >-
|
|
399
584
|
Compression mode (mirrors compress.video). `quality` = the `quality`
|
|
400
|
-
slider drives the encode (default
|
|
401
|
-
|
|
402
|
-
|
|
585
|
+
slider drives the encode (default). `target_size` = hit a byte budget via
|
|
586
|
+
the worker's encode-measure-binary-search loop — STABLE (worker-proven on
|
|
587
|
+
staging, lambdas git-870a7c2: re-encode under target + best-effort below
|
|
588
|
+
floor + original-wins, all proven). Optimiser (same_format) route.
|
|
403
589
|
target_size_bytes:
|
|
404
590
|
type: integer
|
|
405
591
|
min: 1024
|
|
406
|
-
availability: planned
|
|
407
592
|
depends_on: { encoding_mode: target_size }
|
|
408
593
|
honored_on: [same_format]
|
|
409
594
|
description: >-
|
|
410
|
-
Target output size in bytes (min 1024 = 1 KiB).
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
Optimiser (same_format) route.
|
|
595
|
+
Target output size in bytes (min 1024 = 1 KiB). The image encode-measure
|
|
596
|
+
loop binary-searches quality to land at or under the target; best-effort
|
|
597
|
+
if the target is unreachable at min quality (the result reports the chosen
|
|
598
|
+
quality + whether the target was met). STABLE (worker-proven, lambdas
|
|
599
|
+
git-870a7c2). Optimiser (same_format) route.
|
|
415
600
|
metadata:
|
|
416
601
|
type: enum
|
|
417
|
-
values: [
|
|
418
|
-
default:
|
|
602
|
+
values: [strip, keep, all]
|
|
603
|
+
default: strip
|
|
604
|
+
per_value_availability:
|
|
605
|
+
all: { availability: deprecated }
|
|
419
606
|
honored_on: [same_format]
|
|
420
607
|
description: >-
|
|
421
|
-
Metadata handling (optimiser/same_format route). `
|
|
608
|
+
Metadata handling (optimiser/same_format route). `strip` = remove all
|
|
422
609
|
EXIF/IPTC/XMP (default). `keep` = preserve EXIF/ICC/XMP — STABLE
|
|
423
|
-
(worker-proven, libcaesium; lambdas PR #260, staging round-trip +
|
|
424
|
-
|
|
610
|
+
(worker-proven, libcaesium; lambdas PR #260, staging round-trip + unit
|
|
611
|
+
test). `all` is a DEPRECATED alias of `strip` (the pre-2026-06-23 token;
|
|
612
|
+
`all` reading as "strip all" was counterintuitive) — still accepted,
|
|
613
|
+
emits Deprecation/Sunset, migrate to `strip`. The API lowers `strip`→`all`
|
|
614
|
+
at the worker boundary. Any other value is rejected as invalid_options.
|
|
615
|
+
keep_metadata:
|
|
616
|
+
type: array
|
|
617
|
+
items:
|
|
618
|
+
# items.type is `string` (not `enum`) deliberately: the valid categories
|
|
619
|
+
# are listed below + enforced by the API at the stable-flip. SDK operation-
|
|
620
|
+
# schema codegen does not yet support typed array-of-enum (restore `enum` +
|
|
621
|
+
# values:[copyright,gps,date] when that lands — likely at this option's
|
|
622
|
+
# stable-flip). Wire-identical either way (a JSON array of strings).
|
|
623
|
+
type: string
|
|
624
|
+
uniqueItems: true
|
|
625
|
+
availability: planned
|
|
626
|
+
depends_on: { metadata: strip }
|
|
627
|
+
honored_on: [same_format]
|
|
628
|
+
description: >-
|
|
629
|
+
Selective per-category metadata keep (optimiser/same_format route):
|
|
630
|
+
preserve ONLY these categories and strip the rest — refines the strip
|
|
631
|
+
path (`metadata: strip`). Valid categories: `copyright`, `gps` (location),
|
|
632
|
+
`date` (capture time); combinable. `planned` — the worker does not yet
|
|
633
|
+
do selective keep (use `metadata: keep` to preserve everything), so the
|
|
634
|
+
API returns feature_not_available until lambdas proves it.
|
|
425
635
|
output_format:
|
|
426
636
|
type: enum
|
|
427
|
-
values: [original, webp]
|
|
637
|
+
values: [original, webp, auto, smallest]
|
|
428
638
|
default: original
|
|
639
|
+
per_value_availability:
|
|
640
|
+
auto: { availability: planned }
|
|
641
|
+
smallest: { availability: planned }
|
|
429
642
|
description: >-
|
|
430
643
|
Output format. original = keep input format (default); webp = recompress to
|
|
431
|
-
WebP — the one live compress+format target (proven on staging).
|
|
644
|
+
WebP — the one live compress+format target (proven on staging). Concrete format
|
|
432
645
|
changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
|
|
433
|
-
|
|
646
|
+
`auto` / `smallest` are PLANNED auto-format directives — the server encodes to
|
|
647
|
+
several candidate formats and returns the best (`auto` = the most suitable;
|
|
648
|
+
`smallest` = the absolute fewest bytes), reporting the chosen format via the
|
|
649
|
+
result `mime_type`. They are SELECTION STRATEGIES, not concrete targets (convert
|
|
650
|
+
cannot express "pick the smallest"), so they live here and stay `planned` until
|
|
651
|
+
the API try-all-return-smallest logic + worker proof land. See FORMAT.md.
|
|
434
652
|
lossless:
|
|
435
653
|
type: boolean
|
|
436
654
|
default: false
|
|
@@ -474,6 +692,33 @@ operation:
|
|
|
474
692
|
worker has no such key). `crop`/`scale` = exact dimensions (`scale`
|
|
475
693
|
deliberately enlarges past source). Applies only when width or height is
|
|
476
694
|
set, on whichever Output route runs.
|
|
695
|
+
color_profile:
|
|
696
|
+
type: enum
|
|
697
|
+
values: [keep, srgb, strip]
|
|
698
|
+
default: keep
|
|
699
|
+
availability: planned
|
|
700
|
+
honored_on: [same_format, format_change]
|
|
701
|
+
description: >-
|
|
702
|
+
ICC colour-profile handling — its OWN control, DECOUPLED from `metadata`
|
|
703
|
+
(stripping metadata must NOT silently shift colours; that coupling is the
|
|
704
|
+
correctness bug this fixes). `keep` (default) = preserve the embedded
|
|
705
|
+
profile; `srgb` = convert to sRGB (also handles CMYK→sRGB); `strip` = drop
|
|
706
|
+
the profile (smallest — only when the consumer manages colour itself).
|
|
707
|
+
`planned` — the worker does not yet honour it (today the default strips ICC
|
|
708
|
+
during metadata-strip; the fix preserves it). Applies on BOTH Output routes
|
|
709
|
+
(optimiser preserves; transcoder preserves/converts). Worker-proven flip.
|
|
710
|
+
auto_orient:
|
|
711
|
+
type: boolean
|
|
712
|
+
default: true
|
|
713
|
+
availability: planned
|
|
714
|
+
honored_on: [same_format, format_change]
|
|
715
|
+
description: >-
|
|
716
|
+
Bake EXIF orientation into the pixels (honour the camera/device rotation
|
|
717
|
+
tag) so the output displays upright everywhere, then drop the now-redundant
|
|
718
|
+
orientation tag. `planned` — a restored control (was removed): the worker
|
|
719
|
+
must apply the EXIF-orientation transform before encode on both Output
|
|
720
|
+
routes. Default `true` (a behaviour change, proven planned-first). No-op for
|
|
721
|
+
inputs without an orientation tag.
|
|
477
722
|
|
|
478
723
|
# svg is VECTOR: no raster resize (thumbnail-images does not list svg), and the
|
|
479
724
|
# optimiser `lossless` knob does not apply. SVG compression is SVGO; only
|
|
@@ -491,20 +736,31 @@ operation:
|
|
|
491
736
|
description: "Compression quality (1 = smallest file, 100 = best quality)."
|
|
492
737
|
metadata:
|
|
493
738
|
type: enum
|
|
494
|
-
values: [all]
|
|
495
|
-
default:
|
|
739
|
+
values: [strip, all]
|
|
740
|
+
default: strip
|
|
741
|
+
per_value_availability:
|
|
742
|
+
all: { availability: deprecated }
|
|
496
743
|
honored_on: [same_format]
|
|
497
744
|
description: >-
|
|
498
|
-
Metadata handling. `
|
|
499
|
-
`
|
|
500
|
-
|
|
745
|
+
Metadata handling. `strip` = remove all metadata (default, the only
|
|
746
|
+
supported behaviour). `all` is a DEPRECATED alias of `strip` (migrate to
|
|
747
|
+
`strip`; the API lowers it at the worker boundary). `keep` is NOT offered
|
|
748
|
+
for SVG — SVGO optimises the markup and cannot preserve a metadata block
|
|
749
|
+
(the worker rejects `keep` as invalid_options).
|
|
501
750
|
output_format:
|
|
502
751
|
type: enum
|
|
503
|
-
values: [original, webp]
|
|
752
|
+
values: [original, webp, auto, smallest]
|
|
504
753
|
default: original
|
|
754
|
+
per_value_availability:
|
|
755
|
+
auto: { availability: planned }
|
|
756
|
+
smallest: { availability: planned }
|
|
505
757
|
description: >-
|
|
506
758
|
Output format. original = keep input format (default); webp = recompress to
|
|
507
|
-
WebP.
|
|
759
|
+
WebP. Concrete format changes are the convert operation's job. `auto` /
|
|
760
|
+
`smallest` are PLANNED auto-format directives (server picks the best/smallest
|
|
761
|
+
candidate format, reported via the result `mime_type`) — selection strategies,
|
|
762
|
+
not concrete targets, planned until the API logic + worker proof land. See
|
|
763
|
+
FORMAT.md.
|
|
508
764
|
|
|
509
765
|
# gif/tiff: raster Resize is engine-proven (both are in thumbnail-images), but
|
|
510
766
|
# the optimiser `lossless` knob is WebP-only — not advertised here.
|
|
@@ -525,23 +781,56 @@ operation:
|
|
|
525
781
|
GIF the worker honours this but real-world size reduction is typically small.
|
|
526
782
|
metadata:
|
|
527
783
|
type: enum
|
|
528
|
-
values: [
|
|
529
|
-
default:
|
|
784
|
+
values: [strip, keep, all]
|
|
785
|
+
default: strip
|
|
786
|
+
per_value_availability:
|
|
787
|
+
all: { availability: deprecated }
|
|
530
788
|
honored_on: [same_format]
|
|
531
789
|
description: >-
|
|
532
|
-
Metadata handling (optimiser/same_format route). `
|
|
790
|
+
Metadata handling (optimiser/same_format route). `strip` = remove all
|
|
533
791
|
EXIF/IPTC/XMP (default). `keep` = preserve EXIF/ICC/XMP — STABLE
|
|
534
|
-
(worker-proven, libcaesium; lambdas PR #260, staging round-trip +
|
|
535
|
-
|
|
792
|
+
(worker-proven, libcaesium; lambdas PR #260, staging round-trip + unit
|
|
793
|
+
test). `all` is a DEPRECATED alias of `strip` (the pre-2026-06-23 token;
|
|
794
|
+
`all` reading as "strip all" was counterintuitive) — still accepted,
|
|
795
|
+
emits Deprecation/Sunset, migrate to `strip`. The API lowers `strip`→`all`
|
|
796
|
+
at the worker boundary. Any other value is rejected as invalid_options.
|
|
797
|
+
keep_metadata:
|
|
798
|
+
type: array
|
|
799
|
+
items:
|
|
800
|
+
# items.type is `string` (not `enum`) deliberately: the valid categories
|
|
801
|
+
# are listed below + enforced by the API at the stable-flip. SDK operation-
|
|
802
|
+
# schema codegen does not yet support typed array-of-enum (restore `enum` +
|
|
803
|
+
# values:[copyright,gps,date] when that lands — likely at this option's
|
|
804
|
+
# stable-flip). Wire-identical either way (a JSON array of strings).
|
|
805
|
+
type: string
|
|
806
|
+
uniqueItems: true
|
|
807
|
+
availability: planned
|
|
808
|
+
depends_on: { metadata: strip }
|
|
809
|
+
honored_on: [same_format]
|
|
810
|
+
description: >-
|
|
811
|
+
Selective per-category metadata keep (optimiser/same_format route):
|
|
812
|
+
preserve ONLY these categories and strip the rest — refines the strip
|
|
813
|
+
path (`metadata: strip`). Valid categories: `copyright`, `gps` (location),
|
|
814
|
+
`date` (capture time); combinable. `planned` — the worker does not yet
|
|
815
|
+
do selective keep (use `metadata: keep` to preserve everything), so the
|
|
816
|
+
API returns feature_not_available until lambdas proves it.
|
|
536
817
|
output_format:
|
|
537
818
|
type: enum
|
|
538
|
-
values: [original, webp]
|
|
819
|
+
values: [original, webp, auto, smallest]
|
|
539
820
|
default: original
|
|
821
|
+
per_value_availability:
|
|
822
|
+
auto: { availability: planned }
|
|
823
|
+
smallest: { availability: planned }
|
|
540
824
|
description: >-
|
|
541
825
|
Output format. original = keep input format (default); webp = recompress to
|
|
542
|
-
WebP — the one live compress+format target (proven on staging).
|
|
826
|
+
WebP — the one live compress+format target (proven on staging). Concrete format
|
|
543
827
|
changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
|
|
544
|
-
|
|
828
|
+
`auto` / `smallest` are PLANNED auto-format directives — the server encodes to
|
|
829
|
+
several candidate formats and returns the best (`auto` = the most suitable;
|
|
830
|
+
`smallest` = the absolute fewest bytes), reporting the chosen format via the
|
|
831
|
+
result `mime_type`. They are SELECTION STRATEGIES, not concrete targets (convert
|
|
832
|
+
cannot express "pick the smallest"), so they live here and stay `planned` until
|
|
833
|
+
the API try-all-return-smallest logic + worker proof land. See FORMAT.md.
|
|
545
834
|
width:
|
|
546
835
|
type: integer
|
|
547
836
|
min: 1
|
|
@@ -573,6 +862,33 @@ operation:
|
|
|
573
862
|
worker has no such key). `crop`/`scale` = exact dimensions (`scale`
|
|
574
863
|
deliberately enlarges past source). Applies only when width or height is
|
|
575
864
|
set, on whichever Output route runs.
|
|
865
|
+
color_profile:
|
|
866
|
+
type: enum
|
|
867
|
+
values: [keep, srgb, strip]
|
|
868
|
+
default: keep
|
|
869
|
+
availability: planned
|
|
870
|
+
honored_on: [same_format, format_change]
|
|
871
|
+
description: >-
|
|
872
|
+
ICC colour-profile handling — its OWN control, DECOUPLED from `metadata`
|
|
873
|
+
(stripping metadata must NOT silently shift colours; that coupling is the
|
|
874
|
+
correctness bug this fixes). `keep` (default) = preserve the embedded
|
|
875
|
+
profile; `srgb` = convert to sRGB (also handles CMYK→sRGB); `strip` = drop
|
|
876
|
+
the profile (smallest — only when the consumer manages colour itself).
|
|
877
|
+
`planned` — the worker does not yet honour it (today the default strips ICC
|
|
878
|
+
during metadata-strip; the fix preserves it). Applies on BOTH Output routes
|
|
879
|
+
(optimiser preserves; transcoder preserves/converts). Worker-proven flip.
|
|
880
|
+
auto_orient:
|
|
881
|
+
type: boolean
|
|
882
|
+
default: true
|
|
883
|
+
availability: planned
|
|
884
|
+
honored_on: [same_format, format_change]
|
|
885
|
+
description: >-
|
|
886
|
+
Bake EXIF orientation into the pixels (honour the camera/device rotation
|
|
887
|
+
tag) so the output displays upright everywhere, then drop the now-redundant
|
|
888
|
+
orientation tag. `planned` — a restored control (was removed): the worker
|
|
889
|
+
must apply the EXIF-orientation transform before encode on both Output
|
|
890
|
+
routes. Default `true` (a behaviour change, proven planned-first). No-op for
|
|
891
|
+
inputs without an orientation tag.
|
|
576
892
|
|
|
577
893
|
audio:
|
|
578
894
|
mimes:
|