@giveitsmaller/contracts 0.57.0 → 0.59.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 +15 -1
- package/accepted-options/image-output-routes.json +1 -1
- package/asyncapi/events.yaml +17 -9
- package/availability/availability.json +123 -7
- package/code-builder/code-builder-metadata.json +128 -8
- 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 +1 -1
- package/dist/openapi/models/BillingCheckoutRequest.js +1 -1
- package/dist/openapi/models/BillingCheckoutSession.d.ts +1 -1
- package/dist/openapi/models/BillingCheckoutSession.js +1 -1
- package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +1 -1
- package/dist/openapi/models/CallbackEventType.d.ts +1 -1
- package/dist/openapi/models/CallbackEventType.js +1 -1
- package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
- package/dist/openapi/models/CapabilityCondition.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
- package/dist/openapi/models/CapabilityConstraint.d.ts +1 -1
- package/dist/openapi/models/CapabilityConstraint.js +1 -1
- package/dist/openapi/models/CapabilityInputSpec.d.ts +1 -1
- package/dist/openapi/models/CapabilityInputSpec.js +1 -1
- package/dist/openapi/models/CapabilityProduces.d.ts +1 -1
- package/dist/openapi/models/CapabilityProduces.js +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf.d.ts +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf.js +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
- package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
- package/dist/openapi/models/ChangePasswordRequest.js +1 -1
- package/dist/openapi/models/CodegenSource.d.ts +1 -1
- package/dist/openapi/models/CodegenSource.js +1 -1
- package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceInput.js +1 -1
- package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceJob.js +1 -1
- package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
- package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceOperation.js +1 -1
- package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
- package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
- package/dist/openapi/models/CompositionPlan.d.ts +1 -1
- package/dist/openapi/models/CompositionPlan.js +1 -1
- package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
- package/dist/openapi/models/CompositionPlanJob.js +1 -1
- package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
- package/dist/openapi/models/CompositionPlanOperation.js +1 -1
- package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
- package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
- package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
- package/dist/openapi/models/ConnectionSource.d.ts +1 -1
- package/dist/openapi/models/ConnectionSource.js +1 -1
- package/dist/openapi/models/ContactRequest.d.ts +1 -1
- package/dist/openapi/models/ContactRequest.js +1 -1
- package/dist/openapi/models/ContactSubject.d.ts +1 -1
- package/dist/openapi/models/ContactSubject.js +1 -1
- package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
- package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
- package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
- package/dist/openapi/models/CreateApiKey201Response.js +1 -1
- package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
- package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
- package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
- package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
- package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +1 -1
- package/dist/openapi/models/CreateBillingCheckoutSession422Response.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/CreateWorkflow401Response.d.ts +1 -1
- package/dist/openapi/models/CreateWorkflow401Response.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 +43 -1
- package/dist/openapi/models/CreditsUsageResponse.js +5 -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/EmailNotify.d.ts +1 -1
- package/dist/openapi/models/EmailNotify.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/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 +31 -7
- package/dist/openapi/models/JobResponse.js +3 -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/LoginUser401Response.d.ts +1 -1
- package/dist/openapi/models/LoginUser401Response.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 +38 -1
- package/dist/openapi/models/MimeGroupSchema.js +5 -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/NotifyConfig.d.ts +1 -1
- package/dist/openapi/models/NotifyConfig.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 +103 -5
- 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 +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 +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 +10 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +4 -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/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +33 -0
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +42 -0
- 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 +23 -6
- package/dist/openapi/models/ProcessingClassHint.js +23 -6
- 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/ResendVerificationEmailRequest.d.ts +1 -1
- package/dist/openapi/models/ResendVerificationEmailRequest.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 +9 -4
- 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 -19
- package/dist/openapi/models/UploadSource.js +1 -3
- 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/WorkflowArchiveResponse.d.ts +81 -0
- package/dist/openapi/models/WorkflowArchiveResponse.js +71 -0
- package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.d.ts +46 -0
- package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.js +54 -0
- package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
- package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
- package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
- package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
- package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
- package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
- package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowCreditSummary.d.ts +1 -1
- package/dist/openapi/models/WorkflowCreditSummary.js +1 -1
- package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
- package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
- package/dist/openapi/models/WorkflowEdge.js +1 -1
- package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
- package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowListResponse.js +1 -1
- package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
- package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
- package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
- package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
- package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
- package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
- package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
- package/dist/openapi/models/WorkflowProcessing.js +1 -1
- package/dist/openapi/models/WorkflowRestoreResponse.d.ts +60 -0
- package/dist/openapi/models/WorkflowRestoreResponse.js +58 -0
- package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.d.ts +46 -0
- package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.js +54 -0
- 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 +24 -1
- package/dist/openapi/models/WorkflowSummary.js +5 -1
- package/dist/openapi/models/WorkflowSummaryJob.d.ts +18 -9
- 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 +5 -0
- package/dist/openapi/models/index.js +5 -0
- package/dist/openapi/runtime.d.ts +1 -1
- package/dist/openapi/runtime.js +1 -1
- package/dist/operations/compress.metadata.js +3 -0
- package/dist/operations/thumbnail.d.ts +23 -0
- package/dist/operations/thumbnail.js +17 -0
- package/dist/operations/thumbnail.metadata.js +29 -0
- package/openapi/api.yaml +608 -54
- package/operation-capabilities/operation-capabilities.json +1 -1
- package/operations/schemas/audio_to_video.yaml +1 -0
- package/operations/schemas/compress.yaml +52 -2
- package/operations/schemas/convert.yaml +6 -1
- package/operations/schemas/split.yaml +13 -3
- package/operations/schemas/thumbnail.yaml +143 -2
- 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.180.0
|
|
93
93
|
contact:
|
|
94
94
|
name: API Support
|
|
95
95
|
|
|
@@ -221,18 +221,38 @@ paths:
|
|
|
221
221
|
required_tier: "enterprise"
|
|
222
222
|
'413':
|
|
223
223
|
description: |
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
224
|
+
The upload is too large. Two rejection cases, discriminated by the
|
|
225
|
+
`ErrorEnvelope.error` code:
|
|
226
|
+
|
|
227
|
+
- **Byte size** — the file exceeds the absolute maximum upload size
|
|
228
|
+
(across all tiers). For tier-specific size caps below this
|
|
229
|
+
absolute limit, the server returns 403 with `error_type:
|
|
230
|
+
tier_restriction, restriction_kind: file_size` instead.
|
|
231
|
+
- **Pixel dimensions** (`error: IMAGE_DIMENSIONS_TOO_LARGE`) — a
|
|
232
|
+
decodable raster image whose `width × height` exceeds the
|
|
233
|
+
configured pixel ceiling (`UPLOAD_MAX_IMAGE_PIXELS`, default
|
|
234
|
+
16 MP). The server reads dimensions from the file **header** (no
|
|
235
|
+
full-bitmap decode) and rejects **before** decoding, so a
|
|
236
|
+
within-byte-limit but huge-dimension image (e.g. a few-KB 26 MP
|
|
237
|
+
PNG that would decode to ~100 MB) is rejected up front rather than
|
|
238
|
+
exhausting memory. Non-decoded raster types (TIFF/BMP/ICO) and
|
|
239
|
+
non-images are unaffected.
|
|
229
240
|
content:
|
|
230
241
|
application/json:
|
|
231
242
|
schema:
|
|
232
243
|
$ref: '#/components/schemas/ErrorEnvelope'
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
244
|
+
examples:
|
|
245
|
+
file_too_large:
|
|
246
|
+
summary: File exceeds the absolute maximum byte size
|
|
247
|
+
value:
|
|
248
|
+
success: false
|
|
249
|
+
error: "File size exceeds maximum allowed (100 GiB)"
|
|
250
|
+
image_dimensions_too_large:
|
|
251
|
+
summary: Decodable raster exceeds the pixel-dimension ceiling
|
|
252
|
+
value:
|
|
253
|
+
success: false
|
|
254
|
+
error: "IMAGE_DIMENSIONS_TOO_LARGE"
|
|
255
|
+
message: "Image dimensions exceed the maximum allowed (16 MP)."
|
|
236
256
|
'415':
|
|
237
257
|
description: |
|
|
238
258
|
Unsupported file type at the contract level (no tier permits
|
|
@@ -1172,6 +1192,28 @@ paths:
|
|
|
1172
1192
|
minimum: 1
|
|
1173
1193
|
maximum: 100
|
|
1174
1194
|
default: 20
|
|
1195
|
+
- name: archived
|
|
1196
|
+
in: query
|
|
1197
|
+
required: false
|
|
1198
|
+
description: |
|
|
1199
|
+
Archived-row filter (ticket
|
|
1200
|
+
[`j2s6T2qf`](https://trello.com/c/j2s6T2qf)). **Default `false`**:
|
|
1201
|
+
archived workflows are EXCLUDED, so archiving declutters the
|
|
1202
|
+
default view. **`true`**: list ONLY archived workflows (the
|
|
1203
|
+
"archive" view, for review or recovery via
|
|
1204
|
+
`POST /api/workflows/{id}/restore`).
|
|
1205
|
+
|
|
1206
|
+
Archiving is a **recoverable declutter, NOT a delete** — an
|
|
1207
|
+
archived workflow keeps every record and stays fully readable via
|
|
1208
|
+
`GET /api/workflows/{id}/status` and its downloads; only this list
|
|
1209
|
+
hides it by default. Archive an individual workflow via
|
|
1210
|
+
`POST /api/workflows/{id}/archive`, restore it via
|
|
1211
|
+
`POST /api/workflows/{id}/restore`. (A future "show both" view, if
|
|
1212
|
+
needed, would be a separate additive parameter — this boolean
|
|
1213
|
+
stays exclude-vs-archived-only.)
|
|
1214
|
+
schema:
|
|
1215
|
+
type: boolean
|
|
1216
|
+
default: false
|
|
1175
1217
|
responses:
|
|
1176
1218
|
'200':
|
|
1177
1219
|
description: Cursor-paginated summary list of the caller's workflows.
|
|
@@ -2493,6 +2535,186 @@ paths:
|
|
|
2493
2535
|
schema:
|
|
2494
2536
|
$ref: '#/components/schemas/ErrorEnvelope'
|
|
2495
2537
|
|
|
2538
|
+
/api/workflows/{id}/archive:
|
|
2539
|
+
post:
|
|
2540
|
+
summary: Archive a workflow
|
|
2541
|
+
description: |
|
|
2542
|
+
Archive a terminal workflow so it drops out of the caller's default
|
|
2543
|
+
workflow list. **Recoverable declutter, NOT a delete** — the workflow,
|
|
2544
|
+
its jobs, its operations, and its outputs are all retained and stay
|
|
2545
|
+
fully readable: `GET /api/workflows/{id}/status` and every download
|
|
2546
|
+
link keep working unchanged. Archiving only hides the row from the
|
|
2547
|
+
default `GET /api/workflows` view; `?archived=true` lists archived
|
|
2548
|
+
rows, and `POST /api/workflows/{id}/restore` brings one back.
|
|
2549
|
+
|
|
2550
|
+
Archive sets a dedicated `archived` flag that is **distinct from
|
|
2551
|
+
deletion** — it is the Gmail-style "archive" (reversible, user-owned),
|
|
2552
|
+
not the admin-only hard delete, and it does NOT set any soft-delete /
|
|
2553
|
+
`deleted_at` state. Hard deletion is not exposed to callers.
|
|
2554
|
+
|
|
2555
|
+
Owner-scoped. Idempotent — archiving an already-archived workflow
|
|
2556
|
+
returns 200 with the same shape (`archived_at` reflects the FIRST
|
|
2557
|
+
archive instant, unchanged by a re-archive).
|
|
2558
|
+
|
|
2559
|
+
**Terminal workflows only.** Archive is allowed only once the workflow
|
|
2560
|
+
has reached a terminal status (`completed`, `failed`,
|
|
2561
|
+
`partially_failed`, `cancelled`, `expired`). Archiving an active
|
|
2562
|
+
workflow (`pending`, `in_progress`, `paused_insufficient_credits`) is
|
|
2563
|
+
a **409** — cancel it first (`POST /api/workflows/{id}/cancel`) or wait
|
|
2564
|
+
for it to finish. Archiving does NOT change the workflow's status; it
|
|
2565
|
+
stays terminal and the response echoes it unchanged.
|
|
2566
|
+
operationId: archiveWorkflow
|
|
2567
|
+
security: [{bearerAuth: []}, {sessionAuth: []}] # required (explicit 401 in response set)
|
|
2568
|
+
x-identity-scoped: true # workflow-ownership-scoped per ADR-0016 D3
|
|
2569
|
+
tags:
|
|
2570
|
+
- Workflow
|
|
2571
|
+
parameters:
|
|
2572
|
+
- name: id
|
|
2573
|
+
in: path
|
|
2574
|
+
required: true
|
|
2575
|
+
description: Workflow ID (UUID v7)
|
|
2576
|
+
schema:
|
|
2577
|
+
$ref: '#/components/schemas/UuidV7'
|
|
2578
|
+
responses:
|
|
2579
|
+
'200':
|
|
2580
|
+
description: Workflow archived (or already archived — idempotent).
|
|
2581
|
+
content:
|
|
2582
|
+
application/json:
|
|
2583
|
+
schema:
|
|
2584
|
+
$ref: '#/components/schemas/WorkflowArchiveSuccessEnvelope'
|
|
2585
|
+
examples:
|
|
2586
|
+
archived:
|
|
2587
|
+
summary: Archive a completed workflow
|
|
2588
|
+
value:
|
|
2589
|
+
success: true
|
|
2590
|
+
data:
|
|
2591
|
+
workflow_id: "019539ac-2222-7000-8000-000000000001"
|
|
2592
|
+
status: "completed"
|
|
2593
|
+
archived: true
|
|
2594
|
+
archived_at: "2026-07-17T20:15:00Z"
|
|
2595
|
+
idempotent_rearchive:
|
|
2596
|
+
summary: Archiving an already-archived workflow
|
|
2597
|
+
value:
|
|
2598
|
+
success: true
|
|
2599
|
+
data:
|
|
2600
|
+
workflow_id: "019539ac-2222-7000-8000-000000000002"
|
|
2601
|
+
status: "failed"
|
|
2602
|
+
archived: true
|
|
2603
|
+
archived_at: "2026-07-17T19:55:00Z"
|
|
2604
|
+
'401':
|
|
2605
|
+
description: Authentication required.
|
|
2606
|
+
content:
|
|
2607
|
+
application/json:
|
|
2608
|
+
schema:
|
|
2609
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
2610
|
+
'404':
|
|
2611
|
+
description: Workflow not found OR not owned by the caller (same shape — no ownership leak).
|
|
2612
|
+
content:
|
|
2613
|
+
application/json:
|
|
2614
|
+
schema:
|
|
2615
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
2616
|
+
'409':
|
|
2617
|
+
description: |
|
|
2618
|
+
Workflow is in a non-terminal state (`pending`, `in_progress`,
|
|
2619
|
+
`paused_insufficient_credits`) and cannot be archived yet — only
|
|
2620
|
+
terminal workflows are archivable. Cancel it first
|
|
2621
|
+
(`POST /api/workflows/{id}/cancel`) or wait for it to finish, then
|
|
2622
|
+
retry. Check status via `GET /api/workflows/{id}/status`.
|
|
2623
|
+
content:
|
|
2624
|
+
application/json:
|
|
2625
|
+
schema:
|
|
2626
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
2627
|
+
'429':
|
|
2628
|
+
description: Rate limit exceeded
|
|
2629
|
+
content:
|
|
2630
|
+
application/json:
|
|
2631
|
+
schema:
|
|
2632
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
2633
|
+
'500':
|
|
2634
|
+
description: Internal server error
|
|
2635
|
+
content:
|
|
2636
|
+
application/json:
|
|
2637
|
+
schema:
|
|
2638
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
2639
|
+
|
|
2640
|
+
/api/workflows/{id}/restore:
|
|
2641
|
+
post:
|
|
2642
|
+
summary: Restore (un-archive) a workflow
|
|
2643
|
+
description: |
|
|
2644
|
+
Restore a previously-archived workflow so it reappears in the caller's
|
|
2645
|
+
default `GET /api/workflows` list. The exact inverse of
|
|
2646
|
+
`POST /api/workflows/{id}/archive` — it clears the `archived` flag and
|
|
2647
|
+
nothing else. Status, jobs, operations, outputs, and download links are
|
|
2648
|
+
untouched (archiving never hid or changed any of those; it only hid the
|
|
2649
|
+
list row).
|
|
2650
|
+
|
|
2651
|
+
Owner-scoped. Idempotent — restoring a workflow that is not archived
|
|
2652
|
+
is a harmless no-op that returns 200 with `archived: false`. Because a
|
|
2653
|
+
non-archived workflow can be in any lifecycle state, the echoed
|
|
2654
|
+
`status` is the workflow's unchanged status (any `WorkflowStatus`
|
|
2655
|
+
value), not a fixed terminal subset. There is no 409: un-archiving is
|
|
2656
|
+
always safe.
|
|
2657
|
+
operationId: restoreWorkflow
|
|
2658
|
+
security: [{bearerAuth: []}, {sessionAuth: []}] # required (explicit 401 in response set)
|
|
2659
|
+
x-identity-scoped: true # workflow-ownership-scoped per ADR-0016 D3
|
|
2660
|
+
tags:
|
|
2661
|
+
- Workflow
|
|
2662
|
+
parameters:
|
|
2663
|
+
- name: id
|
|
2664
|
+
in: path
|
|
2665
|
+
required: true
|
|
2666
|
+
description: Workflow ID (UUID v7)
|
|
2667
|
+
schema:
|
|
2668
|
+
$ref: '#/components/schemas/UuidV7'
|
|
2669
|
+
responses:
|
|
2670
|
+
'200':
|
|
2671
|
+
description: Workflow restored (or was already not archived — idempotent).
|
|
2672
|
+
content:
|
|
2673
|
+
application/json:
|
|
2674
|
+
schema:
|
|
2675
|
+
$ref: '#/components/schemas/WorkflowRestoreSuccessEnvelope'
|
|
2676
|
+
examples:
|
|
2677
|
+
restored:
|
|
2678
|
+
summary: Restore an archived workflow
|
|
2679
|
+
value:
|
|
2680
|
+
success: true
|
|
2681
|
+
data:
|
|
2682
|
+
workflow_id: "019539ac-2222-7000-8000-000000000001"
|
|
2683
|
+
status: "completed"
|
|
2684
|
+
archived: false
|
|
2685
|
+
idempotent_restore:
|
|
2686
|
+
summary: Restoring a workflow that was not archived
|
|
2687
|
+
value:
|
|
2688
|
+
success: true
|
|
2689
|
+
data:
|
|
2690
|
+
workflow_id: "019539ac-2222-7000-8000-000000000002"
|
|
2691
|
+
status: "in_progress"
|
|
2692
|
+
archived: false
|
|
2693
|
+
'401':
|
|
2694
|
+
description: Authentication required.
|
|
2695
|
+
content:
|
|
2696
|
+
application/json:
|
|
2697
|
+
schema:
|
|
2698
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
2699
|
+
'404':
|
|
2700
|
+
description: Workflow not found OR not owned by the caller (same shape — no ownership leak).
|
|
2701
|
+
content:
|
|
2702
|
+
application/json:
|
|
2703
|
+
schema:
|
|
2704
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
2705
|
+
'429':
|
|
2706
|
+
description: Rate limit exceeded
|
|
2707
|
+
content:
|
|
2708
|
+
application/json:
|
|
2709
|
+
schema:
|
|
2710
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
2711
|
+
'500':
|
|
2712
|
+
description: Internal server error
|
|
2713
|
+
content:
|
|
2714
|
+
application/json:
|
|
2715
|
+
schema:
|
|
2716
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
2717
|
+
|
|
2496
2718
|
# ============================================
|
|
2497
2719
|
# OPERATIONS ENDPOINTS
|
|
2498
2720
|
# ============================================
|
|
@@ -5706,25 +5928,6 @@ components:
|
|
|
5706
5928
|
const: upload
|
|
5707
5929
|
file_id:
|
|
5708
5930
|
$ref: '#/components/schemas/UuidV7'
|
|
5709
|
-
declared_duration_seconds:
|
|
5710
|
-
type:
|
|
5711
|
-
- number
|
|
5712
|
-
- "null"
|
|
5713
|
-
minimum: 0
|
|
5714
|
-
description: |
|
|
5715
|
-
OPTIONAL client-declared media duration in seconds, measured on the
|
|
5716
|
-
client **before** upload (e.g. the browser's
|
|
5717
|
-
`HTMLVideoElement.duration`). A **routing hint** for long-form
|
|
5718
|
-
classification only ([`frlwBuQ5`](https://trello.com/c/frlwBuQ5)):
|
|
5719
|
-
the server prefers its own authoritative media probe and falls back
|
|
5720
|
-
to this value **only when the async probe duration is null** (e.g.
|
|
5721
|
-
the probe has not completed at classification time). It never
|
|
5722
|
-
overrides a successful probe, and is not billed against — duration
|
|
5723
|
-
billing uses the probed value. Omit (or `null`) when unknown —
|
|
5724
|
-
**absent behaves exactly as today** (probe-only). Ignored for
|
|
5725
|
-
non-timed media. Only meaningful on an `upload` source (the one the
|
|
5726
|
-
client measured locally); other source leaves do not carry it.
|
|
5727
|
-
example: 187.5
|
|
5728
5931
|
|
|
5729
5932
|
JobOutputSource:
|
|
5730
5933
|
type: object
|
|
@@ -6541,6 +6744,44 @@ components:
|
|
|
6541
6744
|
offset:
|
|
6542
6745
|
type: integer
|
|
6543
6746
|
minimum: 0
|
|
6747
|
+
current_cycle_net_spent:
|
|
6748
|
+
type: integer
|
|
6749
|
+
minimum: 0
|
|
6750
|
+
description: |
|
|
6751
|
+
OPTIONAL/additive. Net credits the caller has spent in the CURRENT
|
|
6752
|
+
billing cycle — the monthly-grant period (ledger rows with
|
|
6753
|
+
`created_at` >= the current cycle start). Integer credit units, same
|
|
6754
|
+
as `CreditTransaction.amount` and the balance fields.
|
|
6755
|
+
|
|
6756
|
+
**"Net" = credits actually consumed**, i.e. reservation debits minus
|
|
6757
|
+
the credit-returns that give credits back:
|
|
6758
|
+
|
|
6759
|
+
net = Σ |workflow-reservation debits|
|
|
6760
|
+
− Σ |credit-return rows|
|
|
6761
|
+
|
|
6762
|
+
Rows are identified by **`reference_type`, NOT `type`** — there is
|
|
6763
|
+
no `type: refund` row. The debit is
|
|
6764
|
+
`reference_type: workflow_reservation` (a negative `amount`); the
|
|
6765
|
+
credit-return family is `reference_type` ∈ {`workflow_settle_refund`,
|
|
6766
|
+
`workflow_reservation_release`, `workflow_pause_release`,
|
|
6767
|
+
`workflow_expiry_release`} (positive amounts). This nets a fully
|
|
6768
|
+
released / cancelled / expired reservation to ~0 and a settled one to
|
|
6769
|
+
its non-refundable consumed portion — so it reflects credits ACTUALLY
|
|
6770
|
+
consumed, not gross reservations (a raw settled-sum would overstate
|
|
6771
|
+
spend, since the returns are separate positive rows). Mirrors the
|
|
6772
|
+
reserved-minus-refunded semantics of the API's authoritative
|
|
6773
|
+
`WorkflowCreditSummary` reads. **Absent** for legacy/unsupported
|
|
6774
|
+
reads — treat as unknown, not `0`. Per ticket
|
|
6775
|
+
[`5aXGShPy`](https://trello.com/c/5aXGShPy).
|
|
6776
|
+
lifetime_net_spent:
|
|
6777
|
+
type: integer
|
|
6778
|
+
minimum: 0
|
|
6779
|
+
description: |
|
|
6780
|
+
OPTIONAL/additive. Same net-of-credit-returns formula as
|
|
6781
|
+
`current_cycle_net_spent`, but ALL-TIME (no cycle window) — the
|
|
6782
|
+
caller's total credits ever consumed. Integer credit units.
|
|
6783
|
+
**Absent** for legacy/unsupported reads — treat as unknown, not `0`.
|
|
6784
|
+
Per ticket [`5aXGShPy`](https://trello.com/c/5aXGShPy).
|
|
6544
6785
|
|
|
6545
6786
|
CreditsUsageSuccessEnvelope:
|
|
6546
6787
|
type: object
|
|
@@ -6797,6 +7038,99 @@ components:
|
|
|
6797
7038
|
data:
|
|
6798
7039
|
$ref: '#/components/schemas/WorkflowResumeResponse'
|
|
6799
7040
|
|
|
7041
|
+
WorkflowArchiveResponse:
|
|
7042
|
+
type: object
|
|
7043
|
+
description: |
|
|
7044
|
+
Response body for `POST /api/workflows/{id}/archive` (ticket
|
|
7045
|
+
[`j2s6T2qf`](https://trello.com/c/j2s6T2qf)). Archiving sets the
|
|
7046
|
+
`archived` flag so the row drops from the default workflow list; it
|
|
7047
|
+
does NOT change the workflow's status, delete anything, or hide it from
|
|
7048
|
+
`GET /api/workflows/{id}/status` or its downloads. Reversible via
|
|
7049
|
+
`POST /api/workflows/{id}/restore`.
|
|
7050
|
+
required:
|
|
7051
|
+
- workflow_id
|
|
7052
|
+
- status
|
|
7053
|
+
- archived
|
|
7054
|
+
- archived_at
|
|
7055
|
+
properties:
|
|
7056
|
+
workflow_id:
|
|
7057
|
+
$ref: '#/components/schemas/UuidV7'
|
|
7058
|
+
status:
|
|
7059
|
+
type: string
|
|
7060
|
+
enum:
|
|
7061
|
+
- completed
|
|
7062
|
+
- failed
|
|
7063
|
+
- partially_failed
|
|
7064
|
+
- cancelled
|
|
7065
|
+
- expired
|
|
7066
|
+
description: |
|
|
7067
|
+
The workflow's UNCHANGED terminal status — archive never mutates
|
|
7068
|
+
status, only sets the archived flag. Constrained to the terminal
|
|
7069
|
+
subset of `WorkflowStatus` (the only archivable states); an active
|
|
7070
|
+
workflow is a 409, never a 200.
|
|
7071
|
+
archived:
|
|
7072
|
+
type: boolean
|
|
7073
|
+
enum: [true]
|
|
7074
|
+
description: Always `true` on a 200 — the workflow is archived.
|
|
7075
|
+
archived_at:
|
|
7076
|
+
type: string
|
|
7077
|
+
format: date-time
|
|
7078
|
+
description: |
|
|
7079
|
+
ISO-8601 timestamp the workflow was FIRST archived. Idempotent —
|
|
7080
|
+
a re-archive of an already-archived workflow returns the original
|
|
7081
|
+
`archived_at`, unchanged.
|
|
7082
|
+
|
|
7083
|
+
WorkflowArchiveSuccessEnvelope:
|
|
7084
|
+
type: object
|
|
7085
|
+
additionalProperties: false
|
|
7086
|
+
required:
|
|
7087
|
+
- success
|
|
7088
|
+
- data
|
|
7089
|
+
properties:
|
|
7090
|
+
success:
|
|
7091
|
+
type: boolean
|
|
7092
|
+
enum: [true]
|
|
7093
|
+
data:
|
|
7094
|
+
$ref: '#/components/schemas/WorkflowArchiveResponse'
|
|
7095
|
+
|
|
7096
|
+
WorkflowRestoreResponse:
|
|
7097
|
+
type: object
|
|
7098
|
+
description: |
|
|
7099
|
+
Response body for `POST /api/workflows/{id}/restore` (ticket
|
|
7100
|
+
[`j2s6T2qf`](https://trello.com/c/j2s6T2qf)). Restoring clears the
|
|
7101
|
+
`archived` flag so the workflow reappears in the default list. The
|
|
7102
|
+
inverse of archive — status, jobs, outputs, and downloads are
|
|
7103
|
+
untouched.
|
|
7104
|
+
required:
|
|
7105
|
+
- workflow_id
|
|
7106
|
+
- status
|
|
7107
|
+
- archived
|
|
7108
|
+
properties:
|
|
7109
|
+
workflow_id:
|
|
7110
|
+
$ref: '#/components/schemas/UuidV7'
|
|
7111
|
+
status:
|
|
7112
|
+
$ref: '#/components/schemas/WorkflowStatus'
|
|
7113
|
+
archived:
|
|
7114
|
+
type: boolean
|
|
7115
|
+
enum: [false]
|
|
7116
|
+
description: |
|
|
7117
|
+
Always `false` on a 200 — the workflow is no longer archived
|
|
7118
|
+
(or was never archived; restore is an idempotent no-op there).
|
|
7119
|
+
No `archived_at` is returned once restored.
|
|
7120
|
+
|
|
7121
|
+
WorkflowRestoreSuccessEnvelope:
|
|
7122
|
+
type: object
|
|
7123
|
+
additionalProperties: false
|
|
7124
|
+
required:
|
|
7125
|
+
- success
|
|
7126
|
+
- data
|
|
7127
|
+
properties:
|
|
7128
|
+
success:
|
|
7129
|
+
type: boolean
|
|
7130
|
+
enum: [true]
|
|
7131
|
+
data:
|
|
7132
|
+
$ref: '#/components/schemas/WorkflowRestoreResponse'
|
|
7133
|
+
|
|
6800
7134
|
WorkflowExpiredResponse:
|
|
6801
7135
|
allOf:
|
|
6802
7136
|
- $ref: '#/components/schemas/ErrorEnvelope'
|
|
@@ -9373,12 +9707,29 @@ components:
|
|
|
9373
9707
|
description: |
|
|
9374
9708
|
Caller-supplied logical-policy hint on `WorkflowCreateRequest`.
|
|
9375
9709
|
NOT a backend selector — server is final authority on routing.
|
|
9710
|
+
|
|
9711
|
+
`auto` is the only committed value; the other three are
|
|
9712
|
+
`planned` — the API runtime returns `422 feature_not_available`
|
|
9713
|
+
for any non-`auto` value until they ship. Value availability is
|
|
9714
|
+
carried by `per_value_availability` below and promoted to the
|
|
9715
|
+
authoritative sidecar as
|
|
9716
|
+
`workflow_features.processing.class_hint` (keyed by request-shape
|
|
9717
|
+
path, mirroring `workflow_features.delivery.mode`; the decorative
|
|
9718
|
+
`x-availability`/openapi is not authoritative — consumers read the
|
|
9719
|
+
runtime endpoint / sidecar).
|
|
9720
|
+
|
|
9376
9721
|
- `auto` (default): server routes safely.
|
|
9377
|
-
- `short_form_only
|
|
9378
|
-
|
|
9379
|
-
|
|
9380
|
-
|
|
9381
|
-
|
|
9722
|
+
- `short_form_only` (planned): once shipped, fails fast when any
|
|
9723
|
+
job would require `long_form`. The dedicated fail-fast reject
|
|
9724
|
+
envelope is defined at graduation (co-design with the API
|
|
9725
|
+
handler); while planned the reject is the standard
|
|
9726
|
+
`feature_not_available`. NOTE: `tier_policy` is a success-path
|
|
9727
|
+
advisory reason on `ProcessingClassReason` (why an honored
|
|
9728
|
+
hint drove classification), NOT a 422 reject reason —
|
|
9729
|
+
`ProcessingClassRejectReason` stays ceiling-reasons only.
|
|
9730
|
+
- `long_form_allowed` (planned): caller accepts slower
|
|
9731
|
+
queue/runtime semantics.
|
|
9732
|
+
- `long_form_preferred` (planned): prefer `long_form` pool when
|
|
9382
9733
|
eligible (test/isolation use cases).
|
|
9383
9734
|
enum:
|
|
9384
9735
|
- auto
|
|
@@ -9386,6 +9737,11 @@ components:
|
|
|
9386
9737
|
- long_form_allowed
|
|
9387
9738
|
- long_form_preferred
|
|
9388
9739
|
default: auto
|
|
9740
|
+
per_value_availability:
|
|
9741
|
+
auto: { availability: stable }
|
|
9742
|
+
short_form_only: { availability: planned }
|
|
9743
|
+
long_form_allowed: { availability: planned }
|
|
9744
|
+
long_form_preferred: { availability: planned }
|
|
9389
9745
|
|
|
9390
9746
|
EstimateQuality:
|
|
9391
9747
|
type: string
|
|
@@ -10404,10 +10760,13 @@ components:
|
|
|
10404
10760
|
minimum: 0
|
|
10405
10761
|
description: |
|
|
10406
10762
|
OPTIONAL. Original input size in bytes — the left side of the
|
|
10407
|
-
list-row savings readout.
|
|
10408
|
-
size
|
|
10409
|
-
|
|
10410
|
-
|
|
10763
|
+
list-row savings readout. This is the job's DIRECT / base
|
|
10764
|
+
originating-upload size (a single base input), **not** a recursive
|
|
10765
|
+
sum of all source inputs; it is omitted for jobs whose input is an
|
|
10766
|
+
upstream `job_output` (merge / derived jobs). Pair with
|
|
10767
|
+
`output_size_bytes` to render "1.2 MB → 480 KB (↓60%)" without a
|
|
10768
|
+
drill-in — a non-authoritative at-a-glance summary. Absent when not
|
|
10769
|
+
yet known or not applicable.
|
|
10411
10770
|
example: 1258291
|
|
10412
10771
|
output_size_bytes:
|
|
10413
10772
|
type: integer
|
|
@@ -10415,10 +10774,16 @@ components:
|
|
|
10415
10774
|
minimum: 0
|
|
10416
10775
|
description: |
|
|
10417
10776
|
OPTIONAL. Final job output size in bytes — the right side of the
|
|
10418
|
-
savings readout. The
|
|
10419
|
-
|
|
10420
|
-
|
|
10421
|
-
|
|
10777
|
+
before→after savings readout. The **main/terminal deliverable's**
|
|
10778
|
+
size: the **highest-position completed non-thumbnail** operation's
|
|
10779
|
+
output — **NOT a sum across the job's operations** (a thumbnail's
|
|
10780
|
+
size is excluded; for a compress+thumbnail job this is the compressed
|
|
10781
|
+
output). Authoritative per-output sizes remain on
|
|
10782
|
+
`GET /{id}/downloads`. Populated from the highest-position COMPLETED
|
|
10783
|
+
op, so it is **PROVISIONAL while the job is still running** (a
|
|
10784
|
+
later-completing op can become the main deliverable and change this
|
|
10785
|
+
value) and final only once the job reaches a **terminal** status.
|
|
10786
|
+
Absent until a non-thumbnail op has completed with a recorded size.
|
|
10422
10787
|
example: 491520
|
|
10423
10788
|
operation_types:
|
|
10424
10789
|
type: array
|
|
@@ -10483,6 +10848,24 @@ components:
|
|
|
10483
10848
|
oneOf:
|
|
10484
10849
|
- $ref: '#/components/schemas/WorkflowCreditSummary'
|
|
10485
10850
|
- type: 'null'
|
|
10851
|
+
archived:
|
|
10852
|
+
type: boolean
|
|
10853
|
+
description: |
|
|
10854
|
+
Whether this workflow is archived (hidden from the default list;
|
|
10855
|
+
surfaced only via `?archived=true`). Set by
|
|
10856
|
+
`POST /api/workflows/{id}/archive`, cleared by
|
|
10857
|
+
`POST /api/workflows/{id}/restore`. Archiving is a recoverable
|
|
10858
|
+
declutter — it does NOT delete the workflow or hide it from
|
|
10859
|
+
`GET /api/workflows/{id}/status` or its downloads. **OPTIONAL
|
|
10860
|
+
(additive)** — absent is treated as `false` (not archived),
|
|
10861
|
+
covering legacy rows written before this field existed. Per ticket
|
|
10862
|
+
[`j2s6T2qf`](https://trello.com/c/j2s6T2qf).
|
|
10863
|
+
archived_at:
|
|
10864
|
+
type: string
|
|
10865
|
+
format: date-time
|
|
10866
|
+
description: |
|
|
10867
|
+
ISO-8601 timestamp the workflow was archived. Present only when
|
|
10868
|
+
`archived: true`; absent otherwise. Additive/optional.
|
|
10486
10869
|
|
|
10487
10870
|
WorkflowCreditSummary:
|
|
10488
10871
|
type: object
|
|
@@ -10755,13 +11138,37 @@ components:
|
|
|
10755
11138
|
format: int64
|
|
10756
11139
|
minimum: 0
|
|
10757
11140
|
description: |
|
|
10758
|
-
OPTIONAL. Original input size in bytes for this job
|
|
10759
|
-
|
|
10760
|
-
|
|
10761
|
-
|
|
10762
|
-
|
|
10763
|
-
|
|
11141
|
+
OPTIONAL. Original input size in bytes for this job — the job's
|
|
11142
|
+
DIRECT / base originating-upload size (a single base input),
|
|
11143
|
+
**not** a recursive sum of all source inputs; omitted for jobs
|
|
11144
|
+
whose input is an upstream `job_output` (merge / derived). The
|
|
11145
|
+
drill-in mirror of `WorkflowSummaryJob.input_size_bytes`; the input
|
|
11146
|
+
side of the savings readout (output sizes remain on the
|
|
11147
|
+
per-operation `OperationResult.size_bytes` / `GET /{id}/downloads`).
|
|
11148
|
+
OPTIONAL for the same webhook-payload reason as `input_filename`.
|
|
10764
11149
|
example: 1258291
|
|
11150
|
+
output_size_bytes:
|
|
11151
|
+
type: integer
|
|
11152
|
+
format: int64
|
|
11153
|
+
minimum: 0
|
|
11154
|
+
description: |
|
|
11155
|
+
OPTIONAL. Final job output size in bytes — the **right** side of the
|
|
11156
|
+
before→after savings readout. The **main/terminal deliverable's**
|
|
11157
|
+
size: the **highest-position completed non-thumbnail** operation's
|
|
11158
|
+
output — **NOT a sum across the job's operations** (a thumbnail's
|
|
11159
|
+
size is excluded; for a compress+thumbnail job this is the compressed
|
|
11160
|
+
output). Authoritative per-output sizes remain on
|
|
11161
|
+
`GET /{id}/downloads`. The drill-in mirror of
|
|
11162
|
+
`WorkflowSummaryJob.output_size_bytes` (same semantics); pairs with
|
|
11163
|
+
`input_size_bytes` above. Populated from the highest-position
|
|
11164
|
+
COMPLETED op, so it is **PROVISIONAL while the job is still running**
|
|
11165
|
+
(a later-completing op can become the main deliverable and change
|
|
11166
|
+
this value) and final only once the job reaches a **terminal**
|
|
11167
|
+
status. Absent until a non-thumbnail op has completed with a recorded
|
|
11168
|
+
size, and OPTIONAL for the same webhook-payload reason as
|
|
11169
|
+
`input_filename`. Ticket [`j2s6T2qf`](https://trello.com/c/j2s6T2qf)
|
|
11170
|
+
(FE before→after size, workflow-view launch ask).
|
|
11171
|
+
example: 491520
|
|
10765
11172
|
processing_class:
|
|
10766
11173
|
$ref: '#/components/schemas/ProcessingClass'
|
|
10767
11174
|
description: |
|
|
@@ -11165,7 +11572,100 @@ components:
|
|
|
11165
11572
|
$ref: '#/components/schemas/UuidV7'
|
|
11166
11573
|
filename:
|
|
11167
11574
|
type: string
|
|
11168
|
-
description:
|
|
11575
|
+
description: |
|
|
11576
|
+
The **download filename** the API synthesises for this output — a
|
|
11577
|
+
human-friendly, extension-bearing name. This is a DIFFERENT surface
|
|
11578
|
+
from the S3 object key (an opaque UUID/`output-NNN` leaf governed by
|
|
11579
|
+
ADR-0014 §D9); the two are independent by design. Composed as
|
|
11580
|
+
`<stem><marker><suffix><.ext>`:
|
|
11581
|
+
|
|
11582
|
+
- **stem** — derived from the originating upload's `original_name`
|
|
11583
|
+
(a chained job resolves through its upstream to the original
|
|
11584
|
+
upload; path separators, control characters and quotes stripped);
|
|
11585
|
+
collapses to `download` if the sanitised stem is empty. When there
|
|
11586
|
+
is **no** original name at all (a `job_output`-sourced job with no
|
|
11587
|
+
upstream upload, or an unrecorded/purged name — rare), the whole
|
|
11588
|
+
field falls back to the S3-key basename **as-is, unmarked**; the
|
|
11589
|
+
per-op marker below applies only to the `original_name`-derived
|
|
11590
|
+
stem, so that fallback path is the one unlabelled case and is
|
|
11591
|
+
outside this map's scope.
|
|
11592
|
+
- **marker** — a per-operation label so **every** processed output
|
|
11593
|
+
is self-describing: it names what the output IS and disambiguates
|
|
11594
|
+
the different operations of a job from each other and from the
|
|
11595
|
+
original (ticket [`50obWMbm`](https://trello.com/c/50obWMbm), user
|
|
11596
|
+
launch feedback — the user hit a watermarked-main + thumbnail
|
|
11597
|
+
collision within one job). **Scope:** the marker resolves
|
|
11598
|
+
within-job and vs-original ambiguity, NOT workflow-wide uniqueness
|
|
11599
|
+
— two SEPARATE jobs running the same op on the same-named upload
|
|
11600
|
+
still produce the same name (a rarer case a job/node identifier
|
|
11601
|
+
would address; out of scope for this label map). **Invariant, with
|
|
11602
|
+
two explicit exceptions:** every op below **except `passthrough`**
|
|
11603
|
+
carries a non-empty marker, so a terminal deliverable **derived
|
|
11604
|
+
from an `original_name`** never falls back to a bare, op-less stem
|
|
11605
|
+
(the bug this fixes). The two exceptions are inline: `passthrough`
|
|
11606
|
+
(the identity op — its output IS the original) and the
|
|
11607
|
+
no-`original_name` S3-key fallback described under **stem** above. The
|
|
11608
|
+
canonical marker is keyed on the **public (masked) operation
|
|
11609
|
+
type** — a long-form concat surfaces as `compress` and carries its
|
|
11610
|
+
marker:
|
|
11611
|
+
- `compress` → `-compressed`
|
|
11612
|
+
- `thumbnail` (and the `thumbnail_image` / `thumbnail_video` /
|
|
11613
|
+
`thumbnail_document` / `thumbnail_office` sub-types, which all
|
|
11614
|
+
surface publicly as `thumbnail`) → `-thumbnail`
|
|
11615
|
+
- `image_watermark` / `text_watermark` / `video_watermark` /
|
|
11616
|
+
`video_text_watermark` / `audio_watermark` → `-watermarked`
|
|
11617
|
+
- `convert` → `-converted` (the extension changes too, but the
|
|
11618
|
+
marker keeps naming consistent — no operation is a special case)
|
|
11619
|
+
- `merge` → `-merged`
|
|
11620
|
+
- `transform` → `-transformed`
|
|
11621
|
+
- `custom_luma` → `-graded`
|
|
11622
|
+
- `audio_overlay` → `-overlay`
|
|
11623
|
+
- `audio_to_video` → `-video`
|
|
11624
|
+
- `render_variants` → `-variant`
|
|
11625
|
+
- `split` → `-part`, plus the `-<n>` piece suffix (below) when
|
|
11626
|
+
the run yields more than one piece. The word-marker is required
|
|
11627
|
+
because a split can legally produce a SINGLE output (e.g.
|
|
11628
|
+
`frame_range: "5-5"`, a one-page PDF range, or an interval that
|
|
11629
|
+
exceeds the media duration) — without it a single-piece split
|
|
11630
|
+
would fall back to the bare original stem.
|
|
11631
|
+
- `archive` → `-archive` (the archive OPERATION's output). Note:
|
|
11632
|
+
the workflow `delivery.bundle` path names its zip from
|
|
11633
|
+
`delivery.bundle_filename` instead — that is a separate surface
|
|
11634
|
+
and takes precedence when a bundle is requested.
|
|
11635
|
+
- `passthrough` → **none, by design** — it emits the input
|
|
11636
|
+
UNCHANGED (it is the identity/plumbing op), so its output IS the
|
|
11637
|
+
original file and carries the original name. It is normally
|
|
11638
|
+
consumed by a downstream job (not a terminal deliverable); when
|
|
11639
|
+
it is a leaf, returning the original name is correct, not a
|
|
11640
|
+
mislabel.
|
|
11641
|
+
**This whole map is co-owned with `compression_api`'s
|
|
11642
|
+
`DownloadFilenameComputer`** (as the `MIME_EXTENSION` table is) —
|
|
11643
|
+
api implements it; contracts is the normative source.
|
|
11644
|
+
- **suffix** — `-<n>` **only** when the operation produced more than
|
|
11645
|
+
one output. `<n>` is the output's **0-based position in the
|
|
11646
|
+
producer's `outputs[]` array** — a uniqueness key. It is
|
|
11647
|
+
**INDEPENDENT of `page_index` and must NOT be read as a page
|
|
11648
|
+
number**: a `pages: '5-7'` PDF fan-out emits
|
|
11649
|
+
`{ filename: "report-converted-0.png", page_index: 5 }` (PDF→PNG is a
|
|
11650
|
+
`convert`, hence `-converted`) — the `-0` is the
|
|
11651
|
+
array position, `5` is the source page. Reconciling them is a bug.
|
|
11652
|
+
- **.ext** — the extension of the **actual produced format**, never
|
|
11653
|
+
the input's and never guessed. Resolved from the worker-reported
|
|
11654
|
+
`output_file_type` (AsyncAPI `OperationResult.output_file_type`,
|
|
11655
|
+
ADR-0022) when present — authoritative for formats the API cannot
|
|
11656
|
+
infer (e.g. `compress.output_format` ∈ `{auto, smallest}`) — else
|
|
11657
|
+
derived from the operation chain. The chain additionally
|
|
11658
|
+
disambiguates a MIME→extension collision even when the MIME is
|
|
11659
|
+
known (`audio/ogg` → `.ogg` for Vorbis vs `.opus` for Opus). When
|
|
11660
|
+
the produced format is
|
|
11661
|
+
genuinely unknown at download time the name is emitted with **no
|
|
11662
|
+
extension** rather than a wrong one. `split` and `audio_to_video`
|
|
11663
|
+
derive to no format, so their extension comes **only** from
|
|
11664
|
+
`output_file_type`.
|
|
11665
|
+
|
|
11666
|
+
Sanitised for JSON (Unicode-safe); the `Content-Disposition` header
|
|
11667
|
+
on the presigned `download_url` is ASCII-sanitised separately, so
|
|
11668
|
+
the two user-visible names may legitimately differ.
|
|
11169
11669
|
example: "photo.jpg"
|
|
11170
11670
|
size_bytes:
|
|
11171
11671
|
type: integer
|
|
@@ -11218,9 +11718,14 @@ components:
|
|
|
11218
11718
|
type: integer
|
|
11219
11719
|
minimum: 1
|
|
11220
11720
|
description: |
|
|
11221
|
-
1-based page number for PDF-page fan-out
|
|
11222
|
-
PDF->image)
|
|
11223
|
-
emits `
|
|
11721
|
+
1-based **literal source page number** for PDF-page fan-out
|
|
11722
|
+
outputs (convert PDF->image) — the actual page from the input PDF.
|
|
11723
|
+
A full conversion emits `1..N`; a sparse `pages` selection (e.g.
|
|
11724
|
+
`'1-5,8'`) emits exactly the selected pages (`1,2,3,4,5,8`), so it
|
|
11725
|
+
is gapless ONLY for a full conversion, not for a sparse selection.
|
|
11726
|
+
NOT the download `filename` suffix (that is a 0-based array
|
|
11727
|
+
position — see `OperationDownload.filename`). Mutually exclusive with `position`.
|
|
11728
|
+
Normative semantics: ADR-0009 §D2.
|
|
11224
11729
|
Absent on non-indexed (single-output) downloads. Mirrors
|
|
11225
11730
|
`OperationResultOutputEntry.page_index`. Per ADR-0009 §D2.
|
|
11226
11731
|
example: 1
|
|
@@ -11656,9 +12161,14 @@ components:
|
|
|
11656
12161
|
type: integer
|
|
11657
12162
|
minimum: 1
|
|
11658
12163
|
description: |
|
|
11659
|
-
1-based page number for PDF-page fan-out
|
|
11660
|
-
PDF->image)
|
|
11661
|
-
emits `
|
|
12164
|
+
1-based **literal source page number** for PDF-page fan-out
|
|
12165
|
+
outputs (convert PDF->image) — the actual page from the input PDF.
|
|
12166
|
+
A full conversion emits `1..N`; a sparse `pages` selection (e.g.
|
|
12167
|
+
`'1-5,8'`) emits exactly the selected pages (`1,2,3,4,5,8`), so it
|
|
12168
|
+
is gapless ONLY for a full conversion, not for a sparse selection.
|
|
12169
|
+
NOT the download `filename` suffix (that is a 0-based array
|
|
12170
|
+
position — see `OperationDownload.filename`). Mutually exclusive with `position`.
|
|
12171
|
+
Normative semantics: ADR-0009 §D2.
|
|
11662
12172
|
Absent on non-indexed outputs. Mirrors
|
|
11663
12173
|
`OperationResultOutputEntry.page_index`. Per ADR-0009 §D2.
|
|
11664
12174
|
example: 1
|
|
@@ -11917,6 +12427,8 @@ components:
|
|
|
11917
12427
|
schema)
|
|
11918
12428
|
- `delivery.selection.type.per_value_availability` (from the
|
|
11919
12429
|
`DeliverySelection.type` schema)
|
|
12430
|
+
- `processing.class_hint.per_value_availability` (from the
|
|
12431
|
+
`ProcessingClassHint` enum — ticket `tK81wZKJ`)
|
|
11920
12432
|
|
|
11921
12433
|
Closes the co0CERtJ (v2.19.0) authority-hierarchy gap: those
|
|
11922
12434
|
`planned` downgrades lived only in the (decorative per ADR-0001
|
|
@@ -11946,6 +12458,14 @@ components:
|
|
|
11946
12458
|
properties:
|
|
11947
12459
|
per_value_availability:
|
|
11948
12460
|
$ref: '#/components/schemas/PerValueAvailability'
|
|
12461
|
+
processing:
|
|
12462
|
+
type: object
|
|
12463
|
+
properties:
|
|
12464
|
+
class_hint:
|
|
12465
|
+
type: object
|
|
12466
|
+
properties:
|
|
12467
|
+
per_value_availability:
|
|
12468
|
+
$ref: '#/components/schemas/PerValueAvailability'
|
|
11949
12469
|
image_encode_capabilities:
|
|
11950
12470
|
description: |
|
|
11951
12471
|
Pre-flight image-encode capability matrix
|
|
@@ -12521,6 +13041,40 @@ components:
|
|
|
12521
13041
|
[I3](https://trello.com/c/eCWIpug8); until then the
|
|
12522
13042
|
contract advertises the field shape but the endpoint
|
|
12523
13043
|
does not yet surface the field.
|
|
13044
|
+
max_input_size_bytes:
|
|
13045
|
+
type: integer
|
|
13046
|
+
format: int64
|
|
13047
|
+
minimum: 1
|
|
13048
|
+
description: |
|
|
13049
|
+
Optional mime-group-level INPUT-file size ceiling in BYTES
|
|
13050
|
+
(ticket [`uKsFzORi`](https://trello.com/c/uKsFzORi)). Sibling of
|
|
13051
|
+
`max_output_pixels`. **Applies to the enclosing operation's input** —
|
|
13052
|
+
currently authored on `compress` image/document groups (the API
|
|
13053
|
+
enforces it on compress input only: AVIF 20 MiB, other images 500 MiB,
|
|
13054
|
+
office/ODF/EPUB 100 MiB). A consumer MUST scope it to the operation
|
|
13055
|
+
whose schema carries it and MUST NOT assume it applies to other
|
|
13056
|
+
operations. An oversize input is rejected at create-time (ADR-0012
|
|
13057
|
+
band-ceiling 422 family).
|
|
13058
|
+
|
|
13059
|
+
**XOR with `processing_class` caps (ADR-0011):** a group carries this
|
|
13060
|
+
group-level cap ONLY when it has NO `processing_class` band. Banded
|
|
13061
|
+
media (e.g. `video`) put input caps in
|
|
13062
|
+
`processing_class.<class>.constraints.max_input_size_bytes` instead —
|
|
13063
|
+
never both, so the input ceiling lives in exactly one place per group.
|
|
13064
|
+
CI-enforced by `scripts/check-per-tier-constraints.py`.
|
|
13065
|
+
max_input_duration:
|
|
13066
|
+
type: string
|
|
13067
|
+
description: |
|
|
13068
|
+
Optional mime-group-level INPUT duration ceiling as an ISO-8601
|
|
13069
|
+
duration string (ticket [`KzrquIX7`](https://trello.com/c/KzrquIX7)) —
|
|
13070
|
+
e.g. `"PT2H"`. Sibling of `max_output_pixels`; same
|
|
13071
|
+
XOR-with-`processing_class` rule as `max_input_size_bytes`
|
|
13072
|
+
(group-level ONLY where no `processing_class` band; banded media use
|
|
13073
|
+
`processing_class.<class>.constraints.max_input_duration`). Currently
|
|
13074
|
+
authored on `audio_to_video.audio` (2h input cap, mirroring the
|
|
13075
|
+
worker's audio-duration limit). Over-cap inputs are rejected at
|
|
13076
|
+
create-time.
|
|
13077
|
+
example: "PT2H"
|
|
12524
13078
|
processing_class:
|
|
12525
13079
|
type: object
|
|
12526
13080
|
description: |
|