@giveitsmaller/contracts 0.76.0 → 0.79.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/README.md +2 -2
- package/accepted-options/accepted-options.json +1 -1
- package/accepted-options/image-output-routes.json +16 -2
- package/asyncapi/README.md +1 -1
- package/asyncapi/events.yaml +153 -28
- package/availability/availability.json +74 -9
- package/code-builder/code-builder-metadata.json +74 -9
- package/dist/asyncapi/AnonymousSchema_217.d.ts +6 -0
- package/dist/asyncapi/AnonymousSchema_217.js +7 -0
- package/dist/asyncapi/Failure.d.ts +1 -0
- package/dist/asyncapi/MultiOutputCompletion.d.ts +1 -0
- package/dist/asyncapi/SingleOutputCompletion.d.ts +1 -0
- package/dist/asyncapi/UploadProbeMediaMetadata.d.ts +14 -0
- package/dist/asyncapi/index.d.ts +1 -0
- package/dist/asyncapi/index.js +1 -0
- 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/AnonymousOperationNotAllowedResponse.d.ts +145 -0
- package/dist/openapi/models/AnonymousOperationNotAllowedResponse.js +82 -0
- package/dist/openapi/models/AnonymousQuotaExhaustedResponse.d.ts +131 -0
- package/dist/openapi/models/AnonymousQuotaExhaustedResponse.js +77 -0
- 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/AuthenticatedIdentity.d.ts +1 -1
- package/dist/openapi/models/AuthenticatedIdentity.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/CancelAccountDeletion200Response.d.ts +1 -1
- package/dist/openapi/models/CancelAccountDeletion200Response.js +1 -1
- package/dist/openapi/models/CancelAccountDeletion200ResponseData.d.ts +1 -1
- package/dist/openapi/models/CancelAccountDeletion200ResponseData.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/CheckoutSessionStatusResponse.d.ts +1 -1
- package/dist/openapi/models/CheckoutSessionStatusResponse.js +1 -1
- package/dist/openapi/models/CheckoutSessionStatusResponseData.d.ts +1 -1
- package/dist/openapi/models/CheckoutSessionStatusResponseData.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/CreateWorkflow403Response.d.ts +33 -0
- package/dist/openapi/models/CreateWorkflow403Response.js +57 -0
- 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/DroppedOption.d.ts +1 -1
- package/dist/openapi/models/DroppedOption.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/EndpointProjectionServersInner.d.ts +1 -1
- package/dist/openapi/models/EndpointProjectionServersInner.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/ExportAccountData200Response.d.ts +1 -1
- package/dist/openapi/models/ExportAccountData200Response.js +1 -1
- package/dist/openapi/models/ExportAccountData200ResponseData.d.ts +4 -3
- package/dist/openapi/models/ExportAccountData200ResponseData.js +4 -3
- package/dist/openapi/models/ExportAccountData200ResponseDataBilling.d.ts +36 -0
- package/dist/openapi/models/ExportAccountData200ResponseDataBilling.js +42 -0
- package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.d.ts +58 -0
- package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.js +62 -0
- 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/GetProfile200Response.d.ts +1 -1
- package/dist/openapi/models/GetProfile200Response.js +1 -1
- package/dist/openapi/models/GetProfile200ResponseData.d.ts +1 -1
- package/dist/openapi/models/GetProfile200ResponseData.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/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 +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/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 +5 -1
- package/dist/openapi/models/OperationDownload.js +1 -1
- package/dist/openapi/models/OperationInputModel.d.ts +1 -1
- package/dist/openapi/models/OperationInputModel.js +1 -1
- package/dist/openapi/models/OperationMessageParamsValue.d.ts +1 -1
- package/dist/openapi/models/OperationMessageParamsValue.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 +3 -3
- package/dist/openapi/models/OperationResultMetrics.js +1 -1
- package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
- package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
- package/dist/openapi/models/OperationStatus.d.ts +1 -1
- package/dist/openapi/models/OperationStatus.js +1 -1
- package/dist/openapi/models/OperationType.d.ts +1 -1
- package/dist/openapi/models/OperationType.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +1 -1
- package/dist/openapi/models/OptionSchema.d.ts +5 -2
- 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/PerClassAvailabilityEntry.d.ts +1 -1
- package/dist/openapi/models/PerClassAvailabilityEntry.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 +30 -11
- package/dist/openapi/models/ProcessingClassBandViolation.js +4 -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 +15 -1
- package/dist/openapi/models/ProcessingClassEntry.js +7 -1
- package/dist/openapi/models/ProcessingClassEntryInputUniformity.d.ts +65 -0
- package/dist/openapi/models/ProcessingClassEntryInputUniformity.js +57 -0
- package/dist/openapi/models/ProcessingClassEntryResolutionBands.d.ts +66 -0
- package/dist/openapi/models/ProcessingClassEntryResolutionBands.js +56 -0
- 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 +26 -4
- package/dist/openapi/models/ProcessingClassRejectReason.js +27 -5
- package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
- package/dist/openapi/models/ProcessingPlan.js +1 -1
- package/dist/openapi/models/ProcessingPlanJob.d.ts +14 -1
- package/dist/openapi/models/ProcessingPlanJob.js +4 -1
- package/dist/openapi/models/ReEncodeDecision.d.ts +18 -7
- package/dist/openapi/models/ReEncodeDecision.js +18 -7
- 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/RequestAccountDeletion200Response.d.ts +1 -1
- package/dist/openapi/models/RequestAccountDeletion200Response.js +1 -1
- package/dist/openapi/models/RequestAccountDeletion200ResponseData.d.ts +1 -1
- package/dist/openapi/models/RequestAccountDeletion200ResponseData.js +1 -1
- package/dist/openapi/models/RequestAccountDeletionRequest.d.ts +1 -1
- package/dist/openapi/models/RequestAccountDeletionRequest.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/ResolutionBand.d.ts +44 -0
- package/dist/openapi/models/ResolutionBand.js +62 -0
- package/dist/openapi/models/ResolutionBandCeiling.d.ts +68 -0
- package/dist/openapi/models/ResolutionBandCeiling.js +57 -0
- package/dist/openapi/models/ResolutionBandCeilingConstraints.d.ts +32 -0
- package/dist/openapi/models/ResolutionBandCeilingConstraints.js +41 -0
- package/dist/openapi/models/ResolutionBandCeilingDerivation.d.ts +48 -0
- package/dist/openapi/models/ResolutionBandCeilingDerivation.js +51 -0
- 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/SseConnectionLimitResponse.d.ts +1 -1
- package/dist/openapi/models/SseConnectionLimitResponse.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 +5 -1
- package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
- package/dist/openapi/models/SseOperationCompletedData.d.ts +16 -1
- package/dist/openapi/models/SseOperationCompletedData.js +4 -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 +106 -1
- package/dist/openapi/models/UploadProbeMediaMetadata.js +35 -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/WorkflowArchiveResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowArchiveResponse.js +1 -1
- package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.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 +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 +17 -5
- package/dist/openapi/models/WorkflowPauseRequiredAction.js +18 -6
- package/dist/openapi/models/WorkflowPausedDetail.d.ts +5 -4
- package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
- package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +6 -4
- 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 +1 -1
- package/dist/openapi/models/WorkflowRestoreResponse.js +1 -1
- package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.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 +9 -4
- package/dist/openapi/models/WorkflowStatus.js +9 -4
- 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 +11 -0
- package/dist/openapi/models/index.js +11 -0
- package/dist/openapi/runtime.d.ts +1 -1
- package/dist/openapi/runtime.js +1 -1
- package/openapi/README.md +1 -1
- package/openapi/api.yaml +625 -46
- package/operation-capabilities/operation-capabilities.json +129 -1
- package/operations/schemas/compress.yaml +39 -14
- package/operations/schemas/merge.yaml +28 -0
- package/operations/schemas/split.yaml +11 -5
- package/operations/schemas/video_text_watermark.yaml +55 -0
- package/package.json +3 -3
package/openapi/api.yaml
CHANGED
|
@@ -103,7 +103,7 @@ info:
|
|
|
103
103
|
of truth instead of hardcoding magic numbers. A runtime
|
|
104
104
|
`GET /api/uploads/limits` endpoint for dynamic discovery
|
|
105
105
|
(per-tier / per-environment overrides) is a deferred follow-up.
|
|
106
|
-
version: 2.
|
|
106
|
+
version: 2.214.0
|
|
107
107
|
contact:
|
|
108
108
|
name: API Support
|
|
109
109
|
|
|
@@ -1782,17 +1782,32 @@ paths:
|
|
|
1782
1782
|
more operations / mime_groups / options gated by a higher
|
|
1783
1783
|
subscription tier than the caller has. Each violation is
|
|
1784
1784
|
listed in `violations[]` with `required_tier` populated.
|
|
1785
|
+
- `anonymous_operation_not_allowed`: an ANONYMOUS caller (no
|
|
1786
|
+
credential) requested an operation outside the anonymous
|
|
1787
|
+
allow-list. `operation` names the first such operation.
|
|
1788
|
+
A register-wall: signing in is the remedy, not upgrading.
|
|
1789
|
+
- `anonymous_quota_exhausted`: an anonymous caller has used
|
|
1790
|
+
its per-IP workflow allowance for the rolling 24 hours.
|
|
1791
|
+
Also a register-wall.
|
|
1792
|
+
|
|
1793
|
+
Both anonymous walls are checked BEFORE the workflow is
|
|
1794
|
+
built, and neither consumes the caller's anonymous
|
|
1795
|
+
allowance. An authenticated caller never receives either.
|
|
1785
1796
|
content:
|
|
1786
1797
|
application/json:
|
|
1787
1798
|
schema:
|
|
1788
1799
|
oneOf:
|
|
1789
1800
|
- $ref: '#/components/schemas/TierRestrictionResponse'
|
|
1790
1801
|
- $ref: '#/components/schemas/FeatureTierRestrictedResponse'
|
|
1802
|
+
- $ref: '#/components/schemas/AnonymousOperationNotAllowedResponse'
|
|
1803
|
+
- $ref: '#/components/schemas/AnonymousQuotaExhaustedResponse'
|
|
1791
1804
|
discriminator:
|
|
1792
1805
|
propertyName: error_type
|
|
1793
1806
|
mapping:
|
|
1794
1807
|
tier_restriction: '#/components/schemas/TierRestrictionResponse'
|
|
1795
1808
|
feature_tier_restricted: '#/components/schemas/FeatureTierRestrictedResponse'
|
|
1809
|
+
anonymous_operation_not_allowed: '#/components/schemas/AnonymousOperationNotAllowedResponse'
|
|
1810
|
+
anonymous_quota_exhausted: '#/components/schemas/AnonymousQuotaExhaustedResponse'
|
|
1796
1811
|
examples:
|
|
1797
1812
|
feature_tier_restricted:
|
|
1798
1813
|
summary: Free tier referencing a Pro-tier operation
|
|
@@ -1805,6 +1820,25 @@ paths:
|
|
|
1805
1820
|
availability: "stable"
|
|
1806
1821
|
required_tier: "pro"
|
|
1807
1822
|
documentation_url: "https://docs.giveitsmaller.com/operations/image_watermark"
|
|
1823
|
+
anonymous_operation_not_allowed:
|
|
1824
|
+
summary: Anonymous caller requesting an operation outside the allow-list
|
|
1825
|
+
value:
|
|
1826
|
+
success: false
|
|
1827
|
+
error: "ANONYMOUS_OPERATION_NOT_ALLOWED"
|
|
1828
|
+
error_type: "anonymous_operation_not_allowed"
|
|
1829
|
+
message: "Sign up to use the 'text_watermark' operation."
|
|
1830
|
+
message_key: "error.anonymous_operation_not_allowed"
|
|
1831
|
+
locale: "en-GB"
|
|
1832
|
+
operation: "text_watermark"
|
|
1833
|
+
anonymous_quota_exhausted:
|
|
1834
|
+
summary: Anonymous caller past its rolling-24h allowance
|
|
1835
|
+
value:
|
|
1836
|
+
success: false
|
|
1837
|
+
error: "ANONYMOUS_QUOTA_EXHAUSTED"
|
|
1838
|
+
error_type: "anonymous_quota_exhausted"
|
|
1839
|
+
message: "Sign up to keep compressing."
|
|
1840
|
+
message_key: "error.anonymous_quota_exhausted"
|
|
1841
|
+
locale: "en-GB"
|
|
1808
1842
|
'402':
|
|
1809
1843
|
description: |
|
|
1810
1844
|
Credit reservation failed (per ticket
|
|
@@ -1939,6 +1973,37 @@ paths:
|
|
|
1939
1973
|
Caller resolves by switching to `re_encode_mode: auto`
|
|
1940
1974
|
or `always`. The compatibility-probe algorithm is
|
|
1941
1975
|
server-side and deliberately opaque per plan v5 §F8.2.
|
|
1976
|
+
- Inputs not concat-uniform (ticket `MjzzPCWt`). Returned for a
|
|
1977
|
+
job that routes to a processing class declaring
|
|
1978
|
+
`input_uniformity` (today `merge.video.long_form_re_encode`)
|
|
1979
|
+
when its inputs differ in stream layout or in a listed
|
|
1980
|
+
attribute. `ValidationErrorEnvelope` with `error:
|
|
1981
|
+
"INPUTS_NOT_CONCAT_UNIFORM"`; `details[]` entries are shaped
|
|
1982
|
+
`{operation: "merge", field: "inputs[i].<attribute> vs
|
|
1983
|
+
inputs[j].<attribute>", message: "..."}`, one per difference.
|
|
1984
|
+
**Coverage rule:** the API refuses every difference its upload
|
|
1985
|
+
probe can see WITH THE WORKER GATE'S SEMANTICS (audio present
|
|
1986
|
+
on one input and not another; video codec, resolution; audio
|
|
1987
|
+
codec, layout, channels, sample rate). NOT frame rate: the
|
|
1988
|
+
probe's `fps` is the AVERAGE rate, which legitimately drifts
|
|
1989
|
+
between concat-uniform clips, while the worker compares
|
|
1990
|
+
`r_frame_rate`, so comparing `fps` would refuse valid merges.
|
|
1991
|
+
Differences the probe does not carry with the worker's
|
|
1992
|
+
semantics yet (frame rate as `r_frame_rate`, stream counts
|
|
1993
|
+
beyond one video / one audio, stream order, pix_fmt, SAR,
|
|
1994
|
+
timebase, codec_tag, profile, sample_fmt) are
|
|
1995
|
+
refused by the worker after acceptance until the upload prober
|
|
1996
|
+
emits them; the probe schema declares them
|
|
1997
|
+
(`UploadProbeMediaMetadata`, card `lGeDDi4V`), and once a probe
|
|
1998
|
+
carries one, the API refuses that difference at create too. **An input whose probe has not
|
|
1999
|
+
completed is ADMITTED**, and the worker gate is its only
|
|
2000
|
+
check, the same as **an input that is an upstream job's
|
|
2001
|
+
output** (which has no upload probe). It does NOT get the
|
|
2002
|
+
`probe_pending` branch: a probe that never lands cannot be
|
|
2003
|
+
told apart from one still running, so refusing until it
|
|
2004
|
+
lands could make a create that never succeeds (ruled
|
|
2005
|
+
2026-09-24 on api's `nmYdwHAH`, matching api's disabled
|
|
2006
|
+
single-operation probe gate).
|
|
1942
2007
|
|
|
1943
2008
|
**Branch dispatch via the `error_type` discriminator** (per
|
|
1944
2009
|
[ADR-0018](../docs/decisions/0018-universal-422-error-type-discriminator.md)).
|
|
@@ -2086,6 +2151,16 @@ paths:
|
|
|
2086
2151
|
actual: 54000
|
|
2087
2152
|
ceiling: 43200
|
|
2088
2153
|
required_tier: "enterprise"
|
|
2154
|
+
inputs_not_concat_uniform:
|
|
2155
|
+
summary: merge.video long_form_re_encode with one input lacking audio (MjzzPCWt)
|
|
2156
|
+
value:
|
|
2157
|
+
success: false
|
|
2158
|
+
error_type: "validation_error"
|
|
2159
|
+
error: "INPUTS_NOT_CONCAT_UNIFORM"
|
|
2160
|
+
details:
|
|
2161
|
+
- operation: "merge"
|
|
2162
|
+
field: "inputs[0].audio vs inputs[1].audio"
|
|
2163
|
+
message: "Input 1 has no audio track and input 0 has one; long-form merge needs every input to share the same streams."
|
|
2089
2164
|
requires_reencode:
|
|
2090
2165
|
summary: merge.video re_encode_mode=never with incompatible inputs (I16-CONS)
|
|
2091
2166
|
value:
|
|
@@ -3323,7 +3398,9 @@ paths:
|
|
|
3323
3398
|
Per ticket [I24 `e50uXLcl`](https://trello.com/c/e50uXLcl).
|
|
3324
3399
|
|
|
3325
3400
|
Resume succeeds only when the caller's `available_credits`
|
|
3326
|
-
cover the
|
|
3401
|
+
cover the reservation the server re-takes for the workflow's
|
|
3402
|
+
remaining work (the same estimate `WorkflowPausedDetail`'s
|
|
3403
|
+
`required_action: resume` is computed from). If the
|
|
3327
3404
|
balance is still insufficient, the response is 402
|
|
3328
3405
|
`BalanceExhaustedResponse` (mirroring the workflow-create
|
|
3329
3406
|
flow per ticket I23) and the workflow remains
|
|
@@ -5127,6 +5204,33 @@ paths:
|
|
|
5127
5204
|
type: object
|
|
5128
5205
|
billing:
|
|
5129
5206
|
type: object
|
|
5207
|
+
properties:
|
|
5208
|
+
checkout_sessions:
|
|
5209
|
+
type: array
|
|
5210
|
+
description: |
|
|
5211
|
+
Every checkout session the account started that
|
|
5212
|
+
the API recorded (ticket `JHrV4MUg`). Sessions
|
|
5213
|
+
created before that record existed are absent.
|
|
5214
|
+
items:
|
|
5215
|
+
type: object
|
|
5216
|
+
required: [session_id, mode, created_at, fulfilled_at]
|
|
5217
|
+
properties:
|
|
5218
|
+
session_id:
|
|
5219
|
+
type: string
|
|
5220
|
+
mode:
|
|
5221
|
+
type: string
|
|
5222
|
+
description: The checkout mode (`payment` for a credit pack, `subscription`).
|
|
5223
|
+
# OPEN: the provider's checkout mode, recorded as created; a
|
|
5224
|
+
# new mode is informational in an export, not a decision input.
|
|
5225
|
+
x-enum-openness: open
|
|
5226
|
+
enum: [payment, subscription]
|
|
5227
|
+
created_at:
|
|
5228
|
+
type: string
|
|
5229
|
+
format: date-time
|
|
5230
|
+
fulfilled_at:
|
|
5231
|
+
type: ['string', 'null']
|
|
5232
|
+
format: date-time
|
|
5233
|
+
description: When the purchase was applied; `null` while it has not been.
|
|
5130
5234
|
'401':
|
|
5131
5235
|
description: No authenticated principal.
|
|
5132
5236
|
content:
|
|
@@ -6627,20 +6731,24 @@ paths:
|
|
|
6627
6731
|
headers.
|
|
6628
6732
|
headers:
|
|
6629
6733
|
X-RateLimit-Limit:
|
|
6630
|
-
required:
|
|
6734
|
+
required: true
|
|
6631
6735
|
description: Requests permitted in the current window.
|
|
6632
6736
|
schema:
|
|
6633
6737
|
type: integer
|
|
6634
6738
|
minimum: 0
|
|
6635
6739
|
X-RateLimit-Remaining:
|
|
6636
|
-
required:
|
|
6740
|
+
required: true
|
|
6637
6741
|
description: Requests remaining in the current window.
|
|
6638
6742
|
schema:
|
|
6639
6743
|
type: integer
|
|
6640
6744
|
minimum: 0
|
|
6641
6745
|
X-RateLimit-Reset:
|
|
6642
|
-
required:
|
|
6643
|
-
description:
|
|
6746
|
+
required: true
|
|
6747
|
+
description: |
|
|
6748
|
+
SECONDS UNTIL the current window resets (a delay, not a
|
|
6749
|
+
timestamp). This said "Unix epoch seconds" until 2026-09-25;
|
|
6750
|
+
api has always sent the delay, and both SDKs parse it as one
|
|
6751
|
+
(card `KqPDtD9J`).
|
|
6644
6752
|
schema:
|
|
6645
6753
|
type: integer
|
|
6646
6754
|
minimum: 0
|
|
@@ -6684,9 +6792,17 @@ paths:
|
|
|
6684
6792
|
|
|
6685
6793
|
| `status` | meaning |
|
|
6686
6794
|
|---|---|
|
|
6687
|
-
| `paid` | the purchase this session was for has been applied to the caller's account — for a credit **pack**, a credit transaction referencing this session exists; for a **subscription**, the subscription it started is
|
|
6795
|
+
| `paid` | the purchase this session was for has been applied to the caller's account — for a credit **pack**, a credit transaction referencing this session exists; for a **subscription**, the subscription it started is still linked to the caller's billing account (see below) |
|
|
6688
6796
|
| `pending` | the session is recorded as created BY THE CALLER and its purchase has not been applied yet — **not a failure** |
|
|
6689
|
-
| `unknown` | anything else |
|
|
6797
|
+
| `unknown` | anything else, including a session created before this endpoint shipped (nothing recorded it) |
|
|
6798
|
+
|
|
6799
|
+
**Subscription `paid` means LINKED, not IN GOOD STANDING** (ruled
|
|
6800
|
+
2026-09-25 on api's `JHrV4MUg`). It holds while the subscription the
|
|
6801
|
+
session started is still linked to the caller's billing account; a
|
|
6802
|
+
`past_due` or `incomplete` subscription that is still linked reads
|
|
6803
|
+
`paid`. It becomes `unknown` once the provider reports the
|
|
6804
|
+
subscription deleted. A stricter meaning needs the subscription's
|
|
6805
|
+
status recorded, which the API does not do today.
|
|
6690
6806
|
|
|
6691
6807
|
🔴 **`unknown` DELIBERATELY COLLAPSES "not yours" WITH "never
|
|
6692
6808
|
existed". This is a decision, not missing detail.** Telling them
|
|
@@ -6722,9 +6838,12 @@ paths:
|
|
|
6722
6838
|
'200':
|
|
6723
6839
|
description: |
|
|
6724
6840
|
The session's status for this caller. **Once implemented, always
|
|
6725
|
-
200 for an authenticated caller
|
|
6726
|
-
`unknown` is the answer for anything not provably the
|
|
6727
|
-
the collapse rationale above).
|
|
6841
|
+
200 for an authenticated caller, for any session id the router
|
|
6842
|
+
accepts** — `unknown` is the answer for anything not provably the
|
|
6843
|
+
caller's (see the collapse rationale above). An id the router
|
|
6844
|
+
cannot route (for example invalid UTF-8 such as `cs_%FF`) is a
|
|
6845
|
+
`404` before this endpoint runs; that answer is the same for
|
|
6846
|
+
every caller and every session, so it reveals nothing. While the endpoint is `planned` it
|
|
6728
6847
|
answers `422 feature_not_available` instead.
|
|
6729
6848
|
content:
|
|
6730
6849
|
application/json:
|
|
@@ -6758,6 +6877,16 @@ paths:
|
|
|
6758
6877
|
application/json:
|
|
6759
6878
|
schema:
|
|
6760
6879
|
$ref: '#/components/schemas/ErrorEnvelope'
|
|
6880
|
+
'404':
|
|
6881
|
+
description: |
|
|
6882
|
+
The ROUTER could not route the path (for example a session id
|
|
6883
|
+
with invalid UTF-8). Returned before this endpoint runs, the same
|
|
6884
|
+
for every caller and every session id, so it says nothing about
|
|
6885
|
+
any session.
|
|
6886
|
+
content:
|
|
6887
|
+
application/json:
|
|
6888
|
+
schema:
|
|
6889
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
6761
6890
|
'422':
|
|
6762
6891
|
description: |
|
|
6763
6892
|
`feature_not_available` while this endpoint is `planned`.
|
|
@@ -6765,6 +6894,40 @@ paths:
|
|
|
6765
6894
|
application/json:
|
|
6766
6895
|
schema:
|
|
6767
6896
|
$ref: '#/components/schemas/FeatureNotAvailableResponse'
|
|
6897
|
+
'429':
|
|
6898
|
+
description: |
|
|
6899
|
+
Rate limit exceeded. This endpoint is limited as a STATUS POLL
|
|
6900
|
+
(the same family as the other polling reads), independently of
|
|
6901
|
+
`POST /api/billing/checkout`, so polling a pending session never
|
|
6902
|
+
spends the caller's checkout-creation budget. `error:
|
|
6903
|
+
TOO_MANY_REQUESTS`. No `Retry-After`; back off by
|
|
6904
|
+
`X-RateLimit-Reset`.
|
|
6905
|
+
headers:
|
|
6906
|
+
X-RateLimit-Limit:
|
|
6907
|
+
required: true
|
|
6908
|
+
description: Requests permitted in the most constrained window.
|
|
6909
|
+
schema:
|
|
6910
|
+
type: integer
|
|
6911
|
+
minimum: 0
|
|
6912
|
+
X-RateLimit-Remaining:
|
|
6913
|
+
required: true
|
|
6914
|
+
description: Requests remaining in that window.
|
|
6915
|
+
schema:
|
|
6916
|
+
type: integer
|
|
6917
|
+
minimum: 0
|
|
6918
|
+
X-RateLimit-Reset:
|
|
6919
|
+
required: true
|
|
6920
|
+
description: |
|
|
6921
|
+
SECONDS UNTIL that window resets (a delay, not a
|
|
6922
|
+
timestamp) — what api's limiter sends
|
|
6923
|
+
(`TieredRateLimiterService`: retry-after timestamp minus now).
|
|
6924
|
+
schema:
|
|
6925
|
+
type: integer
|
|
6926
|
+
minimum: 0
|
|
6927
|
+
content:
|
|
6928
|
+
application/json:
|
|
6929
|
+
schema:
|
|
6930
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
6768
6931
|
|
|
6769
6932
|
# ============================================
|
|
6770
6933
|
# CONTACT ENDPOINT
|
|
@@ -7306,12 +7469,23 @@ components:
|
|
|
7306
7469
|
ReEncodeDecision:
|
|
7307
7470
|
type: string
|
|
7308
7471
|
description: |
|
|
7309
|
-
Path
|
|
7310
|
-
|
|
7311
|
-
`
|
|
7312
|
-
|
|
7313
|
-
|
|
7314
|
-
|
|
7472
|
+
Path the worker actually took for a SUCCESSFUL `merge.video`,
|
|
7473
|
+
reported in EVERY `re_encode_mode`: `always` reports `re_encode`;
|
|
7474
|
+
`never` reports `stream_copy`; `auto` reports whichever path it
|
|
7475
|
+
chose. Absent for non-`merge.video` operations and on any failed
|
|
7476
|
+
operation, even one that carries other metrics such as sizes or
|
|
7477
|
+
cost figures (for example a `never`
|
|
7478
|
+
request whose inputs need a re-encode, or a long-form merge the
|
|
7479
|
+
uniformity gate refuses before the path is decided). Per ticket I16-CONS (Trello
|
|
7480
|
+
7nCZXEru).
|
|
7481
|
+
|
|
7482
|
+
⚠️ An earlier revision said the field was ABSENT under `always` /
|
|
7483
|
+
`never`. The worker never behaved that way (it reports the path
|
|
7484
|
+
in every mode), and the same contract listed an `always`-mode
|
|
7485
|
+
reason as an example, so the text contradicted itself. The
|
|
7486
|
+
worker's behaviour is the canonical one (ruled 2026-09-24 on
|
|
7487
|
+
compression_e2e's report); a consumer MUST NOT assert absence
|
|
7488
|
+
on a successful merge under a caller-fixed mode.
|
|
7315
7489
|
|
|
7316
7490
|
Mirrors the AsyncAPI `ReEncodeDecision` (and
|
|
7317
7491
|
`OperationMetrics.re_encode_decision`); exposed on the REST
|
|
@@ -9043,15 +9217,28 @@ components:
|
|
|
9043
9217
|
|
|
9044
9218
|
WorkflowPauseRequiredAction:
|
|
9045
9219
|
type: string
|
|
9220
|
+
x-enum-openness: open
|
|
9046
9221
|
description: |
|
|
9047
|
-
Action the caller must take to resume a paused workflow.
|
|
9048
|
-
|
|
9049
|
-
|
|
9050
|
-
|
|
9222
|
+
Action the caller must take to resume a paused workflow. The
|
|
9223
|
+
first three match `BalanceExhaustedResponse.required_action`.
|
|
9224
|
+
`resume` (ticket `xNatWWpO`, api #747): the account can afford
|
|
9225
|
+
the resume NOW, so the only action is to resume: call the
|
|
9226
|
+
`resumeWorkflow` operation (`POST /api/workflows/{id}/resume`).
|
|
9227
|
+
`links.resume`, when present, is a UI deep link, not the API
|
|
9228
|
+
call. The
|
|
9229
|
+
API emits it when the balance, plus this month's pending grant
|
|
9230
|
+
for the base tier, covers the same cost estimate the resume
|
|
9231
|
+
handler reserves — so `/status` and resume agree. A UI must not
|
|
9232
|
+
offer a top-up, upgrade or pack for it.
|
|
9233
|
+
**Open enum:** handle an unknown value as the generic case.
|
|
9234
|
+
⚠️ Rollout order, because a strict SDK deserialiser throws on an
|
|
9235
|
+
unknown value: SDKs tolerate unknown values and are published
|
|
9236
|
+
first, and only then does the API emit `resume`.
|
|
9051
9237
|
enum:
|
|
9052
9238
|
- add_credits
|
|
9053
9239
|
- upgrade_plan
|
|
9054
9240
|
- wait_for_renewal
|
|
9241
|
+
- resume
|
|
9055
9242
|
|
|
9056
9243
|
# ============================================
|
|
9057
9244
|
# WORKFLOW ADVISORY WARNINGS (per ticket I25)
|
|
@@ -9202,9 +9389,10 @@ components:
|
|
|
9202
9389
|
|
|
9203
9390
|
SDK + frontend gate UI on `required_action` to render the
|
|
9204
9391
|
appropriate "Top up to resume" / "Upgrade plan to resume" /
|
|
9205
|
-
"Wait for renewal" affordance,
|
|
9206
|
-
|
|
9207
|
-
|
|
9392
|
+
"Wait for renewal" affordance — or, for `resume`, only the
|
|
9393
|
+
resume action. The resume itself is the `resumeWorkflow`
|
|
9394
|
+
operation (`POST /api/workflows/{id}/resume`); `links.resume` is
|
|
9395
|
+
the frontend page where a user can do it, not that API call.
|
|
9208
9396
|
required:
|
|
9209
9397
|
- paused_at
|
|
9210
9398
|
- expires_at
|
|
@@ -9252,9 +9440,11 @@ components:
|
|
|
9252
9440
|
type: string
|
|
9253
9441
|
format: uri
|
|
9254
9442
|
description: |
|
|
9255
|
-
|
|
9256
|
-
`
|
|
9257
|
-
|
|
9443
|
+
URL of the frontend page for this workflow (e.g.
|
|
9444
|
+
`{frontend}/{locale}/profile/workflows/{id}`), where the
|
|
9445
|
+
user can resume it. **NOT the API call:** a client resumes
|
|
9446
|
+
with the `resumeWorkflow` operation
|
|
9447
|
+
(`POST /api/workflows/{id}/resume`).
|
|
9258
9448
|
top_up:
|
|
9259
9449
|
type: string
|
|
9260
9450
|
format: uri
|
|
@@ -9515,6 +9705,67 @@ components:
|
|
|
9515
9705
|
# FEATURE AVAILABILITY ENVELOPES
|
|
9516
9706
|
# ============================================
|
|
9517
9707
|
|
|
9708
|
+
AnonymousOperationNotAllowedResponse:
|
|
9709
|
+
description: |
|
|
9710
|
+
403 from `POST /api/workflows` when an ANONYMOUS caller (no
|
|
9711
|
+
credential) requests an operation outside the anonymous
|
|
9712
|
+
allow-list. A register-wall: the frontend renders a sign-up
|
|
9713
|
+
prompt, since no tier upgrade applies to a caller without an
|
|
9714
|
+
account.
|
|
9715
|
+
|
|
9716
|
+
Mirrors `compression_api`'s `WorkflowController` register-wall
|
|
9717
|
+
(`JobsErrorCode::AnonymousOperationNotAllowed`), which checks
|
|
9718
|
+
every operation in the body and names the FIRST disallowed one.
|
|
9719
|
+
|
|
9720
|
+
⚠️ **The allow-list itself is NOT yet declared in this contract**
|
|
9721
|
+
(ticket [`UQ7zROTr`](https://trello.com/c/UQ7zROTr)), so a client
|
|
9722
|
+
can parse this refusal but cannot yet predict it. Do not hard-code
|
|
9723
|
+
the list from this description: it deliberately names none.
|
|
9724
|
+
allOf:
|
|
9725
|
+
- $ref: '#/components/schemas/ErrorEnvelope'
|
|
9726
|
+
- type: object
|
|
9727
|
+
required:
|
|
9728
|
+
- error_type
|
|
9729
|
+
- operation
|
|
9730
|
+
properties:
|
|
9731
|
+
error:
|
|
9732
|
+
enum:
|
|
9733
|
+
- ANONYMOUS_OPERATION_NOT_ALLOWED
|
|
9734
|
+
error_type:
|
|
9735
|
+
description: Discriminator for the 403 oneOf. Always `anonymous_operation_not_allowed` for this envelope.
|
|
9736
|
+
type: string
|
|
9737
|
+
enum:
|
|
9738
|
+
- anonymous_operation_not_allowed
|
|
9739
|
+
operation:
|
|
9740
|
+
description: |
|
|
9741
|
+
The first operation in the request body that an anonymous
|
|
9742
|
+
caller may not run.
|
|
9743
|
+
$ref: '#/components/schemas/OperationType'
|
|
9744
|
+
AnonymousQuotaExhaustedResponse:
|
|
9745
|
+
description: |
|
|
9746
|
+
403 from `POST /api/workflows` when an ANONYMOUS caller (no
|
|
9747
|
+
credential) has used its per-IP workflow allowance for the
|
|
9748
|
+
rolling 24 hours. A register-wall, distinct from the generic
|
|
9749
|
+
`429`: the remedy is signing in, not waiting.
|
|
9750
|
+
|
|
9751
|
+
Mirrors `compression_api`'s `WorkflowController` register-wall
|
|
9752
|
+
(`JobsErrorCode::AnonymousQuotaExhausted`). The allowance is only
|
|
9753
|
+
consumed by a workflow that is actually created, so a refused
|
|
9754
|
+
request does not use it up.
|
|
9755
|
+
allOf:
|
|
9756
|
+
- $ref: '#/components/schemas/ErrorEnvelope'
|
|
9757
|
+
- type: object
|
|
9758
|
+
required:
|
|
9759
|
+
- error_type
|
|
9760
|
+
properties:
|
|
9761
|
+
error:
|
|
9762
|
+
enum:
|
|
9763
|
+
- ANONYMOUS_QUOTA_EXHAUSTED
|
|
9764
|
+
error_type:
|
|
9765
|
+
description: Discriminator for the 403 oneOf. Always `anonymous_quota_exhausted` for this envelope.
|
|
9766
|
+
type: string
|
|
9767
|
+
enum:
|
|
9768
|
+
- anonymous_quota_exhausted
|
|
9518
9769
|
FeatureViolation:
|
|
9519
9770
|
type: object
|
|
9520
9771
|
description: |
|
|
@@ -9671,9 +9922,11 @@ components:
|
|
|
9671
9922
|
ProcessingClassRejectReason:
|
|
9672
9923
|
type: string
|
|
9673
9924
|
description: |
|
|
9674
|
-
Why a job cannot be classified
|
|
9675
|
-
the `long_form` (or
|
|
9676
|
-
|
|
9925
|
+
Why a job cannot be classified: an input exceeds the ceiling of
|
|
9926
|
+
the last class it could reach — the `long_form` (or
|
|
9927
|
+
`long_form_re_encode`) ceiling, or the `short_form` ceiling when
|
|
9928
|
+
`long_form` is not available — or its resolution band is not
|
|
9929
|
+
served. Ceilings are the caller's effective per-tier caps (per
|
|
9677
9930
|
[ADR-0011](../docs/decisions/0011-per-tier-processing-class-constraints.md)
|
|
9678
9931
|
`per_tier_constraints`). Distinct from `ProcessingClassReason`
|
|
9679
9932
|
(which describes WHY a job got its assigned class — success-
|
|
@@ -9697,11 +9950,35 @@ components:
|
|
|
9697
9950
|
(`max_total_input_size_bytes` / `max_total_duration`).
|
|
9698
9951
|
Applies to operations whose `processing_class.<class>.
|
|
9699
9952
|
constraints` carries `max_total_*` — merge today.
|
|
9953
|
+
- `input_size_exceeds_short_form_no_long_form` /
|
|
9954
|
+
`input_duration_exceeds_short_form_no_long_form`: a single input exceeds the
|
|
9955
|
+
`short_form` ceiling (the band's, when the class declares
|
|
9956
|
+
`resolution_bands`) AND the job cannot escalate to `long_form`
|
|
9957
|
+
because that class is not available. `processing_class` on the
|
|
9958
|
+
violation is `short_form`. Added 2026-09-25 for api `nslA1V1S`;
|
|
9959
|
+
before, such a refusal had to borrow a `*_long_form` reason.
|
|
9960
|
+
The `_no_long_form` suffix keeps these distinct from
|
|
9961
|
+
`ProcessingClassReason`'s `*_exceeds_short_form`, which means
|
|
9962
|
+
the job ESCALATED (the two enums are kept disjoint on purpose).
|
|
9963
|
+
- `resolution_band_not_served`: the input's resolution band is
|
|
9964
|
+
`basis: not_served` on the class (FORMAT.md §`resolution_bands`),
|
|
9965
|
+
so no duration or size fits. `actual` is the input's FRAME
|
|
9966
|
+
PIXELS (width x height) and `ceiling` is the `max_frame_pixels`
|
|
9967
|
+
of the highest band the class DOES serve; `resolution_band`
|
|
9968
|
+
names the band. The `unknown` band is never `not_served` (CI),
|
|
9969
|
+
so this reason always has a measured `actual`.
|
|
9970
|
+
# OPEN: a new reason is a new refusal cause. A consumer that does not know
|
|
9971
|
+
# one shows the envelope's localised message; `actual` / `ceiling` stay
|
|
9972
|
+
# integers in the unit the reason names.
|
|
9973
|
+
x-enum-openness: open
|
|
9700
9974
|
enum:
|
|
9701
9975
|
- input_size_exceeds_long_form
|
|
9702
9976
|
- input_duration_exceeds_long_form
|
|
9703
9977
|
- combined_size_exceeds_long_form
|
|
9704
9978
|
- combined_duration_exceeds_long_form
|
|
9979
|
+
- input_size_exceeds_short_form_no_long_form
|
|
9980
|
+
- input_duration_exceeds_short_form_no_long_form
|
|
9981
|
+
- resolution_band_not_served
|
|
9705
9982
|
|
|
9706
9983
|
ProcessingClassBandViolation:
|
|
9707
9984
|
type: object
|
|
@@ -9717,6 +9994,14 @@ components:
|
|
|
9717
9994
|
fail-all violations back to the offending job in multi-job
|
|
9718
9995
|
workflows and (b) render "X exceeded by Y" without re-deriving
|
|
9719
9996
|
caps from the per-tier overlay.
|
|
9997
|
+
# A not_served refusal names the band it refused (codex #606).
|
|
9998
|
+
if:
|
|
9999
|
+
properties:
|
|
10000
|
+
reason:
|
|
10001
|
+
const: resolution_band_not_served
|
|
10002
|
+
required: [reason]
|
|
10003
|
+
then:
|
|
10004
|
+
required: [resolution_band]
|
|
9720
10005
|
required:
|
|
9721
10006
|
- reason
|
|
9722
10007
|
- job_ref
|
|
@@ -9745,10 +10030,11 @@ components:
|
|
|
9745
10030
|
description: |
|
|
9746
10031
|
0-based ordinal into `JobDefinition.inputs[]` identifying
|
|
9747
10032
|
the specific input that violated the per-input ceiling.
|
|
9748
|
-
Set
|
|
9749
|
-
|
|
9750
|
-
|
|
9751
|
-
|
|
10033
|
+
Set on every PER-INPUT reason (`input_*_exceeds_long_form`,
|
|
10034
|
+
`input_*_exceeds_short_form_no_long_form`,
|
|
10035
|
+
`resolution_band_not_served`) for multi-input operations;
|
|
10036
|
+
omitted on single-input operations (no positional ambiguity)
|
|
10037
|
+
and on `combined_*_exceeds_long_form` reasons (whole-job
|
|
9752
10038
|
violation across all inputs).
|
|
9753
10039
|
operation:
|
|
9754
10040
|
$ref: '#/components/schemas/OperationType'
|
|
@@ -9756,15 +10042,27 @@ components:
|
|
|
9756
10042
|
processing_class:
|
|
9757
10043
|
$ref: '#/components/schemas/ProcessingClass'
|
|
9758
10044
|
description: |
|
|
9759
|
-
The class whose ceiling was exceeded
|
|
9760
|
-
or `
|
|
10045
|
+
The class whose ceiling was exceeded: `long_form` /
|
|
10046
|
+
`long_form_re_encode`, or `short_form` for the
|
|
10047
|
+
`*_exceeds_short_form_no_long_form` reasons and for a
|
|
10048
|
+
`not_served` band on short_form.
|
|
10049
|
+
resolution_band:
|
|
10050
|
+
$ref: '#/components/schemas/ResolutionBand'
|
|
10051
|
+
description: |
|
|
10052
|
+
The band whose ceiling `ceiling` is, when the class declares
|
|
10053
|
+
`resolution_bands`; omitted otherwise. EXCEPTION: for
|
|
10054
|
+
`resolution_band_not_served` it names the INPUT's (unserved)
|
|
10055
|
+
band, and `ceiling` is the highest served band's
|
|
10056
|
+
`max_frame_pixels`, not this band's. `unknown` means the
|
|
10057
|
+
resolution could not be determined — a different customer
|
|
10058
|
+
action from a known-resolution overflow.
|
|
9761
10059
|
actual:
|
|
9762
10060
|
type: integer
|
|
9763
10061
|
minimum: 0
|
|
9764
10062
|
description: |
|
|
9765
|
-
Observed value. Bytes for `*
|
|
9766
|
-
|
|
9767
|
-
|
|
10063
|
+
Observed value. Bytes for `*_size_exceeds_*` reasons; whole
|
|
10064
|
+
seconds for `*_duration_exceeds_*` reasons; frame pixels
|
|
10065
|
+
(width x height) for `resolution_band_not_served`.
|
|
9768
10066
|
ceiling:
|
|
9769
10067
|
type: integer
|
|
9770
10068
|
minimum: 0
|
|
@@ -9772,7 +10070,9 @@ components:
|
|
|
9772
10070
|
Effective per-tier ceiling for this caller (same units as
|
|
9773
10071
|
`actual`). The binding cap after `per_tier_constraints`
|
|
9774
10072
|
overlay; lets consumers render "X exceeded by Y" without
|
|
9775
|
-
re-deriving caps from the per-tier overlay.
|
|
10073
|
+
re-deriving caps from the per-tier overlay. EXCEPTION: for
|
|
10074
|
+
`resolution_band_not_served` it is the highest served band's
|
|
10075
|
+
`max_frame_pixels` (a resolution bound, not a per-tier cap).
|
|
9776
10076
|
required_tier:
|
|
9777
10077
|
description: |
|
|
9778
10078
|
Optional. When a HIGHER tier exists whose
|
|
@@ -10011,9 +10311,14 @@ components:
|
|
|
10011
10311
|
- `failed`: All jobs finished, at least one failed, none succeeded.
|
|
10012
10312
|
- `partially_failed`: Some jobs succeeded, some failed.
|
|
10013
10313
|
- `paused_insufficient_credits`: Workflow paused at a job/
|
|
10014
|
-
stage boundary because
|
|
10015
|
-
|
|
10016
|
-
|
|
10314
|
+
stage boundary because it no longer holds a credit
|
|
10315
|
+
reservation. The API reserves the FULL estimated cost at
|
|
10316
|
+
create (a 402 there if the balance is short), so a normal run
|
|
10317
|
+
never pauses; this is a defence for a workflow whose
|
|
10318
|
+
reservation was released mid-flight (e.g. by an orphan
|
|
10319
|
+
clean-up). There is no per-stage reservation (ticket
|
|
10320
|
+
`mNA2uv3y`). Pause occurs at boundaries only — never
|
|
10321
|
+
mid-stream within a running operation.
|
|
10017
10322
|
Resumable via `POST /api/workflows/{id}/resume` once the
|
|
10018
10323
|
caller tops up; expires after a 7-day TTL by default.
|
|
10019
10324
|
- `cancelled`: Caller-initiated termination via
|
|
@@ -12026,6 +12331,15 @@ components:
|
|
|
12026
12331
|
$ref: '#/components/schemas/EstimateQuality'
|
|
12027
12332
|
reason:
|
|
12028
12333
|
$ref: '#/components/schemas/ProcessingClassReason'
|
|
12334
|
+
resolution_band:
|
|
12335
|
+
$ref: '#/components/schemas/ResolutionBand'
|
|
12336
|
+
description: |
|
|
12337
|
+
The resolution band whose ceiling the class decision was taken
|
|
12338
|
+
against, when the operation's classes declare
|
|
12339
|
+
`resolution_bands`; omitted otherwise. `unknown` says the
|
|
12340
|
+
resolution could not be determined, so `reason` (which names the
|
|
12341
|
+
AXIS, e.g. `input_duration_exceeds_short_form`) was judged against
|
|
12342
|
+
the `unknown` band's ceiling.
|
|
12029
12343
|
dropped_options:
|
|
12030
12344
|
type: array
|
|
12031
12345
|
description: |
|
|
@@ -12564,6 +12878,84 @@ components:
|
|
|
12564
12878
|
contract on the OpenAPI side; the prober reports the
|
|
12565
12879
|
page-1 horizontal DPI when the document declares it,
|
|
12566
12880
|
otherwise omits the field.
|
|
12881
|
+
# STREAM TOPOLOGY + CONCAT ATTRIBUTES (lGeDDi4V, for MjzzPCWt): what the
|
|
12882
|
+
# API needs to refuse a non-concat-uniform long-form merge at create.
|
|
12883
|
+
# Defined with the SAME semantics as compression_lambdas' merge gate
|
|
12884
|
+
# (re_encode.rs TopologyCounts / classify_non_uniform), or the
|
|
12885
|
+
# create-time refusal and the worker gate would disagree. All OPTIONAL:
|
|
12886
|
+
# a prober that has not emitted them yet simply omits them.
|
|
12887
|
+
video_stream_count:
|
|
12888
|
+
type: integer
|
|
12889
|
+
minimum: 0
|
|
12890
|
+
description: Streams whose ffprobe `codec_type` is `video`.
|
|
12891
|
+
audio_stream_count:
|
|
12892
|
+
type: integer
|
|
12893
|
+
minimum: 0
|
|
12894
|
+
description: Streams whose ffprobe `codec_type` is `audio`.
|
|
12895
|
+
other_stream_count:
|
|
12896
|
+
type: integer
|
|
12897
|
+
minimum: 0
|
|
12898
|
+
description: |
|
|
12899
|
+
Every other stream: `codec_type` subtitle, data, attachment,
|
|
12900
|
+
or unknown — the worker gate's `other` bucket.
|
|
12901
|
+
stream_order:
|
|
12902
|
+
type: array
|
|
12903
|
+
items:
|
|
12904
|
+
type: string
|
|
12905
|
+
enum: [video, audio, other]
|
|
12906
|
+
description: |
|
|
12907
|
+
Per stream index, in container order, its kind (`other` as
|
|
12908
|
+
above). Two inputs are order-compatible iff these are equal.
|
|
12909
|
+
r_frame_rate:
|
|
12910
|
+
type: string
|
|
12911
|
+
pattern: '^[0-9]+/[0-9]+$'
|
|
12912
|
+
description: |
|
|
12913
|
+
ffprobe `r_frame_rate` of the video stream, raw (`30000/1001`;
|
|
12914
|
+
ffprobe's `0/0` is carried as-is and means UNUSABLE). NOT the
|
|
12915
|
+
average rate in `fps`, which drifts between concat-uniform
|
|
12916
|
+
clips. **The worker's frame-rate rule, which a create-time
|
|
12917
|
+
comparison must reproduce exactly:** (1) `r_frame_rate` and
|
|
12918
|
+
`avg_frame_rate` must each be present on all inputs or absent
|
|
12919
|
+
on all (else `input_metadata_inconsistent`); (2) if every
|
|
12920
|
+
input has a usable `r_frame_rate`, compare those as parsed
|
|
12921
|
+
rationals; (3) otherwise compare `avg_frame_rate` as parsed
|
|
12922
|
+
rationals. Both comparisons are by VALUE (`60/2` equals `30/1`),
|
|
12923
|
+
never by string.
|
|
12924
|
+
avg_frame_rate:
|
|
12925
|
+
type: string
|
|
12926
|
+
pattern: '^[0-9]+/[0-9]+$'
|
|
12927
|
+
description: |
|
|
12928
|
+
ffprobe `avg_frame_rate` of the video stream, raw rational.
|
|
12929
|
+
Presence-checked always; compared only as the fallback in the
|
|
12930
|
+
`r_frame_rate` rule. `fps` is its lossy numeric form.
|
|
12931
|
+
pix_fmt:
|
|
12932
|
+
type: string
|
|
12933
|
+
x-string-vocabulary: none
|
|
12934
|
+
description: ffprobe `pix_fmt` of the video stream (e.g. `yuv420p`).
|
|
12935
|
+
sar:
|
|
12936
|
+
type: string
|
|
12937
|
+
pattern: '^[0-9]+:[0-9]+$'
|
|
12938
|
+
description: Sample aspect ratio of the video stream (`1:1`).
|
|
12939
|
+
video_time_base:
|
|
12940
|
+
type: string
|
|
12941
|
+
pattern: '^[0-9]+/[0-9]+$'
|
|
12942
|
+
description: ffprobe `time_base` of the video stream (`1/30000`).
|
|
12943
|
+
audio_time_base:
|
|
12944
|
+
type: string
|
|
12945
|
+
pattern: '^[0-9]+/[0-9]+$'
|
|
12946
|
+
description: ffprobe `time_base` of the audio stream (`1/48000`).
|
|
12947
|
+
codec_tag:
|
|
12948
|
+
type: string
|
|
12949
|
+
x-string-vocabulary: none
|
|
12950
|
+
description: ffprobe `codec_tag_string` of the video stream (e.g. `avc1`).
|
|
12951
|
+
profile:
|
|
12952
|
+
type: string
|
|
12953
|
+
x-string-vocabulary: none
|
|
12954
|
+
description: ffprobe `profile` of the video stream (e.g. `High`).
|
|
12955
|
+
sample_fmt:
|
|
12956
|
+
type: string
|
|
12957
|
+
x-string-vocabulary: none
|
|
12958
|
+
description: ffprobe `sample_fmt` of the audio stream (e.g. `fltp`).
|
|
12567
12959
|
probed_at:
|
|
12568
12960
|
type: string
|
|
12569
12961
|
format: date-time
|
|
@@ -13871,8 +14263,8 @@ components:
|
|
|
13871
14263
|
x-string-vocabulary: advisory
|
|
13872
14264
|
description: |
|
|
13873
14265
|
Advisory explanation for `re_encode_decision` (e.g.
|
|
13874
|
-
`
|
|
13875
|
-
`
|
|
14266
|
+
`compatible_inputs`, `always_mode_forces_re_encode`,
|
|
14267
|
+
`input_video_codec_mismatch`, `long_form_stream_copy`).
|
|
13876
14268
|
Free-form string — not an enum — so the Lambda can emit
|
|
13877
14269
|
human-readable diagnostics that evolve without contract
|
|
13878
14270
|
changes. Mirrors `OperationMetrics.re_encode_reason`.
|
|
@@ -14184,6 +14576,10 @@ components:
|
|
|
14184
14576
|
is gapless ONLY for a full conversion, not for a sparse selection.
|
|
14185
14577
|
NOT the download `filename` suffix (that is a 0-based array
|
|
14186
14578
|
position — see `OperationDownload.filename`). Mutually exclusive with `position`.
|
|
14579
|
+
For a `split` of a PDF with `mode: page_groups`, each output holds
|
|
14580
|
+
a GROUP of pages and `page_index` is the group's FIRST source
|
|
14581
|
+
page; the group covers `page_index` .. `page_index + page_groups
|
|
14582
|
+
- 1`, and the last group ends at the document's last page.
|
|
14187
14583
|
Normative semantics: ADR-0009 §D2.
|
|
14188
14584
|
Absent on non-indexed (single-output) downloads. Mirrors
|
|
14189
14585
|
`OperationResultOutputEntry.page_index`. Per ADR-0009 §D2.
|
|
@@ -14355,6 +14751,17 @@ components:
|
|
|
14355
14751
|
const: 100
|
|
14356
14752
|
result:
|
|
14357
14753
|
$ref: '#/components/schemas/SseOperationCompletionResult'
|
|
14754
|
+
result_metadata:
|
|
14755
|
+
$ref: '#/components/schemas/OperationResultMetadata'
|
|
14756
|
+
description: |
|
|
14757
|
+
OPTIONAL. The same whitelisted per-operation metadata the REST
|
|
14758
|
+
operation object serves as `result_metadata` (a sibling of
|
|
14759
|
+
`result` there too): `already_optimal`, `estimated_saving_pct`,
|
|
14760
|
+
`watermark_id`. It lets the completion frame say "already
|
|
14761
|
+
optimal" without a follow-up read. Absent means the frame does
|
|
14762
|
+
not carry it, NOT that the operation has no metadata; a consumer
|
|
14763
|
+
that needs it falls back to the REST read. Card `Fu372Ze7`
|
|
14764
|
+
(api), contracts `DIDOPiZQ`.
|
|
14358
14765
|
|
|
14359
14766
|
SseOperationCompletionResult:
|
|
14360
14767
|
description: |
|
|
@@ -14629,6 +15036,10 @@ components:
|
|
|
14629
15036
|
is gapless ONLY for a full conversion, not for a sparse selection.
|
|
14630
15037
|
NOT the download `filename` suffix (that is a 0-based array
|
|
14631
15038
|
position — see `OperationDownload.filename`). Mutually exclusive with `position`.
|
|
15039
|
+
For a `split` of a PDF with `mode: page_groups`, each output holds
|
|
15040
|
+
a GROUP of pages and `page_index` is the group's FIRST source
|
|
15041
|
+
page; the group covers `page_index` .. `page_index + page_groups
|
|
15042
|
+
- 1`, and the last group ends at the document's last page.
|
|
14632
15043
|
Normative semantics: ADR-0009 §D2.
|
|
14633
15044
|
Absent on non-indexed outputs. Mirrors
|
|
14634
15045
|
`OperationResultOutputEntry.page_index`. Per ADR-0009 §D2.
|
|
@@ -16025,7 +16436,10 @@ components:
|
|
|
16025
16436
|
on the optimiser path (e.g. JPEG `progressive`); `[format_change]`
|
|
16026
16437
|
only on the transcoder path (e.g. `background` alpha-flatten to JPEG).
|
|
16027
16438
|
ABSENT ≡ honored on every route the option's `depends_on` already
|
|
16028
|
-
admits (back-compat — existing options need no tag).
|
|
16439
|
+
admits (back-compat — existing options need no tag). An EMPTY
|
|
16440
|
+
list `[]` ≡ ACCEPTED BUT INERT: the option is still accepted on
|
|
16441
|
+
the wire but no route honours it, so it is never visible and
|
|
16442
|
+
never in `honored_options` (card `Nqd3TdC6`). Orthogonal to
|
|
16029
16443
|
`availability`: a `planned` option still declares the route it WILL
|
|
16030
16444
|
be honoured on. Consumers derive option visibility from
|
|
16031
16445
|
`honored_on` ∩ active-route ∩ (availability != planned) ∩ depends_on.
|
|
@@ -16119,6 +16533,69 @@ components:
|
|
|
16119
16533
|
Baseline caps for the lowest tier this class's
|
|
16120
16534
|
`required_tier` permits. Overlaid per-caller by
|
|
16121
16535
|
`per_tier_constraints` (see below).
|
|
16536
|
+
input_uniformity:
|
|
16537
|
+
type: object
|
|
16538
|
+
additionalProperties: false
|
|
16539
|
+
description: |
|
|
16540
|
+
Present on a class that CONCATENATES inputs without normalising
|
|
16541
|
+
them (today `merge.video.long_form_re_encode`, ticket `MjzzPCWt`):
|
|
16542
|
+
every input must share its stream layout (`structural`, a
|
|
16543
|
+
permanent requirement) and its stream attributes (`attributes`,
|
|
16544
|
+
until the heterogeneous re-encode ships). The names are the
|
|
16545
|
+
worker gate's reason vocabulary. A request that breaks it is
|
|
16546
|
+
refused at create with the `refusal` code where the API's upload
|
|
16547
|
+
probe can see the difference; the worker gate refuses the rest.
|
|
16548
|
+
required: [refusal, structural, attributes]
|
|
16549
|
+
properties:
|
|
16550
|
+
refusal:
|
|
16551
|
+
type: string
|
|
16552
|
+
enum: [INPUTS_NOT_CONCAT_UNIFORM]
|
|
16553
|
+
description: The `ErrorEnvelope.error` code of the create-time refusal.
|
|
16554
|
+
structural:
|
|
16555
|
+
type: array
|
|
16556
|
+
items: {type: string}
|
|
16557
|
+
description: Permanent stream-layout requirements (worker gate reason names).
|
|
16558
|
+
attributes:
|
|
16559
|
+
type: object
|
|
16560
|
+
additionalProperties:
|
|
16561
|
+
type: array
|
|
16562
|
+
items: {type: string}
|
|
16563
|
+
description: |
|
|
16564
|
+
Per stream kind (`video`, `audio`), the attributes every input
|
|
16565
|
+
must share until the heterogeneous re-encode ships; plus
|
|
16566
|
+
`field_presence`: a video/audio stream field present on one
|
|
16567
|
+
input and absent on another.
|
|
16568
|
+
resolution_bands:
|
|
16569
|
+
type: object
|
|
16570
|
+
description: |
|
|
16571
|
+
Optional per-resolution ceilings for this class (ticket
|
|
16572
|
+
[`GxQPL4IY`](https://trello.com/c/GxQPL4IY)). Keys are EVERY
|
|
16573
|
+
`ResolutionBand` value — each band in
|
|
16574
|
+
`schemas/resolution-bands.yaml` plus `unknown` — so when the
|
|
16575
|
+
block is present a consumer never has to invent a ceiling.
|
|
16576
|
+
An input is placed in a band by its probe's frame pixels
|
|
16577
|
+
(width x height); `unknown` applies when the probe has no
|
|
16578
|
+
width or height. A band only TIGHTENS `constraints` (after
|
|
16579
|
+
the `per_tier_constraints` overlay): the effective ceiling on
|
|
16580
|
+
an axis is the smaller of the two, and an axis the band omits
|
|
16581
|
+
falls through to the class. An input over its band's ceiling
|
|
16582
|
+
exceeds this class, exactly as one over `constraints` does.
|
|
16583
|
+
Absent = no resolution axis; `constraints` binds at every
|
|
16584
|
+
resolution. CI-checked by `scripts/check-resolution-bands.py`.
|
|
16585
|
+
See `schemas/FORMAT.md` §`resolution_bands`.
|
|
16586
|
+
# Every band is REQUIRED: a consumer must never invent a ceiling. The
|
|
16587
|
+
# property names are the `ResolutionBand` enum, held equal by a test.
|
|
16588
|
+
additionalProperties: false
|
|
16589
|
+
required: [le_720p, p1080, gt_1080p, unknown]
|
|
16590
|
+
properties:
|
|
16591
|
+
le_720p:
|
|
16592
|
+
$ref: '#/components/schemas/ResolutionBandCeiling'
|
|
16593
|
+
p1080:
|
|
16594
|
+
$ref: '#/components/schemas/ResolutionBandCeiling'
|
|
16595
|
+
gt_1080p:
|
|
16596
|
+
$ref: '#/components/schemas/ResolutionBandCeiling'
|
|
16597
|
+
unknown:
|
|
16598
|
+
$ref: '#/components/schemas/ResolutionBandCeiling'
|
|
16122
16599
|
per_tier_constraints:
|
|
16123
16600
|
type: object
|
|
16124
16601
|
description: |
|
|
@@ -16137,6 +16614,108 @@ components:
|
|
|
16137
16614
|
additionalProperties:
|
|
16138
16615
|
$ref: '#/components/schemas/ProcessingClassConstraints'
|
|
16139
16616
|
|
|
16617
|
+
ResolutionBand:
|
|
16618
|
+
type: string
|
|
16619
|
+
description: |
|
|
16620
|
+
A resolution band (ticket [`GxQPL4IY`](https://trello.com/c/GxQPL4IY)).
|
|
16621
|
+
The band names and their frame-pixel bounds are declared ONCE in
|
|
16622
|
+
`schemas/resolution-bands.yaml`; this enum is those names plus the
|
|
16623
|
+
`unknown` band, held equal by a test.
|
|
16624
|
+
|
|
16625
|
+
- `le_720p`, `p1080`, `gt_1080p`: ascending frame-pixel bands
|
|
16626
|
+
(width x height). Their bounds are `max_frame_pixels` in
|
|
16627
|
+
`schemas/resolution-bands.yaml` and are deliberately not
|
|
16628
|
+
restated here.
|
|
16629
|
+
- `unknown`: the upload probe reported no width or no height, so the
|
|
16630
|
+
resolution could not be determined. A refusal or escalation under
|
|
16631
|
+
this band means "we could not tell this file's resolution", which
|
|
16632
|
+
calls for a different action (re-upload, wait for the probe,
|
|
16633
|
+
contact us) than "your file is too long".
|
|
16634
|
+
|
|
16635
|
+
Pixels, not height: a portrait clip lands in the same band as its
|
|
16636
|
+
landscape twin.
|
|
16637
|
+
# CLOSED. The band a consumer computes decides which ceiling it enforces;
|
|
16638
|
+
# an unrecognised band cannot be mapped to a ceiling safely in either
|
|
16639
|
+
# direction, so a new band is a contract event consumers must learn.
|
|
16640
|
+
x-enum-openness: closed
|
|
16641
|
+
enum:
|
|
16642
|
+
- le_720p
|
|
16643
|
+
- p1080
|
|
16644
|
+
- gt_1080p
|
|
16645
|
+
- unknown
|
|
16646
|
+
|
|
16647
|
+
ResolutionBandCeiling:
|
|
16648
|
+
type: object
|
|
16649
|
+
additionalProperties: false
|
|
16650
|
+
description: |
|
|
16651
|
+
One band's ceiling within `ProcessingClassEntry.resolution_bands`.
|
|
16652
|
+
`basis` is REQUIRED so no consumer inherits a default for a band
|
|
16653
|
+
nobody measured. `not_served` carries neither `constraints` nor
|
|
16654
|
+
`derivation`; `measured` carries both; `ruled` carries
|
|
16655
|
+
`constraints` only.
|
|
16656
|
+
required:
|
|
16657
|
+
- basis
|
|
16658
|
+
allOf:
|
|
16659
|
+
- if:
|
|
16660
|
+
properties: {basis: {const: not_served}}
|
|
16661
|
+
then:
|
|
16662
|
+
not:
|
|
16663
|
+
anyOf:
|
|
16664
|
+
- required: [constraints]
|
|
16665
|
+
- required: [derivation]
|
|
16666
|
+
else:
|
|
16667
|
+
required: [constraints]
|
|
16668
|
+
- if:
|
|
16669
|
+
properties: {basis: {const: measured}}
|
|
16670
|
+
then:
|
|
16671
|
+
required: [derivation]
|
|
16672
|
+
else:
|
|
16673
|
+
not:
|
|
16674
|
+
required: [derivation]
|
|
16675
|
+
properties:
|
|
16676
|
+
basis:
|
|
16677
|
+
type: string
|
|
16678
|
+
description: |
|
|
16679
|
+
- `measured`: the ceiling is derived from measured encode time;
|
|
16680
|
+
`derivation` carries the line it was solved from.
|
|
16681
|
+
- `ruled`: a policy value, not a measurement (today: the
|
|
16682
|
+
`unknown` band, which takes the `le_720p` ceiling).
|
|
16683
|
+
- `not_served`: this class does not serve inputs in this band.
|
|
16684
|
+
No `constraints`; an input in this band exceeds the class
|
|
16685
|
+
(for `short_form`: it escalates to `long_form`, or is refused
|
|
16686
|
+
where `long_form` is not available).
|
|
16687
|
+
# CLOSED: each value changes what a consumer enforces.
|
|
16688
|
+
x-enum-openness: closed
|
|
16689
|
+
enum: [measured, ruled, not_served]
|
|
16690
|
+
constraints:
|
|
16691
|
+
type: object
|
|
16692
|
+
additionalProperties: false
|
|
16693
|
+
description: Present unless `basis` is `not_served`.
|
|
16694
|
+
minProperties: 1
|
|
16695
|
+
properties:
|
|
16696
|
+
max_input_duration:
|
|
16697
|
+
type: string
|
|
16698
|
+
description: ISO-8601 duration; the band's input duration ceiling.
|
|
16699
|
+
example: "PT4M35S"
|
|
16700
|
+
derivation:
|
|
16701
|
+
type: object
|
|
16702
|
+
additionalProperties: false
|
|
16703
|
+
description: |
|
|
16704
|
+
Present only when `basis` is `measured`. Encode time was measured
|
|
16705
|
+
as a line, `slope_s_per_s x duration + intercept_s`; the ceiling is
|
|
16706
|
+
that line solved for `cap_s` and FLOORED, so it never promises a
|
|
16707
|
+
duration that crosses the cap. CI recomputes the ceiling from these.
|
|
16708
|
+
required: [slope_s_per_s, intercept_s, cap_s]
|
|
16709
|
+
properties:
|
|
16710
|
+
slope_s_per_s:
|
|
16711
|
+
type: number
|
|
16712
|
+
exclusiveMinimum: 0
|
|
16713
|
+
intercept_s:
|
|
16714
|
+
type: number
|
|
16715
|
+
cap_s:
|
|
16716
|
+
type: number
|
|
16717
|
+
exclusiveMinimum: 0
|
|
16718
|
+
|
|
16140
16719
|
# ============================================
|
|
16141
16720
|
# RETRY SCHEMAS
|
|
16142
16721
|
# ============================================
|