@giveitsmaller/contracts 0.50.0 → 0.51.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 +3 -2
- package/accepted-options/image-output-routes.json +1 -1
- package/asyncapi/events.yaml +10 -6
- package/availability/availability.json +64 -6
- 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/BillingCheckoutRequest.d.ts +75 -0
- package/dist/openapi/models/BillingCheckoutRequest.js +64 -0
- package/dist/openapi/models/BillingCheckoutSession.d.ts +42 -0
- package/dist/openapi/models/BillingCheckoutSession.js +47 -0
- package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +46 -0
- package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +54 -0
- package/dist/openapi/models/CallbackEventType.d.ts +1 -1
- package/dist/openapi/models/CallbackEventType.js +1 -1
- package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
- package/dist/openapi/models/CapabilityCondition.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
- package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
- package/dist/openapi/models/CapabilityConstraint.js +1 -1
- package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
- package/dist/openapi/models/CapabilityInputSpec.js +1 -1
- package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
- package/dist/openapi/models/CapabilityProduces.js +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
- package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
- package/dist/openapi/models/ChangePasswordRequest.js +1 -1
- package/dist/openapi/models/CodegenSource.d.ts +1 -1
- package/dist/openapi/models/CodegenSource.js +1 -1
- package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceInput.js +1 -1
- package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceJob.js +1 -1
- package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
- package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceOperation.js +1 -1
- package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
- package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
- package/dist/openapi/models/CompositionPlan.d.ts +1 -1
- package/dist/openapi/models/CompositionPlan.js +1 -1
- package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
- package/dist/openapi/models/CompositionPlanJob.js +1 -1
- package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
- package/dist/openapi/models/CompositionPlanOperation.js +1 -1
- package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
- package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
- package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
- package/dist/openapi/models/ConnectionSource.d.ts +1 -1
- package/dist/openapi/models/ConnectionSource.js +1 -1
- package/dist/openapi/models/ContactRequest.d.ts +1 -1
- package/dist/openapi/models/ContactRequest.js +1 -1
- package/dist/openapi/models/ContactSubject.d.ts +1 -1
- package/dist/openapi/models/ContactSubject.js +1 -1
- package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
- package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
- package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
- package/dist/openapi/models/CreateApiKey201Response.js +1 -1
- package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
- package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
- package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
- package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
- package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +23 -0
- package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +51 -0
- package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
- package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
- package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
- package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
- package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
- package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
- package/dist/openapi/models/CreditTransaction.d.ts +1 -1
- package/dist/openapi/models/CreditTransaction.js +1 -1
- package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
- package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
- package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
- package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
- package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
- package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
- package/dist/openapi/models/CreditsUsageResponse.js +1 -1
- package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
- package/dist/openapi/models/Delivery.d.ts +1 -1
- package/dist/openapi/models/Delivery.js +1 -1
- package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
- package/dist/openapi/models/DeliveryOutputRef.js +1 -1
- package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
- package/dist/openapi/models/DeliveryPlan.js +1 -1
- package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
- package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
- package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
- package/dist/openapi/models/DeliveryPlanReason.js +1 -1
- package/dist/openapi/models/DeliverySelection.d.ts +1 -1
- package/dist/openapi/models/DeliverySelection.js +1 -1
- package/dist/openapi/models/DownloadBundle.d.ts +1 -1
- package/dist/openapi/models/DownloadBundle.js +1 -1
- package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
- package/dist/openapi/models/EndpointProjection.d.ts +1 -1
- package/dist/openapi/models/EndpointProjection.js +1 -1
- package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
- package/dist/openapi/models/ErrorEnvelope.js +1 -1
- package/dist/openapi/models/EstimateQuality.d.ts +1 -1
- package/dist/openapi/models/EstimateQuality.js +1 -1
- package/dist/openapi/models/EstimateRange.d.ts +1 -1
- package/dist/openapi/models/EstimateRange.js +1 -1
- package/dist/openapi/models/ExternalDestination.d.ts +1 -1
- package/dist/openapi/models/ExternalDestination.js +1 -1
- package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
- package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
- package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
- package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
- package/dist/openapi/models/ExternalImportRequest.js +1 -1
- package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
- package/dist/openapi/models/ExternalImportToken.js +1 -1
- package/dist/openapi/models/ExternalSource.d.ts +1 -1
- package/dist/openapi/models/ExternalSource.js +1 -1
- package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
- package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
- package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
- package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
- package/dist/openapi/models/FeatureViolation.d.ts +1 -1
- package/dist/openapi/models/FeatureViolation.js +1 -1
- package/dist/openapi/models/ForgotPasswordRequest.d.ts +1 -1
- package/dist/openapi/models/ForgotPasswordRequest.js +1 -1
- package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
- package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
- package/dist/openapi/models/JobDefinition.d.ts +1 -1
- package/dist/openapi/models/JobDefinition.js +1 -1
- package/dist/openapi/models/JobDownload.d.ts +1 -1
- package/dist/openapi/models/JobDownload.js +1 -1
- package/dist/openapi/models/JobInputV2.d.ts +1 -1
- package/dist/openapi/models/JobInputV2.js +1 -1
- package/dist/openapi/models/JobMediaClass.d.ts +1 -1
- package/dist/openapi/models/JobMediaClass.js +1 -1
- package/dist/openapi/models/JobOutputSource.d.ts +1 -1
- package/dist/openapi/models/JobOutputSource.js +1 -1
- package/dist/openapi/models/JobResponse.d.ts +1 -1
- package/dist/openapi/models/JobResponse.js +1 -1
- package/dist/openapi/models/JobStatus.d.ts +1 -1
- package/dist/openapi/models/JobStatus.js +1 -1
- package/dist/openapi/models/JobType.d.ts +1 -1
- package/dist/openapi/models/JobType.js +1 -1
- package/dist/openapi/models/LivenessResponse.d.ts +1 -1
- package/dist/openapi/models/LivenessResponse.js +1 -1
- package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
- package/dist/openapi/models/LoginUser200Response.js +1 -1
- package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
- package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
- package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
- package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
- package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
- package/dist/openapi/models/LoginUserRequest.js +1 -1
- package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
- package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
- package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
- package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
- package/dist/openapi/models/MetadataResponse.d.ts +1 -1
- package/dist/openapi/models/MetadataResponse.js +1 -1
- package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
- package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
- package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
- package/dist/openapi/models/MetadataResponseExif.js +1 -1
- package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
- package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
- package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
- package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
- package/dist/openapi/models/MimeGroupSchema.js +1 -1
- package/dist/openapi/models/MultiInputSource.d.ts +1 -1
- package/dist/openapi/models/MultiInputSource.js +1 -1
- package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
- package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
- package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
- package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
- package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
- package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
- package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
- package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
- package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
- package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
- package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
- package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
- package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
- package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
- package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
- package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
- package/dist/openapi/models/MultipartPartListing.js +1 -1
- package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
- package/dist/openapi/models/MultipartPresignRequest.js +1 -1
- package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
- package/dist/openapi/models/MultipartPresignResponse.js +1 -1
- package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
- package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
- package/dist/openapi/models/MultipartStatusResponse.js +1 -1
- package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
- package/dist/openapi/models/OperationCapability.d.ts +1 -1
- package/dist/openapi/models/OperationCapability.js +1 -1
- package/dist/openapi/models/OperationDefinition.d.ts +1 -1
- package/dist/openapi/models/OperationDefinition.js +1 -1
- package/dist/openapi/models/OperationDownload.d.ts +1 -1
- package/dist/openapi/models/OperationDownload.js +1 -1
- package/dist/openapi/models/OperationInputModel.d.ts +2 -2
- package/dist/openapi/models/OperationInputModel.js +2 -2
- package/dist/openapi/models/OperationResponse.d.ts +1 -1
- package/dist/openapi/models/OperationResponse.js +1 -1
- package/dist/openapi/models/OperationResult.d.ts +1 -1
- package/dist/openapi/models/OperationResult.js +1 -1
- package/dist/openapi/models/OperationResultMetadata.d.ts +1 -1
- package/dist/openapi/models/OperationResultMetadata.js +1 -1
- package/dist/openapi/models/OperationResultMetrics.d.ts +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 +2 -2
- package/dist/openapi/models/OperationType.js +2 -2
- package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
- package/dist/openapi/models/OptionSchema.d.ts +1 -1
- package/dist/openapi/models/OptionSchema.js +1 -1
- package/dist/openapi/models/OutputProperties.d.ts +1 -1
- package/dist/openapi/models/OutputProperties.js +1 -1
- package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
- package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
- package/dist/openapi/models/PerRoleCardinalityEntry.d.ts +1 -1
- package/dist/openapi/models/PerRoleCardinalityEntry.js +1 -1
- package/dist/openapi/models/PerValueAvailabilityEntry.d.ts +1 -1
- package/dist/openapi/models/PerValueAvailabilityEntry.js +1 -1
- package/dist/openapi/models/PresignedUrlPart.d.ts +1 -1
- package/dist/openapi/models/PresignedUrlPart.js +1 -1
- package/dist/openapi/models/ProbePendingResponse.d.ts +1 -1
- package/dist/openapi/models/ProbePendingResponse.js +1 -1
- package/dist/openapi/models/ProcessingClass.d.ts +1 -1
- package/dist/openapi/models/ProcessingClass.js +1 -1
- package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
- package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
- package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassEntry.js +1 -1
- package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
- package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassHint.js +1 -1
- package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassReason.js +1 -1
- package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
- package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
- package/dist/openapi/models/ProcessingPlan.js +1 -1
- package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
- package/dist/openapi/models/ProcessingPlanJob.js +1 -1
- package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
- package/dist/openapi/models/ReEncodeDecision.js +1 -1
- package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
- package/dist/openapi/models/ReadinessResponse.js +1 -1
- package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
- package/dist/openapi/models/RegisterUser422Response.js +1 -1
- package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
- package/dist/openapi/models/RegisterUserRequest.js +1 -1
- package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
- package/dist/openapi/models/ResetPasswordRequest.js +1 -1
- package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
- package/dist/openapi/models/ResponseEnvelope.js +1 -1
- package/dist/openapi/models/RetryResponse.d.ts +1 -1
- package/dist/openapi/models/RetryResponse.js +1 -1
- package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
- package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
- package/dist/openapi/models/SseCompletionBase.js +1 -1
- package/dist/openapi/models/SseEventType.d.ts +1 -1
- package/dist/openapi/models/SseEventType.js +1 -1
- package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
- package/dist/openapi/models/SseJobCompletedData.js +1 -1
- package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
- package/dist/openapi/models/SseJobFailedData.js +1 -1
- package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
- package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
- package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
- package/dist/openapi/models/SseOperationCompletedData.js +1 -1
- package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
- package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
- package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
- package/dist/openapi/models/SseOperationFailedData.js +1 -1
- package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
- package/dist/openapi/models/SseOperationProgressData.js +1 -1
- package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
- package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
- package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
- package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
- package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
- package/dist/openapi/models/TierRestrictionKind.js +1 -1
- package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
- package/dist/openapi/models/TierRestrictionResponse.js +1 -1
- package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
- package/dist/openapi/models/UpdateProfile200Response.js +1 -1
- package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
- package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
- package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
- package/dist/openapi/models/UpdateProfile422Response.js +1 -1
- package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
- package/dist/openapi/models/UpdateProfileRequest.js +1 -1
- package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
- package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
- package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
- package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
- package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
- package/dist/openapi/models/UploadFile403Response.js +1 -1
- package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
- package/dist/openapi/models/UploadFile422Response.js +1 -1
- package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
- package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
- package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
- package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
- package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
- package/dist/openapi/models/UploadProbeResponse.js +1 -1
- package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
- package/dist/openapi/models/UploadProbeStatus.js +1 -1
- package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
- package/dist/openapi/models/UploadResponse.d.ts +1 -1
- package/dist/openapi/models/UploadResponse.js +1 -1
- package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
- package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
- package/dist/openapi/models/UploadSource.d.ts +1 -1
- package/dist/openapi/models/UploadSource.js +1 -1
- package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
- package/dist/openapi/models/UploadThresholds.d.ts +1 -1
- package/dist/openapi/models/UploadThresholds.js +1 -1
- package/dist/openapi/models/UserTier.d.ts +1 -1
- package/dist/openapi/models/UserTier.js +1 -1
- package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
- package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
- package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
- package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
- package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
- package/dist/openapi/models/VerifyEmailRequest.js +1 -1
- package/dist/openapi/models/WarningType.d.ts +1 -1
- package/dist/openapi/models/WarningType.js +1 -1
- package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
- package/dist/openapi/models/WebhookOperationContext.js +1 -1
- package/dist/openapi/models/WebhookPayload.d.ts +1 -1
- package/dist/openapi/models/WebhookPayload.js +1 -1
- package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
- package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
- package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
- package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
- package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
- package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
- package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowCreditSummary.d.ts +22 -56
- package/dist/openapi/models/WorkflowCreditSummary.js +4 -24
- 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/models/index.d.ts +4 -0
- package/dist/openapi/models/index.js +4 -0
- package/dist/openapi/runtime.d.ts +1 -1
- package/dist/openapi/runtime.js +1 -1
- package/dist/operations/image_watermark.d.ts +19 -0
- package/dist/operations/image_watermark.js +12 -0
- package/dist/operations/image_watermark.metadata.js +5 -2
- package/openapi/api.yaml +301 -55
- package/operation-capabilities/operation-capabilities.json +42 -2
- package/operations/schemas/image_watermark.yaml +121 -13
- package/package.json +1 -1
package/openapi/api.yaml
CHANGED
|
@@ -89,7 +89,7 @@ info:
|
|
|
89
89
|
of truth instead of hardcoding magic numbers. A runtime
|
|
90
90
|
`GET /api/uploads/limits` endpoint for dynamic discovery
|
|
91
91
|
(per-tier / per-environment overrides) is a deferred follow-up.
|
|
92
|
-
version: 2.
|
|
92
|
+
version: 2.152.0
|
|
93
93
|
contact:
|
|
94
94
|
name: API Support
|
|
95
95
|
|
|
@@ -4653,6 +4653,200 @@ paths:
|
|
|
4653
4653
|
schema:
|
|
4654
4654
|
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4655
4655
|
|
|
4656
|
+
# ============================================
|
|
4657
|
+
# BILLING CHECKOUT ENDPOINT
|
|
4658
|
+
# ============================================
|
|
4659
|
+
|
|
4660
|
+
/api/billing/checkout:
|
|
4661
|
+
post:
|
|
4662
|
+
summary: Start a Stripe hosted-Checkout session
|
|
4663
|
+
description: |
|
|
4664
|
+
Create a Stripe **hosted Checkout** session for a subscription
|
|
4665
|
+
upgrade or a credit-pack purchase, and return the Stripe-hosted
|
|
4666
|
+
`checkout_url` for the frontend to redirect the browser to.
|
|
4667
|
+
|
|
4668
|
+
The client supplies only `type` + `key`; the Stripe
|
|
4669
|
+
`success_url` / `cancel_url` redirect targets are **server-set**.
|
|
4670
|
+
|
|
4671
|
+
Gated behind the server `STRIPE_CHECKOUT_ENABLED` flag: while the
|
|
4672
|
+
flag is OFF the endpoint returns `422` `feature_not_available`
|
|
4673
|
+
(`FeatureNotAvailableResponse`, single violation
|
|
4674
|
+
`endpoint.billing.checkout`, `availability: planned`) so the
|
|
4675
|
+
frontend can hide/disable the upgrade affordance without
|
|
4676
|
+
hard-coding the rollout state.
|
|
4677
|
+
|
|
4678
|
+
The Stripe **webhook** (`POST /api/webhooks/stripe`) is a
|
|
4679
|
+
server-to-server, signature-authenticated callback and is
|
|
4680
|
+
deliberately **not** part of this client contract.
|
|
4681
|
+
|
|
4682
|
+
Per the Stripe go-live (routed 2026-07-02).
|
|
4683
|
+
operationId: createBillingCheckoutSession
|
|
4684
|
+
security: [{bearerAuth: []}, {sessionAuth: []}] # required (IS_AUTHENTICATED_FULLY; anonymous/partial sessions → 401)
|
|
4685
|
+
x-identity-scoped: true # the checkout session is created for the authenticated caller
|
|
4686
|
+
tags:
|
|
4687
|
+
- Billing
|
|
4688
|
+
requestBody:
|
|
4689
|
+
required: true
|
|
4690
|
+
content:
|
|
4691
|
+
application/json:
|
|
4692
|
+
schema:
|
|
4693
|
+
$ref: '#/components/schemas/BillingCheckoutRequest'
|
|
4694
|
+
examples:
|
|
4695
|
+
subscription_pro:
|
|
4696
|
+
summary: Upgrade to the Pro subscription
|
|
4697
|
+
value:
|
|
4698
|
+
type: subscription
|
|
4699
|
+
key: pro
|
|
4700
|
+
credit_pack:
|
|
4701
|
+
summary: Buy a 25-credit pack
|
|
4702
|
+
value:
|
|
4703
|
+
type: pack
|
|
4704
|
+
key: pack_25
|
|
4705
|
+
responses:
|
|
4706
|
+
'200':
|
|
4707
|
+
description: Checkout session created; redirect the browser to `checkout_url`.
|
|
4708
|
+
content:
|
|
4709
|
+
application/json:
|
|
4710
|
+
schema:
|
|
4711
|
+
$ref: '#/components/schemas/BillingCheckoutSuccessEnvelope'
|
|
4712
|
+
example:
|
|
4713
|
+
success: true
|
|
4714
|
+
data:
|
|
4715
|
+
checkout_url: "https://checkout.stripe.com/c/pay/cs_test_a1b2c3"
|
|
4716
|
+
session_id: "cs_test_a1b2c3"
|
|
4717
|
+
'400':
|
|
4718
|
+
description: "Malformed JSON request body (`error: INVALID_JSON`)."
|
|
4719
|
+
content:
|
|
4720
|
+
application/json:
|
|
4721
|
+
schema:
|
|
4722
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4723
|
+
example:
|
|
4724
|
+
success: false
|
|
4725
|
+
error: INVALID_JSON
|
|
4726
|
+
message: "Malformed JSON in request body."
|
|
4727
|
+
'401':
|
|
4728
|
+
description: |
|
|
4729
|
+
Authentication required (`error: UNAUTHORIZED`). Anonymous or
|
|
4730
|
+
partially-authenticated (remember-me) sessions are rejected —
|
|
4731
|
+
the endpoint requires a fully-authenticated caller.
|
|
4732
|
+
content:
|
|
4733
|
+
application/json:
|
|
4734
|
+
schema:
|
|
4735
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4736
|
+
example:
|
|
4737
|
+
success: false
|
|
4738
|
+
error: UNAUTHORIZED
|
|
4739
|
+
message: "Authentication required."
|
|
4740
|
+
'422':
|
|
4741
|
+
description: |
|
|
4742
|
+
One of three flavours — dispatch on `error_type` (present only
|
|
4743
|
+
on the feature-gate branch), then on the `error` machine code:
|
|
4744
|
+
|
|
4745
|
+
- **`error_type: feature_not_available`**
|
|
4746
|
+
(`FeatureNotAvailableResponse`, carries `violations[]`) —
|
|
4747
|
+
checkout is flag-gated OFF (`STRIPE_CHECKOUT_ENABLED=false`).
|
|
4748
|
+
The single violation names feature `endpoint.billing.checkout`
|
|
4749
|
+
(`availability: planned`). The frontend hides the upgrade
|
|
4750
|
+
affordance on this branch.
|
|
4751
|
+
- **`error: VALIDATION_FAILED`** (plain `ErrorEnvelope`, no
|
|
4752
|
+
`error_type`) — `type` is missing or not one of
|
|
4753
|
+
`subscription` / `pack`, or `key` is empty.
|
|
4754
|
+
- **`error: UNPROCESSABLE_ENTITY`** (plain `ErrorEnvelope`, no
|
|
4755
|
+
`error_type`) — the `type` + `key` pair does not resolve to a
|
|
4756
|
+
provisioned plan or pack (a mismatched pair such as
|
|
4757
|
+
`subscription` + `pack_10`, or an unknown/unprovisioned
|
|
4758
|
+
`key`). The pairing is validated server-side, not by the
|
|
4759
|
+
request schema.
|
|
4760
|
+
content:
|
|
4761
|
+
application/json:
|
|
4762
|
+
schema:
|
|
4763
|
+
# Non-overlapping oneOf, discriminable by `error_type` presence:
|
|
4764
|
+
# the flag-off branch (FeatureNotAvailableResponse) always carries
|
|
4765
|
+
# `error_type: feature_not_available` + `violations[]`; the generic
|
|
4766
|
+
# validation branch is a plain ErrorEnvelope with NO `error_type`
|
|
4767
|
+
# (the `not: required` guard keeps the two branches mutually
|
|
4768
|
+
# exclusive so a feature-gate body cannot also match the generic
|
|
4769
|
+
# branch — the workflows 422 uses a discriminated oneOf, but that
|
|
4770
|
+
# needs `error_type` on every branch, which these two flat codes
|
|
4771
|
+
# do not carry).
|
|
4772
|
+
oneOf:
|
|
4773
|
+
- $ref: '#/components/schemas/FeatureNotAvailableResponse'
|
|
4774
|
+
- allOf:
|
|
4775
|
+
- $ref: '#/components/schemas/ErrorEnvelope'
|
|
4776
|
+
- not:
|
|
4777
|
+
required: [error_type]
|
|
4778
|
+
examples:
|
|
4779
|
+
feature_not_available:
|
|
4780
|
+
summary: Checkout flag is off (STRIPE_CHECKOUT_ENABLED=false)
|
|
4781
|
+
value:
|
|
4782
|
+
success: false
|
|
4783
|
+
error_type: feature_not_available
|
|
4784
|
+
error: FEATURE_NOT_AVAILABLE
|
|
4785
|
+
message: "Checkout is not yet available."
|
|
4786
|
+
violations:
|
|
4787
|
+
- feature: endpoint.billing.checkout
|
|
4788
|
+
availability: planned
|
|
4789
|
+
message_key: feature.not_available
|
|
4790
|
+
validation_failed:
|
|
4791
|
+
summary: Missing / invalid type or empty key
|
|
4792
|
+
value:
|
|
4793
|
+
success: false
|
|
4794
|
+
error: VALIDATION_FAILED
|
|
4795
|
+
message: "Invalid checkout request: 'type' must be 'subscription' or 'pack' and 'key' is required."
|
|
4796
|
+
unprocessable_entity:
|
|
4797
|
+
summary: type/key pair does not resolve to a provisioned plan or pack
|
|
4798
|
+
value:
|
|
4799
|
+
success: false
|
|
4800
|
+
error: UNPROCESSABLE_ENTITY
|
|
4801
|
+
message: "The requested plan or pack is not available."
|
|
4802
|
+
'429':
|
|
4803
|
+
description: |
|
|
4804
|
+
Rate limit exceeded (`error: TOO_MANY_REQUESTS`). The billing
|
|
4805
|
+
endpoint family has its own tiered limiter; the response carries
|
|
4806
|
+
`X-RateLimit-Limit` / `X-RateLimit-Remaining` / `X-RateLimit-Reset`
|
|
4807
|
+
headers.
|
|
4808
|
+
headers:
|
|
4809
|
+
X-RateLimit-Limit:
|
|
4810
|
+
required: false
|
|
4811
|
+
description: Requests permitted in the current window.
|
|
4812
|
+
schema:
|
|
4813
|
+
type: integer
|
|
4814
|
+
minimum: 0
|
|
4815
|
+
X-RateLimit-Remaining:
|
|
4816
|
+
required: false
|
|
4817
|
+
description: Requests remaining in the current window.
|
|
4818
|
+
schema:
|
|
4819
|
+
type: integer
|
|
4820
|
+
minimum: 0
|
|
4821
|
+
X-RateLimit-Reset:
|
|
4822
|
+
required: false
|
|
4823
|
+
description: Unix epoch seconds when the current window resets.
|
|
4824
|
+
schema:
|
|
4825
|
+
type: integer
|
|
4826
|
+
minimum: 0
|
|
4827
|
+
content:
|
|
4828
|
+
application/json:
|
|
4829
|
+
schema:
|
|
4830
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4831
|
+
'503':
|
|
4832
|
+
description: |
|
|
4833
|
+
Checkout temporarily unavailable — the flag is on but Stripe is
|
|
4834
|
+
not configured on the server (`error: SERVICE_UNAVAILABLE`).
|
|
4835
|
+
content:
|
|
4836
|
+
application/json:
|
|
4837
|
+
schema:
|
|
4838
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4839
|
+
example:
|
|
4840
|
+
success: false
|
|
4841
|
+
error: SERVICE_UNAVAILABLE
|
|
4842
|
+
message: "Checkout is temporarily unavailable."
|
|
4843
|
+
'500':
|
|
4844
|
+
description: Internal server error (e.g. an unexpected Stripe SDK error).
|
|
4845
|
+
content:
|
|
4846
|
+
application/json:
|
|
4847
|
+
schema:
|
|
4848
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4849
|
+
|
|
4656
4850
|
# ============================================
|
|
4657
4851
|
# CONTACT ENDPOINT
|
|
4658
4852
|
# ============================================
|
|
@@ -5828,6 +6022,78 @@ components:
|
|
|
5828
6022
|
tier:
|
|
5829
6023
|
$ref: '#/components/schemas/UserTier'
|
|
5830
6024
|
|
|
6025
|
+
BillingCheckoutRequest:
|
|
6026
|
+
type: object
|
|
6027
|
+
additionalProperties: false
|
|
6028
|
+
description: |
|
|
6029
|
+
Request body for `POST /api/billing/checkout`. The client supplies
|
|
6030
|
+
only the target `type` + `key`; the Stripe `success_url` /
|
|
6031
|
+
`cancel_url` redirect targets are server-set. Unknown extra
|
|
6032
|
+
properties are rejected.
|
|
6033
|
+
|
|
6034
|
+
Valid `key` values partition by `type`:
|
|
6035
|
+
- `type: subscription` → `key` ∈ { `pro`, `max` }
|
|
6036
|
+
- `type: pack` → `key` ∈ { `pack_10`, `pack_25`, `pack_50` }
|
|
6037
|
+
|
|
6038
|
+
The `type` ↔ `key` pairing is validated **server-side**, not by this
|
|
6039
|
+
schema (the `key` enum lists all values across both types). A
|
|
6040
|
+
mismatched or unprovisioned pair returns `422` `UNPROCESSABLE_ENTITY`;
|
|
6041
|
+
a missing `type` or empty `key` returns `422` `VALIDATION_FAILED`.
|
|
6042
|
+
required:
|
|
6043
|
+
- type
|
|
6044
|
+
- key
|
|
6045
|
+
properties:
|
|
6046
|
+
type:
|
|
6047
|
+
type: string
|
|
6048
|
+
enum: [subscription, pack]
|
|
6049
|
+
description: |
|
|
6050
|
+
Whether the checkout is for a recurring `subscription` upgrade
|
|
6051
|
+
or a one-off credit `pack` purchase.
|
|
6052
|
+
key:
|
|
6053
|
+
type: string
|
|
6054
|
+
enum: [pro, max, pack_10, pack_25, pack_50]
|
|
6055
|
+
description: |
|
|
6056
|
+
The specific plan or pack to purchase. Must be consistent with
|
|
6057
|
+
`type` (subscription → `pro` / `max`; pack → `pack_10` /
|
|
6058
|
+
`pack_25` / `pack_50`) — the pairing is server-validated.
|
|
6059
|
+
|
|
6060
|
+
BillingCheckoutSession:
|
|
6061
|
+
type: object
|
|
6062
|
+
# Open payload (the response-data target stays open for additive
|
|
6063
|
+
# evolution — matches CreditsBalanceResponse / AccountLimits; the
|
|
6064
|
+
# enclosing BillingCheckoutSuccessEnvelope is the closed shape). New
|
|
6065
|
+
# top-level fields (e.g. an expiry) may be added without a breaking
|
|
6066
|
+
# change.
|
|
6067
|
+
description: |
|
|
6068
|
+
The created Stripe hosted-Checkout session — the redirect URL plus
|
|
6069
|
+
the Stripe session id.
|
|
6070
|
+
required:
|
|
6071
|
+
- checkout_url
|
|
6072
|
+
- session_id
|
|
6073
|
+
properties:
|
|
6074
|
+
checkout_url:
|
|
6075
|
+
type: string
|
|
6076
|
+
format: uri
|
|
6077
|
+
description: The Stripe-hosted Checkout URL to redirect the browser to.
|
|
6078
|
+
session_id:
|
|
6079
|
+
type: string
|
|
6080
|
+
description: |
|
|
6081
|
+
The Stripe Checkout Session id (`cs_...`). Opaque; useful for
|
|
6082
|
+
correlation / observability.
|
|
6083
|
+
|
|
6084
|
+
BillingCheckoutSuccessEnvelope:
|
|
6085
|
+
type: object
|
|
6086
|
+
additionalProperties: false
|
|
6087
|
+
required:
|
|
6088
|
+
- success
|
|
6089
|
+
- data
|
|
6090
|
+
properties:
|
|
6091
|
+
success:
|
|
6092
|
+
type: boolean
|
|
6093
|
+
enum: [true]
|
|
6094
|
+
data:
|
|
6095
|
+
$ref: '#/components/schemas/BillingCheckoutSession'
|
|
6096
|
+
|
|
5831
6097
|
CreditsBalanceSuccessEnvelope:
|
|
5832
6098
|
type: object
|
|
5833
6099
|
additionalProperties: false
|
|
@@ -7314,7 +7580,7 @@ components:
|
|
|
7314
7580
|
- thumbnail_office: Office document (DOCX/XLSX/PPTX/ODT/ODS/ODP)
|
|
7315
7581
|
thumbnail sub-type. Backed by a dedicated LibreOffice Lambda.
|
|
7316
7582
|
Emitted by the publisher for office-document inputs.
|
|
7317
|
-
- image_watermark: Image overlay onto a base IMAGE asset. Multi-input (Path B
|
|
7583
|
+
- image_watermark: Image overlay onto a base IMAGE asset. Multi-input (Path B, role-based): one `base` + 1–8 `overlay` inputs (`input` min 2 / max 9). A single overlay uses the flat placement options (`anchor` / `margin_x` / `margin_y` / `opacity` / `overlay_width`); 2–8 overlays use the index-aligned `overlays[]` array (multi_overlay_stack, LIVE 2026-07-01) — the two are mutually exclusive. Each input is a `MultiInputSource` (external_import / connection / job_output — no upload-direct); an uploaded base or overlay enters via a `passthrough` source job referenced by `job_output`. Stable for static-image bases (jpeg/png/webp); TIFF (`image_tiff`) and BMP (`image_bmp`) bases are now `stable` too (flipped 2026-06-30, UANjD38A). Animated GIF (`image_gif`) bases stay `planned` via a parallel mime_group — dispatch returns `feature_not_available` (422) until Lambda support ships. Video bases are NOT supported by image_watermark — use the dedicated `video_watermark` operation per ADR-0013. Per ADR-0004 + I4-CONS + I5 (Trello AKZiOXnd).
|
|
7318
7584
|
- text_watermark: Text overlay rendered onto an image (Liberation Sans). Single-input. Stable for jpeg/png/webp; TIFF (`image_tiff`) and BMP (`image_bmp`) inputs are now `stable` too (flipped 2026-06-30, UANjD38A). Per ADR-0004 + I4-CONS.
|
|
7319
7585
|
- merge: Concatenate/combine multiple files into one (images, video, audio). Multi-input. Image inputs merge into animated GIF or slideshow video; image collage/grid and PDF concatenation are not supported by the V1 Lambda.
|
|
7320
7586
|
- archive: Bundle files into ZIP/tar.gz (all types). Multi-input.
|
|
@@ -7366,7 +7632,7 @@ components:
|
|
|
7366
7632
|
thumbnail_video, thumbnail_document, thumbnail_office,
|
|
7367
7633
|
text_watermark, convert, audio_watermark,
|
|
7368
7634
|
video_text_watermark, split, passthrough)
|
|
7369
|
-
- multi: Multiple input files (merge, archive, image_watermark, custom_luma, audio_overlay, audio_to_video, video_watermark). audio_to_video is the first role-based op with an OPTIONAL role (min_inputs=1, max_inputs=2 — see `per_role_cardinality`); video_watermark
|
|
7635
|
+
- multi: Multiple input files (merge, archive, image_watermark, custom_luma, audio_overlay, audio_to_video, video_watermark). audio_to_video is the first role-based op with an OPTIONAL role (min_inputs=1, max_inputs=2 — see `per_role_cardinality`); video_watermark is a fixed base+overlay pair (exactly one each, min_inputs=max_inputs=2) on video bases; image_watermark widened to base + 1–8 overlays (min 2 / max 9) with the multi_overlay_stack flip (2026-07-01).
|
|
7370
7636
|
enum:
|
|
7371
7637
|
- single
|
|
7372
7638
|
- multi
|
|
@@ -9839,10 +10105,10 @@ components:
|
|
|
9839
10105
|
[`RrxdUBGZ`](https://trello.com/c/RrxdUBGZ) / `i2J8AMy6`.
|
|
9840
10106
|
credits:
|
|
9841
10107
|
description: |
|
|
9842
|
-
OPTIONAL. Per-workflow credit summary
|
|
9843
|
-
`
|
|
9844
|
-
|
|
9845
|
-
|
|
10108
|
+
OPTIONAL. Per-workflow credit summary — the net cost of the run
|
|
10109
|
+
(`used`). `null` for legacy workflows with no credit record (or
|
|
10110
|
+
while a run has no final charge yet). See `WorkflowCreditSummary`.
|
|
10111
|
+
Per ticket `7XbqXO1B` (reshaped to `{ used }`-only per `DsHbIlC1`).
|
|
9846
10112
|
oneOf:
|
|
9847
10113
|
- $ref: '#/components/schemas/WorkflowCreditSummary'
|
|
9848
10114
|
- type: 'null'
|
|
@@ -9988,66 +10254,46 @@ components:
|
|
|
9988
10254
|
$ref: '#/components/schemas/WorkflowSummaryJob'
|
|
9989
10255
|
credits:
|
|
9990
10256
|
description: |
|
|
9991
|
-
OPTIONAL. Per-workflow credit summary
|
|
9992
|
-
`
|
|
9993
|
-
|
|
9994
|
-
|
|
10257
|
+
OPTIONAL. Per-workflow credit summary — the net cost of the run
|
|
10258
|
+
(`used`) so the list row can show what each run cost. `null` for
|
|
10259
|
+
legacy workflows with no credit record. Same shape as
|
|
10260
|
+
`WorkflowStatusResponse.credits`. Per ticket `7XbqXO1B` (reshaped to
|
|
10261
|
+
`{ used }`-only per `DsHbIlC1`).
|
|
9995
10262
|
oneOf:
|
|
9996
10263
|
- $ref: '#/components/schemas/WorkflowCreditSummary'
|
|
9997
10264
|
- type: 'null'
|
|
9998
10265
|
|
|
9999
10266
|
WorkflowCreditSummary:
|
|
10000
10267
|
type: object
|
|
10268
|
+
additionalProperties: false
|
|
10001
10269
|
description: |
|
|
10002
|
-
Per-workflow credit summary for the
|
|
10003
|
-
|
|
10004
|
-
|
|
10005
|
-
|
|
10006
|
-
|
|
10007
|
-
|
|
10270
|
+
Per-workflow credit summary for the workflow reads — the net cost of a
|
|
10271
|
+
run. Exposes ONLY `used` (the net credits charged); the internal
|
|
10272
|
+
reservation mechanics (`reserved` / `refunded` / lifecycle `state`) are
|
|
10273
|
+
deliberately NOT surfaced — a user-facing cost readout needs only the
|
|
10274
|
+
net figure, and `reserved` would leak a worst-case COGS estimate. The
|
|
10275
|
+
schema is CLOSED (`additionalProperties: false`) so the removed
|
|
10276
|
+
reservation fields cannot leak back into the payload.
|
|
10277
|
+
|
|
10278
|
+
The enclosing `credits` field is `null` for legacy workflows with no
|
|
10279
|
+
credit record, and may be `null`/absent while a run has no charge yet.
|
|
10280
|
+
Per ticket `7XbqXO1B` (reshaped to `{ used }` per `DsHbIlC1` — product
|
|
10281
|
+
decision to show net cost only).
|
|
10008
10282
|
required:
|
|
10009
|
-
-
|
|
10010
|
-
- refunded
|
|
10011
|
-
- net
|
|
10012
|
-
- state
|
|
10283
|
+
- used
|
|
10013
10284
|
properties:
|
|
10014
|
-
|
|
10015
|
-
type: integer
|
|
10016
|
-
minimum: 0
|
|
10017
|
-
description: Credits reserved (held) for the workflow at create time.
|
|
10018
|
-
refunded:
|
|
10285
|
+
used:
|
|
10019
10286
|
type: integer
|
|
10020
10287
|
minimum: 0
|
|
10021
10288
|
description: |
|
|
10022
|
-
|
|
10023
|
-
|
|
10024
|
-
|
|
10025
|
-
|
|
10026
|
-
|
|
10027
|
-
|
|
10028
|
-
|
|
10029
|
-
|
|
10030
|
-
`released`); only while `state` is `active` is it a
|
|
10031
|
-
current-but-not-yet-final figure.
|
|
10032
|
-
state:
|
|
10033
|
-
type: string
|
|
10034
|
-
enum: [active, settled, released]
|
|
10035
|
-
description: |
|
|
10036
|
-
A UI-facing PROJECTION of the workflow's billing-ledger reservation
|
|
10037
|
-
lifecycle into three states — the API maps the underlying ledger
|
|
10038
|
-
states into exactly one of these (consumers read only this projected
|
|
10039
|
-
value, not the raw ledger state):
|
|
10040
|
-
- `active` — reservation held, charge NOT yet final (a UI MUST NOT
|
|
10041
|
-
present `net` as the final cost).
|
|
10042
|
-
- `settled` — final charge applied; `net` is authoritative.
|
|
10043
|
-
- `released` — the reservation reached a terminal NON-settled
|
|
10044
|
-
outcome (released / cancelled / expired / fully-refunded — they
|
|
10045
|
-
all project here); `net` is authoritative (typically 0, or the
|
|
10046
|
-
partial charge that stuck).
|
|
10047
|
-
|
|
10048
|
-
Both non-`active` states are TERMINAL with an authoritative `net`;
|
|
10049
|
-
the `active` vs non-`active` split is the only distinction a cost
|
|
10050
|
-
readout needs (don't show a final figure while `active`).
|
|
10289
|
+
Net credits charged for the run (the value the old `net` field
|
|
10290
|
+
carried). AUTHORITATIVE (final) only once the workflow reaches a
|
|
10291
|
+
TERMINAL status — while the run is in flight this is a
|
|
10292
|
+
current-but-not-yet-final figure. Consumers MUST gate any "final
|
|
10293
|
+
cost" display on the workflow's terminal status: the removed `state`
|
|
10294
|
+
field previously carried the active-vs-final distinction, so read
|
|
10295
|
+
the workflow status instead (do not present `used` as the final
|
|
10296
|
+
charge while the run is still in flight).
|
|
10051
10297
|
|
|
10052
10298
|
CodegenSource:
|
|
10053
10299
|
type: object
|
|
@@ -294,7 +294,7 @@
|
|
|
294
294
|
],
|
|
295
295
|
"availability": "stable",
|
|
296
296
|
"input": {
|
|
297
|
-
"max":
|
|
297
|
+
"max": 9,
|
|
298
298
|
"min": 2,
|
|
299
299
|
"model": "multi",
|
|
300
300
|
"roles": [
|
|
@@ -302,6 +302,46 @@
|
|
|
302
302
|
"overlay"
|
|
303
303
|
]
|
|
304
304
|
},
|
|
305
|
+
"option_conflicts": [
|
|
306
|
+
{
|
|
307
|
+
"availability": "stable",
|
|
308
|
+
"constraint_id": "image_watermark.overlays_vs_flat_options",
|
|
309
|
+
"message": "`overlays[]` (multi-overlay) is mutually exclusive with the flat single-overlay options (anchor / margin_x / margin_y / opacity / overlay_width) \u2014 set one mode, not both.",
|
|
310
|
+
"when": {
|
|
311
|
+
"all": [
|
|
312
|
+
{
|
|
313
|
+
"field": "image_watermark.overlays",
|
|
314
|
+
"isSet": true
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"any": [
|
|
318
|
+
{
|
|
319
|
+
"field": "image_watermark.anchor",
|
|
320
|
+
"isSet": true
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"field": "image_watermark.margin_x",
|
|
324
|
+
"isSet": true
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"field": "image_watermark.margin_y",
|
|
328
|
+
"isSet": true
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"field": "image_watermark.opacity",
|
|
332
|
+
"isSet": true
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
"field": "image_watermark.overlay_width",
|
|
336
|
+
"isSet": true
|
|
337
|
+
}
|
|
338
|
+
]
|
|
339
|
+
}
|
|
340
|
+
]
|
|
341
|
+
},
|
|
342
|
+
"wire_code": "invalid_options"
|
|
343
|
+
}
|
|
344
|
+
],
|
|
305
345
|
"produces": {
|
|
306
346
|
"same_as_input": true
|
|
307
347
|
},
|
|
@@ -525,5 +565,5 @@
|
|
|
525
565
|
"isAnimated": "maybe"
|
|
526
566
|
}
|
|
527
567
|
},
|
|
528
|
-
"schema_version": "2.
|
|
568
|
+
"schema_version": "2.152.0"
|
|
529
569
|
}
|
|
@@ -44,30 +44,53 @@ operation:
|
|
|
44
44
|
input_model: multi
|
|
45
45
|
sole_op: true # bypasses V1 chain validation — must be the only operation in its job (ADR-0025)
|
|
46
46
|
min_inputs: 2
|
|
47
|
-
max_inputs:
|
|
47
|
+
max_inputs: 9
|
|
48
48
|
|
|
49
|
-
# Per-role input-count constraints (ADR-0015).
|
|
50
|
-
#
|
|
51
|
-
# - sum(role.min) == min_inputs
|
|
52
|
-
#
|
|
49
|
+
# Per-role input-count constraints (ADR-0015). base REQUIRED exactly one;
|
|
50
|
+
# overlay 1-8 (multi-overlay stack LIVE 2026-07-01). Arithmetic-consistency
|
|
51
|
+
# rule (CI-checked): sum(role.min) == min_inputs (1 + 1 = 2); sum(role.max) ==
|
|
52
|
+
# max_inputs (1 + 8 = 9). Per-role counts are WORKER-enforced (the API validates
|
|
53
|
+
# only the coarse TOTAL via input min/max); per_role_cardinality is advisory.
|
|
53
54
|
per_role_cardinality:
|
|
54
55
|
base:
|
|
55
56
|
min: 1
|
|
56
57
|
max: 1
|
|
57
58
|
overlay:
|
|
58
59
|
min: 1
|
|
59
|
-
max:
|
|
60
|
+
max: 8
|
|
60
61
|
|
|
61
62
|
features:
|
|
62
63
|
multi_overlay_stack:
|
|
63
|
-
|
|
64
|
+
# LIVE 2026-07-01: flipped planned->stable on the lambdas worker proof
|
|
65
|
+
# (operation-image-watermark git-2999507, digest-verified;
|
|
66
|
+
# prove-multi-overlay-staging.sh — 3 index-aligned overlays each rendering
|
|
67
|
+
# their own colour at their anchor; mutex + cardinality worker-enforced).
|
|
68
|
+
# Co-landed with `input` max 2->9 + per_role overlay{1,8} + overlays[]
|
|
69
|
+
# executable + api's overlays[] validation & FNA-gate removal (uUdre4jg).
|
|
70
|
+
# availability set EXPLICITLY (matches the audio_overlay / video_watermark
|
|
71
|
+
# multi_overlay_stack features, which stay `planned` — their workers are
|
|
72
|
+
# unproven for multi-overlay).
|
|
73
|
+
availability: stable
|
|
64
74
|
description: |
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
75
|
+
Stack up to 8 overlay inputs on one base image, each with its own
|
|
76
|
+
placement via the `overlays[]` array option (index-aligned to the
|
|
77
|
+
overlay-role sources; see the `image` group's `overlays` option).
|
|
78
|
+
`overlays[]` is mutually exclusive with the flat single-overlay options,
|
|
79
|
+
which remain the 1-overlay back-compat path.
|
|
80
|
+
|
|
81
|
+
**Base-format scope: multi-overlay (`overlays[]`) is on the `image`
|
|
82
|
+
group (jpeg/png/webp) ONLY** — the format the worker proved. The
|
|
83
|
+
stable `image_tiff` / `image_bmp` bases support the SINGLE-overlay flat
|
|
84
|
+
options but NOT `overlays[]` yet (multi-overlay on those bases needs its
|
|
85
|
+
own worker proof — a base-format extension, separate from the group's
|
|
86
|
+
stable single-overlay flip). GIF / video bases remain out of scope.
|
|
87
|
+
|
|
88
|
+
The op-level `input` max 9 / `per_role_cardinality` overlay `{1,8}` is
|
|
89
|
+
the MAXIMUM (the jpeg/png/webp base); input-cardinality has no per-mime-
|
|
90
|
+
group primitive, so a `>1`-overlay request on a tiff/bmp base — which
|
|
91
|
+
has no `overlays[]` to place the extra overlays — is rejected as
|
|
92
|
+
`invalid_options` (API + worker). Effective per-base overlay count:
|
|
93
|
+
jpeg/png/webp = 1–8, tiff/bmp = 1.
|
|
71
94
|
|
|
72
95
|
mime_groups:
|
|
73
96
|
image:
|
|
@@ -144,6 +167,91 @@ operation:
|
|
|
144
167
|
Optional overlay width as either pixels (e.g. "200px") or
|
|
145
168
|
percentage of base image width (e.g. "30%"). Aspect ratio is
|
|
146
169
|
preserved. Omit to use the original overlay size.
|
|
170
|
+
overlays:
|
|
171
|
+
type: array
|
|
172
|
+
minItems: 1
|
|
173
|
+
maxItems: 8
|
|
174
|
+
# LIVE 2026-07-01 (no availability tag = stable): the multi-overlay-stack
|
|
175
|
+
# surface (features.multi_overlay_stack), flipped planned->stable on the
|
|
176
|
+
# lambdas worker proof (git-2999507). INDEX-ALIGNED to the overlay-role
|
|
177
|
+
# sources: overlays[i] applies to overlay source i. The option DSL has no
|
|
178
|
+
# source-array-length-match primitive, so `len(overlays) == overlay-source
|
|
179
|
+
# count` is WORKER-enforced (invalid_options otherwise) — prose below.
|
|
180
|
+
# Cardinality (co-design with lambdas + api): per-role counts are
|
|
181
|
+
# WORKER-enforced (base{1,1} + overlay{1,8}); the API validates only the
|
|
182
|
+
# coarse TOTAL input count via `input` min/max (2..9), so
|
|
183
|
+
# per_role_cardinality stays ADVISORY. The item sub-schema mirrors the flat
|
|
184
|
+
# single-overlay options (JSON-Schema forms per the render_variants.targets
|
|
185
|
+
# array-of-objects precedent).
|
|
186
|
+
# COEXISTENCE: `overlays[]` is MUTUALLY EXCLUSIVE with the flat
|
|
187
|
+
# single-overlay options (anchor/margin_x/margin_y/opacity/
|
|
188
|
+
# overlay_width) — setting both in one request is `invalid_options`
|
|
189
|
+
# (api create-validation + worker). No silent precedence; the caller
|
|
190
|
+
# picks ONE mode. (The option DSL has no cross-option-group mutex
|
|
191
|
+
# primitive, so this is validator-enforced, documented here + in prose.)
|
|
192
|
+
description: |
|
|
193
|
+
Per-overlay placement for the multi-overlay stack — one entry per
|
|
194
|
+
overlay source, INDEX-ALIGNED: `overlays[i]` applies to overlay
|
|
195
|
+
source `i`. Stacks up to 8 overlays on one base
|
|
196
|
+
(`features.multi_overlay_stack`). `len(overlays)` MUST equal the
|
|
197
|
+
number of overlay-role sources (worker-enforced; `invalid_options`
|
|
198
|
+
otherwise).
|
|
199
|
+
|
|
200
|
+
**Z-order = array index (painter's order, bottom → top).** Overlays
|
|
201
|
+
are composited in array/source order: `overlays[0]` first (bottom),
|
|
202
|
+
then `overlays[1]`, … `overlays[N-1]` LAST (on top). Where two
|
|
203
|
+
overlays overlap, the higher index wins. There is no per-overlay
|
|
204
|
+
`z` field — the index IS the z-order. (Deterministic in the worker;
|
|
205
|
+
identical per-frame for animated-WebP bases.)
|
|
206
|
+
|
|
207
|
+
**Mutually exclusive with the flat single-overlay options**
|
|
208
|
+
(`anchor` / `margin_x` / `margin_y` / `opacity` / `overlay_width`):
|
|
209
|
+
a request that sets BOTH `overlays[]` and any flat option is
|
|
210
|
+
rejected as `invalid_options` (API create-validation + worker) —
|
|
211
|
+
there is no silent precedence. Use the flat options for the
|
|
212
|
+
single-overlay path, `overlays[]` for the multi path.
|
|
213
|
+
|
|
214
|
+
LIVE (flipped `planned` -> stable 2026-07-01 on the lambdas worker
|
|
215
|
+
proof, co-landed with `input` max 2 -> 9 + `per_role_cardinality`
|
|
216
|
+
overlay `{1,8}` + api's overlays[] validation & FNA-gate removal).
|
|
217
|
+
The single-overlay FLAT options remain the 1-overlay back-compat path.
|
|
218
|
+
items:
|
|
219
|
+
type: object
|
|
220
|
+
properties:
|
|
221
|
+
anchor:
|
|
222
|
+
type: string
|
|
223
|
+
enum:
|
|
224
|
+
- top_left
|
|
225
|
+
- top_center
|
|
226
|
+
- top_right
|
|
227
|
+
- center_left
|
|
228
|
+
- center
|
|
229
|
+
- center_right
|
|
230
|
+
- bottom_left
|
|
231
|
+
- bottom_center
|
|
232
|
+
- bottom_right
|
|
233
|
+
default: bottom_right
|
|
234
|
+
description: 9-grid anchor position on the base image (per-overlay; see the flat `anchor`).
|
|
235
|
+
margin_x:
|
|
236
|
+
type: string
|
|
237
|
+
pattern: '^\d+(\.\d+)?(px|%)$'
|
|
238
|
+
default: "0px"
|
|
239
|
+
description: Horizontal offset from the anchor (px or % of base width), anchor-relative (see the flat `margin_x`).
|
|
240
|
+
margin_y:
|
|
241
|
+
type: string
|
|
242
|
+
pattern: '^\d+(\.\d+)?(px|%)$'
|
|
243
|
+
default: "0px"
|
|
244
|
+
description: Vertical offset from the anchor (px or % of base height), anchor-relative (see the flat `margin_y`).
|
|
245
|
+
opacity:
|
|
246
|
+
type: number
|
|
247
|
+
minimum: 0
|
|
248
|
+
maximum: 1
|
|
249
|
+
default: 0.5
|
|
250
|
+
description: Overlay opacity (0 transparent .. 1 opaque), clamped.
|
|
251
|
+
overlay_width:
|
|
252
|
+
type: string
|
|
253
|
+
pattern: '^\d+(\.\d+)?(px|%)$'
|
|
254
|
+
description: Optional overlay width (px or % of base width); aspect preserved. Omit for original size.
|
|
147
255
|
|
|
148
256
|
# Animated GIF base — separate group because the rendering path is
|
|
149
257
|
# frame-preserving (each frame composited with the overlay), distinct
|