@giveitsmaller/contracts 0.36.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 +206 -1
- package/accepted-options/image-output-routes.json +33 -14
- package/asyncapi/events.yaml +8 -4
- package/availability/availability.json +329 -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 +42 -14
- package/dist/operations/compress.js +28 -4
- package/dist/operations/compress.metadata.js +95 -25
- package/dist/operations/convert.d.ts +33 -0
- package/dist/operations/convert.js +27 -0
- package/dist/operations/convert.metadata.js +40 -0
- package/openapi/api.yaml +23 -1
- package/operation-capabilities/operation-capabilities.json +19 -2
- package/operations/schemas/compress.yaml +266 -89
- package/operations/schemas/convert.yaml +115 -6
- 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:
|
|
@@ -89,50 +102,97 @@ operation:
|
|
|
89
102
|
type: enum
|
|
90
103
|
values: [quality, target_size]
|
|
91
104
|
default: quality
|
|
92
|
-
per_value_availability:
|
|
93
|
-
target_size: { availability: planned }
|
|
94
105
|
honored_on: [same_format]
|
|
95
106
|
description: >-
|
|
96
107
|
Compression mode (mirrors compress.video). `quality` = the `quality`
|
|
97
|
-
slider drives the encode (default
|
|
98
|
-
|
|
99
|
-
|
|
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.
|
|
100
112
|
target_size_bytes:
|
|
101
113
|
type: integer
|
|
102
114
|
min: 1024
|
|
103
|
-
availability: planned
|
|
104
115
|
depends_on: { encoding_mode: target_size }
|
|
105
116
|
honored_on: [same_format]
|
|
106
117
|
description: >-
|
|
107
|
-
Target output size in bytes (min 1024 = 1 KiB).
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
Optimiser (same_format) route.
|
|
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.
|
|
112
123
|
metadata:
|
|
113
124
|
type: enum
|
|
114
|
-
values: [
|
|
115
|
-
default:
|
|
125
|
+
values: [strip, keep, all]
|
|
126
|
+
default: strip
|
|
127
|
+
per_value_availability:
|
|
128
|
+
all: { availability: deprecated }
|
|
116
129
|
honored_on: [same_format]
|
|
117
130
|
description: >-
|
|
118
|
-
Metadata handling (optimiser/same_format route). `
|
|
131
|
+
Metadata handling (optimiser/same_format route). `strip` = remove all
|
|
119
132
|
EXIF/IPTC/XMP (default). `keep` = preserve EXIF/ICC/XMP — STABLE
|
|
120
|
-
(worker-proven, libcaesium; lambdas PR #260, staging round-trip +
|
|
121
|
-
|
|
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.
|
|
122
158
|
progressive:
|
|
123
159
|
type: boolean
|
|
124
160
|
default: true
|
|
125
161
|
honored_on: [same_format]
|
|
126
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.
|
|
127
179
|
output_format:
|
|
128
180
|
type: enum
|
|
129
|
-
values: [original, webp]
|
|
181
|
+
values: [original, webp, auto, smallest]
|
|
130
182
|
default: original
|
|
183
|
+
per_value_availability:
|
|
184
|
+
auto: { availability: planned }
|
|
185
|
+
smallest: { availability: planned }
|
|
131
186
|
description: >-
|
|
132
187
|
Output format. original = keep input format (default); webp = recompress to
|
|
133
|
-
WebP — the one live compress+format target (proven on staging).
|
|
188
|
+
WebP — the one live compress+format target (proven on staging). Concrete format
|
|
134
189
|
changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
|
|
135
|
-
|
|
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.
|
|
136
196
|
lossless:
|
|
137
197
|
type: boolean
|
|
138
198
|
default: false
|
|
@@ -192,14 +252,39 @@ operation:
|
|
|
192
252
|
description: "Compression quality (1 = smallest file, 100 = best quality)."
|
|
193
253
|
metadata:
|
|
194
254
|
type: enum
|
|
195
|
-
values: [
|
|
196
|
-
default:
|
|
255
|
+
values: [strip, keep, all]
|
|
256
|
+
default: strip
|
|
257
|
+
per_value_availability:
|
|
258
|
+
all: { availability: deprecated }
|
|
197
259
|
honored_on: [same_format]
|
|
198
260
|
description: >-
|
|
199
|
-
Metadata handling (optimiser/same_format route). `
|
|
261
|
+
Metadata handling (optimiser/same_format route). `strip` = remove all
|
|
200
262
|
EXIF/IPTC/XMP (default). `keep` = preserve EXIF/ICC/XMP — STABLE
|
|
201
|
-
(worker-proven, libcaesium; lambdas PR #260, staging round-trip +
|
|
202
|
-
|
|
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.
|
|
203
288
|
optimization_level:
|
|
204
289
|
type: integer
|
|
205
290
|
min: 0
|
|
@@ -209,13 +294,21 @@ operation:
|
|
|
209
294
|
description: "PNG optimization effort (0-6, oxipng). Higher = smaller file, slower encode. Default 3. Optimiser (same_format) route."
|
|
210
295
|
output_format:
|
|
211
296
|
type: enum
|
|
212
|
-
values: [original, webp]
|
|
297
|
+
values: [original, webp, auto, smallest]
|
|
213
298
|
default: original
|
|
299
|
+
per_value_availability:
|
|
300
|
+
auto: { availability: planned }
|
|
301
|
+
smallest: { availability: planned }
|
|
214
302
|
description: >-
|
|
215
303
|
Output format. original = keep input format (default); webp = recompress to
|
|
216
|
-
WebP — the one live compress+format target (proven on staging).
|
|
304
|
+
WebP — the one live compress+format target (proven on staging). Concrete format
|
|
217
305
|
changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
|
|
218
|
-
|
|
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.
|
|
219
312
|
lossy:
|
|
220
313
|
type: boolean
|
|
221
314
|
default: false
|
|
@@ -289,37 +382,38 @@ operation:
|
|
|
289
382
|
type: enum
|
|
290
383
|
values: [quality, target_size]
|
|
291
384
|
default: quality
|
|
292
|
-
per_value_availability:
|
|
293
|
-
target_size: { availability: planned }
|
|
294
385
|
honored_on: [same_format]
|
|
295
386
|
description: >-
|
|
296
387
|
Compression mode (mirrors compress.video). `quality` = the `quality`
|
|
297
|
-
slider drives the encode (default
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
loop caps iterations
|
|
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.
|
|
301
393
|
target_size_bytes:
|
|
302
394
|
type: integer
|
|
303
395
|
min: 1024
|
|
304
|
-
availability: planned
|
|
305
396
|
depends_on: { encoding_mode: target_size }
|
|
306
397
|
honored_on: [same_format]
|
|
307
398
|
description: >-
|
|
308
|
-
Target output size in bytes (min 1024 = 1 KiB).
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
Optimiser (same_format) route.
|
|
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.
|
|
313
404
|
metadata:
|
|
314
405
|
type: enum
|
|
315
|
-
values: [all]
|
|
316
|
-
default:
|
|
406
|
+
values: [strip, all]
|
|
407
|
+
default: strip
|
|
408
|
+
per_value_availability:
|
|
409
|
+
all: { availability: deprecated }
|
|
317
410
|
honored_on: [same_format]
|
|
318
411
|
description: >-
|
|
319
|
-
Metadata handling. `
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
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).
|
|
323
417
|
avif_speed:
|
|
324
418
|
type: integer
|
|
325
419
|
min: 1
|
|
@@ -329,13 +423,21 @@ operation:
|
|
|
329
423
|
description: "AVIF encode speed (1-10, ravif). Lower = smaller file, slower encode; higher = faster, larger. Default 4. Optimiser (same_format) route."
|
|
330
424
|
output_format:
|
|
331
425
|
type: enum
|
|
332
|
-
values: [original, webp]
|
|
426
|
+
values: [original, webp, auto, smallest]
|
|
333
427
|
default: original
|
|
428
|
+
per_value_availability:
|
|
429
|
+
auto: { availability: planned }
|
|
430
|
+
smallest: { availability: planned }
|
|
334
431
|
description: >-
|
|
335
432
|
Output format. original = keep input format (default); webp = recompress to
|
|
336
|
-
WebP — the one live compress+format target (proven on staging).
|
|
433
|
+
WebP — the one live compress+format target (proven on staging). Concrete format
|
|
337
434
|
changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
|
|
338
|
-
|
|
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.
|
|
339
441
|
width:
|
|
340
442
|
type: integer
|
|
341
443
|
min: 1
|
|
@@ -392,45 +494,76 @@ operation:
|
|
|
392
494
|
type: enum
|
|
393
495
|
values: [quality, target_size]
|
|
394
496
|
default: quality
|
|
395
|
-
per_value_availability:
|
|
396
|
-
target_size: { availability: planned }
|
|
397
497
|
honored_on: [same_format]
|
|
398
498
|
description: >-
|
|
399
499
|
Compression mode (mirrors compress.video). `quality` = the `quality`
|
|
400
|
-
slider drives the encode (default
|
|
401
|
-
|
|
402
|
-
|
|
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.
|
|
403
504
|
target_size_bytes:
|
|
404
505
|
type: integer
|
|
405
506
|
min: 1024
|
|
406
|
-
availability: planned
|
|
407
507
|
depends_on: { encoding_mode: target_size }
|
|
408
508
|
honored_on: [same_format]
|
|
409
509
|
description: >-
|
|
410
|
-
Target output size in bytes (min 1024 = 1 KiB).
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
Optimiser (same_format) route.
|
|
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.
|
|
415
515
|
metadata:
|
|
416
516
|
type: enum
|
|
417
|
-
values: [
|
|
418
|
-
default:
|
|
517
|
+
values: [strip, keep, all]
|
|
518
|
+
default: strip
|
|
519
|
+
per_value_availability:
|
|
520
|
+
all: { availability: deprecated }
|
|
419
521
|
honored_on: [same_format]
|
|
420
522
|
description: >-
|
|
421
|
-
Metadata handling (optimiser/same_format route). `
|
|
523
|
+
Metadata handling (optimiser/same_format route). `strip` = remove all
|
|
422
524
|
EXIF/IPTC/XMP (default). `keep` = preserve EXIF/ICC/XMP — STABLE
|
|
423
|
-
(worker-proven, libcaesium; lambdas PR #260, staging round-trip +
|
|
424
|
-
|
|
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.
|
|
425
550
|
output_format:
|
|
426
551
|
type: enum
|
|
427
|
-
values: [original, webp]
|
|
552
|
+
values: [original, webp, auto, smallest]
|
|
428
553
|
default: original
|
|
554
|
+
per_value_availability:
|
|
555
|
+
auto: { availability: planned }
|
|
556
|
+
smallest: { availability: planned }
|
|
429
557
|
description: >-
|
|
430
558
|
Output format. original = keep input format (default); webp = recompress to
|
|
431
|
-
WebP — the one live compress+format target (proven on staging).
|
|
559
|
+
WebP — the one live compress+format target (proven on staging). Concrete format
|
|
432
560
|
changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
|
|
433
|
-
|
|
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.
|
|
434
567
|
lossless:
|
|
435
568
|
type: boolean
|
|
436
569
|
default: false
|
|
@@ -491,20 +624,31 @@ operation:
|
|
|
491
624
|
description: "Compression quality (1 = smallest file, 100 = best quality)."
|
|
492
625
|
metadata:
|
|
493
626
|
type: enum
|
|
494
|
-
values: [all]
|
|
495
|
-
default:
|
|
627
|
+
values: [strip, all]
|
|
628
|
+
default: strip
|
|
629
|
+
per_value_availability:
|
|
630
|
+
all: { availability: deprecated }
|
|
496
631
|
honored_on: [same_format]
|
|
497
632
|
description: >-
|
|
498
|
-
Metadata handling. `
|
|
499
|
-
`
|
|
500
|
-
|
|
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).
|
|
501
638
|
output_format:
|
|
502
639
|
type: enum
|
|
503
|
-
values: [original, webp]
|
|
640
|
+
values: [original, webp, auto, smallest]
|
|
504
641
|
default: original
|
|
642
|
+
per_value_availability:
|
|
643
|
+
auto: { availability: planned }
|
|
644
|
+
smallest: { availability: planned }
|
|
505
645
|
description: >-
|
|
506
646
|
Output format. original = keep input format (default); webp = recompress to
|
|
507
|
-
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.
|
|
508
652
|
|
|
509
653
|
# gif/tiff: raster Resize is engine-proven (both are in thumbnail-images), but
|
|
510
654
|
# the optimiser `lossless` knob is WebP-only — not advertised here.
|
|
@@ -525,23 +669,56 @@ operation:
|
|
|
525
669
|
GIF the worker honours this but real-world size reduction is typically small.
|
|
526
670
|
metadata:
|
|
527
671
|
type: enum
|
|
528
|
-
values: [
|
|
529
|
-
default:
|
|
672
|
+
values: [strip, keep, all]
|
|
673
|
+
default: strip
|
|
674
|
+
per_value_availability:
|
|
675
|
+
all: { availability: deprecated }
|
|
530
676
|
honored_on: [same_format]
|
|
531
677
|
description: >-
|
|
532
|
-
Metadata handling (optimiser/same_format route). `
|
|
678
|
+
Metadata handling (optimiser/same_format route). `strip` = remove all
|
|
533
679
|
EXIF/IPTC/XMP (default). `keep` = preserve EXIF/ICC/XMP — STABLE
|
|
534
|
-
(worker-proven, libcaesium; lambdas PR #260, staging round-trip +
|
|
535
|
-
|
|
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.
|
|
536
705
|
output_format:
|
|
537
706
|
type: enum
|
|
538
|
-
values: [original, webp]
|
|
707
|
+
values: [original, webp, auto, smallest]
|
|
539
708
|
default: original
|
|
709
|
+
per_value_availability:
|
|
710
|
+
auto: { availability: planned }
|
|
711
|
+
smallest: { availability: planned }
|
|
540
712
|
description: >-
|
|
541
713
|
Output format. original = keep input format (default); webp = recompress to
|
|
542
|
-
WebP — the one live compress+format target (proven on staging).
|
|
714
|
+
WebP — the one live compress+format target (proven on staging). Concrete format
|
|
543
715
|
changes (jpeg/png/avif/gif/tiff) are the convert operation's job, not compress.
|
|
544
|
-
|
|
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.
|
|
545
722
|
width:
|
|
546
723
|
type: integer
|
|
547
724
|
min: 1
|
|
@@ -8,15 +8,16 @@ operation:
|
|
|
8
8
|
|
|
9
9
|
mime_groups:
|
|
10
10
|
image:
|
|
11
|
-
# svg is split into convert.image_svg
|
|
12
|
-
#
|
|
13
|
-
# must NOT sit in a group that declares width/height/fit
|
|
14
|
-
#
|
|
15
|
-
#
|
|
11
|
+
# svg is split into convert.image_svg + gif into convert.image_gif (below).
|
|
12
|
+
# svg rasterises but CANNOT be raster-resized (worker rejects svg resize), so
|
|
13
|
+
# it must NOT sit in a group that declares width/height/fit. gif is split out
|
|
14
|
+
# because it ALSO targets VIDEO (mp4/webm — the GIF→video transcode, card
|
|
15
|
+
# oEjNe9gT), which a jpeg/png input must not advertise. This `image` group is
|
|
16
|
+
# the still-raster inputs whose only targets are still-image formats. Mirrors
|
|
17
|
+
# compress.image_svg / compress.image* per-format split.
|
|
16
18
|
mimes:
|
|
17
19
|
- image/jpeg
|
|
18
20
|
- image/png
|
|
19
|
-
- image/gif
|
|
20
21
|
- image/webp
|
|
21
22
|
- image/tiff
|
|
22
23
|
- image/bmp
|
|
@@ -78,6 +79,23 @@ operation:
|
|
|
78
79
|
(e.g. `magenta`) to the white default, so the `pattern` rejects a
|
|
79
80
|
non-hex value as `invalid_options` rather than advertising an inert
|
|
80
81
|
free-form string (e2e staging-verified 2026-06-22).
|
|
82
|
+
metadata:
|
|
83
|
+
type: enum
|
|
84
|
+
values: [strip, keep]
|
|
85
|
+
default: strip
|
|
86
|
+
availability: planned
|
|
87
|
+
honored_on: [format_change]
|
|
88
|
+
description: >-
|
|
89
|
+
Metadata handling on the format-change (convert/transcoder) route.
|
|
90
|
+
`strip` = remove all EXIF/IPTC/XMP (default), `keep` = preserve. `planned`
|
|
91
|
+
— the convert worker re-encodes from pixels and does not yet preserve
|
|
92
|
+
metadata across a format change, so the API returns feature_not_available
|
|
93
|
+
(rather than "Unknown option" on a format-change request — e2e/api flagged
|
|
94
|
+
2026-06-23). This is a new (planned) surface, so it carries no deprecated
|
|
95
|
+
`all` alias — unlike compress.image.metadata, which keeps `all` for its
|
|
96
|
+
existing callers. Stable-flip gated on lambdas proving convert-route
|
|
97
|
+
metadata preservation; the honoured target subset may narrow (avif/heic
|
|
98
|
+
targets re-encode and cannot keep).
|
|
81
99
|
width:
|
|
82
100
|
type: integer
|
|
83
101
|
min: 1
|
|
@@ -140,6 +158,97 @@ operation:
|
|
|
140
158
|
rasterised to JPEG (alpha-flatten). HEX ONLY — non-hex is rejected as
|
|
141
159
|
`invalid_options` (see convert.image.background).
|
|
142
160
|
|
|
161
|
+
# gif is animated raster: it converts to a STILL image (first frame / rasterise —
|
|
162
|
+
# the existing image targets, stable) AND — NEW, planned — to VIDEO (mp4/webm):
|
|
163
|
+
# the GIF→video transcode (animated GIF → muted, play-once video; ~85-95% smaller
|
|
164
|
+
# than the GIF; card oEjNe9gT). Split out of convert.image so ONLY gif advertises
|
|
165
|
+
# the mp4/webm video targets (a jpeg/png input must not show them). The output
|
|
166
|
+
# crosses the media boundary image→video; per codex convergence this stays
|
|
167
|
+
# operation_type=convert (the convert worker's video_convert path owns the ffmpeg
|
|
168
|
+
# mp4/webm encode — NOT a new op, NOT the compression-video worker). mp4/webm are
|
|
169
|
+
# per_value_availability:planned and flip INDEPENDENTLY (like target_size's
|
|
170
|
+
# per-format flip) on lambdas worker-proof + API representability + the API's
|
|
171
|
+
# output-aware billing override (convert.image_gif→video is video-class encode
|
|
172
|
+
# work, NOT a cheap image transcode — the API must not price it as convert.image;
|
|
173
|
+
# API owns that, ticket 0Z4zunCr). Planned-first anti-regression (image-options §2.5).
|
|
174
|
+
image_gif:
|
|
175
|
+
mimes:
|
|
176
|
+
- image/gif
|
|
177
|
+
max_output_pixels: 16000000
|
|
178
|
+
options:
|
|
179
|
+
output_format:
|
|
180
|
+
type: enum
|
|
181
|
+
values: [jpeg, png, webp, avif, gif, tiff, mp4, webm]
|
|
182
|
+
required: true
|
|
183
|
+
per_value_availability:
|
|
184
|
+
mp4: { availability: planned }
|
|
185
|
+
webm: { availability: planned }
|
|
186
|
+
description: >-
|
|
187
|
+
Target format. The still-image targets (jpeg/png/webp/avif/gif/tiff) take
|
|
188
|
+
the first frame / rasterise (stable, today's gif-convert behaviour). `mp4`
|
|
189
|
+
/ `webm` are the NEW (planned) GIF→VIDEO transcode targets — the animated
|
|
190
|
+
GIF becomes a muted, play-once video (`mp4` = H.264 / yuv420p / +faststart,
|
|
191
|
+
plays everywhere; `webm` = VP9, smaller). GIFs are silent (no audio
|
|
192
|
+
stream); the GIF infinite-loop becomes a playback attribute (`<video loop>`)
|
|
193
|
+
the player sets, NOT baked into the file. mp4 and webm flip planned→stable
|
|
194
|
+
independently on worker proof.
|
|
195
|
+
quality:
|
|
196
|
+
type: integer
|
|
197
|
+
min: 1
|
|
198
|
+
max: 100
|
|
199
|
+
default: 85
|
|
200
|
+
depends_on: { output_format: [jpeg, webp, avif] }
|
|
201
|
+
honored_on: [format_change]
|
|
202
|
+
description: >-
|
|
203
|
+
Output quality for the lossy STILL-IMAGE targets (jpeg/webp/avif). The
|
|
204
|
+
video targets (mp4/webm) use a sensible default encode quality in v1 —
|
|
205
|
+
there is no exposed CRF knob yet (planned-first; may be added later).
|
|
206
|
+
background:
|
|
207
|
+
type: string
|
|
208
|
+
pattern: "^#[0-9a-fA-F]{6}$"
|
|
209
|
+
depends_on: { output_format: jpeg }
|
|
210
|
+
honored_on: [format_change]
|
|
211
|
+
description: >-
|
|
212
|
+
Background colour as a 6-digit hex (`#RRGGBB`) for a transparent GIF
|
|
213
|
+
flattened to JPEG (alpha-flatten). HEX ONLY — non-hex is rejected as
|
|
214
|
+
`invalid_options` (see convert.image.background).
|
|
215
|
+
metadata:
|
|
216
|
+
type: enum
|
|
217
|
+
values: [strip, keep]
|
|
218
|
+
default: strip
|
|
219
|
+
availability: planned
|
|
220
|
+
honored_on: [format_change]
|
|
221
|
+
description: >-
|
|
222
|
+
Metadata handling on the format-change route (still-image targets).
|
|
223
|
+
`planned` — mirrors convert.image.metadata (the convert worker does not
|
|
224
|
+
yet preserve metadata across a format change). The video targets carry no
|
|
225
|
+
EXIF/IPTC/XMP.
|
|
226
|
+
width:
|
|
227
|
+
type: integer
|
|
228
|
+
min: 1
|
|
229
|
+
max: 16384
|
|
230
|
+
honored_on: [format_change]
|
|
231
|
+
description: >-
|
|
232
|
+
Resize-inside-Output: target width in pixels (1-16384; width*height <=
|
|
233
|
+
max_output_pixels). Applies to the still-image targets; for the planned
|
|
234
|
+
mp4/webm video targets, resize applicability is settled at the worker flip.
|
|
235
|
+
height:
|
|
236
|
+
type: integer
|
|
237
|
+
min: 1
|
|
238
|
+
max: 16384
|
|
239
|
+
honored_on: [format_change]
|
|
240
|
+
description: "Resize-inside-Output: target height in pixels (1-16384; width*height <= max_output_pixels). See `width`."
|
|
241
|
+
fit:
|
|
242
|
+
type: enum
|
|
243
|
+
values: [max, crop, scale]
|
|
244
|
+
default: max
|
|
245
|
+
depends_on: { width: set, height: set, logic: or }
|
|
246
|
+
honored_on: [format_change]
|
|
247
|
+
description: >-
|
|
248
|
+
Resize mode. `max` (default) = fit within bounds, preserving aspect ratio
|
|
249
|
+
and never upscaling; `crop`/`scale` = exact dimensions. Applies only when
|
|
250
|
+
width or height is set.
|
|
251
|
+
|
|
143
252
|
video:
|
|
144
253
|
mimes:
|
|
145
254
|
- video/mp4
|