@giveitsmaller/contracts 0.83.0 → 0.84.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 +1 -1
- package/anonymous-policy.yaml +12 -1
- package/asyncapi/README.md +1 -1
- package/asyncapi/events.yaml +54 -10
- package/availability/availability.json +6 -6
- package/code-builder/code-builder-metadata.json +6 -6
- package/dist/asyncapi/AnonymousSchema_286.d.ts +4 -0
- package/dist/asyncapi/AnonymousSchema_286.js +5 -0
- package/dist/asyncapi/OperationMetrics.d.ts +2 -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/AnonymousLimitExceededResponse.d.ts +1 -1
- package/dist/openapi/models/AnonymousLimitExceededResponse.js +1 -1
- package/dist/openapi/models/AnonymousOperationNotAllowedResponse.d.ts +1 -1
- package/dist/openapi/models/AnonymousOperationNotAllowedResponse.js +1 -1
- package/dist/openapi/models/AnonymousQuotaExhaustedResponse.d.ts +1 -1
- package/dist/openapi/models/AnonymousQuotaExhaustedResponse.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/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 +1 -1
- package/dist/openapi/models/CreateWorkflow403Response.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 +2 -2
- 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 +22 -2
- package/dist/openapi/models/DroppedOption.js +3 -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 +1 -1
- package/dist/openapi/models/ExportAccountData200ResponseData.js +1 -1
- package/dist/openapi/models/ExportAccountData200ResponseDataBilling.d.ts +1 -1
- package/dist/openapi/models/ExportAccountData200ResponseDataBilling.js +1 -1
- package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.d.ts +1 -1
- package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.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/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 +41 -1
- package/dist/openapi/models/JobResponse.js +7 -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 +13 -1
- package/dist/openapi/models/LivenessResponse.js +3 -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 +1 -1
- package/dist/openapi/models/OperationDownload.js +1 -1
- package/dist/openapi/models/OperationInputModel.d.ts +1 -1
- package/dist/openapi/models/OperationInputModel.js +1 -1
- package/dist/openapi/models/OperationMessageParamsValue.d.ts +1 -1
- package/dist/openapi/models/OperationMessageParamsValue.js +1 -1
- package/dist/openapi/models/OperationResponse.d.ts +4 -2
- 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 +37 -1
- package/dist/openapi/models/OperationResultMetadata.js +9 -1
- package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
- package/dist/openapi/models/OperationResultMetrics.js +1 -1
- package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
- package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
- package/dist/openapi/models/OperationStatus.d.ts +1 -1
- package/dist/openapi/models/OperationStatus.js +1 -1
- package/dist/openapi/models/OperationType.d.ts +1 -1
- package/dist/openapi/models/OperationType.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +1 -1
- package/dist/openapi/models/OptionSchema.d.ts +1 -1
- package/dist/openapi/models/OptionSchema.js +1 -1
- package/dist/openapi/models/OutputProperties.d.ts +1 -1
- package/dist/openapi/models/OutputProperties.js +1 -1
- package/dist/openapi/models/OutputPropertiesIsAnimated.d.ts +1 -1
- package/dist/openapi/models/OutputPropertiesIsAnimated.js +1 -1
- package/dist/openapi/models/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 +7 -2
- 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/ProcessingClassEntryInputUniformity.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassEntryInputUniformity.js +1 -1
- package/dist/openapi/models/ProcessingClassEntryResolutionBands.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassEntryResolutionBands.js +1 -1
- package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
- package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassHint.js +1 -1
- package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassReason.js +1 -1
- package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
- package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
- package/dist/openapi/models/ProcessingPlan.js +1 -1
- package/dist/openapi/models/ProcessingPlanJob.d.ts +11 -8
- 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/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 +1 -1
- package/dist/openapi/models/ResolutionBand.js +1 -1
- package/dist/openapi/models/ResolutionBandCeiling.d.ts +1 -1
- package/dist/openapi/models/ResolutionBandCeiling.js +1 -1
- package/dist/openapi/models/ResolutionBandCeilingConstraints.d.ts +1 -1
- package/dist/openapi/models/ResolutionBandCeilingConstraints.js +1 -1
- package/dist/openapi/models/ResolutionBandCeilingDerivation.d.ts +1 -1
- package/dist/openapi/models/ResolutionBandCeilingDerivation.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/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 +1 -1
- package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
- package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
- package/dist/openapi/models/SseOperationCompletedData.js +1 -1
- package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
- package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
- package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
- package/dist/openapi/models/SseOperationFailedData.js +1 -1
- package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
- package/dist/openapi/models/SseOperationProgressData.js +1 -1
- package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
- package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
- package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
- package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
- package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
- package/dist/openapi/models/TierRestrictionKind.js +1 -1
- package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
- package/dist/openapi/models/TierRestrictionResponse.js +1 -1
- package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
- package/dist/openapi/models/UpdateProfile200Response.js +1 -1
- package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
- package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
- package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
- package/dist/openapi/models/UpdateProfile422Response.js +1 -1
- package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
- package/dist/openapi/models/UpdateProfileRequest.js +1 -1
- package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
- package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
- package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
- package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
- package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
- package/dist/openapi/models/UploadFile403Response.js +1 -1
- package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
- package/dist/openapi/models/UploadFile422Response.js +1 -1
- package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
- package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
- package/dist/openapi/models/UploadProbeProcessingClass.d.ts +1 -1
- package/dist/openapi/models/UploadProbeProcessingClass.js +1 -1
- package/dist/openapi/models/UploadProbeResponse.d.ts +1 -1
- package/dist/openapi/models/UploadProbeResponse.js +1 -1
- package/dist/openapi/models/UploadProbeStatus.d.ts +1 -1
- package/dist/openapi/models/UploadProbeStatus.js +1 -1
- package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
- package/dist/openapi/models/UploadResponse.d.ts +1 -1
- package/dist/openapi/models/UploadResponse.js +1 -1
- package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
- package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
- package/dist/openapi/models/UploadSource.d.ts +1 -1
- package/dist/openapi/models/UploadSource.js +1 -1
- package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
- package/dist/openapi/models/UploadThresholds.d.ts +1 -1
- package/dist/openapi/models/UploadThresholds.js +1 -1
- package/dist/openapi/models/UserTier.d.ts +1 -1
- package/dist/openapi/models/UserTier.js +1 -1
- package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
- package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
- package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
- package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
- package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
- package/dist/openapi/models/VerifyEmailRequest.js +1 -1
- package/dist/openapi/models/WarningType.d.ts +1 -1
- package/dist/openapi/models/WarningType.js +1 -1
- package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
- package/dist/openapi/models/WebhookOperationContext.js +1 -1
- package/dist/openapi/models/WebhookPayload.d.ts +1 -1
- package/dist/openapi/models/WebhookPayload.js +1 -1
- package/dist/openapi/models/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 +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 +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 +1 -1
- package/dist/openapi/models/WorkflowStatus.js +1 -1
- package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
- package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
- package/dist/openapi/models/WorkflowSummary.js +1 -1
- package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
- package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
- package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
- package/dist/openapi/models/WorkflowWarning.js +1 -1
- package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
- package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
- package/dist/openapi/runtime.d.ts +1 -1
- package/dist/openapi/runtime.js +1 -1
- package/openapi/api.yaml +240 -25
- package/operation-capabilities/operation-capabilities.json +1 -2
- package/operations/schemas/compress.yaml +16 -11
- package/package.json +6 -4
- package/pricing-policy.yaml +82 -0
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.219.0
|
|
107
107
|
contact:
|
|
108
108
|
name: API Support
|
|
109
109
|
|
|
@@ -1472,9 +1472,20 @@ paths:
|
|
|
1472
1472
|
immutable ledger transaction is written in the same DB
|
|
1473
1473
|
transaction as the workflow row; the response's
|
|
1474
1474
|
`processing_plan` reflects the same estimate the reservation
|
|
1475
|
-
was sized against.
|
|
1476
|
-
|
|
1477
|
-
|
|
1475
|
+
was sized against. **Callers pay only for successful results,
|
|
1476
|
+
per job** (owner decisions 610(4) and 635; the policy is data in
|
|
1477
|
+
`schemas/pricing-policy.yaml`). Each job that completes is charged;
|
|
1478
|
+
a job that fails after its retries is refunded, as is cancelled
|
|
1479
|
+
work (a workflow paused for credits has its reservation released at
|
|
1480
|
+
the pause and reserved again on resume), so a `partially_failed`
|
|
1481
|
+
workflow is charged for the jobs that completed. A long-form fan-out is settled
|
|
1482
|
+
at what it actually used and the difference is refunded. Uploading
|
|
1483
|
+
is free; an operation on a larger input costs more, through the
|
|
1484
|
+
size surcharge in that file. Refunds are separate ledger rows
|
|
1485
|
+
referencing the reservation via `reference_id`. ⚠️ **Contract-first:**
|
|
1486
|
+
until api ships the per-job change, the API refunds the WHOLE
|
|
1487
|
+
reservation when any job fails, so a `partially_failed` workflow is
|
|
1488
|
+
charged nothing (`pricing-policy.yaml` `charge.api_today`). The
|
|
1478
1489
|
idempotency-key wire shape for retried reservation attempts
|
|
1479
1490
|
is deferred per ADR-0001 §1.7 row 5.
|
|
1480
1491
|
operationId: createWorkflow
|
|
@@ -1580,7 +1591,11 @@ paths:
|
|
|
1580
1591
|
- type: compress
|
|
1581
1592
|
responses:
|
|
1582
1593
|
'201':
|
|
1583
|
-
description:
|
|
1594
|
+
description: |
|
|
1595
|
+
Workflow created. A long video `compress` that the API runs as an
|
|
1596
|
+
internal fan-out appears as ONE job with ONE `compress` operation
|
|
1597
|
+
whose id is the one `/status` and SSE report; see **LONG-FORM
|
|
1598
|
+
FAN-OUT: ONE PUBLIC ROW** on `GET /api/workflows/{id}/events`.
|
|
1584
1599
|
content:
|
|
1585
1600
|
application/json:
|
|
1586
1601
|
schema:
|
|
@@ -2104,7 +2119,12 @@ paths:
|
|
|
2104
2119
|
Optional, best-effort. Present only on the
|
|
2105
2120
|
`probe_pending` branch — suggested seconds to wait
|
|
2106
2121
|
before re-polling the upload probe and retrying the
|
|
2107
|
-
workflow.
|
|
2122
|
+
workflow. **A guest (no credential) cannot poll the probe**
|
|
2123
|
+
(`POST /api/uploads/{id}/probe` requires sign-in): it retries
|
|
2124
|
+
the create itself. A `probe_pending` refusal does not count
|
|
2125
|
+
against the guest per-minute create limit and reserves no
|
|
2126
|
+
guest allowance credits (`schemas/anonymous-policy.yaml`
|
|
2127
|
+
`video`). Delta-seconds (RFC 9110), mirroring the 429
|
|
2108
2128
|
login path's `Retry-After` convention. Absent until the
|
|
2109
2129
|
server-side probe-staleness bound (API `e1Idv6UL`)
|
|
2110
2130
|
lands; consumers MUST treat absence as "retry on your
|
|
@@ -2327,6 +2347,12 @@ paths:
|
|
|
2327
2347
|
Retrieve the current status of a workflow with nested job and operation breakdown.
|
|
2328
2348
|
Each operation includes its current progress and, when completed, its result
|
|
2329
2349
|
(download URL, size, metrics).
|
|
2350
|
+
|
|
2351
|
+
A long video `compress` that the API runs as an internal fan-out
|
|
2352
|
+
(split, segments, concat) appears here as ONE job with ONE `compress`
|
|
2353
|
+
operation. See **LONG-FORM FAN-OUT: ONE PUBLIC ROW** on
|
|
2354
|
+
`GET /api/workflows/{id}/events`, which is normative for this
|
|
2355
|
+
endpoint too.
|
|
2330
2356
|
operationId: getWorkflowStatus
|
|
2331
2357
|
security: [{}, {bearerAuth: []}, {sessionAuth: []}] # optional (anon-OK; identity-scoped to workflow owner)
|
|
2332
2358
|
x-identity-scoped: true # workflow-ownership-scoped per ADR-0016 D3
|
|
@@ -2573,6 +2599,15 @@ paths:
|
|
|
2573
2599
|
schema:
|
|
2574
2600
|
$ref: '#/components/schemas/ErrorEnvelope'
|
|
2575
2601
|
|
|
2602
|
+
# LONG-FORM FAN-OUT fold (section in the description below), read from
|
|
2603
|
+
# compression_api main 2a8dd8d5, paths under compression/src/Jobs/:
|
|
2604
|
+
# fold + public ids: Domain/Service/FanOutClusterFolder.php:22-47,218-239,332-354,452-545
|
|
2605
|
+
# ids: Domain/Service/FanOutNodeIdFactory.php:82-94,176-196
|
|
2606
|
+
# public op shape: Domain/ValueObject/FanOutPublicOperation.php:45,85-87
|
|
2607
|
+
# SSE frames: Application/Service/WorkflowSseService.php:333-350,563-671
|
|
2608
|
+
# create 201 row: Presentation/Http/Controller/WorkflowController.php:543-589,725-740
|
|
2609
|
+
# fallback path: Application/Service/LongFormFanOutBuilder.php:784-830
|
|
2610
|
+
# concat auto-retry: Infrastructure/Messaging/Handler/OperationResultHandler.php:712-730
|
|
2576
2611
|
/api/workflows/{id}/events:
|
|
2577
2612
|
get:
|
|
2578
2613
|
summary: Stream workflow events (SSE)
|
|
@@ -2880,6 +2915,80 @@ paths:
|
|
|
2880
2915
|
(the `id:` and `event:` lines) is transport-level and intentionally
|
|
2881
2916
|
**not** schema-described.
|
|
2882
2917
|
|
|
2918
|
+
### LONG-FORM FAN-OUT: ONE PUBLIC ROW
|
|
2919
|
+
|
|
2920
|
+
This section is normative for **every read surface**; the `/status`
|
|
2921
|
+
and create-201 descriptions point here rather than restate it.
|
|
2922
|
+
|
|
2923
|
+
The API may run a long video `compress` as an internal fan-out: one
|
|
2924
|
+
`split` job, then N parallel segment `compress` jobs, then a
|
|
2925
|
+
stream-copy concat (`merge`). It applies only to a root job holding a
|
|
2926
|
+
single `compress`, and only one such job per workflow. Today the API
|
|
2927
|
+
also requires that no other job depends on it; a client must not rely
|
|
2928
|
+
on that: if a fanned-out job has dependants, they read the joined
|
|
2929
|
+
output, exactly as they would read the job's output unsplit.
|
|
2930
|
+
**Clients never see the fan-out.** The API folds it into
|
|
2931
|
+
ONE public job with ONE public operation on the create 201,
|
|
2932
|
+
`GET /status` and this stream, and into ONE job row on
|
|
2933
|
+
`GET /api/workflows` (whose rows carry no operations; read the
|
|
2934
|
+
operation from `/status`). On `GET /downloads` the joined file is
|
|
2935
|
+
listed under the original `job_ref` with operation `compress`, when
|
|
2936
|
+
it is delivered at all: only once it is complete, only if the
|
|
2937
|
+
delivery selection includes that job, and only while retained. The
|
|
2938
|
+
internal jobs and operations do not appear on any surface, and this
|
|
2939
|
+
stream sends no frame for them.
|
|
2940
|
+
|
|
2941
|
+
| field | value |
|
|
2942
|
+
|---|---|
|
|
2943
|
+
| `job_ref` / `ref` | the client's **original** job ref, on every surface and every path below |
|
|
2944
|
+
| `job_id` | one server-chosen id for the public job, the same before and after the split expands |
|
|
2945
|
+
| `operation_id` / `operations[0].id` | one server-chosen id, the same on the 201, `/status` and this stream, before and after the split expands (exceptions below) |
|
|
2946
|
+
| `type` | `compress` (never `split` or `merge`), including the output-name marker |
|
|
2947
|
+
| `processing_class` (`/status`, `processing_plan`) | `long_form` |
|
|
2948
|
+
| `depends_on` | `[]` |
|
|
2949
|
+
| outputs | exactly one: the joined file |
|
|
2950
|
+
|
|
2951
|
+
**On this stream** the public operation gets zero or more
|
|
2952
|
+
`operation.progress` frames, then ONE `operation.completed` or ONE
|
|
2953
|
+
`operation.failed`, then ONE `job.completed` or `job.failed` for the
|
|
2954
|
+
public job. A failure can arrive with no progress frame before it,
|
|
2955
|
+
so the terminal frame may be the first one. These frames
|
|
2956
|
+
carry **no `id:` line**. `operation.completed` carries no
|
|
2957
|
+
`result_metadata`, and its `result` stays optional as on every
|
|
2958
|
+
`SseOperationCompletedData`: when it is absent, read the output from
|
|
2959
|
+
`GET /downloads`. `job.failed` can arrive in a later frame batch
|
|
2960
|
+
than `operation.failed`.
|
|
2961
|
+
|
|
2962
|
+
**Progress** is weighted by phase: split 10, segments 80 (shared
|
|
2963
|
+
equally), concat 10. Until the split finishes and the segments exist,
|
|
2964
|
+
it **stays at or below 10**: a long bar at 10% is the split running,
|
|
2965
|
+
not a stall. On this stream it never decreases within one connection.
|
|
2966
|
+
`GET /status` reads a snapshot per poll and can dip briefly between
|
|
2967
|
+
polls. Clients that must not show a backwards bar hold their own
|
|
2968
|
+
maximum per `job_ref`.
|
|
2969
|
+
|
|
2970
|
+
**Failure.** Any failed segment fails the whole public operation. The
|
|
2971
|
+
reported `error_code` is the causing failure; a `never_started`
|
|
2972
|
+
collateral code is reported only when there is no causing one.
|
|
2973
|
+
|
|
2974
|
+
**The operation id is NOT stable in two cases. Key the row on
|
|
2975
|
+
`job_ref`, which is.**
|
|
2976
|
+
1. **Unsplittable input.** When the split finds the file cannot be
|
|
2977
|
+
split, the API runs one plain long-form `compress` instead. It has
|
|
2978
|
+
a **new** `job_id` and `operation_id`, under the same `job_ref`.
|
|
2979
|
+
The first id gets no terminal frame. Its progress starts again
|
|
2980
|
+
from 0, so a bar keyed on `job_ref` goes back from 10 to 0 once.
|
|
2981
|
+
2. **Automatic retry of the concat step.** The retry is a new
|
|
2982
|
+
operation with a new id, and the public row then shows that id.
|
|
2983
|
+
User retries (`POST /api/operations/{id}/retry`) are refused for
|
|
2984
|
+
the internal operations.
|
|
2985
|
+
|
|
2986
|
+
**Downloads.** Before the split finishes the public job's
|
|
2987
|
+
`/downloads` row lists no files; while segments run it can be
|
|
2988
|
+
absent; it lists the one output once the concat completes. On the
|
|
2989
|
+
unsplittable path there is no concat: the fallback `compress` job
|
|
2990
|
+
is an ordinary row and lists its output when it completes.
|
|
2991
|
+
|
|
2883
2992
|
### AUTH ON THE STREAM HOST: the CREDENTIAL decides, not the caller
|
|
2884
2993
|
|
|
2885
2994
|
**Two axes, and conflating them is what made two earlier versions of this
|
|
@@ -6228,12 +6337,12 @@ paths:
|
|
|
6228
6337
|
value:
|
|
6229
6338
|
success: true
|
|
6230
6339
|
data:
|
|
6231
|
-
monthly_balance:
|
|
6340
|
+
monthly_balance: 800
|
|
6232
6341
|
purchased_balance: 5000
|
|
6233
|
-
overdraft_limit:
|
|
6342
|
+
overdraft_limit: 200
|
|
6234
6343
|
overdraft_debt: 0
|
|
6235
|
-
available_credits:
|
|
6236
|
-
monthly_allowance:
|
|
6344
|
+
available_credits: 6000
|
|
6345
|
+
monthly_allowance: 1000
|
|
6237
6346
|
tier: pro
|
|
6238
6347
|
pro_overdrafted:
|
|
6239
6348
|
summary: Pro tier in overdraft (monthly + purchased exhausted)
|
|
@@ -6242,10 +6351,10 @@ paths:
|
|
|
6242
6351
|
data:
|
|
6243
6352
|
monthly_balance: 0
|
|
6244
6353
|
purchased_balance: 0
|
|
6245
|
-
overdraft_limit:
|
|
6246
|
-
overdraft_debt:
|
|
6247
|
-
available_credits:
|
|
6248
|
-
monthly_allowance:
|
|
6354
|
+
overdraft_limit: 200
|
|
6355
|
+
overdraft_debt: 150
|
|
6356
|
+
available_credits: 50
|
|
6357
|
+
monthly_allowance: 1000
|
|
6249
6358
|
tier: pro
|
|
6250
6359
|
'401':
|
|
6251
6360
|
description: Authentication required.
|
|
@@ -8286,7 +8395,10 @@ components:
|
|
|
8286
8395
|
overdraft_debt:
|
|
8287
8396
|
type: integer
|
|
8288
8397
|
minimum: 0
|
|
8289
|
-
description:
|
|
8398
|
+
description: >-
|
|
8399
|
+
Credits currently owed against the overdraft pool. Repaid one
|
|
8400
|
+
credit for one credit from the next monthly grant, on every
|
|
8401
|
+
plan (`schemas/pricing-policy.yaml` `overdraft.repayment_ratio`).
|
|
8290
8402
|
available_credits:
|
|
8291
8403
|
type: integer
|
|
8292
8404
|
description: |
|
|
@@ -10024,7 +10136,12 @@ components:
|
|
|
10024
10136
|
(`ok` → re-`POST /api/workflows` the same request; `corrupt` /
|
|
10025
10137
|
`unsupported_codec` → surface the probe error, do not retry).
|
|
10026
10138
|
The `Retry-After` response header (when present) carries the
|
|
10027
|
-
suggested delay in seconds before the next poll/retry.
|
|
10139
|
+
suggested delay in seconds before the next poll/retry. **A guest
|
|
10140
|
+
(no credential) cannot poll**: the probe endpoint requires
|
|
10141
|
+
sign-in, so a guest re-`POST`s the same create on `Retry-After`
|
|
10142
|
+
or its own backoff; the refusal does not count against its
|
|
10143
|
+
per-minute create limit or allowance
|
|
10144
|
+
(`schemas/anonymous-policy.yaml` `video`).
|
|
10028
10145
|
|
|
10029
10146
|
Delivered alongside `ValidationErrorEnvelope`,
|
|
10030
10147
|
`FeatureNotAvailableResponse`, and
|
|
@@ -12482,13 +12599,16 @@ components:
|
|
|
12482
12599
|
dropped_options:
|
|
12483
12600
|
type: array
|
|
12484
12601
|
description: |
|
|
12485
|
-
Options
|
|
12486
|
-
|
|
12487
|
-
|
|
12488
|
-
|
|
12489
|
-
|
|
12490
|
-
|
|
12491
|
-
|
|
12602
|
+
Options holding their DEFAULT (supplied by the server, or
|
|
12603
|
+
sent by the client equal to the schema default, which reads as
|
|
12604
|
+
defaulted — `schemas/FORMAT.md` "Container-conditional
|
|
12605
|
+
defaults") that were then REMOVED or SUBSTITUTED, because the
|
|
12606
|
+
resolved execution path or output container cannot honour
|
|
12607
|
+
them. **Never contains a caller's choice** — a value that
|
|
12608
|
+
differs from the default and cannot be honoured is refused
|
|
12609
|
+
(`422 feature_not_available` / `invalid_options`), not
|
|
12610
|
+
dropped. That split is the whole rule: a caller who asked for
|
|
12611
|
+
nothing is not punished for our default; a caller who asked for
|
|
12492
12612
|
something is told.
|
|
12493
12613
|
|
|
12494
12614
|
**Why this field exists at all.** Dropping a defaulted
|
|
@@ -12510,7 +12630,8 @@ components:
|
|
|
12510
12630
|
DroppedOption:
|
|
12511
12631
|
type: object
|
|
12512
12632
|
description: |
|
|
12513
|
-
One server-supplied
|
|
12633
|
+
One defaulted option (server-supplied, or sent equal to its
|
|
12634
|
+
schema default) removed or substituted before dispatch.
|
|
12514
12635
|
**Names the THING, the WHY and the PATH** — the three parts a
|
|
12515
12636
|
caller needs to act, and the three a single interpolated string
|
|
12516
12637
|
would fuse into something unparseable.
|
|
@@ -12557,12 +12678,29 @@ components:
|
|
|
12557
12678
|
caller on a guessed class is the same error as asserting
|
|
12558
12679
|
a measurement never taken**, so an unmeasured basis
|
|
12559
12680
|
degrades to a drop and never to a 422.
|
|
12681
|
+
- `container_incompatible_default` — the option held its
|
|
12682
|
+
schema default (omitted, or sent equal to the default),
|
|
12683
|
+
and the output container cannot carry that value, so the
|
|
12684
|
+
container's own default was applied instead; the applied
|
|
12685
|
+
value is in `resolved_value` (e.g. `codec` `h264` on a
|
|
12686
|
+
WebM output → `vp9`; `audio_codec` `copy` of AAC into
|
|
12687
|
+
WebM → `opus`). See `schemas/FORMAT.md`
|
|
12688
|
+
"Container-conditional defaults". Contract-first (api
|
|
12689
|
+
`PSJ1vBC7`).
|
|
12560
12690
|
|
|
12561
12691
|
The class token is deliberately NOT interpolated into this
|
|
12562
12692
|
string: the reason and the path are separate fields because
|
|
12563
12693
|
a fused `not_available_on_<class>` is unparseable and
|
|
12564
12694
|
duplicates `processing_class`.
|
|
12565
12695
|
example: unavailable_on_processing_class
|
|
12696
|
+
resolved_value:
|
|
12697
|
+
type: string
|
|
12698
|
+
description: |
|
|
12699
|
+
OPTIONAL. The value the server applied in place of the
|
|
12700
|
+
dropped one, when it substituted a value rather than
|
|
12701
|
+
removing the option (`reason: container_incompatible_default`).
|
|
12702
|
+
Absent for a plain drop.
|
|
12703
|
+
example: vp9
|
|
12566
12704
|
|
|
12567
12705
|
ProcessingPlan:
|
|
12568
12706
|
type: object
|
|
@@ -14068,6 +14206,43 @@ components:
|
|
|
14068
14206
|
`input_filename`. Ticket [`j2s6T2qf`](https://trello.com/c/j2s6T2qf)
|
|
14069
14207
|
(FE before→after size, workflow-view launch ask).
|
|
14070
14208
|
example: 491520
|
|
14209
|
+
input_uploaded_at:
|
|
14210
|
+
type: string
|
|
14211
|
+
format: date-time
|
|
14212
|
+
description: |
|
|
14213
|
+
OPTIONAL. When the server finished receiving the job's input
|
|
14214
|
+
upload: a single-shot upload's accept, or a multipart
|
|
14215
|
+
`complete`. For a job with several uploaded inputs (e.g. a
|
|
14216
|
+
merge), the LATEST of them, since the job cannot start before
|
|
14217
|
+
its last input arrives; inputs that are not uploads (another
|
|
14218
|
+
job's output, an import) are ignored. Absent when the job has no
|
|
14219
|
+
uploaded input, and until the API records it. Card
|
|
14220
|
+
[`6EOlMAz4`](https://trello.com/c/6EOlMAz4) (e2e performance
|
|
14221
|
+
baseline, owner decisions 630/635): with `started_at` and
|
|
14222
|
+
`completed_at` it separates upload, queue and processing time on
|
|
14223
|
+
the server clock. Contract-first: api populates it in a
|
|
14224
|
+
follow-up; a client must treat absence as "not recorded".
|
|
14225
|
+
example: "2026-09-29T21:00:00Z"
|
|
14226
|
+
started_at:
|
|
14227
|
+
type: string
|
|
14228
|
+
format: date-time
|
|
14229
|
+
description: |
|
|
14230
|
+
OPTIONAL. When the job's first operation started processing (the
|
|
14231
|
+
first progress report from a worker). Absent while the job is
|
|
14232
|
+
queued, and for a job that never started. Server clock. See
|
|
14233
|
+
`input_uploaded_at`.
|
|
14234
|
+
example: "2026-09-29T21:00:04Z"
|
|
14235
|
+
completed_at:
|
|
14236
|
+
type: string
|
|
14237
|
+
format: date-time
|
|
14238
|
+
description: |
|
|
14239
|
+
OPTIONAL. When the job reached a terminal `JobStatus`
|
|
14240
|
+
(`completed` or `failed`), on the server clock. Absent while
|
|
14241
|
+
the job is not terminal.
|
|
14242
|
+
`completed_at - started_at` is the job's EXECUTION SPAN: for a
|
|
14243
|
+
chain of operations it includes any wait between them, so it is
|
|
14244
|
+
not pure processing time. See `input_uploaded_at`.
|
|
14245
|
+
example: "2026-09-29T21:00:19Z"
|
|
14071
14246
|
processing_class:
|
|
14072
14247
|
$ref: '#/components/schemas/ProcessingClass'
|
|
14073
14248
|
description: |
|
|
@@ -14177,7 +14352,9 @@ components:
|
|
|
14177
14352
|
`invalid_format` (input type unsupported),
|
|
14178
14353
|
`format_mismatch` (declared MIME ≠ content),
|
|
14179
14354
|
`decode_failed` (input unreadable/corrupt),
|
|
14180
|
-
`output_too_large` (output exceeded the size limit
|
|
14355
|
+
`output_too_large` (output exceeded the size limit; NOT for a
|
|
14356
|
+
same-format `compress`, which returns the original with
|
|
14357
|
+
`already_optimal` instead — owner decision 645(4)),
|
|
14181
14358
|
`missing_source` (source not found — fail-fast),
|
|
14182
14359
|
`invalid_key` (storage key invalid),
|
|
14183
14360
|
`processing_failed` (non-specific processing failure),
|
|
@@ -14276,7 +14453,35 @@ components:
|
|
|
14276
14453
|
"already optimised", not as "same size". On an ordinary result it
|
|
14277
14454
|
is absent or `false`; treat the two the same. Projected by the API from the wire
|
|
14278
14455
|
`OperationMetrics.already_optimal` (ticket `roNRMilt`).
|
|
14456
|
+
**Charged nothing** (owner decision 645(4),
|
|
14457
|
+
`schemas/pricing-policy.yaml` `charge.not_charged`): the
|
|
14458
|
+
operation's cost is refunded; other operations in the job are
|
|
14459
|
+
charged as usual. Applies to a completed `compress` on the
|
|
14460
|
+
resolved `same_format` route (`output_format` original, absent, or
|
|
14461
|
+
equal to the input's format; not the format-change facade, where
|
|
14462
|
+
the original is not what was asked for). A same-format compress
|
|
14463
|
+
that cannot shrink the file returns this, never `output_too_large`.
|
|
14464
|
+
⚠️ **Today this holds for SHORT-FORM compress only.** Long-form
|
|
14465
|
+
compress still fails `output_too_large` until lambdas ships its
|
|
14466
|
+
long-form copy path; do not promise "already optimised" or "no
|
|
14467
|
+
charge" for a long-form file before then. Contract-first: until api
|
|
14468
|
+
ships, the operation is charged (`charge.not_charged_api_today`).
|
|
14469
|
+
`already_optimal_kind` says which kind of "already optimised" it
|
|
14470
|
+
was.
|
|
14279
14471
|
example: true
|
|
14472
|
+
already_optimal_kind:
|
|
14473
|
+
type: string
|
|
14474
|
+
enum: [not_smaller]
|
|
14475
|
+
description: |
|
|
14476
|
+
OPTIONAL, only with `already_optimal: true`: WHY the original was
|
|
14477
|
+
returned. `not_smaller` — the file was compressed and the result
|
|
14478
|
+
was not smaller, so there is no quality trade-off to explain. It
|
|
14479
|
+
is the only kind any worker produces today (no production path
|
|
14480
|
+
declines to encode an efficient source). Absent, or a value you do
|
|
14481
|
+
not know: show neutral "already optimised" copy.
|
|
14482
|
+
Contract-first (card `cDZuuyg8`): projected from the wire
|
|
14483
|
+
`OperationMetrics.already_optimal_kind` once workers emit it.
|
|
14484
|
+
example: not_smaller
|
|
14280
14485
|
estimated_saving_pct:
|
|
14281
14486
|
type: number
|
|
14282
14487
|
minimum: 0
|
|
@@ -17167,6 +17372,16 @@ components:
|
|
|
17167
17372
|
app:
|
|
17168
17373
|
type: boolean
|
|
17169
17374
|
description: Application is running
|
|
17375
|
+
build:
|
|
17376
|
+
type: string
|
|
17377
|
+
description: |
|
|
17378
|
+
OPTIONAL. The release the running image was built as (the API's
|
|
17379
|
+
`APP_VERSION`, e.g. `1.15.2-rc.1`; `dev` for a local build;
|
|
17380
|
+
`unknown` when unset). Unauthenticated on purpose: a timing run
|
|
17381
|
+
reads it before and after, so a code-only deploy in the middle
|
|
17382
|
+
of the run is detectable (card `6EOlMAz4`, e2e performance
|
|
17383
|
+
baseline). Opaque: compare for equality, do not parse.
|
|
17384
|
+
example: "1.15.2-rc.1"
|
|
17170
17385
|
|
|
17171
17386
|
ReadinessResponse:
|
|
17172
17387
|
type: object
|
|
@@ -1217,9 +1217,10 @@ operation:
|
|
|
1217
1217
|
Output container. original = keep the input container (default, same-format
|
|
1218
1218
|
compression). Other values change the container as part of the same job, keeping
|
|
1219
1219
|
the size cap. When set, the RESOLVED target container determines the valid
|
|
1220
|
-
codec/audio_codec/faststart sets — an absent
|
|
1221
|
-
|
|
1222
|
-
|
|
1220
|
+
codec/audio_codec/faststart sets — an absent or default-equal value (sent equal
|
|
1221
|
+
to its default counts as the default) resolves to a container-valid one (e.g.
|
|
1222
|
+
webm -> vp9), is never rejected, and is reported in dropped_options; only a
|
|
1223
|
+
NON-default incompatible value is rejected.
|
|
1223
1224
|
codec:
|
|
1224
1225
|
type: enum
|
|
1225
1226
|
values: [h264, h265, vp9, av1]
|
|
@@ -1241,8 +1242,10 @@ operation:
|
|
|
1241
1242
|
the input container): for a container that cannot carry it (e.g. WebM, which
|
|
1242
1243
|
carries VP8/VP9/AV1) the server resolves a container-valid codec (WebM -> vp9).
|
|
1243
1244
|
A DEFAULT value is never rejected — including an explicit `output_format: webm`
|
|
1244
|
-
left at the default `h264` (resolves to vp9, not rejected)
|
|
1245
|
-
|
|
1245
|
+
left at the default `h264` (resolves to vp9, not rejected). A value equal to the
|
|
1246
|
+
default counts as the default even when sent, and the substitution is reported
|
|
1247
|
+
in dropped_options. Only a NON-default codec the container cannot carry is
|
|
1248
|
+
rejected (e.g. h265 on WebM).
|
|
1246
1249
|
encoding_mode:
|
|
1247
1250
|
type: enum
|
|
1248
1251
|
values: [crf, target_size]
|
|
@@ -1395,9 +1398,9 @@ operation:
|
|
|
1395
1398
|
Move the MP4/MOV moov atom to the front so the file starts playing before it is
|
|
1396
1399
|
fully downloaded (progressive web playback). MP4/MOV only. CONTAINER-CONDITIONAL
|
|
1397
1400
|
against the RESOLVED output container (the explicit `output_format` if set, else
|
|
1398
|
-
the input):
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
+
the input): on a container with no moov atom (e.g. WebM) the default (true),
|
|
1402
|
+
omitted or sent, is dropped and reported in dropped_options — never a rejection.
|
|
1403
|
+
false there asks for nothing and is accepted.
|
|
1401
1404
|
audio_codec:
|
|
1402
1405
|
type: enum
|
|
1403
1406
|
values: [aac, opus, vorbis, copy]
|
|
@@ -1422,9 +1425,11 @@ operation:
|
|
|
1422
1425
|
the container, an absent/default audio_codec resolves to a container-valid codec
|
|
1423
1426
|
via the facade (e.g. webm -> opus), NOT a blind copy of an incompatible stream —
|
|
1424
1427
|
a DEFAULT is never rejected (the exact per-container resolution, incl. ogg
|
|
1425
|
-
vorbis-vs-opus, is an output_format stable-flip prerequisite).
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
+
vorbis-vs-opus, is an output_format stable-flip prerequisite). `copy` sent
|
|
1429
|
+
explicitly counts as the default: if the source audio cannot be copied into the
|
|
1430
|
+
target container it is re-encoded to the container default (webm -> opus) and
|
|
1431
|
+
reported in dropped_options. A NON-default codec the resolved container cannot
|
|
1432
|
+
carry (e.g. aac on a webm target) is rejected.
|
|
1428
1433
|
audio_bitrate:
|
|
1429
1434
|
type: enum
|
|
1430
1435
|
value_type: integer
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@giveitsmaller/contracts",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Generated contract types for GISL (Give It Smaller). Generated from compression_contracts spec v2.
|
|
5
|
-
"gislContractsSpec": "v2.
|
|
3
|
+
"version": "0.84.0",
|
|
4
|
+
"description": "Generated contract types for GISL (Give It Smaller). Generated from compression_contracts spec v2.219.0.",
|
|
5
|
+
"gislContractsSpec": "v2.219.0",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"homepage": "https://docs.giveitsmaller.com",
|
|
8
8
|
"bugs": {
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
"./asyncapi/events.yaml": "./asyncapi/events.yaml",
|
|
33
33
|
"./resolution-bands.yaml": "./resolution-bands.yaml",
|
|
34
34
|
"./anonymous-policy.yaml": "./anonymous-policy.yaml",
|
|
35
|
+
"./pricing-policy.yaml": "./pricing-policy.yaml",
|
|
35
36
|
"./availability/availability.json": "./availability/availability.json",
|
|
36
37
|
"./accepted-options/accepted-options.json": "./accepted-options/accepted-options.json",
|
|
37
38
|
"./accepted-options/image-output-routes.json": "./accepted-options/image-output-routes.json",
|
|
@@ -67,7 +68,8 @@
|
|
|
67
68
|
"operation-capabilities/operation-capabilities.json",
|
|
68
69
|
"code-builder/code-builder-metadata.json",
|
|
69
70
|
"resolution-bands.yaml",
|
|
70
|
-
"anonymous-policy.yaml"
|
|
71
|
+
"anonymous-policy.yaml",
|
|
72
|
+
"pricing-policy.yaml"
|
|
71
73
|
],
|
|
72
74
|
"scripts": {
|
|
73
75
|
"clean": "node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"",
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Pricing policy — the ONE declaration of how a workflow is charged
|
|
2
|
+
# (card 8Y2fppO9; owner decisions 610(4) 2026-09-26 and 635 2026-09-29).
|
|
3
|
+
#
|
|
4
|
+
# 1.1.0 (card cDZuuyg8, owner decision 645(4) 2026-09-30): an already-optimised
|
|
5
|
+
# compress is not charged (`charge.not_charged`). Additive.
|
|
6
|
+
#
|
|
7
|
+
# Read by: api (pins its billing constants to it: OperationCostCalculator,
|
|
8
|
+
# CreditReservationService, UserTier::overdraftLimit), the frontend's pricing
|
|
9
|
+
# copy, the SDKs, and tests/test_pricing_policy.py (holds the relations below).
|
|
10
|
+
#
|
|
11
|
+
# ⚠️ CONTRACT-FIRST. Two of these rules are AHEAD of api main 2a8dd8d5, and
|
|
12
|
+
# `api_today` under each says what the API does until it ships the change.
|
|
13
|
+
# A consumer reading this file for a PRICE must not assume the new rule is
|
|
14
|
+
# live until api's release notes say so.
|
|
15
|
+
|
|
16
|
+
schema_version: "1.1.0"
|
|
17
|
+
|
|
18
|
+
charge:
|
|
19
|
+
# Owner 610(4)(a) + 635(1): pay only for successful results, PER JOB.
|
|
20
|
+
# A job that completes is charged; a job that fails (after its retries) is
|
|
21
|
+
# refunded, as is cancelled work. A multi-job workflow with one failed job
|
|
22
|
+
# is charged for the jobs that completed.
|
|
23
|
+
basis: per_completed_job
|
|
24
|
+
refunded_on: [job_failed, workflow_cancelled]
|
|
25
|
+
# A workflow paused for insufficient credits has its reservation RELEASED
|
|
26
|
+
# at the pause and reserved again on resume (so a pause that expires
|
|
27
|
+
# unresumed owes nothing). api main: CreditReservationService
|
|
28
|
+
# releaseForPause / ResumeWorkflowCommandHandler.
|
|
29
|
+
on_pause: released_then_reserved_again_on_resume
|
|
30
|
+
# Reserved at create for the whole workflow (402 balance_exhausted if the
|
|
31
|
+
# caller cannot afford it), settled per job as jobs end.
|
|
32
|
+
reserved_at: workflow_create
|
|
33
|
+
# A long-form fan-out is settled at what it actually used; the unused
|
|
34
|
+
# part of its worst-case reservation is refunded.
|
|
35
|
+
fan_out_settlement: actual_usage
|
|
36
|
+
# Owner 645(4): an OPERATION that could not make the file smaller and
|
|
37
|
+
# returned the original is NOT charged; its cost is refunded. The job's
|
|
38
|
+
# other operations are charged as usual. Per operation, not per job. The
|
|
39
|
+
# FULL predicate, all of which must hold (a flag alone is not enough: the
|
|
40
|
+
# metrics object rides on every result):
|
|
41
|
+
not_charged:
|
|
42
|
+
- when:
|
|
43
|
+
operation_type: compress
|
|
44
|
+
status: completed
|
|
45
|
+
route: same_format # resolved: output_format original/absent OR equal to the input format
|
|
46
|
+
metric: already_optimal # metrics.already_optimal == true
|
|
47
|
+
not_charged_api_today: already_optimal_operations_are_charged
|
|
48
|
+
# api main 2a8dd8d5 refunds the WHOLE reservation when any job fails, so a
|
|
49
|
+
# partially_failed workflow is charged nothing (OperationResultHandler
|
|
50
|
+
# releaseReservationOnFailure). Changing to per-job is api's follow-up.
|
|
51
|
+
api_today: whole_workflow_refund_on_any_job_failure
|
|
52
|
+
|
|
53
|
+
upload:
|
|
54
|
+
# Owner 610(4)(b) + 635(2): uploading costs nothing. Larger files cost more
|
|
55
|
+
# to PROCESS, through the size surcharge below.
|
|
56
|
+
charged: false
|
|
57
|
+
|
|
58
|
+
size_surcharge:
|
|
59
|
+
# Added to each operation's weight. The size is the JOB's input (its
|
|
60
|
+
# primary upload), applied to every operation of the job, not each
|
|
61
|
+
# operation's intermediate input (api CreateWorkflowCommandHandler).
|
|
62
|
+
basis: job_input_bytes
|
|
63
|
+
# surcharge per operation:
|
|
64
|
+
# surcharge = min(max_credits, floor((bytes - free_bytes) / step_bytes))
|
|
65
|
+
# for bytes > free_bytes, else 0.
|
|
66
|
+
# Binary units: 52,428,800 B = 50 MiB (api OperationCostCalculator).
|
|
67
|
+
free_bytes: 52428800
|
|
68
|
+
step_bytes: 52428800
|
|
69
|
+
credits_per_step: 1
|
|
70
|
+
max_credits: 500
|
|
71
|
+
|
|
72
|
+
overdraft:
|
|
73
|
+
# Owner 610(4)(c) + 635(3). The limit is per account and is returned by
|
|
74
|
+
# GET /api/v2/credits/balance (`overdraft_limit`), which is the source for
|
|
75
|
+
# any caller; only the Basic value is policy.
|
|
76
|
+
basic_limit: 0
|
|
77
|
+
# Overdraft debt is repaid ONE credit for ONE credit from the next monthly
|
|
78
|
+
# grant, on every paid plan. There is no per-plan multiplier.
|
|
79
|
+
repayment_ratio: 1
|
|
80
|
+
# api main already repays 1:1 (CreditAccount); its unused per-plan
|
|
81
|
+
# multipliers (UserTier::overdraftRate) are deleted in api's follow-up.
|
|
82
|
+
api_today: repays_1_to_1_unused_per_plan_multiplier_present
|